From 4432c06c86a236cde4311ad78315b9e81656b3c8 Mon Sep 17 00:00:00 2001 From: strawberry Date: Sun, 18 Aug 2024 16:46:19 -0400 Subject: [PATCH] remove local room aliases and unpublish room when banning a room Signed-off-by: strawberry --- src/admin/room/moderation.rs | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/admin/room/moderation.rs b/src/admin/room/moderation.rs index ddde9146..a2bc76f7 100644 --- a/src/admin/room/moderation.rs +++ b/src/admin/room/moderation.rs @@ -208,6 +208,25 @@ async fn ban_room( } } + // remove any local aliases, ignore errors + for ref local_alias in self + .services + .rooms + .alias + .local_aliases_for_room(&room_id) + .filter_map(Result::ok) + { + _ = self + .services + .rooms + .alias + .remove_alias(local_alias, &self.services.globals.server_user) + .await; + } + + // unpublish from room directory, ignore errors + _ = self.services.rooms.directory.set_not_public(&room_id); + if disable_federation { self.services.rooms.metadata.disable_room(&room_id, true)?; return Ok(RoomMessageEventContent::text_plain( @@ -428,6 +447,25 @@ async fn ban_list_of_rooms(&self, force: bool, disable_federation: bool) -> Resu } } + // remove any local aliases, ignore errors + for ref local_alias in self + .services + .rooms + .alias + .local_aliases_for_room(&room_id) + .filter_map(Result::ok) + { + _ = self + .services + .rooms + .alias + .remove_alias(local_alias, &self.services.globals.server_user) + .await; + } + + // unpublish from room directory, ignore errors + _ = self.services.rooms.directory.set_not_public(&room_id); + if disable_federation { self.services.rooms.metadata.disable_room(&room_id, true)?; }