Added request logging middleware
This commit is contained in:
@@ -31,6 +31,14 @@ impl Config {
|
||||
serde_yaml::from_reader(reader).unwrap()
|
||||
}
|
||||
|
||||
pub fn get_download_path(&self) -> PathBuf {
|
||||
self.download_path.clone()
|
||||
}
|
||||
|
||||
pub fn get_upload_path(&self) -> PathBuf {
|
||||
self.upload_path.clone()
|
||||
}
|
||||
|
||||
pub fn get_shell<S: Into<String>>(&self, key: S) -> Option<String> {
|
||||
let key_str = key.into();
|
||||
self.shells.get(&key_str).cloned()
|
||||
|
||||
17
src/logging.rs
Normal file
17
src/logging.rs
Normal file
@@ -0,0 +1,17 @@
|
||||
use std::net::SocketAddr;
|
||||
use axum::{
|
||||
extract::ConnectInfo,
|
||||
response::Response,
|
||||
middleware::Next,
|
||||
http::Request,
|
||||
body::Body
|
||||
};
|
||||
|
||||
pub async fn logging_middleware(
|
||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||
req: Request<Body>,
|
||||
next: Next
|
||||
) -> Response {
|
||||
println!("[{}] {} {}", addr, req.method(), req.uri());
|
||||
next.run(req).await
|
||||
}
|
||||
24
src/main.rs
24
src/main.rs
@@ -1,14 +1,20 @@
|
||||
use std::{
|
||||
env,
|
||||
net::SocketAddr
|
||||
};
|
||||
use tokio::net::TcpListener;
|
||||
use tower_http::services::ServeDir;
|
||||
use axum::routing::{get, post};
|
||||
use axum::Router;
|
||||
use std::env;
|
||||
use std::net::SocketAddr;
|
||||
use axum::{
|
||||
middleware,
|
||||
routing::get,
|
||||
Router
|
||||
};
|
||||
|
||||
mod argparse;
|
||||
mod print_dir;
|
||||
mod config;
|
||||
mod shells;
|
||||
mod logging;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
@@ -24,14 +30,18 @@ async fn main() {
|
||||
print_dir::print_interface(&args.interface, &port, &args.directory);
|
||||
|
||||
let app = Router::new()
|
||||
//.route("/download/:path", get(download_handler))
|
||||
//.route("/upload", post(upload_handler))
|
||||
.route("/shells/:shell", get(shells::shells_handler))
|
||||
.nest_service("/", ServeDir::new(cwd));
|
||||
.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).await.unwrap();
|
||||
axum::serve(
|
||||
listener,
|
||||
app.into_make_service_with_connect_info::<SocketAddr>()
|
||||
).await.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user