up/src/main.rs
2024-12-23 17:47:33 -08:00

49 lines
1.1 KiB
Rust

use std::{
env,
net::SocketAddr
};
use tokio::net::TcpListener;
use tower_http::services::ServeDir;
use axum::{
middleware,
routing::{get, post},
Router
};
mod argparse;
mod print_dir;
mod config;
mod shells;
mod logging;
mod upload;
#[tokio::main]
async fn main() {
let args = argparse::parse_args();
let conf = config::load_config();
let cwd = env::current_dir().unwrap();
let port = match args.port {
Some(port) => port,
None => conf.web_port
};
print_dir::print_interface(&args.interface, &port, &args.directory);
let app = Router::new()
.route("/upload", post(upload::upload_handler))
.route("/shells/:shell", get(shells::shells_handler))
.nest_service("/download", ServeDir::new(conf.get_download_path()))
.nest_service("/", ServeDir::new(cwd))
.layer(middleware::from_fn(logging::logging_middleware));
let listener = TcpListener::bind(format!("0.0.0.0:{}", port))
.await
.unwrap();
axum::serve(
listener,
app.into_make_service_with_connect_info::<SocketAddr>()
).await.unwrap();
}