Mercurial > prosody-modules
view mod_block_registrations/mod_block_registrations.lua @ 1268:854a3933cfcd
mod_muc_log_http: URL-encode room names. This allows special characters in room names to work. Ideally this escaping shouldn’t be done in the user visible content, but the module’s template system doesn’t currently allow that.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sat, 04 Jan 2014 16:50:57 -0500 |
parents | cabbcc1997d9 |
children | dbaa67babeb4 |
line wrap: on
line source
local st = require "util.stanza"; local nodeprep = require "util.encodings".stringprep.nodeprep; local block_users = module:get_option_set("block_registrations_users", { "admin" }); local block_patterns = module:get_option_set("block_registrations_matching", {}); local require_pattern = module:get_option_string("block_registrations_require"); function is_blocked(username) -- Check if the username is simply blocked if block_users:contains(username) then return true; end for pattern in block_patterns do if username:match(pattern) then return true; end end -- Not blocked, but check that username matches allowed pattern if require_pattern and not username:match(require_pattern) then return true; end end module:hook("stanza/iq/jabber:iq:register:query", function(event) local session, stanza = event.origin, event.stanza; if stanza.attr.type == "set" then local query = stanza.tags[1]; local username = nodeprep(query:get_child_text("username")); if username and is_blocked(username) then session.send(st.error_reply(stanza, "modify", "policy-violation", "Username is blocked")); return true; end end end, 10);