File

mod_conformance_restricted/mod_conformance_restricted.lua @ 6119:6dca425eea15

mod_pubsub_subscription: Don't block pubsub unhandled or bare JID notifications The module was marking every successfully-parsed pubsub notification as handled, which could prevent local users from receiving pubsub notifications. Now it will only eat them if both: - The notification was sent to the host JID - The notification matched a node we consider ourselves subscribed to Notifications to local (i.e. non-host) JIDs will always be let through.
author Matthew Wild <mwild1@gmail.com>
date Sat, 28 Dec 2024 18:45:40 +0000
parent 1343:7dbde05b48a9
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2012 Florian Zeitz
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local st = require "util.stanza";
local jid = require "util.jid";

module:hook("message/host", function (event)
	local origin, stanza = event.origin, event.stanza;
	local node, host, resource = jid.split(stanza.attr.to);
	local body = stanza:get_child_text("body");

	if resource ~= "conformance" then
		return; -- Not interop testing
	end

	if body == "PI" then
		origin.send("<?testing this='out'?>");
	elseif body == "comment" then
		origin.send("<!-- no comment -->");
	elseif body == "DTD" then
		origin.send("<!DOCTYPE greeting [\n<!ENTITY test 'You should not see this'>\n]>");
	elseif body == "entity" then
		origin.send("<message type='chat' to='"..stanza.attr.from.."'><body>&test;</body></message>");
	else
		local reply = st.reply(stanza);
		reply:body("Send me one of: PI, comment, DTD, or entity");
		origin.send(reply);
	end

	return true;
end);