annotate mod_muc_reserve_nick_pattern/mod_muc_reserve_nick_pattern.lua @ 6556:7477e97a9045

mod_firewall: Apply pre-reload state before re-reading config This change makes load/reload a bit more robust. module.load() runs before module.restore() and it reads from the config and updates the state (if needed). However, after this, module.restore() could run and apply the old state again.
author Matthew Wild <mwild1@gmail.com>
date Sun, 24 May 2026 20:03:20 +0100
parents dc6a10629670
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5172
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
1 local jid = require "util.jid";
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
2 local st = require "util.stanza";
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
3
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
4 local nick_patterns = module:get_option_array("muc_reserve_nick_patterns", {});
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
5
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
6 module:hook("muc-occupant-pre-join", function (event)
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
7 local nick = jid.resource(event.occupant.nick);
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
8 for k, nick_pattern in pairs(nick_patterns) do
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
9 if nick:match(nick_pattern) then
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
10 local reply = st.error_reply(event.stanza, "modify", "conflict", "Unacceptable nickname, please try another");
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
11 module:send(reply);
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
12 return true;
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
13 end
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
14 end
dc6a10629670 New module, mod_muc_reserve_nick_pattern
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
15 end);