Mercurial > prosody-modules
changeset 5945:a316fee71bed
mod_muc_anonymize_moderation_actions: anonymize muc moderation announcements and tombstones.
author | John Livingston <git@john-livingston.fr> |
---|---|
date | Mon, 29 Jul 2024 13:11:43 +0200 |
parents | 4b677e445b8a |
children | bfb8d7b53954 |
files | mod_muc_anonymize_moderation_actions/mod_muc_anonymize_moderation_actions.lua |
diffstat | 1 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_muc_anonymize_moderation_actions/mod_muc_anonymize_moderation_actions.lua Mon Jul 29 13:08:43 2024 +0200 +++ b/mod_muc_anonymize_moderation_actions/mod_muc_anonymize_moderation_actions.lua Mon Jul 29 13:11:43 2024 +0200 @@ -39,6 +39,30 @@ end end +local function remove_moderate_actor(event) + local room, announcement, tombstone = event.room, event.announcement, event.tombstone; + if not get_anonymize_moderation_actions(room) then + return; + end + + local moderated = announcement:find("{urn:xmpp:fasten:0}apply-to/{urn:xmpp:message-moderate:0}moderated"); + if moderated then + module:log("debug", "We must anonymize the moderation announcement for stanza %s", event.stanza_id); + moderated.attr.by = nil; + moderated:remove_children("occupant-id", "urn:xmpp:occupant-id:0"); + end + + if tombstone then + local moderated = tombstone:get_child("moderated", "urn:xmpp:message-moderate:0"); + if moderated then + module:log("debug", "We must anonymize the moderation tombstone for stanza %s", event.stanza_id); + moderated.attr.by = nil; + moderated:remove_children("occupant-id", "urn:xmpp:occupant-id:0"); + end + end +end + module:hook("muc-config-submitted/muc#roomconfig_anonymize_moderation_actions", config_submitted); module:hook("muc-config-form", add_form_option, form_position); module:hook("muc-broadcast-presence", remove_actor); +module:hook("muc-moderate-message", remove_moderate_actor);