File

mod_admin_probe/mod_admin_probe.lua @ 5378:6155c46d9eea

mod_http_oauth2: Record OAuth software id and version attached to tokens Unsure if these are used anywhere, but `software_id` is supposedly more unique than `client_uri` which can vary by registration or something? Software versions can also be good to know e.g. in case there is a security issue affecting certain versions that could warrant revocation of tokens issued to it.
author Kim Alvefur <zash@zash.se>
date Thu, 27 Apr 2023 19:16:14 +0200
parent 1281:f78661861e98
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2014 Florian Zeitz
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local presence = module:depends("presence");
local send_presence_of_available_resources = presence.send_presence_of_available_resources;

local hosts = prosody.hosts;
local core_post_stanza = prosody.core_post_stanza;

local st = require "util.stanza";
local is_admin = require "core.usermanager".is_admin;
local jid_split = require "util.jid".split;

module:hook("presence/bare", function(data)
	local origin, stanza = data.origin, data.stanza;
	local to, from, type = stanza.attr.to, stanza.attr.from, stanza.attr.type;
	local node, host = jid_split(to);

	if type ~= "probe" then return; end
	if not is_admin(from, module.host) then return; end

	if 0 == send_presence_of_available_resources(node, host, from, origin) then
		core_post_stanza(hosts[host], st.presence({from=to, to=from, type="unavailable"}), true);
	end
	return true;
end, 10);