File

mod_audit_user_accounts/mod_audit_user_accounts.lua @ 6057:cc665f343690

mod_firewall: SUBSCRIBED: Flip subscription check to match documentation The documentation claims that this condition checks whether the recipient is subscribed to the sender. However, it was using the wrong method, and actually checking whether the sender was subscribed to the recipient. A quick poll of folk suggested that the documentation's approach is the right one, so this should fix the code to match the documentation. This should also fix the bundled anti-spam rules from blocking presence from JIDs that you subscribe do (but don't have a mutual subscription with).
author Matthew Wild <mwild1@gmail.com>
date Fri, 22 Nov 2024 13:50:48 +0000 (4 months ago)
parent 5768:628952e4ff47
line wrap: on
line source
module:depends("audit");
-- luacheck: read globals module.audit

local dt = require "util.datetime";
local jid = require "util.jid";
local st = require "util.stanza";

local function audit_basic_event(name, custom_handler)
	module:hook(name, function (event)
		local custom;
		if custom_handler then
			custom = custom_handler(event);
		end
		module:audit(jid.join(event.username, module.host), name, {
			session = event.session;
			custom = custom;
		});
	end);
end

audit_basic_event("user-registered", function (event)
	local invite = event.validated_invite or (event.session and event.session.validated_invite);
	if not invite then return; end
	return {
		st.stanza(
			"invite-used",
			{
				xmlns = "xmpp:prosody.im/audit",
				token = invite.token,
			}
		);
	};
end);

audit_basic_event("user-deregistered-pending");
audit_basic_event("user-deregistered");

audit_basic_event("user-enabled");
audit_basic_event("user-disabled", function (event)
	local meta = event.meta;
	if not meta then return end

	local meta_st = st.stanza("disabled", {
		xmlns = "xmpp:prosody.im/audit";
		reason = meta.reason;
		when = meta.when and dt.datetime(meta.when) or nil;
	});
	if meta.comment then
		meta_st:text_tag("comment", meta.comment);
	end

	return { meta_st };
end);