Mercurial > prosody-modules
changeset 5172:dc6a10629670
New module, mod_muc_reserve_nick_pattern
author | Stephen Paul Weber <singpolyma@singpolyma.net> |
---|---|
date | Mon, 20 Feb 2023 13:42:13 -0500 |
parents | 1682166171ff |
children | 460f78654864 |
files | mod_muc_reserve_nick_pattern/README.markdown mod_muc_reserve_nick_pattern/mod_muc_reserve_nick_pattern.lua |
diffstat | 2 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_muc_reserve_nick_pattern/README.markdown Mon Feb 20 13:42:13 2023 -0500 @@ -0,0 +1,23 @@ +--- +labels: +- 'Stage-Alpha' +summary: 'Require MUC occupant nicknames to no match some patterns' +--- + +Introduction +============ + +This checks the nickname of a joining user against a configurable list of +[Lua patterns](https://www.lua.org/manual/5.2/manual.html#6.4.1), and prevents +them from joining if it matches any of them. + +Configuration +============= + +There is a single configuration option, `muc_reserve_nick_patterns` and the +default is `{}` - i.e. allow everything. + +Compatibility +============= + +Requires Prosody 0.11 or higher.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_muc_reserve_nick_pattern/mod_muc_reserve_nick_pattern.lua Mon Feb 20 13:42:13 2023 -0500 @@ -0,0 +1,15 @@ +local jid = require "util.jid"; +local st = require "util.stanza"; + +local nick_patterns = module:get_option_array("muc_reserve_nick_patterns", {}); + +module:hook("muc-occupant-pre-join", function (event) + local nick = jid.resource(event.occupant.nick); + for k, nick_pattern in pairs(nick_patterns) do + if nick:match(nick_pattern) then + local reply = st.error_reply(event.stanza, "modify", "conflict", "Unacceptable nickname, please try another"); + module:send(reply); + return true; + end + end +end);