Annotate

mod_report_forward/mod_report_forward.lua @ 6281:9d88c3d9eea5

mod_http_oauth2: Enforce the registered grant types Thus a client can limit itself to certain grant types. Not sure if this prevents any attacks, but what was the point of including this in the registration if it was not going to be enforced? This became easier to do with client_id being available earlier.
author Kim Alvefur <zash@zash.se>
date Mon, 02 Jun 2025 20:55:20 +0200
parent 6142:fc521fb5ffa0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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);