Software / code / prosody-modules
Annotate
mod_report_forward/mod_report_forward.lua @ 6319:63ef69b2f046
mod_http_oauth2: Assume Prosody 13.0+ roles are available
Per the README, 0.12 is not supported, so we should not need to worry
about this. Plus it is assumed to be present elsewhere and that would
throw errors.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 02 Jul 2025 16:15:32 +0200 |
| parent | 6142:fc521fb5ffa0 |
| rev | line source |
|---|---|
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
1 local dt = require "util.datetime"; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
2 local jid = require "util.jid"; |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local st = require "util.stanza"; |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
4 local url = require "socket.url"; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
5 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
6 local new_id = require "util.id".short; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
7 local render = require"util.interpolation".new("%b{}", function (s) return s; end); |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
|
6142
fc521fb5ffa0
mod_report_forward: Measure number of forwarded reports
Kim Alvefur <zash@zash.se>
parents:
6068
diff
changeset
|
9 local count_report = module:metric("counter", "forwarded", "reports", "Number of spam and abuse reports forwarded to remote receivers."); |
|
fc521fb5ffa0
mod_report_forward: Measure number of forwarded reports
Kim Alvefur <zash@zash.se>
parents:
6068
diff
changeset
|
10 |
|
5880
6fe4dab27187
mod_report_forward: Depend on mod_spam_reporting for auto-loading
Matthew Wild <mwild1@gmail.com>
parents:
5879
diff
changeset
|
11 module:depends("spam_reporting"); |
|
6fe4dab27187
mod_report_forward: Depend on mod_spam_reporting for auto-loading
Matthew Wild <mwild1@gmail.com>
parents:
5879
diff
changeset
|
12 |
|
5878
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5871
diff
changeset
|
13 local destinations = module:get_option_set("report_forward_to", {}); |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 |
|
5879
05356f2d4425
mod_report_forward: Open archive store correctly (thanks Menel)
Matthew Wild <mwild1@gmail.com>
parents:
5878
diff
changeset
|
15 local archive = module:open_store("archive", "archive"); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
16 |
|
5878
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5871
diff
changeset
|
17 local cache_size = module:get_option_number("report_forward_contact_cache_size", 256); |
|
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5871
diff
changeset
|
18 local report_to_origin = module:get_option_boolean("report_forward_to_origin", true); |
|
6066
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
19 local report_to_origin_fallback = module:get_option_boolean("report_forward_to_origin_fallback", true); |
|
5878
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5871
diff
changeset
|
20 local contact_lookup_timeout = module:get_option_number("report_forward_contact_lookup_timeout", 180); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
21 |
|
5878
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5871
diff
changeset
|
22 local body_template = module:get_option_string("report_forward_body_template", [[ |
|
5940
1927d4d27a26
mod_report_forward: Some whitespace fixes
Matthew Wild <mwild1@gmail.com>
parents:
5939
diff
changeset
|
23 SPAM/ABUSE REPORT |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
24 ----------------- |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
25 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
26 Reported JID: {reported_jid} |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
27 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
28 A user on our service has reported a message originating from the above JID on |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
29 your server. |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
30 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
31 {reported_message_time&The reported message was sent at: {reported_message_time}} |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
32 |
|
5940
1927d4d27a26
mod_report_forward: Some whitespace fixes
Matthew Wild <mwild1@gmail.com>
parents:
5939
diff
changeset
|
33 -- |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
34 This message contains also machine-readable payloads, including XEP-0377, in case |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
35 you want to automate handling of these reports. You can receive these reports |
|
6068
226886ffafb0
mod_report_forward: Drop 'spam-' here too?
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
36 to a different address by setting 'report-addresses' in your server |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
37 contact info configuration. For more information, see https://xmppbl.org/reports/ |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
38 ]]):gsub("^%s+", ""):gsub("(%S)\n(%S)", "%1 %2"); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
39 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
40 local report_addresses = require "util.cache".new(cache_size); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
41 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
42 local function get_address(form, ...) |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
43 for i = 1, select("#", ...) do |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
44 local field_var = select(i, ...); |
|
5881
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
45 local field = form:get_child_with_attr("field", nil, "var", field_var); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
46 if field then |
|
5884
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5881
diff
changeset
|
47 for value in field:childtags("value") do |
|
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5881
diff
changeset
|
48 local parsed = url.parse(value:get_text()); |
|
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5881
diff
changeset
|
49 if parsed.scheme == "xmpp" and parsed.path and not parsed.query then |
|
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5881
diff
changeset
|
50 return parsed.path; |
|
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5881
diff
changeset
|
51 end |
|
5871
d00af6ebb326
mod_spam_report_forwarder: Only forward to xmpp: URIs, and exclude MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5868
diff
changeset
|
52 end |
|
5881
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
53 else |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
54 module:log("debug", "No field '%s'", field_var); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
55 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
56 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
57 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
58 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
59 local function get_origin_report_address(reported_jid) |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
60 local host = jid.host(reported_jid); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
61 local address = report_addresses:get(host); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
62 if address then return address; end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
63 |
|
5881
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
64 local contact_query = st.iq({ type = "get", to = host, from = module.host, id = new_id() }) |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
65 :query("http://jabber.org/protocol/disco#info"); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
66 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
67 return module:send_iq(contact_query, prosody.hosts[module.host], contact_lookup_timeout) |
|
5881
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
68 :next(function (result) |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
69 module:log("debug", "Processing contact form..."); |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
70 local response = result.stanza; |
|
6066
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
71 if response.attr.type == "result" then |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
72 for form in response.tags[1]:childtags("x", "jabber:x:data") do |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
73 local form_type = form:get_child_with_attr("field", nil, "var", "FORM_TYPE"); |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
74 if form_type and form_type:get_child_text("value") == "http://jabber.org/network/serverinfo" then |
|
6067
93efc6c4fe93
mod_report_forward: Drop 'spam' prefix from address field, it's not only spam
Matthew Wild <mwild1@gmail.com>
parents:
6066
diff
changeset
|
75 address = get_address(form, "report-addresses", "abuse-addresses"); |
|
6066
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
76 break; |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
77 end |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
78 end |
|
5881
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
79 end |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
80 |
|
6066
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
81 if not address then |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
82 if report_to_origin_fallback then |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
83 -- If no contact address found, but fallback is enabled, |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
84 -- just send the report to the domain |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
85 module:log("debug", "Falling back to domain to send report to %s", host); |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
86 address = host; |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
87 else |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
88 module:log("warn", "Failed to query contact addresses of %s: %s", host, response); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
89 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
90 end |
|
6066
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6043
diff
changeset
|
91 |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
92 return address; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
93 end); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
94 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
95 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
96 local function send_report(to, message) |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
97 local m = st.clone(message); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
98 m.attr.to = to; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
99 module:send(m); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
100 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
101 |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 function forward_report(event) |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
103 local reporter_username = event.origin.username; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
104 local reporter_jid = jid.join(reporter_username, module.host); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
105 local reported_jid = event.jid; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
106 |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 local report = st.clone(event.report); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
108 report:text_tag("jid", reported_jid, { xmlns = "urn:xmpp:jid:0" }); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
109 |
|
5939
db5128d1a16c
mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
110 local reported_message_el = report:get_child_with_attr( |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
111 "stanza-id", |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
112 "urn:xmpp:sid:0", |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
113 "by", |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
114 reported_jid, |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
115 jid.prep |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
116 ); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
117 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
118 local reported_message, reported_message_time, reported_message_with; |
|
5939
db5128d1a16c
mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
119 if reported_message_el then |
|
db5128d1a16c
mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
120 reported_message, reported_message_time, reported_message_with = archive:get(reporter_username, reported_message_el.attr.id); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
121 if jid.bare(reported_message_with) ~= event.jid then |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
122 reported_message = nil; |
|
6043
7b093a9b95ea
mod_report_forward: Fix traceback on error message passed to datetime function
Kim Alvefur <zash@zash.se>
parents:
5940
diff
changeset
|
123 reported_message_time = nil; |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
124 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
125 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
126 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
127 local body_text = render(body_template, { |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
128 reporter_jid = reporter_jid; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
129 reported_jid = event.jid; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
130 reported_message_time = dt.datetime(reported_message_time); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
131 }); |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
132 |
|
5888
b5a110544fd4
mod_report_forward: Include id on report submissions
Matthew Wild <mwild1@gmail.com>
parents:
5884
diff
changeset
|
133 local message = st.message({ from = module.host, id = new_id() }) |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
134 :text_tag("body", body_text) |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
135 :add_child(report); |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
136 |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
137 if reported_message then |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
138 reported_message.attr.xmlns = "jabber:client"; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
139 local fwd = st.stanza("forwarded", { xmlns = "urn:xmpp:forward:0" }) |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
140 :tag("delay", { xmlns = "urn:xmpp:delay", stamp = dt.datetime(reported_message_time) }):up() |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
141 :add_child(reported_message); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
142 message:add_child(fwd); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
143 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
144 |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
145 for destination in destinations do |
|
6142
fc521fb5ffa0
mod_report_forward: Measure number of forwarded reports
Kim Alvefur <zash@zash.se>
parents:
6068
diff
changeset
|
146 count_report:with_labels():add(1); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
147 send_report(destination, message); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
148 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
149 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
150 if report_to_origin then |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
151 module:log("debug", "Sending report to origin server..."); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
152 get_origin_report_address(event.jid):next(function (origin_report_address) |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
153 if not origin_report_address then |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
154 module:log("warn", "Couldn't report to origin: no contact address found for %s", jid.host(event.jid)); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
155 return; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
156 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
157 send_report(origin_report_address, message); |
|
5881
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
158 end):catch(function (e) |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5880
diff
changeset
|
159 module:log("error", "Failed to report to origin server: %s", e); |
|
5868
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
160 end); |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 end |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
162 end |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
163 |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
164 module:hook("spam_reporting/abuse-report", forward_report, -1); |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
165 module:hook("spam_reporting/spam-report", forward_report, -1); |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
166 module:hook("spam_reporting/unknown-report", forward_report, -1); |