Mercurial > prosody-modules
annotate mod_spam_reporting/mod_spam_reporting.lua @ 5298:12f7d8b901e0
mod_audit: Support for adding location (GeoIP) to audit events
This can be more privacy-friendly than logging full IP addresses, and also
more informative to a user - IP addresses don't mean much to the average
person, however if they see activity from outside their expected country, they
can immediately identify suspicious activity.
As with IPs, this field is configurable for deployments that would like to
disable it. Location is also not logged when the geoip library is not
available.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 01 Apr 2023 13:11:53 +0100 |
parents | a357c3e3bd32 |
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 |
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 |
4660
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
17 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
|
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 |
4660
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
20 local report_type, reason; |
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
21 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
|
22 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
|
23 reason = report:get_child_text("text"); |
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
24 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
|
25 report_type = "unknown"; |
4612
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
26 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
|
27 report_type = "abuse"; |
4612
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
28 end |
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
29 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
|
30 report_type = "spam"; |
4612
fe24bda72838
mod_spam_reporting: Add support for XEP-0377 0.3
Martin Dosch <martin@mdosch.de>
parents:
2298
diff
changeset
|
31 end |
4660
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
32 reason = report:get_child_text("text"); |
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
33 end |
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
34 |
ce826ac8496e
mod_spam_reporting: Refactor to deduplicate code
Kim Alvefur <zash@zash.se>
parents:
4659
diff
changeset
|
35 if report_type then |
4662
a357c3e3bd32
mod_spam_reporting: Fallback string for missing 'reason'
Kim Alvefur <zash@zash.se>
parents:
4661
diff
changeset
|
36 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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 end |
2266
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 end |
33a0988e5f1c
mod_spam_reporting: Basic implementation of XEP-0377: Spam Reporting
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 end, 1); |