forked from navos/sheepd
🎉 init
This commit is contained in:
commit
812c4adb15
16 changed files with 4631 additions and 0 deletions
54
src/server.rs
Normal file
54
src/server.rs
Normal 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();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue