Mercurial > prosody-modules
annotate mod_spam_reporting/mod_spam_reporting.lua @ 6171:fe8222112cf4
mod_conversejs: Serve base app at /
This makes things slightly less awkward for the browser to figure out which
URLs belong to a PWA. The app's "start URL" was previously without the '/' and
therefore was not considered within the scope of the PWA. Now the canonical
app URL will always have a '/'.
Prosody/mod_http should take care of redirecting existing links without the
trailing / to the new URL.
If you have an installation at https://prosody/conversejs then it is now at
https://prosody/conversejs/ (the first URL will now redirect to the second
URL if you use it).
The alternative would be to make the PWA scope include the parent, i.e.
the whole of https://prosody/ in this case. This might get messy if other
PWAs are provided by the same site or Prosody installation, however.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 11 Feb 2025 13:18:38 +0000 |
| parents | 83adef4f7d2e |
| children |
| 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 |
|
6113
83adef4f7d2e
mod_spam_reporting: Add a metric
Kim Alvefur <zash@zash.se>
parents:
4662
diff
changeset
|
8 local count_report = module:metric("counter", "received", "reports", "Number of spam and abuse reports submitted by users.", { "report_type" }); |
|
83adef4f7d2e
mod_spam_reporting: Add a metric
Kim Alvefur <zash@zash.se>
parents:
4662
diff
changeset
|
9 |
|
2266
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 module:depends("blocklist"); |
|
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 |
|
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:0"); |
|
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 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
|
14 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
|
15 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
|
16 |
|
2275
7f228bf82fe5
mod_spam_reporting: Hook the blocking action, not blocklist fetching
Kim Alvefur <zash@zash.se>
parents:
2267
diff
changeset
|
17 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
|
18 for item in event.stanza.tags[1]:childtags("item") do |
|
4660
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
19 local report = item:get_child("report", "urn:xmpp:reporting:0") or item:get_child("report", "urn:xmpp:reporting:1"); |
|
2281
0899eeb0b3f7
mod_spam_reporting: Apply JID prepping
Kim Alvefur <zash@zash.se>
parents:
2280
diff
changeset
|
20 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
|
21 if report and jid then |
|
4660
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
22 local report_type, reason; |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
23 if report.attr.xmlns == "urn:xmpp:reporting:0" then |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
24 report_type = report:get_child("spam") and "spam" or report:get_child("abuse") and "abuse" or "unknown"; |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
25 reason = report:get_child_text("text"); |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
26 elseif report.attr.xmlns == "urn:xmpp:reporting:1" then |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
27 report_type = "unknown"; |
|
4612
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
28 if report.attr.reason == "urn:xmpp:reporting:abuse" then |
|
4659
cc8b221f137c
mod_spam_reporting: Rename variable avoid name clash with global function
Kim Alvefur <zash@zash.se>
parents:
4658
diff
changeset
|
29 report_type = "abuse"; |
|
4612
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
30 end |
|
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
31 if report.attr.reason == "urn:xmpp:reporting:spam" then |
|
4659
cc8b221f137c
mod_spam_reporting: Rename variable avoid name clash with global function
Kim Alvefur <zash@zash.se>
parents:
4658
diff
changeset
|
32 report_type = "spam"; |
|
4612
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
33 end |
|
4660
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
34 reason = report:get_child_text("text"); |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
35 end |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
36 |
|
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
37 if report_type then |
|
6113
83adef4f7d2e
mod_spam_reporting: Add a metric
Kim Alvefur <zash@zash.se>
parents:
4662
diff
changeset
|
38 count_report:with_labels(report_type):add(1); |
|
4662
a357c3e3bd32
mod_spam_reporting: Fallback string for missing 'reason'
Kim Alvefur <zash@zash.se>
parents:
4661
diff
changeset
|
39 module:log("warn", "Received report of %s from JID '%s', %s", report_type, jid, reason or "no reason given"); |
|
4659
cc8b221f137c
mod_spam_reporting: Rename variable avoid name clash with global function
Kim Alvefur <zash@zash.se>
parents:
4658
diff
changeset
|
40 module:fire_event(module.name.."/"..report_type.."-report", { |
|
4612
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); |
