Mercurial > prosody-modules
annotate mod_report_tracker/mod_report_tracker.lua @ 6214:cc5c0f1dc89b
mod_muc_anonymize_moderation_actions: Fix mentioning Virtualhost for MUC, Compatibility section and License.
diff --git a/mod_muc_anonymize_moderation_actions/README.md b/mod_muc_anonymize_moderation_actions/README.md
--- a/mod_muc_anonymize_moderation_actions/README.md
+++ b/mod_muc_anonymize_moderation_actions/README.md
@@ -1,8 +1,10 @@
-<!--
-SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
-SPDX-License-Identifier: AGPL-3.0-only
--->
-# mod_muc_anonymize_moderation_actions
+---
+labels:
+- 'Stage-Alpha'
+summary: Anonymize moderator actions for participants
+---
+
+## Introduction
This modules allows to anonymize affiliation and role changes in MUC rooms.
@@ -11,13 +13,10 @@ When the feature is enabled, when a mode
This is particularly usefull to prevent some revenge when a moderator bans someone.
-This module is under AGPL-3.0 license.
-
-It was tested on Prosody 0.12.x.
## Configuration
-Just enable the module on your MUC VirtualHost.
+Just enable the module on your MUC Component.
The feature will be accessible throught the room configuration form.
You can tweak the position of the settings in the MUC configuration form using `anonymize_moderation_actions_form_position`.
@@ -26,7 +25,20 @@ This value will be passed as priority fo
By default, the field will be between muc#roomconfig_changesubject and muc#roomconfig_moderatedroom (default value is `78`).
``` lua
-VirtualHost "muc.example.com"
+Component "muc.example.com" "muc"
modules_enabled = { "muc_anonymize_moderation_actions" }
anonymize_moderation_actions_form_position = 96
```
+
+## Compatibility
+
+ ------ ----------------------
+ trunk Works as of 25-05-12
+ 0.13 Works
+ 0.12 Works
+ ------ ----------------------
+
+### License
+
+SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
+SPDX-License-Identifier: AGPL-3.0-only
| author | Menel <menel@snikket.de> |
|---|---|
| date | Mon, 12 May 2025 10:42:26 +0200 |
| parents | 765e0235c202 |
| children |
| rev | line source |
|---|---|
|
6035
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local um = require "core.usermanager"; |
|
6036
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
2 local cache = require "util.cache"; |
|
6035
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local jid = require "util.jid"; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local trusted_reporters = module:get_option_inherited_set("trusted_reporters", {}); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local reports_received = module:open_store("reports_received"); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local xmlns_reporting = "urn:xmpp:reporting:1"; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
|
6036
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
10 local reported_users = cache.new(256); |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
11 |
|
6035
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 local function is_trusted_reporter(reporter_jid) |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 return trusted_reporters:contains(reporter_jid); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 function handle_report(event) |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 local stanza = event.stanza; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 local report = stanza:get_child("report", xmlns_reporting); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 if not report then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 return; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 local reported_jid = report:get_child_text("jid", "urn:xmpp:jid:0") |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 or stanza:find("{urn:xmpp:forward:0}forwarded/{jabber:client}message@from"); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 if not reported_jid then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 module:log("debug", "Discarding report with no JID"); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 return; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 elseif jid.host(reported_jid) ~= module.host then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 module:log("debug", "Discarding report about non-local user"); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 return; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 local reporter_jid = stanza.attr.from; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 if jid.node(reporter_jid) then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 module:log("debug", "Discarding report from non-server JID"); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 return; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 local reported_user = jid.node(reported_jid); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 if not um.user_exists(reported_user, module.host) then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 module:log("debug", "Discarding report about non-existent user"); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 return; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 if is_trusted_reporter(reporter_jid) then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 local current_reports = reports_received:get(reported_user, reporter_jid); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 if not current_reports then |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 current_reports = { |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 first = os.time(); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 last = os.time(); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 count = 1; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 }; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 else |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 current_reports.last = os.time(); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 current_reports.count = current_reports.count + 1; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 reports_received:set(reported_user, reporter_jid, current_reports); |
|
6036
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
59 reported_users:set(reported_user, true); |
|
6035
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 module:log("info", "Received abuse report about <%s> from <%s>", reported_jid, reporter_jid); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 module:fire_event(module.name.."/account-reported", { |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 report_from = reporter_jid; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 reported_user = reported_user; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 report = report; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 }); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 else |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 module:log("warn", "Discarding abuse report about <%s> from untrusted source <%s>", reported_jid, reporter_jid); |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 -- Message was handled |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 return true; |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 end |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 |
|
b04518fa0987
mod_report_tracker: Keep track of spam/abuse reports about local JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 module:hook("message/host", handle_report); |
|
6036
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
77 |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
78 module:add_item("account-trait", { |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
79 name = "reported-by-trusted-server"; |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
80 prob_bad_true = 0.80; |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
81 prob_bad_false = 0.50; |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
82 }); |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
83 |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
84 module:hook("get-account-traits", function (event) |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
85 local username = event.username; |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
86 local reported = reported_users:get(username); |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
87 if reported == nil then |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
88 -- Check storage, update cache |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
89 reported = not not reports_received:get(username); |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
90 reported_users:set(username, reported); |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
91 end |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
92 event.traits["reported-by-trusted-server"] = reported; |
|
765e0235c202
mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
93 end); |
