-- Allows clients from whitelisted domains (muc_password_whitelist) to join -- password-protected MUC rooms without supplying the room password. The module -- injects the room's current password into the join stanza on behalf of -- whitelisted clients, so the standard password check in Prosody's MUC module -- succeeds transparently. -- This module is enabled under the MUC component. --- AUTHOR: https://gist.github.com/legastero Lance Stout local jid_split = require "util.jid".split; local whitelist = module:get_option_set("muc_password_whitelist"); local MUC_NS = "http://jabber.org/protocol/muc"; module:hook("muc-occupant-pre-join", function (event) local room, stanza = event.room, event.stanza; local user, domain, res = jid_split(event.stanza.attr.from); --no user object means no way to check whitelist if user == nil then return end if not whitelist then return; end if not whitelist:contains(domain) and not whitelist:contains(user..'@'..domain) then return; end local join = stanza:get_child("x", MUC_NS); if not join then join = stanza:tag("x", { xmlns = MUC_NS }); end local password = join:get_child("password", MUC_NS); if password then -- removes