Software /
code /
prosody-modules
Changeset
6066:91590d92b919
mod_report_forward: Add default fallback to domain JID when sending reports
No harm in trying...
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 26 Nov 2024 12:12:59 +0000 |
parents | 6065:7d4386cc73d3 |
children | 6067:93efc6c4fe93 |
files | mod_report_forward/README.md mod_report_forward/mod_report_forward.lua |
diffstat | 2 files changed, 21 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_report_forward/README.md Mon Nov 25 14:33:01 2024 +0000 +++ b/mod_report_forward/README.md Tue Nov 26 12:12:59 2024 +0000 @@ -35,7 +35,9 @@ The module looks up an abuse report address using XEP-0157 (only XMPP addresses are accepted). If it fails to find any suitable destination, it will -log a warning and not send the report. +fall back to sending the report to the domain itself unless `report_forward_to_origin_fallback` +is disabled (set to `false`). If the fallback is disabled, it will log a +warning and not send the report.
--- a/mod_report_forward/mod_report_forward.lua Mon Nov 25 14:33:01 2024 +0000 +++ b/mod_report_forward/mod_report_forward.lua Tue Nov 26 12:12:59 2024 +0000 @@ -14,6 +14,7 @@ local cache_size = module:get_option_number("report_forward_contact_cache_size", 256); local report_to_origin = module:get_option_boolean("report_forward_to_origin", true); +local report_to_origin_fallback = module:get_option_boolean("report_forward_to_origin_fallback", true); local contact_lookup_timeout = module:get_option_number("report_forward_contact_lookup_timeout", 180); local body_template = module:get_option_string("report_forward_body_template", [[ @@ -65,18 +66,27 @@ :next(function (result) module:log("debug", "Processing contact form..."); local response = result.stanza; - if response.attr.type ~= "result" then - module:log("warn", "Failed to query contact addresses of %s: %s", host, response); - return; + if response.attr.type == "result" then + for form in response.tags[1]:childtags("x", "jabber:x:data") do + local form_type = form:get_child_with_attr("field", nil, "var", "FORM_TYPE"); + if form_type and form_type:get_child_text("value") == "http://jabber.org/network/serverinfo" then + address = get_address(form, "spam-report-addresses", "abuse-addresses"); + break; + end + end end - for form in response.tags[1]:childtags("x", "jabber:x:data") do - local form_type = form:get_child_with_attr("field", nil, "var", "FORM_TYPE"); - if form_type and form_type:get_child_text("value") == "http://jabber.org/network/serverinfo" then - address = get_address(form, "spam-report-addresses", "abuse-addresses"); - break; + if not address then + if report_to_origin_fallback then + -- If no contact address found, but fallback is enabled, + -- just send the report to the domain + module:log("debug", "Falling back to domain to send report to %s", host); + address = host; + else + module:log("warn", "Failed to query contact addresses of %s: %s", host, response); end end + return address; end); end