File

mod_audit_user_accounts/mod_audit_user_accounts.lua @ 6112:4c0e3fe57e92

mod_compliance_latest: Gracefull error logging on missing dependency. diff --git a/mod_compliance_latest/README.md b/mod_compliance_latest/README.md --- a/mod_compliance_latest/README.md +++ b/mod_compliance_latest/README.md @@ -9,13 +9,15 @@ rockspec: # Introduction -This module will always require and load to the lastest compliance tester we have in the community modules. -Currently this is [mod_compliance_2023]. +This meta-module will always `require` (and therefore auto-load) the lastest compliance tester we have in the community modules. +Currently this is [mod_compliance_2023]. See the linked module for further details. + +If you do not use the *Prosody plugin installer* this module will likely have limited value to you. +You can also just install the current compliance tester manually. # Configuration -Just load this module as any other module and it will automatically install [mod_compliance_2023] if you use the Prosody plugin installer. -See the linked module for further details. +Just load this module as any other module and it will automatically install and load [mod_compliance_2023] if you use the *Prosody plugin installer*. # Compatibility diff --git a/mod_compliance_latest/mod_compliance_latest.lua b/mod_compliance_latest/mod_compliance_latest.lua --- a/mod_compliance_latest/mod_compliance_latest.lua +++ b/mod_compliance_latest/mod_compliance_latest.lua @@ -1,1 +1,6 @@ -module:depends("compliance_2023"); +local success, err = pcall(function() module:depends("compliance_2023") end) + +if not success then + module:log("error", "Error, can't load module: mod_compliance_2023. Is this module downloaded in a folder readable by prosody?") + return 1, "Error: Couldn't load dependency mod_compliance_2023." +end
author Menel <menel@snikket.de>
date Mon, 23 Dec 2024 12:58:03 +0100 (3 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);