Comparison

plugins/mod_admin_shell.lua @ 13013:430333198e4c

mod_admin_shell: Allow matching on host or bare JID in c2s:show Only supporting exact match on full JID isn't helpful if you want to list sessions per host or user.
author Kim Alvefur <zash@zash.se>
date Fri, 31 Mar 2023 22:01:27 +0200
parent 12993:623fbb5f9b05
child 13034:1387888a5596
comparison
equal deleted inserted replaced
13012:c2616274bef7 13013:430333198e4c
23 local prosody = _G.prosody; 23 local prosody = _G.prosody;
24 24
25 local unpack = table.unpack; 25 local unpack = table.unpack;
26 local iterators = require "prosody.util.iterators"; 26 local iterators = require "prosody.util.iterators";
27 local keys, values = iterators.keys, iterators.values; 27 local keys, values = iterators.keys, iterators.values;
28 local jid_bare, jid_split, jid_join, jid_resource = import("prosody.util.jid", "bare", "prepped_split", "join", "resource"); 28 local jid_bare, jid_split, jid_join, jid_resource, jid_compare = import("prosody.util.jid", "bare", "prepped_split", "join", "resource", "compare");
29 local set, array = require "prosody.util.set", require "prosody.util.array"; 29 local set, array = require "prosody.util.set", require "prosody.util.array";
30 local cert_verify_identity = require "prosody.util.x509".verify_identity; 30 local cert_verify_identity = require "prosody.util.x509".verify_identity;
31 local envload = require "prosody.util.envload".envload; 31 local envload = require "prosody.util.envload".envload;
32 local envloadfile = require "prosody.util.envload".envloadfile; 32 local envloadfile = require "prosody.util.envload".envloadfile;
33 local has_pposix, pposix = pcall(require, "prosody.util.pposix"); 33 local has_pposix, pposix = pcall(require, "prosody.util.pposix");
996 local columns = get_colspec(colspec, { "id"; "jid"; "role"; "ipv"; "status"; "secure"; "smacks"; "csi" }); 996 local columns = get_colspec(colspec, { "id"; "jid"; "role"; "ipv"; "status"; "secure"; "smacks"; "csi" });
997 local row = format_table(columns, self.session.width); 997 local row = format_table(columns, self.session.width);
998 998
999 local function match(session) 999 local function match(session)
1000 local jid = get_jid(session) 1000 local jid = get_jid(session)
1001 return (not match_jid) or jid == match_jid; 1001 return (not match_jid) or jid_compare(jid, match_jid);
1002 end 1002 end
1003 1003
1004 local group_by_host = true; 1004 local group_by_host = true;
1005 for _, col in ipairs(columns) do 1005 for _, col in ipairs(columns) do
1006 if col.key == "full_jid" or col.key == "host" then 1006 if col.key == "full_jid" or col.key == "host" then