changeset 1510:094e9d5a4d94

mod_block_p2pft: Plugin for forcing local clients to use approved file transfer proxies
author Kim Alvefur <zash@zash.se>
date Mon, 22 Sep 2014 18:17:48 +0200
parents 01e37ce7532e
children ef613b40591a
files mod_block_p2pft/mod_block_p2pft.lua
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_block_p2pft/mod_block_p2pft.lua	Mon Sep 22 18:17:48 2014 +0200
@@ -0,0 +1,26 @@
+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 streamhost.modules.proxy65 then
+			allowed_streamhosts:include(hostname);
+		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, origin = event.stanza, event.origin;
+	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);