froxy/server/src/main.rs

78 lines
1.6 KiB
Rust

/*
{ f_front.py
[ SEND FROM STATIC DIRECTORY
/static/<path>
/favicon.ico
/manifest.json
/service_worker.json
/apple-touch-icon.png
]
/
/settings
/profile/{login}
/search/<keyword>/<int:friends_only>
/friends
}
{ f_friends.py
/friends/add/<add>
/friends/remove/<remove>
/friends/set_relation/<who>/<int:relation>
}
{ f_issues.py
/addissue/<pc>/<int:issue_type>
}
{ f_locations.py
/goto/<pos>
}
{ f_users.py
/getuser/<login>
/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();
}