1
0
Fork 0
forked from navos/sheepd

🎉 init

This commit is contained in:
JMARyA 2025-04-28 18:44:09 +02:00
commit 812c4adb15
Signed by untrusted user: jmarya
GPG key ID: 901B2ADDF27C2263
16 changed files with 4631 additions and 0 deletions

54
src/server.rs Normal file
View file

@ -0,0 +1,54 @@
use axum::{
Json, Router,
http::StatusCode,
routing::{get, post},
};
use axum_client_ip::{ClientIp, ClientIpSource};
use based::auth::{Sessions, User};
use owl::{prelude::*, save, set_global_db};
use rand::RngCore;
use serde::{Deserialize, Serialize};
use serde_json::json;
use std::net::SocketAddr;
mod api;
mod server_core;
use server_core::route::{join_device, login_user};
fn generate_token() -> String {
let mut rng = rand::rng();
let mut token = vec![0u8; 32];
rng.fill_bytes(&mut token);
hex::encode(token)
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt::init();
let db = Database::in_memory();
set_global_db!(db);
User::create("admin".to_string(), "admin", based::auth::UserRole::Admin)
.await
.unwrap();
let device = Router::new()
.route("/join", post(join_device))
.layer(ClientIpSource::ConnectInfo.into_extension()); // Direct IP
// .layer(ClientIpSource::XRealIp.into_extension()) // Proxy
let user = Router::new().route("/login", post(login_user));
let app = Router::new().merge(device).merge(user);
log::info!("Starting server");
let listener = tokio::net::TcpListener::bind("0.0.0.0:8000").await.unwrap();
axum::serve(
listener,
app.into_make_service_with_connect_info::<SocketAddr>(),
)
.await
.unwrap();
}