From 33a9fce82873011f56ff8626959889b5010bae71 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 26 Jul 2025 02:26:09 +0000 Subject: [PATCH] dedup room directory banned server check. Signed-off-by: Jason Volk --- src/api/client/directory.rs | 50 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/api/client/directory.rs b/src/api/client/directory.rs index 92e2444e..629f2993 100644 --- a/src/api/client/directory.rs +++ b/src/api/client/directory.rs @@ -51,19 +51,7 @@ pub(crate) async fn get_public_rooms_filtered_route( InsecureClientIp(client): InsecureClientIp, body: Ruma, ) -> Result { - if let Some(server) = &body.server { - if services - .config - .forbidden_remote_room_directory_server_names - .is_match(server.host()) - || services - .config - .forbidden_remote_server_names - .is_match(server.host()) - { - return Err!(Request(Forbidden("Server is banned on this homeserver."))); - } - } + check_banned(&services, body.server.as_deref())?; let response = get_public_rooms_filtered_helper( &services, @@ -92,19 +80,7 @@ pub(crate) async fn get_public_rooms_route( InsecureClientIp(client): InsecureClientIp, body: Ruma, ) -> Result { - if let Some(server) = &body.server { - if services - .config - .forbidden_remote_room_directory_server_names - .is_match(server.host()) - || services - .config - .forbidden_remote_server_names - .is_match(server.host()) - { - return Err!(Request(Forbidden("Server is banned on this homeserver."))); - } - } + check_banned(&services, body.server.as_deref())?; let response = get_public_rooms_filtered_helper( &services, @@ -490,3 +466,25 @@ async fn public_rooms_chunk(services: &Services, room_id: OwnedRoomId) -> Public world_readable, } } + +fn check_banned(services: &Services, server: Option<&ServerName>) -> Result { + let Some(server) = server else { + return Ok(()); + }; + + let forbidden_remote_directory = services + .config + .forbidden_remote_room_directory_server_names + .is_match(server.host()); + + let forbidden_remote_server = services + .config + .forbidden_remote_server_names + .is_match(server.host()); + + if forbidden_remote_directory || forbidden_remote_server { + Err!(Request(Forbidden("Server is banned on this homeserver."))) + } else { + Ok(()) + } +}