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
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
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);