Mercurial > prosody-modules
annotate mod_report_forward/mod_report_forward.lua @ 6092:bd3ff802d883
mod_anti_spam: Fix another traceback for origin sessions without an IP
This is likely to be the case for stanzas originating from local hosts, for
example (so not true s2s). It should be safe to bypass the IP check for those.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sat, 28 Dec 2024 21:02:08 +0000 |
| parents | 226886ffafb0 |
| children | fc521fb5ffa0 |
| rev | line source |
|---|---|
|
5844
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"; |
|
5844
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 |
|
5856
6fe4dab27187
mod_report_forward: Depend on mod_spam_reporting for auto-loading
Matthew Wild <mwild1@gmail.com>
parents:
5855
diff
changeset
|
9 module:depends("spam_reporting"); |
|
6fe4dab27187
mod_report_forward: Depend on mod_spam_reporting for auto-loading
Matthew Wild <mwild1@gmail.com>
parents:
5855
diff
changeset
|
10 |
|
5854
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5847
diff
changeset
|
11 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
|
12 |
|
5855
05356f2d4425
mod_report_forward: Open archive store correctly (thanks Menel)
Matthew Wild <mwild1@gmail.com>
parents:
5854
diff
changeset
|
13 local archive = module:open_store("archive", "archive"); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
14 |
|
5854
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5847
diff
changeset
|
15 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:
5847
diff
changeset
|
16 local report_to_origin = module:get_option_boolean("report_forward_to_origin", true); |
|
6038
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
17 local report_to_origin_fallback = module:get_option_boolean("report_forward_to_origin_fallback", true); |
|
5854
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5847
diff
changeset
|
18 local contact_lookup_timeout = module:get_option_number("report_forward_contact_lookup_timeout", 180); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
19 |
|
5854
fcfe490de8a4
mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents:
5847
diff
changeset
|
20 local body_template = module:get_option_string("report_forward_body_template", [[ |
|
5916
1927d4d27a26
mod_report_forward: Some whitespace fixes
Matthew Wild <mwild1@gmail.com>
parents:
5915
diff
changeset
|
21 SPAM/ABUSE REPORT |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
22 ----------------- |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
23 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
24 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
|
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 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
|
27 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
|
28 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
29 {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
|
30 |
|
5916
1927d4d27a26
mod_report_forward: Some whitespace fixes
Matthew Wild <mwild1@gmail.com>
parents:
5915
diff
changeset
|
31 -- |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
32 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
|
33 you want to automate handling of these reports. You can receive these reports |
|
6040
226886ffafb0
mod_report_forward: Drop 'spam-' here too?
Kim Alvefur <zash@zash.se>
parents:
6039
diff
changeset
|
34 to a different address by setting 'report-addresses' in your server |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
35 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
|
36 ]]):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
|
37 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
38 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
|
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 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
|
41 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
|
42 local field_var = select(i, ...); |
|
5857
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
43 local field = form:get_child_with_attr("field", nil, "var", field_var); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
44 if field then |
|
5860
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5857
diff
changeset
|
45 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:
5857
diff
changeset
|
46 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:
5857
diff
changeset
|
47 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:
5857
diff
changeset
|
48 return parsed.path; |
|
fdff8cb54302
mod_report_forward: fix address detection when there are multiple field values
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
5857
diff
changeset
|
49 end |
|
5847
d00af6ebb326
mod_spam_report_forwarder: Only forward to xmpp: URIs, and exclude MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5844
diff
changeset
|
50 end |
|
5857
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
51 else |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
52 module:log("debug", "No field '%s'", field_var); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
53 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
54 end |
|
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 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
57 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
|
58 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
|
59 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
|
60 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
|
61 |
|
5857
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
62 local contact_query = st.iq({ type = "get", to = host, from = module.host, id = new_id() }) |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
63 :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
|
64 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
65 return module:send_iq(contact_query, prosody.hosts[module.host], contact_lookup_timeout) |
|
5857
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
66 :next(function (result) |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
67 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:
5856
diff
changeset
|
68 local response = result.stanza; |
|
6038
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
69 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:
6015
diff
changeset
|
70 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:
6015
diff
changeset
|
71 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:
6015
diff
changeset
|
72 if form_type and form_type:get_child_text("value") == "http://jabber.org/network/serverinfo" then |
|
6039
93efc6c4fe93
mod_report_forward: Drop 'spam' prefix from address field, it's not only spam
Matthew Wild <mwild1@gmail.com>
parents:
6038
diff
changeset
|
73 address = get_address(form, "report-addresses", "abuse-addresses"); |
|
6038
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
74 break; |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
75 end |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
76 end |
|
5857
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
77 end |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
78 |
|
6038
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
79 if not address then |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
80 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:
6015
diff
changeset
|
81 -- 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:
6015
diff
changeset
|
82 -- 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:
6015
diff
changeset
|
83 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:
6015
diff
changeset
|
84 address = host; |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
85 else |
|
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
86 module:log("warn", "Failed to query contact addresses of %s: %s", host, response); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
87 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
88 end |
|
6038
91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents:
6015
diff
changeset
|
89 |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
90 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
|
91 end); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
92 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
93 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
94 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
|
95 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
|
96 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
|
97 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
|
98 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
99 |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 function forward_report(event) |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
101 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
|
102 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
|
103 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
|
104 |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 local report = st.clone(event.report); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
106 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
|
107 |
|
5915
db5128d1a16c
mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents:
5864
diff
changeset
|
108 local reported_message_el = report:get_child_with_attr( |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
109 "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
|
110 "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
|
111 "by", |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
112 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
|
113 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
|
114 ); |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
115 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
116 local reported_message, reported_message_time, reported_message_with; |
|
5915
db5128d1a16c
mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents:
5864
diff
changeset
|
117 if reported_message_el then |
|
db5128d1a16c
mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents:
5864
diff
changeset
|
118 reported_message, reported_message_time, reported_message_with = archive:get(reporter_username, reported_message_el.attr.id); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
119 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
|
120 reported_message = nil; |
|
6015
7b093a9b95ea
mod_report_forward: Fix traceback on error message passed to datetime function
Kim Alvefur <zash@zash.se>
parents:
5916
diff
changeset
|
121 reported_message_time = nil; |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
122 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
123 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
124 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
125 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
|
126 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
|
127 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
|
128 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
|
129 }); |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
130 |
|
5864
b5a110544fd4
mod_report_forward: Include id on report submissions
Matthew Wild <mwild1@gmail.com>
parents:
5860
diff
changeset
|
131 local message = st.message({ from = module.host, id = new_id() }) |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
132 :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
|
133 :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
|
134 |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
135 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
|
136 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
|
137 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
|
138 :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
|
139 :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
|
140 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
|
141 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
142 |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 for destination in destinations do |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
144 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
|
145 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
146 |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
147 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
|
148 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
|
149 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
|
150 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
|
151 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
|
152 return; |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
153 end |
|
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
154 send_report(origin_report_address, message); |
|
5857
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
155 end):catch(function (e) |
|
ff90dad75352
mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents:
5856
diff
changeset
|
156 module:log("error", "Failed to report to origin server: %s", e); |
|
5844
37e38ee534ea
mod_spam_report_forwarder: Support for reporting messages, and reporting to origin server
Matthew Wild <mwild1@gmail.com>
parents:
5238
diff
changeset
|
157 end); |
|
5238
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
158 end |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 end |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
160 |
|
94472eb41d0a
mod_spam_report_forwarder: Forward spam/abuse reports to one or more JIDs
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 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
|
162 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
|
163 module:hook("spam_reporting/unknown-report", forward_report, -1); |
