File

mod_measure_client_features/mod_measure_client_features.lua @ 5738:8488ebde5739

mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted This follows the intent behind the OpenID Connect 'prompt' parameter when it does not include the 'consent' keyword, that is the client wishes to skip the consent screen. If the user has already granted the exact same scopes to the exact same client in the past, then one can assume that they may grant it again.
author Kim Alvefur <zash@zash.se>
date Tue, 14 Nov 2023 23:03:37 +0100
parent 3374:5fdbf416bd40
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)