Software /
code /
prosody-modules
Diff
mod_muc_block_pm/mod_muc_block_pm.lua @ 2588:69d3e0037435
mod_muc_block_pm: Prevent unaffiliated users from sending private messages in MUC
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 28 Feb 2017 17:04:30 +0100 |
child | 3636:afedc2430b0d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_muc_block_pm/mod_muc_block_pm.lua Tue Feb 28 17:04:30 2017 +0100 @@ -0,0 +1,20 @@ +local bare_jid = require"util.jid".bare; +local st = require"util.stanza"; + +local muc_rooms = module:depends"muc".rooms; + +module:hook("message/full", function(event) + local stanza, origin = event.stanza, event.origin; + local to, from = stanza.attr.to, stanza.attr.from; + local room = muc_rooms[bare_jid(to)]; + local to_occupant = room and room._occupants[to]; + local from_occupant = room and room._occupants[room._jid_nick[from]] + if not ( to_occupant and from_occupant ) then return end + + if from_occupant.affiliation then + to_occupant._pm_block_override = true; + elseif not from_occupant._pm_block_override then + origin.send(st.error_reply(stanza, "cancel", "not-authorized", "Private messages are disabled")); + return true; + end +end, 1);