Mercurial > prosody-modules
changeset 3024:f54c80404ad3
mod_muc_access_control: Multiple fixes to make the module work (fixes #1086)
author | Frank Doepper <prosody@woffs.de> |
---|---|
date | Tue, 22 May 2018 16:13:03 +0100 (2018-05-22) |
parents | 38365c1f1fe4 |
children | 5b8983e100da |
files | mod_muc_access_control/mod_muc_access_control.lua |
diffstat | 1 files changed, 12 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_muc_access_control/mod_muc_access_control.lua Tue May 22 14:20:23 2018 +0100 +++ b/mod_muc_access_control/mod_muc_access_control.lua Tue May 22 16:13:03 2018 +0100 @@ -13,13 +13,14 @@ else local prepped_list = {}; for _, unprepped_jid in ipairs(unprepped_list) do - local prepped_jid = jid.prep(jid); + local prepped_jid = jid.prep(unprepped_jid); if not prepped_jid then module:log("error", "Invalid JID: %s", unprepped_jid); else - table.insert(prepped_list, jid.pep(jid)); + prepped_list[prepped_jid] = true; end end + access_lists[prepped_room_name] = prepped_list; end end @@ -34,11 +35,11 @@ end module:hook("presence/full", function(event) - local stanza = event.stanza; + local stanza = event.stanza; - if stanza.name == "presence" and stanza.attr.type == "unavailable" then -- Leaving events get discarded - return; - end + if stanza.name == "presence" and stanza.attr.type == "unavailable" then -- Leaving events get discarded + return; + end -- Get the room local room = jid.split(stanza.attr.to); @@ -49,9 +50,9 @@ -- Checking whether room is restricted local check_restricted = is_restricted(room, who) - if check_restricted ~= nil then - event.allowed = false; - event.stanza.attr.type = 'error'; - return event.origin.send(st.error_reply(event.stanza, "cancel", "forbidden", "You're not allowed to enter this room: " .. check_restricted)); - end + if check_restricted ~= nil then + event.allowed = false; + event.stanza.attr.type = 'error'; + return event.origin.send(st.error_reply(event.stanza, "cancel", "forbidden", "You're not allowed to enter this room: " .. check_restricted)); + end end, 10);