annotate mod_report_forward/mod_report_forward.lua @ 6513:5fb466693e85

mod_storage_xmlarchive: Ensure list index files are removed using os.remove() on the list files leaves the new index files behind since util.datamanager does not know they are removed. Thanks Link Mauve
author Kim Alvefur <zash@zash.se>
date Tue, 07 Apr 2026 21:10:54 +0200
parents fc521fb5ffa0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6114
fc521fb5ffa0 mod_report_forward: Measure number of forwarded reports
Kim Alvefur <zash@zash.se>
parents: 6040
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: 6040
diff changeset
10
5856
6fe4dab27187 mod_report_forward: Depend on mod_spam_reporting for auto-loading
Matthew Wild <mwild1@gmail.com>
parents: 5855
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: 5855
diff changeset
12
5854
fcfe490de8a4 mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents: 5847
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
5855
05356f2d4425 mod_report_forward: Open archive store correctly (thanks Menel)
Matthew Wild <mwild1@gmail.com>
parents: 5854
diff changeset
15 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
16
5854
fcfe490de8a4 mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents: 5847
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: 5847
diff changeset
18 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
19 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
20 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
21
5854
fcfe490de8a4 mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents: 5847
diff changeset
22 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
23 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
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
5916
1927d4d27a26 mod_report_forward: Some whitespace fixes
Matthew Wild <mwild1@gmail.com>
parents: 5915
diff changeset
33 --
5844
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
6040
226886ffafb0 mod_report_forward: Drop 'spam-' here too?
Kim Alvefur <zash@zash.se>
parents: 6039
diff changeset
36 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
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, ...);
5857
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
diff changeset
45 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
46 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
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: 5857
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: 5857
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: 5857
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: 5857
diff changeset
51 end
5847
d00af6ebb326 mod_spam_report_forwarder: Only forward to xmpp: URIs, and exclude MUCs
Matthew Wild <mwild1@gmail.com>
parents: 5844
diff changeset
52 end
5857
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
diff changeset
53 else
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
diff changeset
54 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
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
5857
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
diff changeset
64 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
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)
5857
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
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: 5856
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: 5856
diff changeset
70 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
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: 6015
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: 6015
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: 6015
diff changeset
74 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
75 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
76 break;
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6015
diff changeset
77 end
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6015
diff changeset
78 end
5857
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
diff changeset
79 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
80
6038
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6015
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: 6015
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: 6015
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: 6015
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: 6015
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: 6015
diff changeset
86 address = host;
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6015
diff changeset
87 else
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6015
diff changeset
88 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
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
6038
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6015
diff changeset
91
5844
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)
5844
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);
5844
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
5915
db5128d1a16c mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents: 5864
diff changeset
110 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
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;
5915
db5128d1a16c mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents: 5864
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: 5864
diff changeset
120 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
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;
6015
7b093a9b95ea mod_report_forward: Fix traceback on error message passed to datetime function
Kim Alvefur <zash@zash.se>
parents: 5916
diff changeset
123 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
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
5864
b5a110544fd4 mod_report_forward: Include id on report submissions
Matthew Wild <mwild1@gmail.com>
parents: 5860
diff changeset
133 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
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
5844
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
6114
fc521fb5ffa0 mod_report_forward: Measure number of forwarded reports
Kim Alvefur <zash@zash.se>
parents: 6040
diff changeset
146 count_report:with_labels():add(1);
5844
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);
5857
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5856
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: 5856
diff changeset
159 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
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);