File

plugins/mod_csi.lua @ 11369:87105a9a11df

util.datamanager: Support iterating over any file extension The 'typ' argument to all other functions is the actual file extension, but not here for some reason. May need this for iterating over the .bin files created by mod_http_file_share in the future.
author Kim Alvefur <zash@zash.se>
date Sun, 07 Feb 2021 19:23:33 +0100
parent 10429:0b04d25c4ffb
child 12977:74b9e05af71e
line wrap: on
line source

local st = require "util.stanza";
local xmlns_csi = "urn:xmpp:csi:0";
local csi_feature = st.stanza("csi", { xmlns = xmlns_csi });

local csi_handler_available = nil;
module:hook("stream-features", function (event)
	if event.origin.username and csi_handler_available then
		event.features:add_child(csi_feature);
	end
end);

function refire_event(name)
	return function (event)
		if event.origin.username then
			event.origin.state = event.stanza.name;
			module:fire_event(name, event);
			return true;
		end
	end;
end

module:hook("stanza/"..xmlns_csi..":active", refire_event("csi-client-active"));
module:hook("stanza/"..xmlns_csi..":inactive", refire_event("csi-client-inactive"));

function module.load()
	if prosody.hosts[module.host].events._handlers["csi-client-active"] then
		csi_handler_available = true;
		module:set_status("core", "CSI handler module loaded");
	else
		csi_handler_available = false;
		module:set_status("warn", "No CSI handler module loaded");
	end
end
module:hook("module-loaded", module.load);
module:hook("module-unloaded", module.load);