Software / code / prosody
Comparison
plugins/mod_admin_shell.lua @ 11886:b0b258e092da
mod_admin_shell: Optionally group session listings by host when not included as column
Similar to the earlier view
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 10 Nov 2021 15:54:27 +0100 |
| parent | 11885:197642f9972f |
| child | 11887:b043e1bb8e8e |
comparison
equal
deleted
inserted
replaced
| 11885:197642f9972f | 11886:b0b258e092da |
|---|---|
| 831 local function match(session) | 831 local function match(session) |
| 832 local jid = get_jid(session) | 832 local jid = get_jid(session) |
| 833 return (not match_jid) or jid:match(match_jid) | 833 return (not match_jid) or jid:match(match_jid) |
| 834 end | 834 end |
| 835 | 835 |
| 836 print(row()); | 836 local group_by_host = true; |
| 837 for _, col in ipairs(columns) do | |
| 838 if col.key == "full_jid" or col.key == "host" then | |
| 839 group_by_host = false; | |
| 840 break | |
| 841 end | |
| 842 end | |
| 843 | |
| 844 if not group_by_host then print(row()); end | |
| 845 local currenthost = nil; | |
| 837 | 846 |
| 838 for _, session in ipairs(get_c2s():filter(match):sort(_sort_by_jid)) do | 847 for _, session in ipairs(get_c2s():filter(match):sort(_sort_by_jid)) do |
| 848 if group_by_host and session.host ~= currenthost then | |
| 849 currenthost = session.host; | |
| 850 print("#",prosody.hosts[currenthost] or "Unknown host"); | |
| 851 print(row()); | |
| 852 end | |
| 853 | |
| 839 print(row(session)); | 854 print(row(session)); |
| 840 end | 855 end |
| 841 return true; | 856 return true; |
| 842 end | 857 end |
| 843 | 858 |
| 892 local function match(session) | 907 local function match(session) |
| 893 local host, remote = get_s2s_hosts(session); | 908 local host, remote = get_s2s_hosts(session); |
| 894 return not match_jid or (host or ""):match(match_jid) or (remote or ""):match(match_jid); | 909 return not match_jid or (host or ""):match(match_jid) or (remote or ""):match(match_jid); |
| 895 end | 910 end |
| 896 | 911 |
| 912 local group_by_host = true; | |
| 913 local currenthost = nil; | |
| 914 for _, col in ipairs(columns) do | |
| 915 if col.key == "host" then | |
| 916 group_by_host = false; | |
| 917 break | |
| 918 end | |
| 919 end | |
| 920 | |
| 921 if not group_by_host then print(row()); end | |
| 922 | |
| 897 local s2s_sessions = array(iterators.values(module:shared"/*/s2s/sessions")):filter(match):sort(_sort_s2s); | 923 local s2s_sessions = array(iterators.values(module:shared"/*/s2s/sessions")):filter(match):sort(_sort_s2s); |
| 898 | 924 |
| 899 print(row()); | |
| 900 | |
| 901 for _, session in ipairs(s2s_sessions) do | 925 for _, session in ipairs(s2s_sessions) do |
| 926 if group_by_host and currenthost ~= get_s2s_hosts(session) then | |
| 927 currenthost = get_s2s_hosts(session); | |
| 928 print("#",prosody.hosts[currenthost] or "Unknown host"); | |
| 929 print(row()); | |
| 930 end | |
| 931 | |
| 902 print(row(session)); | 932 print(row(session)); |
| 903 end | 933 end |
| 904 return true; -- TODO counts | 934 return true; -- TODO counts |
| 905 end | 935 end |
| 906 | 936 |