78 lines
1.6 KiB
Rust
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();
|
|
}
|