Software /
code /
prosody-modules
File
mod_muc_anonymize_moderation_actions/mod_muc_anonymize_moderation_actions.lua @ 6113:c0cb43817b7c
mod_compliance_latest: using module:log_status
diff --git a/mod_compliance_latest/mod_compliance_latest.lua b/mod_compliance_latest/mod_compliance_latest.lua
--- a/mod_compliance_latest/mod_compliance_latest.lua
+++ b/mod_compliance_latest/mod_compliance_latest.lua
@@ -1,6 +1,6 @@
local success, err = pcall(function() module:depends("compliance_2023") end)
if not success then
- module:log("error", "Error, can't load module: mod_compliance_2023. Is this module downloaded in a folder readable by prosody?")
- return 1, "Error: Couldn't load dependency mod_compliance_2023."
+module:log_status( "error", "Error, can't load module: mod_compliance_2023. Is this module downloaded into a folder readable by prosody?" )
+return false
end
author | Menel <menel@snikket.de> |
---|---|
date | Mon, 23 Dec 2024 14:09:56 +0100 |
parent | 5974:bfb8d7b53954 |
line wrap: on
line source
-- mod_muc_anonymize_moderation_actions -- -- SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/> -- SPDX-License-Identifier: AGPL-3.0-only -- form_position: the position in the room config form (this value will be passed as priority for the "muc-config-form" hook). -- By default, field will be between muc#roomconfig_changesubject and muc#roomconfig_moderatedroom local form_position = module:get_option_number("anonymize_moderation_actions_form_position") or 80-2; local function get_anonymize_moderation_actions(room) return room._data.anonymize_moderation_actions or false; end local function set_anonymize_moderation_actions(room, anonymize_moderation_actions) anonymize_moderation_actions = anonymize_moderation_actions and true or nil; if get_anonymize_moderation_actions(room) == anonymize_moderation_actions then return false; end room._data.anonymize_moderation_actions = anonymize_moderation_actions; return true; end -- Config form declaration local function add_form_option(event) table.insert(event.form, { name = "muc#roomconfig_anonymize_moderation_actions"; type = "boolean"; label = "Anonymize moderation actions"; desc = "When this is enabled, moderation actions will be anonymized, to avoid disclosing who is banning/kicking/… occupants."; value = get_anonymize_moderation_actions(event.room); }); end local function config_submitted(event) set_anonymize_moderation_actions(event.room, event.value); end local function remove_actor(event) if (event.room and get_anonymize_moderation_actions(event.room)) then event.actor = nil; 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); -- FIXME: XEP-0245 has changed. -- urn:xmpp:message-moderate:0 requires a "by" attribute -- urn:xmpp:message-moderate:1 do not require the "by" attribute -- So, for now, settings the room jid, as we only implement urn:xmpp:message-moderate:0. moderated.attr.by = room.jid; 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); -- FIXME: XEP-0245 has changed. -- urn:xmpp:message-moderate:0 requires a "by" attribute -- urn:xmpp:message-moderate:1 do not require the "by" attribute -- So, for now, settings the room jid, as we only implement urn:xmpp:message-moderate:0. moderated.attr.by = room.jid; 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);