/* { f_front.py [ SEND FROM STATIC DIRECTORY /static/ /favicon.ico /manifest.json /service_worker.json /apple-touch-icon.png ] / /settings /profile/{login} /search// /friends } { f_friends.py /friends/add/ /friends/remove/ /friends/set_relation// } { f_issues.py /addissue// } { f_locations.py /goto/ } { f_users.py /getuser/ /settings/profile [POST] } */ use axum::Router; use log::info; use tower_http::trace::TraceLayer; use tracing_subscriber::EnvFilter; mod cluster; mod friends; mod state; mod static_; mod user; pub use state::GlobalState; pub fn report_error(err: color_eyre::Report) { log::error!("Got an error: {err:?}"); } #[tokio::main] async fn main() { tracing_subscriber::fmt() .with_env_filter( EnvFilter::try_from_default_env() .or_else(|_| EnvFilter::try_new("froxy_server=error,tower_http=warn")) .unwrap(), ) .init(); let global_state = GlobalState::new(); let app = Router::new() .merge(cluster::router()) .merge(friends::router()) .merge(user::router()) .merge(static_::router(&global_state)) .with_state(global_state) .layer(TraceLayer::new_for_http()); let (ip, port) = ("0.0.0.0", 3000); info!("Starting server on {ip}:{port}"); // run our app with hyper, listening globally on port 3000 let listener = tokio::net::TcpListener::bind((ip, port)).await.unwrap(); axum::serve(listener, app).await.unwrap(); }