Mercurial > prosody-modules
view mod_poke_strangers/mod_poke_strangers.lua @ 5160:8474a3b80200
mod_firewall: Fix 'is_admin' internal dependency rule #1797 (thanks diane)
Looks like the boolean logic was inverted here. Instead, for now,
simply check if is_admin is there. It is deprecated in trunk and was
briefly removed before being brought back with a 'deprecated' warning as
part of the new roles and permissions work. Making this dependency
conditioned on the existence of the underlying function should make it
work until it actually goes away for real.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 27 Jan 2023 23:06:25 +0100 |
parents | 0aa8aa6cdb1b |
children | 1e28f32257d6 |
line wrap: on
line source
local st = require"util.stanza"; 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 uuid_generate = require "util.uuid".generate; local set = require "util.set"; local recently_queried = set.new(); local version_id = uuid_generate(); local disco_id = uuid_generate(); module:hook("iq-result/host/" .. version_id, function (event) module:log("info", "Stranger " .. event.stanza.attr.from .. " version: " .. tostring(event.stanza)); return true; end); module:hook("iq-result/host/" .. disco_id, function (event) module:log("info", "Stranger " .. event.stanza.attr.from .. " disco: " .. tostring(event.stanza)); return true; end); function check_subscribed(event) local stanza = event.stanza; local local_user_jid = stanza.attr.to; local to_user, to_host, to_resource = jid_split(local_user_jid); local stranger_jid = stanza.attr.from; if recently_queried:contains(stranger_jid) then module:log("debug", "Not re-poking " .. stranger_jid); return nil; end local from_jid = jid_bare(stranger_jid); if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then if to_resource and stanza.attr.type == "groupchat" then return nil; end recently_queried:add(stranger_jid); module:send(st.iq({ type = "get", to = stranger_jid, from = to_host, id = version_id }):query("jabber:iq:version")); module:send(st.iq({ type = "get", to = stranger_jid, from = to_host, id = disco_id }):query("http://jabber.org/protocol/disco#info")); end return nil; end module:hook("message/bare", check_subscribed, 225); module:hook("message/full", check_subscribed, 225); -- Not hooking iqs, as that could turn into infinite loops!