File

mod_auto_answer_disco_info/mod_auto_answer_disco_info.lua @ 3025:5b8983e100da

mod_vcard_command: a simplistic way to get and set vcard data for registered users Use "prosodyctl get user@example.com" to print the XML to stdout, and "prosodyctl set user@example.com /file/name" to set the vcard info from an xml file.
author Stefan `Sec` Zehl <sec@42.org>
date Tue, 08 Oct 2013 16:38:40 +0000
parent 2912:6e5bd5d8a5e2
child 3081:e0ef90e96931
line wrap: on
line source

module:depends("cache_c2s_caps");

local st = require "util.stanza";

local function iq_stanza_handler(event)
	local stanza = event.stanza;
	local type = stanza.attr.type;

	local query = stanza:get_child("query", "http://jabber.org/protocol/disco#info");
	if type ~= "get" or query == nil then
		return;
	end

	local to = stanza.attr.to;
	local node = query.attr.node;

	local target_session = prosody.full_sessions[to];
	if target_session == nil then
		return;
	end

	local disco_info = target_session.caps_cache;
	if disco_info ~= nil and (node == nil or node == disco_info.attr.node) then
		local iq = st.reply(stanza);
		iq:add_child(st.clone(disco_info));
		module:log("debug", "Answering disco#info on the behalf of %s", to);
		module:send(iq);
		return true;
	end
end

module:hook("iq/full", iq_stanza_handler, 1);