Mercurial > prosody-modules
view mod_measure_client_presence/mod_measure_client_presence.lua @ 5285:8e1f1eb00b58
mod_sasl2_fast: Fix harmless off-by-one error (invalidates existing tokens!)
Problem:
This was causing the key to become "<token>--cur" instead of the expected
"<token>-cur". As the same key was used by the code to both set and get, it
still worked.
Rationale for change:
Although it worked, it's unintended, inconsistent and messy. It increases the
chances of future bugs due to the unexpected format.
Side-effects of change:
Existing '--cur' entries will not be checked after this change, and therefore
existing FAST clients will fail to authenticate until they attempt password
auth and obtain a new FAST token.
Existing '--cur' entries in storage will not be cleaned up by this commit, but
this is considered a minor issue, and okay for the relatively few FAST
deployments.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 29 Mar 2023 16:12:15 +0100 |
parents | 37ae0801f925 |
children |
line wrap: on
line source
module:set_global(); local measure = require"core.statsmanager".measure; local valid_shows = { available = true, chat = true, away = true, dnd = true, xa = true, unavailable = true, } local counters = { available = measure("amount", "client_presence.available"), chat = measure("amount", "client_presence.chat"), away = measure("amount", "client_presence.away"), dnd = measure("amount", "client_presence.dnd"), xa = measure("amount", "client_presence.xa"), unavailable = measure("amount", "client_presence.unavailable"), invalid = measure("amount", "client_presence.invalid"); }; module:hook("stats-update", function () local buckets = { available = 0, chat = 0, away = 0, dnd = 0, xa = 0, unavailable = 0, invalid = 0, }; for _, session in pairs(full_sessions) do local status = "unavailable"; if session.presence then status = session.presence:get_child_text("show") or "available"; end if valid_shows[status] ~= nil then buckets[status] = buckets[status] + 1; else buckets.invalid = buckets.invalid + 1; end end for bucket, count in pairs(buckets) do counters[bucket](count) end end)