Mercurial > prosody-modules
changeset 5596:d2561c1d26f5
mod_client_management: Allow revoking a specific client version
Could be useful in case of a security issue affecting a particular
version. Even if in that case, the more likely use case is revoking all
older versions except the fixed one(s), this can be done with a loop or
improved later.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 14 Jul 2023 15:16:06 +0200 |
parents | eae5599bc0b4 |
children | 5ade45d93908 |
files | mod_client_management/mod_client_management.lua |
diffstat | 1 files changed, 13 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_client_management/mod_client_management.lua Fri Jul 14 15:01:56 2023 +0200 +++ b/mod_client_management/mod_client_management.lua Fri Jul 14 15:16:06 2023 +0200 @@ -278,6 +278,17 @@ return active_clients; end +local function user_agent_tostring(user_agent) + if user_agent then + if user_agent.software then + if user_agent.software_version then + return user_agent.software .. "/" .. user_agent.software_version; + end + return user_agent.software; + end + end +end + function revoke_client_access(username, client_selector) if client_selector then local c_type, c_id = client_selector:match("^(%w+)/(.+)$"); @@ -314,7 +325,7 @@ elseif c_type == "software" then local active_clients = get_active_clients(username); for _, client in ipairs(active_clients) do - if client.user_agent and client.user_agent.software == c_id then + if client.user_agent and client.user_agent.software == c_id or user_agent_tostring(client.user_agent) then return revoke_client_access(username, client.id); end end @@ -432,15 +443,7 @@ title = "Software"; key = "user_agent"; width = "1p"; - mapper = function(user_agent) - if user_agent and user_agent.software then - if user_agent.software_version then - return user_agent.software .. "/" .. user_agent.software_version; - else - return user_agent.software; - end - end - end; + mapper = user_agent_tostring; }; { title = "Last seen";