Software /
code /
prosody-modules
File
mod_measure_muc/mod_measure_muc.lua @ 6055:23c4c61a1068
mod_muc_gateway_optimize: New module to optimize muc presence to remote gateways
Some gateways are happy to receive presence for each participant
in MUCs that they are in only once, to any one of their joined JIDs.
author | Stephen Paul Weber <singpolyma@singpolyma.net> |
---|---|
date | Sun, 17 Nov 2024 22:32:52 -0500 |
parent | 3969:39931d727c22 |
line wrap: on
line source
-- Group Chat statistics -- -- Copyright (C) 2020 kaliko <kaliko@azylum.org> -- -- This module is MIT/X11 licensed. -- https://prosody.im/doc/developers/modules -- https://prosody.im/doc/developers/moduleapi -- https://prosody.im/doc/statistics module:log("info", "loading mod_%s", module.name); if module:get_host_type() ~= "component" then module:log("error", "mod_%s should be loaded only on a MUC component, not normal hosts", module.name); return; end local mod_muc = module:depends"muc"; local all_rooms = rawget(mod_muc, "all_rooms") -- Add relevant boolean MUC metrics here local counters = { hidden = module:measure("hidden", "amount", 0), persistent = module:measure("persistent", "amount", 0), password = module:measure('passwd', "amount", 0), archiving = module:measure('archiving', 'amount', 0), }; local total_counter = module:measure("total", "amount", 0); module:hook_global("stats-update", function () local total = 0; local buckets = {}; -- Init buckets for bucket, _ in pairs(counters) do buckets[bucket] = 0; end for room in all_rooms() do --[[ module:log('debug', 'room data for : "'..room.jid..'"'); for conf, val in pairs(room._data) do module:log('debug', conf..": "..tostring(val)); end ]]-- total = total + 1; --module:log('debug','buckets room data :'); for bucket, _ in pairs(buckets) do --module:log('debug', bucket..": "..tostring(room._data[bucket])); if room._data[bucket] then buckets[bucket] = buckets[bucket] + 1; end end end for bucket, count in pairs(buckets) do counters[bucket](count) end total_counter(total); end)