Mercurial > prosody-modules
annotate mod_spam_reporting/mod_spam_reporting.lua @ 4249:64aa1d9d70ac
mod_rest: Catch and log errors in callback promise chain
From the code it looks like it should be possible to reply to an error
stanza, but it did not. Turns out I was saved by my local developer mode
module which throws errors if an attempt is made to create an errror
reply to an error stanza. However nothing collects this error from the
promise, so all I got was confusion.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 15 Nov 2020 16:25:49 +0100 |
parents | a59671b3dd43 |
children | fe24bda72838 |
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 |
ebe360f59119
mod_spam_reporting: Add Copyright header
Kim Alvefur <zash@zash.se>
parents:
2279
diff
changeset
|
2 -- Copyright (C) -2016 Kim Alvefur |
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"); |
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
2275
7f228bf82fe5
mod_spam_reporting: Hook the blocking action, not blocklist fetching
Kim Alvefur <zash@zash.se>
parents:
2267
diff
changeset
|
14 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
|
15 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
|
16 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
|
17 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
|
18 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
|
19 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
|
20 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
|
21 "unknown"; |
2283
bd1117002a9b
mod_spam_reporting: Correctly check <text> child, not <reason>
Kim Alvefur <zash@zash.se>
parents:
2281
diff
changeset
|
22 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
|
23 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
|
24 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
|
25 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
|
26 item = item, report = report, reason = reason, }); |
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
|
27 end |
2266
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 end |
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 end, 1); |