view mod_proxy65_whitelist/mod_proxy65_whitelist.lua @ 4646:072d078be095

mod_storage_xmlarchive: Advertise capabilities (none atm) Both 'total' and 'quota' would be prohibitively expensive for the kind of archives this module targets as it would require counting items across the entire archive.
author Kim Alvefur <zash@zash.se>
date Fri, 13 Aug 2021 01:18:32 +0200
parents f96b947303a2
children
line wrap: on
line source

local allowed_streamhosts = module:get_option_set("allowed_streamhosts", {}); -- eg proxy.eu.jabber.org

if module:get_option_boolean("allow_local_streamhosts", true) then
	for hostname, host in pairs(hosts) do
		if host.modules.proxy65 then
			allowed_streamhosts:add(hostname);
		end
	end

	module:hook_global("host-activated", function (host)
		if hosts[host].modules.proxy65 then
			allowed_streamhosts:add(host);
		end
	end);
end

local function filter_streamhosts(tag)
	if tag.name == "streamhost" and not allowed_streamhosts:contains(tag.attr.jid) then
		return nil;
	end
	return tag;
end

module:hook("iq/full", function (event)
	local stanza = event.stanza;
	if stanza.attr.type == "set" then
		local payload = stanza:get_child("query", "http://jabber.org/protocol/bytestreams");
		if payload then
			payload:maptags(filter_streamhosts);
		end
	end
end, 1);