diff --git a/src/app.rs b/src/app.rs index 53fa934..24ac237 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,7 +1,7 @@ use crate::config::NextcloudLoginConfig; use axum::Router; use axum::body::{Body, HttpBody}; -use axum::extract::Request; +use axum::extract::{DefaultBodyLimit, Request}; use axum::middleware::Next; use axum::response::{Redirect, Response}; use axum::routing::{any, options}; @@ -39,6 +39,7 @@ pub fn make_app( nextcloud_login_config: NextcloudLoginConfig, dav_push_enabled: bool, session_cookie_samesite_strict: bool, + payload_limit_mb: usize, ) -> Router<()> { let birthday_store = Arc::new(ContactBirthdayStore::new(addr_store.clone())); let combined_cal_store = @@ -202,4 +203,5 @@ pub fn make_app( response }, )) + .layer(DefaultBodyLimit::max(payload_limit_mb * 1000 * 1000)) } diff --git a/src/config.rs b/src/config.rs index 4eb8829..0fe6a2b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -8,6 +8,7 @@ pub struct HttpConfig { pub host: String, pub port: u16, pub session_cookie_samesite_strict: bool, + pub payload_limit_mb: usize, } impl Default for HttpConfig { @@ -16,6 +17,7 @@ impl Default for HttpConfig { host: "0.0.0.0".to_owned(), port: 4000, session_cookie_samesite_strict: false, + payload_limit_mb: 4, } } } diff --git a/src/main.rs b/src/main.rs index b4ceadf..b5b3a4d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -117,6 +117,7 @@ async fn main() -> Result<()> { config.nextcloud_login.clone(), config.dav_push.enabled, config.http.session_cookie_samesite_strict, + config.http.payload_limit_mb, ); let app = ServiceExt::::into_make_service( NormalizePathLayer::trim_trailing_slash().layer(app),