annotate mod_spam_reporting/mod_spam_reporting.lua @ 4656:4eb684ab440c

mod_spam_reporting: Handle unknown or future report types An unrecognised value in the 'reason' attribute would have caused an error. This change makes it mirror the behavior for the previous XEP version.
author Kim Alvefur <zash@zash.se>
date Wed, 25 Aug 2021 15:05:56 +0200
parents fe24bda72838
children ff68cc37b400
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2280
ebe360f59119 mod_spam_reporting: Add Copyright header
Kim Alvefur <zash@zash.se>
parents: 2279
diff changeset
1 -- XEP-0377: Spam Reporting for Prosody
4656
4eb684ab440c mod_spam_reporting: Handle unknown or future report types
Kim Alvefur <zash@zash.se>
parents: 4612
diff changeset
2 -- Copyright (C) 2016-2021 Kim Alvefur
2280
ebe360f59119 mod_spam_reporting: Add Copyright header
Kim Alvefur <zash@zash.se>
parents: 2279
diff changeset
3 --
ebe360f59119 mod_spam_reporting: Add Copyright header
Kim Alvefur <zash@zash.se>
parents: 2279
diff changeset
4 -- This file is MIT/X11 licensed.
2266
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5
2281
0899eeb0b3f7 mod_spam_reporting: Apply JID prepping
Kim Alvefur <zash@zash.se>
parents: 2280
diff changeset
6 local jid_prep = require "util.jid".prep;
0899eeb0b3f7 mod_spam_reporting: Apply JID prepping
Kim Alvefur <zash@zash.se>
parents: 2280
diff changeset
7
2266
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 module:depends("blocklist");
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 module:add_feature("urn:xmpp:reporting:0");
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 module:add_feature("urn:xmpp:reporting:reason:spam:0");
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 module:add_feature("urn:xmpp:reporting:reason:abuse:0");
4612
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
13 module:add_feature("urn:xmpp:reporting:1");
2266
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14
2275
7f228bf82fe5 mod_spam_reporting: Hook the blocking action, not blocklist fetching
Kim Alvefur <zash@zash.se>
parents: 2267
diff changeset
15 module:hook("iq-set/self/urn:xmpp:blocking:block", function (event)
2266
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 for item in event.stanza.tags[1]:childtags("item") do
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 local report = item:get_child("report", "urn:xmpp:reporting:0");
2281
0899eeb0b3f7 mod_spam_reporting: Apply JID prepping
Kim Alvefur <zash@zash.se>
parents: 2280
diff changeset
18 local jid = jid_prep(item.attr.jid);
2276
1b12ccbbd9b2 mod_spam_reporting: Continue looking for spam reports even when one <item> does not have one
Kim Alvefur <zash@zash.se>
parents: 2275
diff changeset
19 if report and jid then
1b12ccbbd9b2 mod_spam_reporting: Continue looking for spam reports even when one <item> does not have one
Kim Alvefur <zash@zash.se>
parents: 2275
diff changeset
20 local type = report:get_child("spam") and "spam" or
1b12ccbbd9b2 mod_spam_reporting: Continue looking for spam reports even when one <item> does not have one
Kim Alvefur <zash@zash.se>
parents: 2275
diff changeset
21 report:get_child("abuse") and "abuse" or
1b12ccbbd9b2 mod_spam_reporting: Continue looking for spam reports even when one <item> does not have one
Kim Alvefur <zash@zash.se>
parents: 2275
diff changeset
22 "unknown";
2283
bd1117002a9b mod_spam_reporting: Correctly check <text> child, not <reason>
Kim Alvefur <zash@zash.se>
parents: 2281
diff changeset
23 local reason = report:get_child_text("text") or "no reason given";
2276
1b12ccbbd9b2 mod_spam_reporting: Continue looking for spam reports even when one <item> does not have one
Kim Alvefur <zash@zash.se>
parents: 2275
diff changeset
24 module:log("warn", "Received report of %s from JID '%s', %s", type, jid, reason);
2277
bad5dd466427 mod_spam_reporting: Fire an event to ease processing from other modules
Kim Alvefur <zash@zash.se>
parents: 2276
diff changeset
25 module:fire_event(module.name.."/"..type.."-report", {
2298
a59671b3dd43 mod_spam_reporting: Include jid in event
Kim Alvefur <zash@zash.se>
parents: 2283
diff changeset
26 origin = event.origin, stanza = event.stanza, jid = jid,
2277
bad5dd466427 mod_spam_reporting: Fire an event to ease processing from other modules
Kim Alvefur <zash@zash.se>
parents: 2276
diff changeset
27 item = item, report = report, reason = reason, });
4612
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
28 else
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
29 report = item:get_child("report", "urn:xmpp:reporting:1");
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
30 if report and jid then
4656
4eb684ab440c mod_spam_reporting: Handle unknown or future report types
Kim Alvefur <zash@zash.se>
parents: 4612
diff changeset
31 local type = "unknown";
4612
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
32 if report.attr.reason == "urn:xmpp:reporting:abuse" then
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
33 type = "abuse";
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
34 end
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
35 if report.attr.reason == "urn:xmpp:reporting:spam" then
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
36 type = "spam";
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
37 end
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
38 local reason = report:get_child_text("text") or "no reason given";
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
39 module:log("warn", "Received report of %s from JID '%s', %s", type, jid, reason);
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
40 module:fire_event(module.name.."/"..type.."-report", {
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
41 origin = event.origin, stanza = event.stanza, jid = jid,
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
42 item = item, report = report, reason = reason, });
fe24bda72838 mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents: 2298
diff changeset
43 end
2276
1b12ccbbd9b2 mod_spam_reporting: Continue looking for spam reports even when one <item> does not have one
Kim Alvefur <zash@zash.se>
parents: 2275
diff changeset
44 end
2266
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 end
33a0988e5f1c mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 end, 1);