annotate mod_admin_notify/mod_admin_notify.lua @ 4738:5aee8d86629a

mod_bookmarks2: Fix handling of nick and password elements This form of child retrieval fails when the stanza elements internally don't have an 'xmlns' attribute, which can happen sometimes for some reason, including when they have been constructed via the stanza builder API. When that is the case then the explicit namespace arguemnt does not match the nil value of the internal attribute. Calling `:get_child()` without the namespace argument does the right thing here, with both nil and the parent namespace as valid values for the internal attribute.
author Kim Alvefur <zash@zash.se>
date Wed, 03 Nov 2021 21:11:55 +0100
parents 44e18454e1e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4238
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");
4274
44e18454e1e0 mod_admin_notify: Fix traceback when no admins listed in config
Matthew Wild <mwild1@gmail.com>
parents: 4238
diff changeset
7 local config_admins = module:get_option_inherited_set("admins", {}) / jid.prep;
4238
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