Mercurial > prosody-modules
diff mod_admin_notify/mod_admin_notify.lua @ 4238:e97c509fdbe3
mod_admin_notify: New module providing an API to notify host admins
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 09 Nov 2020 16:53:13 +0000 |
parents | |
children | 44e18454e1e0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_admin_notify/mod_admin_notify.lua Mon Nov 09 16:53:13 2020 +0000 @@ -0,0 +1,27 @@ +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