From cde1b8f51fadd9a1af57d704dfb03aa2ca1b82ab Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Sun, 19 Jan 2025 12:28:17 +0100 Subject: [PATCH] Add option to disable frontend --- crates/frontend/src/config.rs | 6 ++++++ src/app.rs | 29 +++++++++++++++++------------ src/commands/mod.rs | 1 + src/config.rs | 4 ++-- src/main.rs | 2 +- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/crates/frontend/src/config.rs b/crates/frontend/src/config.rs index 9f8f6c3..477f91c 100644 --- a/crates/frontend/src/config.rs +++ b/crates/frontend/src/config.rs @@ -1,9 +1,15 @@ use serde::{Deserialize, Serialize}; +fn default_enabled() -> bool { + true +} + #[derive(Deserialize, Serialize, Debug, Clone)] #[serde(deny_unknown_fields)] pub struct FrontendConfig { #[serde(serialize_with = "hex::serde::serialize")] #[serde(deserialize_with = "hex::serde::deserialize")] pub secret_key: [u8; 64], + #[serde(default = "default_enabled")] + pub enabled: bool, } diff --git a/src/app.rs b/src/app.rs index bf9e9a9..d2e6fc0 100644 --- a/src/app.rs +++ b/src/app.rs @@ -23,7 +23,7 @@ pub fn make_app( Error = actix_web::Error, >, > { - App::new() + let mut app = App::new() // .wrap(Logger::new("[%s] %r")) .wrap(TracingLogger::default()) .wrap(NormalizePath::trim()) @@ -50,15 +50,20 @@ pub fn make_app( .configure(|cfg| { rustical_carddav::configure_well_known(cfg, "/carddav".to_string()) }), - ) - .service(web::scope("/frontend").configure(|cfg| { - configure_frontend( - cfg, - auth_provider.clone(), - cal_store.clone(), - addr_store.clone(), - frontend_config, - ) - })) - .service(web::redirect("/", "/frontend").see_other()) + ); + + if frontend_config.enabled { + app = app + .service(web::scope("/frontend").configure(|cfg| { + configure_frontend( + cfg, + auth_provider.clone(), + cal_store.clone(), + addr_store.clone(), + frontend_config, + ) + })) + .service(web::redirect("/", "/frontend").see_other()); + } + app } diff --git a/src/commands/mod.rs b/src/commands/mod.rs index a263948..cb0dcc4 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -46,6 +46,7 @@ pub fn cmd_gen_config(_args: GenConfigArgs) -> anyhow::Result<()> { tracing: TracingConfig::default(), frontend: FrontendConfig { secret_key: generate_frontend_secret(), + enabled: true, }, dav_push: DavPushConfig::default(), }; diff --git a/src/config.rs b/src/config.rs index 003c6c3..e3f7d46 100644 --- a/src/config.rs +++ b/src/config.rs @@ -47,7 +47,7 @@ pub struct TracingConfig { #[derive(Debug, Deserialize, Serialize)] #[serde(deny_unknown_fields, default)] pub struct DavPushConfig { - pub enable: bool, + pub enabled: bool, #[serde(default)] // Allowed Push servers, accepts any by default // Specify as URL origins @@ -57,7 +57,7 @@ pub struct DavPushConfig { impl Default for DavPushConfig { fn default() -> Self { Self { - enable: true, + enabled: true, allowed_push_servers: None, } } diff --git a/src/main.rs b/src/main.rs index 21547e8..4bb099e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -82,7 +82,7 @@ async fn main() -> Result<()> { let (addr_store, cal_store, subscription_store, update_recv) = get_data_stores(!args.no_migrations, &config.data_store).await?; - if config.dav_push.enable { + if config.dav_push.enabled { tokio::spawn(push_notifier( config.dav_push.allowed_push_servers, update_recv,