Mercurial > prosody-modules
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 |
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); |