Software /
code /
prosody-modules
Diff
mod_block_s2s_subscriptions/mod_block_s2s_subscriptions.lua @ 775:70ff25db37fa
mod_block_s2s_subscriptions: New module to block incoming presence subscriptions from non-contacts on selected remote hosts
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 05 Aug 2012 02:27:58 +0100 |
line wrap: on
line diff
--- /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