mod_stanzadebug: Like mod_rawdebug but stanzas instead of the raw bytes

Thu, 09 Feb 2017 10:47:24 +0100

author
Kim Alvefur <zash@zash.se>
date
Thu, 09 Feb 2017 10:47:24 +0100
changeset 2488
590ac12b7671
parent 2487
99a025dc4f6b
child 2489
9d154c929319

mod_stanzadebug: Like mod_rawdebug but stanzas instead of the raw bytes

mod_stanzadebug/README.markdown file | annotate | diff | comparison | revisions
mod_stanzadebug/mod_stanzadebug.lua file | annotate | diff | comparison | revisions
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_stanzadebug/README.markdown	Thu Feb 09 10:47:24 2017 +0100
@@ -0,0 +1,9 @@
+---
+summary: Extra verbose stanza logging
+---
+
+Summary
+=======
+
+This module logs the full stanzas that are sent and received into debug
+logs, for debugging purposes.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_stanzadebug/mod_stanzadebug.lua	Thu Feb 09 10:47:24 2017 +0100
@@ -0,0 +1,29 @@
+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() -- luacheck: ignore
+	filters.remove_filter_hook(init_raw_logging);
+end

mercurial