refactor: simplify actix app config

This commit is contained in:
neri 2023-03-15 09:44:31 +01:00
parent c33cece59e
commit bf2e91a2c5
3 changed files with 11 additions and 19 deletions

2
Cargo.lock generated
View File

@ -424,7 +424,7 @@ dependencies = [
[[package]]
name = "datatrash"
version = "2.2.1"
version = "2.2.2"
dependencies = [
"actix-files",
"actix-governor",

View File

@ -1,6 +1,6 @@
[package]
name = "datatrash"
version = "2.2.1"
version = "2.2.2"
authors = ["neri"]
edition = "2021"

View File

@ -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)?