Software /
code /
prosody-modules
File
mod_private_adhoc/mod_private_adhoc.lua @ 3955:017f60608fc8
mod_smacks: also count outgoing MAM messages
mod_smacks doesn't count outgoing MAM messages, which causes warnings in Prosody such as:
> The client says it handled 41 new stanzas, but we only sent 2
It seems mod_smacks is in the wrong here and that it's too strict in trying to determine what is a valid stanza to count.
In RFC6120:
> Definition of XML Stanza: An XML stanza is the basic unit of meaning
> in XMPP. A stanza is a first-level element (at depth=1 of the stream)
> whose element name is "message", "presence", or "iq" and whose
> qualifying namespace is 'jabber:client' or 'jabber:server'.
author | JC Brand <jc@opkode.com> |
---|---|
date | Thu, 26 Mar 2020 11:57:02 +0100 |
parent | 1461:deb79c2357bb |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- -- Module by Thomas Raschbacher 2014 -- lordvan@lordvan.com module:depends"adhoc"; local dataforms_new = require "util.dataforms".new; local st = require "util.stanza"; local jid_split = require "util.jid".split; local private_storage = module:open_store("private"); local private_adhoc_result_layout = dataforms_new{ { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; { name = "privatexmldata", type = "text-multi", label = "Private XML data" }; }; function private_adhoc_command_handler (self, data, state) local username, hostname = jid_split(data.from); local data, err = private_storage:get(username); local dataString = ""; if not data then dataString = "No data found."; if err then dataString = dataString..err end; else for key,value in pairs(data) do dataString = dataString..tostring(st.deserialize(value)):gsub("><",">\n<") dataString = dataString.."\n\n"; end end return { status = "completed", result= { layout = private_adhoc_result_layout, values = {privatexmldata=dataString.."\n"}} }; end local adhoc_new = module:require "adhoc".new; local descriptor = adhoc_new("Query private data", "private_adhoc", private_adhoc_command_handler, "local_user"); module:add_item ("adhoc", descriptor);