From 7375f7a68e55468f4caff44d82942df1289ae866 Mon Sep 17 00:00:00 2001 From: Jade Ellis Date: Mon, 5 Jan 2026 23:36:07 +0000 Subject: [PATCH] feat: Improve the display of the configuration in the admin room --- conduwuit-example.toml | 6 +-- src/core/config/mod.rs | 17 ++++--- src/macros/config.rs | 104 +++++++++++++++++++++++++++-------------- 3 files changed, 82 insertions(+), 45 deletions(-) diff --git a/conduwuit-example.toml b/conduwuit-example.toml index ff3a9d0d..94599773 100644 --- a/conduwuit-example.toml +++ b/conduwuit-example.toml @@ -1759,10 +1759,6 @@ # #config_reload_signal = true -# This item is undocumented. Please contribute documentation for it. -# -#ldap = false - [global.tls] # Path to a valid TLS certificate file. @@ -1930,6 +1926,8 @@ # #admin_filter = "" +[global.antispam] + [global.antispam.meowlnir] # The base URL on which to contact Meowlnir (before /_meowlnir/antispam). diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index d35514f1..ba8010a7 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -53,8 +53,7 @@ use crate::{Result, err, error::Error, utils::sys}; ### For more information, see: ### https://continuwuity.org/configuration.html "#, - ignore = "config_paths catchall well_known tls blurhashing \ - allow_invalid_tls_certificates_yes_i_know_what_the_fuck_i_am_doing_with_this_and_i_know_this_is_insecure antispam" + ignore = "config_paths catchall" )] pub struct Config { // Paths to config file(s). Not supposed to be set manually in the config file, @@ -105,7 +104,7 @@ pub struct Config { #[serde(default = "default_port")] port: ListeningPort, - // external structure; separate section + /// display: nested #[serde(default)] pub tls: TlsConfig, @@ -724,7 +723,7 @@ pub struct Config { #[serde(default = "default_default_room_version")] pub default_room_version: RoomVersionId, - // external structure; separate section + /// display: nested #[serde(default)] pub well_known: WellKnownConfig, @@ -2030,19 +2029,22 @@ pub struct Config { /// etc. This is a hidden argument that should NOT be used in production as /// it is highly insecure and I will personally yell at you if I catch you /// using this. + /// + /// display: hidden #[serde(default)] pub allow_invalid_tls_certificates_yes_i_know_what_the_fuck_i_am_doing_with_this_and_i_know_this_is_insecure: bool, - // external structure; separate section + /// display: nested #[serde(default)] pub ldap: LdapConfig, /// Configuration for antispam support + /// display: nested #[serde(default)] pub antispam: Option, - // external structure; separate section + /// display: nested #[serde(default)] pub blurhashing: BlurhashConfig, #[serde(flatten)] @@ -2259,8 +2261,11 @@ struct ListeningAddr { } #[derive(Clone, Debug, Deserialize)] +#[config_example_generator(filename = "conduwuit-example.toml", section = "global.antispam")] pub struct Antispam { + /// display: nested pub meowlnir: Option, + /// display: nested pub draupnir: Option, } diff --git a/src/macros/config.rs b/src/macros/config.rs index 7b424325..32bde53b 100644 --- a/src/macros/config.rs +++ b/src/macros/config.rs @@ -78,6 +78,8 @@ fn generate_example(input: &ItemStruct, args: &[Meta], write: bool) -> Result = Vec::new(); + let mut nested_displays: Vec = Vec::new(); + if let Fields::Named(FieldsNamed { named, .. }) = &input.fields { for field in named { let Some(ident) = &field.ident else { @@ -92,35 +94,6 @@ fn generate_example(input: &ItemStruct, args: &[Meta], write: bool) -> Result Result Result