Software /
code /
prosody-modules
Changeset
2196:09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 01 Jun 2016 14:50:39 +0200 |
parents | 2195:967ba20e1202 |
children | 2197:90a444ccaa8e |
files | mod_block_strangers/mod_block_strangers.lua |
diffstat | 1 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_block_strangers/mod_block_strangers.lua Wed Jun 01 14:34:30 2016 +0200 +++ b/mod_block_strangers/mod_block_strangers.lua Wed Jun 01 14:50:39 2016 +0200 @@ -3,12 +3,18 @@ local jid_split = require "util.jid".split; local jid_bare = require "util.jid".bare; local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; +local full_sessions = prosody.full_sessions; + +local function has_directed_presence(user, jid) + local session = full_sessions[user]; + return session and session.directed[jid]; +end function check_subscribed(event) local stanza = event.stanza; local to_user, to_host, to_resource = jid_split(stanza.attr.to); local from_jid = jid_bare(stanza.attr.from); - if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then + if to_user and not has_directed_presence(stanza.attr.to, from_jid) and not is_contact_subscribed(to_user, to_host, from_jid) then if to_resource and stanza.attr.type == "groupchat" or stanza.name == "iq" and (stanza.attr.type == "result" or stanza.attr.type == "error") then return nil; -- Pass through