view mod_proxy65_whitelist/mod_proxy65_whitelist.lua @ 5271:3a1df3adad0c

mod_http_oauth2: Allow user to decide which requested scopes to grant These should at the very least be shown to the user, so they can decide whether to grant them. Considered whether to filter the requested scopes down to actually understood scopes that would be granted, but decided that this was a bit complex for a first step, since role role selection and other kinds of scopes are mixed into the same field here.
author Kim Alvefur <zash@zash.se>
date Thu, 23 Mar 2023 16:28:08 +0100
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);