From 4d0fc4122268f28689120e64cc35a0deb023a852 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 17 Aug 2024 03:39:09 +0000 Subject: [PATCH] add conf item for federation loopback prevention bypass Signed-off-by: Jason Volk --- src/core/config/mod.rs | 3 +++ src/service/resolver/actual.rs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index 8d6a32c6..4dc9f877 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -144,6 +144,8 @@ pub struct Config { #[serde(default = "true_fn")] pub allow_federation: bool, #[serde(default)] + pub federation_loopback: bool, + #[serde(default)] pub allow_public_room_directory_over_federation: bool, #[serde(default)] pub allow_public_room_directory_without_auth: bool, @@ -563,6 +565,7 @@ impl fmt::Display for Config { line("New user display name suffix", &self.new_user_displayname_suffix); line("Allow encryption", &self.allow_encryption.to_string()); line("Allow federation", &self.allow_federation.to_string()); + line("Federation loopback", &self.federation_loopback.to_string()); line( "Allow incoming federated presence requests (updates)", &self.allow_incoming_presence.to_string(), diff --git a/src/service/resolver/actual.rs b/src/service/resolver/actual.rs index 623e3a96..07d9a0fa 100644 --- a/src/service/resolver/actual.rs +++ b/src/service/resolver/actual.rs @@ -312,7 +312,8 @@ impl super::Service { } fn validate_dest(&self, dest: &ServerName) -> Result<()> { - if dest == self.services.server.config.server_name { + let config = &self.services.server.config; + if dest == config.server_name && !config.federation_loopback { return Err!("Won't send federation request to ourselves"); }