# HG changeset patch # User Matthew Wild # Date 1344130078 -3600 # Node ID 70ff25db37fab15496d005db801c78de690cbd25 # Parent 52caf54fc2700103ac12e1aa990cd13e3cdd6692 mod_block_s2s_subscriptions: New module to block incoming presence subscriptions from non-contacts on selected remote hosts diff -r 52caf54fc270 -r 70ff25db37fa mod_block_s2s_subscriptions/mod_block_s2s_subscriptions.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_block_s2s_subscriptions/mod_block_s2s_subscriptions.lua Sun Aug 05 02:27:58 2012 +0100 @@ -0,0 +1,20 @@ + +local jid_split = require "util.jid".split; +local jid_bare = require "util.jid".bare; +local load_roster = require "core.rostermanager".load_roster; + +local blocked_servers = module:get_option_set("block_s2s_subscriptions")._items; + +function filter_presence(event) + if blocked_servers[event.origin.from_host] and event.stanza.attr.type == "subscribe" then + local stanza = event.stanza; + local to_user, to_host = jid_split(stanza.attr.to); + local roster = load_roster(to_user, to_host); + if roster and roster[jid_bare(stanza.attr.from)] then + return; -- In roster, pass through + end + return true; -- Drop + end +end + +module:hook("presence/bare", filter_presence, 200); -- Client receiving