File

mod_measure_client_features/mod_measure_client_features.lua @ 6037:277ccafb4826

mod_http_oauth2: Fix check for userinfo endpoint handler It was checking whether the wrong handler exists. It could have made sense if there was some dependency between them but there isn't.
author Kim Alvefur <zash@zash.se>
date Thu, 31 Oct 2024 21:49:32 +0100
parent 3374:5fdbf416bd40
child 6188:3e0bce07f66c
line wrap: on
line source

module:set_global();

local measure = require"core.statsmanager".measure;

local disco_ns = "http://jabber.org/protocol/disco#info";

local counters = {
	total = measure("amount", "client_features.total");
};

module:hook("stats-update", function ()
	local total = 0;
	local buckets = {};
	for _, session in pairs(prosody.full_sessions) do
		local disco_info = session.caps_cache;
		if disco_info ~= nil then
			for feature in disco_info:childtags("feature", disco_ns) do
				local var = feature.attr.var;
				if var ~= nil then
					if buckets[var] == nil then
						buckets[var] = 0;
					end
					buckets[var] = buckets[var] + 1;
				end
			end
			total = total + 1;
		end
	end
	for bucket, count in pairs(buckets) do
		if counters[bucket] == nil then
			counters[bucket] = measure("amount", "client_features."..bucket);
		end
		counters[bucket](count);
	end
	counters.total(total);
end)