From d95c02f575b5306ce4413e6260b46c99c65f973c Mon Sep 17 00:00:00 2001
From: strawberry <strawberry@puppygock.gay>
Date: Sat, 13 Apr 2024 20:19:10 -0400
Subject: [PATCH] add config option for logging guest regs in admin room

Signed-off-by: strawberry <strawberry@puppygock.gay>
---
 conduwuit-example.toml           | 4 ++++
 src/api/client_server/account.rs | 2 +-
 src/config/mod.rs                | 6 ++++++
 src/service/globals/mod.rs       | 2 ++
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/conduwuit-example.toml b/conduwuit-example.toml
index 76b81b66f..a2c61d37b 100644
--- a/conduwuit-example.toml
+++ b/conduwuit-example.toml
@@ -159,6 +159,10 @@ ip_range_denylist = [
 # For private homeservers, this is best at false.
 allow_guest_registration = false
 
+# Set to true to log guest registrations in the admin room.
+# Defaults to false as it may be noisy or unnecessary.
+log_guest_registrations = false
+
 # Vector list of servers that conduwuit will refuse to download remote media from.
 # No default.
 # prevent_media_downloads_from = ["example.com", "example.local"]
diff --git a/src/api/client_server/account.rs b/src/api/client_server/account.rs
index 80ab24509..13a75e698 100644
--- a/src/api/client_server/account.rs
+++ b/src/api/client_server/account.rs
@@ -290,7 +290,7 @@ pub async fn register_route(body: Ruma<register::v3::Request>) -> Result<registe
 	}
 
 	// log in conduit admin channel if a guest registered
-	if !body.from_appservice && is_guest {
+	if !body.from_appservice && is_guest && services().globals.log_guest_registrations() {
 		services()
 			.admin
 			.send_message(RoomMessageEventContent::notice_plain(format!(
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 17aaf7edf..16a3dbfe7 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -258,6 +258,8 @@ pub struct Config {
 
 	#[serde(default)]
 	pub allow_guest_registration: bool,
+	#[serde(default)]
+	pub log_guest_registrations: bool,
 
 	#[serde(default = "Vec::new")]
 	pub prevent_media_downloads_from: Vec<OwnedServerName>,
@@ -509,6 +511,10 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 				"Allow guest registration (inherently false if allow registration is false)",
 				&self.allow_guest_registration.to_string(),
 			),
+			(
+				"Log guest registrations in admin room",
+				&self.log_guest_registrations.to_string(),
+			),
 			("New user display name suffix", &self.new_user_displayname_suffix),
 			("Allow encryption", &self.allow_encryption.to_string()),
 			("Allow federation", &self.allow_federation.to_string()),
diff --git a/src/service/globals/mod.rs b/src/service/globals/mod.rs
index a6a4ea402..644cc2c68 100644
--- a/src/service/globals/mod.rs
+++ b/src/service/globals/mod.rs
@@ -209,6 +209,8 @@ pub fn allow_registration(&self) -> bool { self.config.allow_registration }
 
 	pub fn allow_guest_registration(&self) -> bool { self.config.allow_guest_registration }
 
+	pub fn log_guest_registrations(&self) -> bool { self.config.log_guest_registrations }
+
 	pub fn allow_encryption(&self) -> bool { self.config.allow_encryption }
 
 	pub fn allow_federation(&self) -> bool { self.config.allow_federation }
-- 
GitLab