# HG changeset patch # User Matthew Wild # Date 1648042988 0 # Node ID f4c59af273a3a5f2300c4040681dc4ff8883692d # Parent 788048158982f59e6871288952047a3169906aa0 mod_admin_shell: Add watch:stanzas() command diff -r 788048158982 -r f4c59af273a3 plugins/mod_admin_shell.lua --- a/plugins/mod_admin_shell.lua Wed Mar 23 13:42:44 2022 +0000 +++ b/plugins/mod_admin_shell.lua Wed Mar 23 13:43:08 2022 +0000 @@ -1609,6 +1609,40 @@ end end +local stanza_watchers = module:require("mod_debug_stanzas/watcher"); +function def_env.watch:stanzas(target_spec, filter_spec) + local function handler(event_type, stanza, session) + if stanza then + if event_type == "sent" then + self.session.print(("\n"):format(session.id)); + elseif event_type == "received" then + self.session.print(("\n"):format(session.id)); + else + self.session.print(("\n"):format(event_type, session.id)); + end + self.session.print(stanza); + elseif session then + self.session.print("\n"); + elseif event_type then + self.session.print("\n"); + end + end + + stanza_watchers.add({ + target_spec = { + jid = target_spec; + }; + filter_spec = filter_spec and { + with_jid = filter_spec; + }; + }, handler); + + while self.session.is_connected() do + async.sleep(3); + end + + stanza_watchers.remove(handler); +end def_env.debug = {}; @@ -1953,6 +1987,10 @@ end +function module.unload() + stanza_watchers.cleanup(); +end + -------------