Annotate

mod_report_forward/mod_report_forward.lua @ 6091:a1f6fe0025d2

mod_invites_tracking: Add Compability
author Menel <menel@snikket.de>
date Sun, 08 Dec 2024 22:27:39 +0100
parent 6068:226886ffafb0
child 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
5880
6fe4dab27187 mod_report_forward: Depend on mod_spam_reporting for auto-loading
Matthew Wild <mwild1@gmail.com>
parents: 5879
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: 5879
diff changeset
10
5878
fcfe490de8a4 mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents: 5871
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
5879
05356f2d4425 mod_report_forward: Open archive store correctly (thanks Menel)
Matthew Wild <mwild1@gmail.com>
parents: 5878
diff changeset
13 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
14
5878
fcfe490de8a4 mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents: 5871
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: 5871
diff changeset
16 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
17 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
18 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
19
5878
fcfe490de8a4 mod_spam_report_forwarder: Rename to mod_report_forward
Matthew Wild <mwild1@gmail.com>
parents: 5871
diff changeset
20 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
21 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
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
5940
1927d4d27a26 mod_report_forward: Some whitespace fixes
Matthew Wild <mwild1@gmail.com>
parents: 5939
diff changeset
31 --
5868
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
6068
226886ffafb0 mod_report_forward: Drop 'spam-' here too?
Kim Alvefur <zash@zash.se>
parents: 6067
diff changeset
34 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
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, ...);
5881
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
diff changeset
43 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
44 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
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: 5881
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: 5881
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: 5881
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: 5881
diff changeset
49 end
5871
d00af6ebb326 mod_spam_report_forwarder: Only forward to xmpp: URIs, and exclude MUCs
Matthew Wild <mwild1@gmail.com>
parents: 5868
diff changeset
50 end
5881
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
diff changeset
51 else
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
diff changeset
52 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
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
5881
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
diff changeset
62 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
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)
5881
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
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: 5880
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: 5880
diff changeset
68 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
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: 6043
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: 6043
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: 6043
diff changeset
72 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
73 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
74 break;
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6043
diff changeset
75 end
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6043
diff changeset
76 end
5881
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
diff changeset
77 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
78
6066
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6043
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: 6043
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: 6043
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: 6043
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: 6043
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: 6043
diff changeset
84 address = host;
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6043
diff changeset
85 else
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6043
diff changeset
86 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
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
6066
91590d92b919 mod_report_forward: Add default fallback to domain JID when sending reports
Matthew Wild <mwild1@gmail.com>
parents: 6043
diff changeset
89
5868
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)
5868
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);
5868
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
5939
db5128d1a16c mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents: 5888
diff changeset
108 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
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;
5939
db5128d1a16c mod_report_forward: Fix traceback when reporting a specific message (thanks singpolyma)
Matthew Wild <mwild1@gmail.com>
parents: 5888
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: 5888
diff changeset
118 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
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;
6043
7b093a9b95ea mod_report_forward: Fix traceback on error message passed to datetime function
Kim Alvefur <zash@zash.se>
parents: 5940
diff changeset
121 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
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
5888
b5a110544fd4 mod_report_forward: Include id on report submissions
Matthew Wild <mwild1@gmail.com>
parents: 5884
diff changeset
131 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
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
5868
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
5868
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);
5881
ff90dad75352 mod_report_forward: Fixes for abuse contact address lookup in origin reporting
Matthew Wild <mwild1@gmail.com>
parents: 5880
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: 5880
diff changeset
156 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
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);