view mod_admin_notify/mod_admin_notify.lua @ 6317:7b693a5539ad

mod_auth_http_async: Update documentation The required async APIs were included in 0.10.0, but at the time of this writing we only consider 0.12.x and later supported. The fallback sync API would have made it work with even earlier versions, but I don't remember specifically and it doesn't matter.
author Kim Alvefur <zash@zash.se>
date Tue, 02 Sep 2025 21:32:01 +0200
parents 44e18454e1e0
children
line wrap: on
line source

local it = require "util.iterators";
local jid = require "util.jid";
local set = require "util.set";
local st = require "util.stanza";

local roles_store = module:open_store("roles", "map");
local config_admins = module:get_option_inherited_set("admins", {}) / jid.prep;

local function append_host(username)
	return username.."@"..module.host;
end

local function get_admins()
	local role_admins = roles_store:get_all("prosody:admin") or {};
	local admins = config_admins + (set.new(it.to_array(it.keys(role_admins))) / append_host);
	return admins;
end

function notify(text) --luacheck: ignore 131/notify
	local base_msg = st.message({ from = module.host })
		:text_tag("body", text);
	for admin_jid in get_admins() do
		local msg = st.clone(base_msg);
		msg.attr.to = admin_jid;
		module:send(msg);
	end
end