File

plugins/mod_stanza_debug.lua @ 10092:4b3c129e96f2 0.11

mod_websocket: Clone stanza before mutating (fixes #1398) Checking for `stanza.attr.xmlns == nil` to determine if the stanza object is an actual stanza (`<message>`, `<presence>` or `<iq>` in the `jabber:client` or `jabbber:server` namespace) or some other stream element. Since this mutation is not reverted, it may leak to other places and cause them to mistreat stanzas as stream elements. Especially in cases like MUC where a single stanza is broadcast to many recipients.
author Kim Alvefur <zash@zash.se>
date Sat, 20 Jul 2019 04:19:58 +0200
parent 8348:c3de5b454ec4
child 10111:0f335815244f
line wrap: on
line source

module:set_global();

local tostring = tostring;
local filters = require "util.filters";

local function log_send(t, session)
	if t and t ~= "" and t ~= " " then
		session.log("debug", "SEND: %s", tostring(t));
	end
	return t;
end

local function log_recv(t, session)
	if t and t ~= "" and t ~= " " then
		session.log("debug", "RECV: %s", tostring(t));
	end
	return t;
end

local function init_raw_logging(session)
	filters.add_filter(session, "stanzas/in",  log_recv, -10000);
	filters.add_filter(session, "stanzas/out", log_send,  10000);
end

filters.add_filter_hook(init_raw_logging);

function module.unload()
	filters.remove_filter_hook(init_raw_logging);
end