view mod_block_s2s_subscriptions/mod_block_s2s_subscriptions.lua @ 5951:d6a695abb33c

mod_ping_muc: Delay ping a configurable amount of time If a server is restarting, checking immediately before it has a chance to complete its restart and get ready would often fail, preventing the possibility of transparent restarts as supported by Prosody's mod_muc. Reconnecting immediately when a connection is closed for being idle, or because the remote server is trying to reclaim some resources, is also counter-productive as the connection may fail. Also, if there is some Internet routing problem affecting s2s, it may help to wait a bit before checking, in case the problem resolved itself in the mean time.
author Kim Alvefur <zash@zash.se>
date Sun, 11 Aug 2024 16:10:24 +0200
parents 70ff25db37fa
children
line wrap: on
line source


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