mod_admin_notify/mod_admin_notify.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:26:26 +0100
changeset 5063 5f1120c284c5
parent 4278 44e18454e1e0
permissions -rw-r--r--
mod_cloud_notify_extensions: Add note about dependency Noting here because people might not click through to see it on the mod_cloud_notify_encrypted page.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4242
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
local it = require "util.iterators";
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
local jid = require "util.jid";
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
local set = require "util.set";
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
local st = require "util.stanza";
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     5
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     6
local roles_store = module:open_store("roles", "map");
4278
44e18454e1e0 mod_admin_notify: Fix traceback when no admins listed in config
Matthew Wild <mwild1@gmail.com>
parents: 4242
diff changeset
     7
local config_admins = module:get_option_inherited_set("admins", {}) / jid.prep;
4242
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     9
local function append_host(username)
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    10
	return username.."@"..module.host;
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    11
end
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
local function get_admins()
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    14
	local role_admins = roles_store:get_all("prosody:admin") or {};
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
	local admins = config_admins + (set.new(it.to_array(it.keys(role_admins))) / append_host);
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
	return admins;
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    17
end
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    18
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    19
function notify(text) --luacheck: ignore 131/notify
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    20
	local base_msg = st.message({ from = module.host })
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    21
		:text_tag("body", text);
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    22
	for admin_jid in get_admins() do
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    23
		local msg = st.clone(base_msg);
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    24
		msg.attr.to = admin_jid;
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
		module:send(msg);
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    26
	end
e97c509fdbe3 mod_admin_notify: New module providing an API to notify host admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    27
end