# HG changeset patch # User Matthew Wild # Date 1732543576 0 # Node ID 765e0235c2026dfbab5f336a476dbdc3e0427946 # Parent b04518fa0987e473b16ab01dc315d6cde7458799 mod_report_tracker: Add trait for reported accounts, for mod_report_affiliations diff -r b04518fa0987 -r 765e0235c202 mod_report_tracker/mod_report_tracker.lua --- a/mod_report_tracker/mod_report_tracker.lua Mon Nov 25 13:12:20 2024 +0000 +++ b/mod_report_tracker/mod_report_tracker.lua Mon Nov 25 14:06:16 2024 +0000 @@ -1,12 +1,14 @@ local um = require "core.usermanager"; +local cache = require "util.cache"; local jid = require "util.jid"; - local trusted_reporters = module:get_option_inherited_set("trusted_reporters", {}); local reports_received = module:open_store("reports_received"); local xmlns_reporting = "urn:xmpp:reporting:1"; +local reported_users = cache.new(256); + local function is_trusted_reporter(reporter_jid) return trusted_reporters:contains(reporter_jid); end @@ -54,6 +56,7 @@ end reports_received:set(reported_user, reporter_jid, current_reports); + reported_users:set(reported_user, true); module:log("info", "Received abuse report about <%s> from <%s>", reported_jid, reporter_jid); @@ -71,3 +74,20 @@ end module:hook("message/host", handle_report); + +module:add_item("account-trait", { + name = "reported-by-trusted-server"; + prob_bad_true = 0.80; + prob_bad_false = 0.50; +}); + +module:hook("get-account-traits", function (event) + local username = event.username; + local reported = reported_users:get(username); + if reported == nil then + -- Check storage, update cache + reported = not not reports_received:get(username); + reported_users:set(username, reported); + end + event.traits["reported-by-trusted-server"] = reported; +end);