view mod_muc_block_pm/mod_muc_block_pm.lua @ 2976:df86ce6bb0b4

Implement dummy body message to indicate high priority push This adds a dummy body sent alongside the push when the original message also contained a body to indicate a high priority push. The body can be configured and its contents are generally meaningless with most app servers because it will be stripped before pushed to the client.
author tmolitor <thilo@eightysoft.de>
date Sun, 01 Apr 2018 23:24:33 +0200
parents 69d3e0037435
children afedc2430b0d
line wrap: on
line source

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);