From bf2e91a2c5b4bd2293599070964af222fcd0bfa2 Mon Sep 17 00:00:00 2001 From: neri Date: Wed, 15 Mar 2023 09:44:31 +0100 Subject: [PATCH] refactor: simplify actix app config --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 26 +++++++++----------------- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b64f0b..bdca66b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -424,7 +424,7 @@ dependencies = [ [[package]] name = "datatrash" -version = "2.2.1" +version = "2.2.2" dependencies = [ "actix-files", "actix-governor", diff --git a/Cargo.toml b/Cargo.toml index fe6f3b3..85c071d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "datatrash" -version = "2.2.1" +version = "2.2.2" authors = ["neri"] edition = "2021" diff --git a/src/main.rs b/src/main.rs index ab4a7a1..4d146b7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ use actix_files::Files; use actix_governor::{Governor, GovernorConfigBuilder}; use actix_web::{ http::header::{HeaderName, HeaderValue, CONTENT_SECURITY_POLICY, X_CONTENT_TYPE_OPTIONS}, - middleware::{self, DefaultHeaders, Logger}, + middleware::{self, Condition, DefaultHeaders, Logger}, web::{self, Data}, App, Error, HttpResponse, HttpServer, }; @@ -68,7 +68,7 @@ async fn main() -> std::io::Result<()> { let http_server = HttpServer::new({ move || { - let app = App::new() + App::new() .wrap(Logger::new(r#"%{r}a "%r" =%s %bbytes %Tsec"#)) .wrap( DefaultHeaders::new() @@ -76,6 +76,7 @@ async fn main() -> std::io::Result<()> { .add((X_CONTENT_TYPE_OPTIONS, HeaderValue::from_static("nosniff"))), ) .wrap(middleware::Compress::default()) + .wrap(middleware::NormalizePath::trim()) .app_data(db.clone()) .app_data(expiry_watch_sender.clone()) .app_data(config.clone()) @@ -86,27 +87,18 @@ async fn main() -> std::io::Result<()> { .route(web::get().to(upload::uploaded)), ) .service(Files::new("/static", "static").disable_content_disposition()) - .default_service(web::route().to(not_found)); - if config.enable_rate_limit { - app.service( + .default_service(web::route().to(not_found)) + .service( web::resource([ "/{id:[a-z0-9]{5}}", - "/{id:[a-z0-9]{5}}/", "/{id:[a-z0-9]{5}}/{name}", ]) - .wrap(Governor::new(&governor_conf)) + .wrap(Condition::new( + config.enable_rate_limit, + Governor::new(&governor_conf), + )) .route(web::get().to(download::download)), ) - } else { - app.service( - web::resource([ - "/{id:[a-z0-9]{5}}", - "/{id:[a-z0-9]{5}}/", - "/{id:[a-z0-9]{5}}/{name}", - ]) - .route(web::get().to(download::download)), - ) - } } }) .bind(bind_address)?