Software /
code /
prosody
Annotate
plugins/mod_admin_telnet.lua @ 10797:1c61ef6a15ab
mod_admin_telnet: Don't pretty-print the normal console stuff
Typing e.g. `c2s` would dump out a bunch of stuff that would probably
just confuse users.
Now you only get pretty-printing when poking around in the internals
with `>`.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 02 May 2020 20:39:33 +0200 |
parent | 10796:89d810a23ee0 |
child | 10798:b81f4fd7f21a |
rev | line source |
---|---|
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
1506
diff
changeset
|
1 -- Prosody IM |
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2870
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2870
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
4 -- |
758 | 5 -- This project is MIT/X11 licensed. Please see the |
6 -- COPYING file in the source package for more information. | |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
461
diff
changeset
|
7 -- |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
8 -- luacheck: ignore 212/self |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
461
diff
changeset
|
9 |
4623
403b56b78018
mod_posix, mod_bosh, mod_admin_telnet: Use module:set_global()
Kim Alvefur <zash@zash.se>
parents:
4582
diff
changeset
|
10 module:set_global(); |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
461
diff
changeset
|
11 |
5030
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
12 local hostmanager = require "core.hostmanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
13 local modulemanager = require "core.modulemanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
14 local s2smanager = require "core.s2smanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
15 local portmanager = require "core.portmanager"; |
8921
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
16 local helpers = require "util.helpers"; |
9406
7f277975768d
mod_admin_telnet: Import net.server instead of relying on global
Kim Alvefur <zash@zash.se>
parents:
9405
diff
changeset
|
17 local server = require "net.server"; |
5030
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
18 |
1342
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
19 local _G = _G; |
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
20 |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
21 local prosody = _G.prosody; |
736 | 22 |
4989
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
23 local console_listener = { default_port = 5582; default_mode = "*a"; interface = "127.0.0.1" }; |
736 | 24 |
9691
e11e076f0eb8
various: Don't rely on _G.unpack existing
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
25 local unpack = table.unpack or unpack; -- luacheck: ignore 113 |
4582
542afb9c2ab1
mod_admin_telnet: Import util.iterators properly
Kim Alvefur <zash@zash.se>
parents:
4571
diff
changeset
|
26 local iterators = require "util.iterators"; |
542afb9c2ab1
mod_admin_telnet: Import util.iterators properly
Kim Alvefur <zash@zash.se>
parents:
4571
diff
changeset
|
27 local keys, values = iterators.keys, iterators.values; |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
28 local jid_bare, jid_split, jid_join = import("util.jid", "bare", "prepped_split", "join"); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
29 local set, array = require "util.set", require "util.array"; |
3733
26571a99f6e6
core.s2smanager, mod_console, mod_saslauth, util.certverification: rename util.certverification to util.x509
Kim Alvefur <zash@zash.se>
parents:
3718
diff
changeset
|
30 local cert_verify_identity = require "util.x509".verify_identity; |
5021
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
31 local envload = require "util.envload".envload; |
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
32 local envloadfile = require "util.envload".envloadfile; |
6503
8437058c4226
mod_admin_telnet: Soft-reqire util.pposix for server:memory()
Kim Alvefur <zash@zash.se>
parents:
6382
diff
changeset
|
33 local has_pposix, pposix = pcall(require, "util.pposix"); |
9735
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
34 local async = require "util.async"; |
10787
459efb1afbfe
mod_admin_telnet: Pretty-print values returned from commands
Kim Alvefur <zash@zash.se>
parents:
10701
diff
changeset
|
35 local serialization = require "util.serialization"; |
459efb1afbfe
mod_admin_telnet: Pretty-print values returned from commands
Kim Alvefur <zash@zash.se>
parents:
10701
diff
changeset
|
36 local serialize_config = serialization.new ({ fatal = false, unquoted = true}); |
10310
b03065cd033a
mod_admin_telnet: xmpp:ping: Log ping time
Kim Alvefur <zash@zash.se>
parents:
10292
diff
changeset
|
37 local time = require "util.time"; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
38 |
4540
ddce5b1bdfca
mod_admin_telnet: Use module:shared() to expose commands table and default console environment
Matthew Wild <mwild1@gmail.com>
parents:
4328
diff
changeset
|
39 local commands = module:shared("commands") |
ddce5b1bdfca
mod_admin_telnet: Use module:shared() to expose commands table and default console environment
Matthew Wild <mwild1@gmail.com>
parents:
4328
diff
changeset
|
40 local def_env = module:shared("env"); |
736 | 41 local default_env_mt = { __index = def_env }; |
42 | |
9403
4416c1a96400
mod_admin_telnet: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9391
diff
changeset
|
43 local function redirect_output(target, session) |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
44 local env = setmetatable({ print = session.print }, { __index = function (_, k) return rawget(target, k); end }); |
3407
15f633285755
mod_console: Override dofile() in the console environment (this lets print() print to the console session for example).
Waqas Hussain <waqas20@gmail.com>
parents:
3404
diff
changeset
|
45 env.dofile = function(name) |
5021
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
46 local f, err = envloadfile(name, env); |
3407
15f633285755
mod_console: Override dofile() in the console environment (this lets print() print to the console session for example).
Waqas Hussain <waqas20@gmail.com>
parents:
3404
diff
changeset
|
47 if not f then return f, err; end |
5021
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
48 return f(); |
3407
15f633285755
mod_console: Override dofile() in the console environment (this lets print() print to the console session for example).
Waqas Hussain <waqas20@gmail.com>
parents:
3404
diff
changeset
|
49 end; |
15f633285755
mod_console: Override dofile() in the console environment (this lets print() print to the console session for example).
Waqas Hussain <waqas20@gmail.com>
parents:
3404
diff
changeset
|
50 return env; |
1342
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
51 end |
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
52 |
736 | 53 console = {}; |
54 | |
9735
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
55 local runner_callbacks = {}; |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
56 |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
57 function runner_callbacks:ready() |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
58 self.data.conn:resume(); |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
59 end |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
60 |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
61 function runner_callbacks:waiting() |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
62 self.data.conn:pause(); |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
63 end |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
64 |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
65 function runner_callbacks:error(err) |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
66 module:log("error", "Traceback[telnet]: %s", err); |
10068
73a8192058f9
mod_admin_telnet: Move error handling to thread callback (fixes #1391)
Kim Alvefur <zash@zash.se>
parents:
10067
diff
changeset
|
67 |
73a8192058f9
mod_admin_telnet: Move error handling to thread callback (fixes #1391)
Kim Alvefur <zash@zash.se>
parents:
10067
diff
changeset
|
68 self.data.print("Fatal error while running command, it did not complete"); |
73a8192058f9
mod_admin_telnet: Move error handling to thread callback (fixes #1391)
Kim Alvefur <zash@zash.se>
parents:
10067
diff
changeset
|
69 self.data.print("Error: "..tostring(err)); |
9735
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
70 end |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
71 |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
72 |
736 | 73 function console:new_session(conn) |
2145
daeb6ebf304c
mod_console: Update for new net.server API
Matthew Wild <mwild1@gmail.com>
parents:
2087
diff
changeset
|
74 local w = function(s) conn:write(s:gsub("\n", "\r\n")); end; |
736 | 75 local session = { conn = conn; |
76 send = function (t) w(tostring(t)); end; | |
3404
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
77 print = function (...) |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
78 local t = {}; |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
79 for i=1,select("#", ...) do |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
80 t[i] = tostring(select(i, ...)); |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
81 end |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
82 w("| "..table.concat(t, "\t").."\n"); |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
83 end; |
10796
89d810a23ee0
mod_admin_telnet: Reuse existing pretty printing setup
Kim Alvefur <zash@zash.se>
parents:
10795
diff
changeset
|
84 serialize = tostring; |
2253
a3537266a916
mod_console: Update for new server API, fixes traceback when closing console sessions
Matthew Wild <mwild1@gmail.com>
parents:
2145
diff
changeset
|
85 disconnect = function () conn:close(); end; |
736 | 86 }; |
87 session.env = setmetatable({}, default_env_mt); | |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
88 |
9735
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
89 session.thread = async.runner(function (line) |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
90 console:process_line(session, line); |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
91 session.send(string.char(0)); |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
92 end, runner_callbacks, session); |
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
93 |
736 | 94 -- Load up environment with helper objects |
95 for name, t in pairs(def_env) do | |
96 if type(t) == "table" then | |
97 session.env[name] = setmetatable({ session = session }, { __index = t }); | |
98 end | |
99 end | |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
100 |
10796
89d810a23ee0
mod_admin_telnet: Reuse existing pretty printing setup
Kim Alvefur <zash@zash.se>
parents:
10795
diff
changeset
|
101 session.env.output:configure(); |
89d810a23ee0
mod_admin_telnet: Reuse existing pretty printing setup
Kim Alvefur <zash@zash.se>
parents:
10795
diff
changeset
|
102 |
736 | 103 return session; |
104 end | |
105 | |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
106 function console:process_line(session, line) |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
107 local useglobalenv; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
108 |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
109 if line:match("^>") then |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
110 line = line:gsub("^>", ""); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
111 useglobalenv = true; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
112 elseif line == "\004" then |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
113 commands["bye"](session, line); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
114 return; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
115 else |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
116 local command = line:match("^%w+") or line:match("%p"); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
117 if commands[command] then |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
118 commands[command](session, line); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
119 return; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
120 end |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
121 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
122 |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
123 session.env._ = line; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
124 |
10067
598befab492e
mod_admin_telnet: Check for simple commands before executing in sandbox
Kim Alvefur <zash@zash.se>
parents:
10044
diff
changeset
|
125 if not useglobalenv and commands[line:lower()] then |
598befab492e
mod_admin_telnet: Check for simple commands before executing in sandbox
Kim Alvefur <zash@zash.se>
parents:
10044
diff
changeset
|
126 commands[line:lower()](session, line); |
598befab492e
mod_admin_telnet: Check for simple commands before executing in sandbox
Kim Alvefur <zash@zash.se>
parents:
10044
diff
changeset
|
127 return; |
598befab492e
mod_admin_telnet: Check for simple commands before executing in sandbox
Kim Alvefur <zash@zash.se>
parents:
10044
diff
changeset
|
128 end |
598befab492e
mod_admin_telnet: Check for simple commands before executing in sandbox
Kim Alvefur <zash@zash.se>
parents:
10044
diff
changeset
|
129 |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
130 local chunkname = "=console"; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
131 local env = (useglobalenv and redirect_output(_G, session)) or session.env or nil |
10544
0bd408d93f9a
mod_admin_telnet: Silence luacheck warnings
Kim Alvefur <zash@zash.se>
parents:
10517
diff
changeset
|
132 -- luacheck: ignore 311/err |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
133 local chunk, err = envload("return "..line, chunkname, env); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
134 if not chunk then |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
135 chunk, err = envload(line, chunkname, env); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
136 if not chunk then |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
137 err = err:gsub("^%[string .-%]:%d+: ", ""); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
138 err = err:gsub("^:%d+: ", ""); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
139 err = err:gsub("'<eof>'", "the end of the line"); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
140 session.print("Sorry, I couldn't understand that... "..err); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
141 return; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
142 end |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
143 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
144 |
10068
73a8192058f9
mod_admin_telnet: Move error handling to thread callback (fixes #1391)
Kim Alvefur <zash@zash.se>
parents:
10067
diff
changeset
|
145 local taskok, message = chunk(); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
146 |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
147 if not message then |
10797
1c61ef6a15ab
mod_admin_telnet: Don't pretty-print the normal console stuff
Kim Alvefur <zash@zash.se>
parents:
10796
diff
changeset
|
148 if type(taskok) ~= "string" and useglobalenv then |
10787
459efb1afbfe
mod_admin_telnet: Pretty-print values returned from commands
Kim Alvefur <zash@zash.se>
parents:
10701
diff
changeset
|
149 taskok = session.serialize(taskok); |
459efb1afbfe
mod_admin_telnet: Pretty-print values returned from commands
Kim Alvefur <zash@zash.se>
parents:
10701
diff
changeset
|
150 end |
10797
1c61ef6a15ab
mod_admin_telnet: Don't pretty-print the normal console stuff
Kim Alvefur <zash@zash.se>
parents:
10796
diff
changeset
|
151 session.print("Result: "..tostring(taskok)); |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
152 return; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
153 elseif (not taskok) and message then |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
154 session.print("Command completed with a problem"); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
155 session.print("Message: "..tostring(message)); |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
156 return; |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
157 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
158 |
10797
1c61ef6a15ab
mod_admin_telnet: Don't pretty-print the normal console stuff
Kim Alvefur <zash@zash.se>
parents:
10796
diff
changeset
|
159 session.print("OK: "..tostring(message)); |
5186
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
160 end |
ad898e50b8f3
mod_admin_telnet: Refactor so that command processing is performed in a separate function (usable from other modules)
Matthew Wild <mwild1@gmail.com>
parents:
5168
diff
changeset
|
161 |
736 | 162 local sessions = {}; |
163 | |
3009
06f7d8054065
mod_console: Make use of the new onconnect callback to initialise session and send banner
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
164 function console_listener.onconnect(conn) |
06f7d8054065
mod_console: Make use of the new onconnect callback to initialise session and send banner
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
165 -- Handle new connection |
06f7d8054065
mod_console: Make use of the new onconnect callback to initialise session and send banner
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
166 local session = console:new_session(conn); |
06f7d8054065
mod_console: Make use of the new onconnect callback to initialise session and send banner
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
167 sessions[conn] = session; |
06f7d8054065
mod_console: Make use of the new onconnect callback to initialise session and send banner
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
168 printbanner(session); |
669
9255abbb3068
mod_console: replace all \n with \r\n in the output, and send \0 as a marker character after every response
Waqas Hussain <waqas20@gmail.com>
parents:
615
diff
changeset
|
169 session.send(string.char(0)); |
736 | 170 end |
171 | |
2145
daeb6ebf304c
mod_console: Update for new net.server API
Matthew Wild <mwild1@gmail.com>
parents:
2087
diff
changeset
|
172 function console_listener.onincoming(conn, data) |
736 | 173 local session = sessions[conn]; |
1317
f6e56a555c37
mod_console: Allow running code in the global environment by prefixing with '>'
Matthew Wild <mwild1@gmail.com>
parents:
1316
diff
changeset
|
174 |
4989
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
175 local partial = session.partial_data; |
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
176 if partial then |
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
177 data = partial..data; |
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
178 end |
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
179 |
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
180 for line in data:gmatch("[^\n]*[\n\004]") do |
5278
f79be67e5666
mod_admin_telnet: Stop processing lines when session is closed
Kim Alvefur <zash@zash.se>
parents:
5270
diff
changeset
|
181 if session.closed then return end |
9735
2d8ca54ecbc6
mod_admin_telnet: Enable async processing using util.async
Kim Alvefur <zash@zash.se>
parents:
9734
diff
changeset
|
182 session.thread:run(line); |
4989
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
183 end |
573123ff2ab0
mod_admin_telnet: Always handle commands terminated by line feeds - ensures consistency even when packets are joined or split on the network
Matthew Wild <mwild1@gmail.com>
parents:
4979
diff
changeset
|
184 session.partial_data = data:match("[^\n]+$"); |
736 | 185 end |
186 | |
6169
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
187 function console_listener.onreadtimeout(conn) |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
188 local session = sessions[conn]; |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
189 if session then |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
190 session.send("\0"); |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
191 return true; |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
192 end |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
193 end |
cb15eac75b50
mod_admin_telnet: Send NUL byte as keepalive on read timeouts
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
194 |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
195 function console_listener.ondisconnect(conn, err) -- luacheck: ignore 212/err |
2054
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
196 local session = sessions[conn]; |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
197 if session then |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
198 session.disconnect(); |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
199 sessions[conn] = nil; |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
200 end |
736 | 201 end |
202 | |
6380
4220ffb87b22
net.http, net.http.server, mod_c2s, mod_s2s, mod_component, mod_admin_telnet, mod_net_multiplex: Add ondetach to release connection from 'sessions' table (or equivalent)
Matthew Wild <mwild1@gmail.com>
parents:
6311
diff
changeset
|
203 function console_listener.ondetach(conn) |
4220ffb87b22
net.http, net.http.server, mod_c2s, mod_s2s, mod_component, mod_admin_telnet, mod_net_multiplex: Add ondetach to release connection from 'sessions' table (or equivalent)
Matthew Wild <mwild1@gmail.com>
parents:
6311
diff
changeset
|
204 sessions[conn] = nil; |
4220ffb87b22
net.http, net.http.server, mod_c2s, mod_s2s, mod_component, mod_admin_telnet, mod_net_multiplex: Add ondetach to release connection from 'sessions' table (or equivalent)
Matthew Wild <mwild1@gmail.com>
parents:
6311
diff
changeset
|
205 end |
4220ffb87b22
net.http, net.http.server, mod_c2s, mod_s2s, mod_component, mod_admin_telnet, mod_net_multiplex: Add ondetach to release connection from 'sessions' table (or equivalent)
Matthew Wild <mwild1@gmail.com>
parents:
6311
diff
changeset
|
206 |
736 | 207 -- Console commands -- |
208 -- These are simple commands, not valid standalone in Lua | |
209 | |
210 function commands.bye(session) | |
211 session.print("See you! :)"); | |
5278
f79be67e5666
mod_admin_telnet: Stop processing lines when session is closed
Kim Alvefur <zash@zash.se>
parents:
5270
diff
changeset
|
212 session.closed = true; |
736 | 213 session.disconnect(); |
214 end | |
1503
5970e06d9335
mod_console: Add quit and exit as aliases for 'bye' command
Matthew Wild <mwild1@gmail.com>
parents:
1502
diff
changeset
|
215 commands.quit, commands.exit = commands.bye, commands.bye; |
736 | 216 |
217 commands["!"] = function (session, data) | |
3614
8b436cc88c0e
mod_console: Don't allow bang bang as the first command in a session, or when the last command is unknown (fixes #218)
Matthew Wild <mwild1@gmail.com>
parents:
3557
diff
changeset
|
218 if data:match("^!!") and session.env._ then |
736 | 219 session.print("!> "..session.env._); |
2512
d04b0eeeb954
mod_console: Update !! shortcut for new connection API
Matthew Wild <mwild1@gmail.com>
parents:
2296
diff
changeset
|
220 return console_listener.onincoming(session.conn, session.env._); |
736 | 221 end |
222 local old, new = data:match("^!(.-[^\\])!(.-)!$"); | |
223 if old and new then | |
224 local ok, res = pcall(string.gsub, session.env._, old, new); | |
225 if not ok then | |
226 session.print(res) | |
227 return; | |
228 end | |
229 session.print("!> "..res); | |
2512
d04b0eeeb954
mod_console: Update !! shortcut for new connection API
Matthew Wild <mwild1@gmail.com>
parents:
2296
diff
changeset
|
230 return console_listener.onincoming(session.conn, res); |
736 | 231 end |
232 session.print("Sorry, not sure what you want"); | |
233 end | |
234 | |
3452
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
235 |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
236 function commands.help(session, data) |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
237 local print = session.print; |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
238 local section = data:match("^help (%w+)"); |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
239 if not section then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
240 print [[Commands are divided into multiple sections. For help on a particular section, ]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
241 print [[type: help SECTION (for example, 'help c2s'). Sections are: ]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
242 print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
243 print [[c2s - Commands to manage local client-to-server sessions]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
244 print [[s2s - Commands to manage sessions between this server and others]] |
10789
e7eb33a5f8d9
mod_admin_telnet: Document HTTP command in internal help
Kim Alvefur <zash@zash.se>
parents:
10788
diff
changeset
|
245 print [[http - Commands to inspect HTTP services]] -- XXX plural but there is only one so far |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
246 print [[module - Commands to load/reload/unload modules/plugins]] |
3452
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
247 print [[host - Commands to activate, deactivate and list virtual hosts]] |
4974
1574f18b0ca4
mod_admin_telnet: Add info about user management commands to the help
Kim Alvefur <zash@zash.se>
parents:
4973
diff
changeset
|
248 print [[user - Commands to create and delete users, and change their passwords]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
249 print [[server - Uptime, version, shutting down, etc.]] |
5270
20e14961f630
mod_admin_telnet: Add info about port commands to help
Kim Alvefur <zash@zash.se>
parents:
5227
diff
changeset
|
250 print [[port - Commands to manage ports the server is listening on]] |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
251 print [[dns - Commands to manage and inspect the internal DNS resolver]] |
10087
36d3709603d1
mod_admin_telnet: Add xmpp:ping to help
Kim Alvefur <zash@zash.se>
parents:
10086
diff
changeset
|
252 print [[xmpp - Commands for sending XMPP stanzas]] |
10788
3fc4863227a9
mod_admin_telnet: Document (in the internal help) debug commands
Kim Alvefur <zash@zash.se>
parents:
10787
diff
changeset
|
253 print [[debug - Commands for debugging the server]] |
2009
3f9cce29c57d
mod_console: Added help text for config:reload().
Waqas Hussain <waqas20@gmail.com>
parents:
2007
diff
changeset
|
254 print [[config - Reloading the configuration, etc.]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
255 print [[console - Help regarding the console itself]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
256 elseif section == "c2s" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
257 print [[c2s:show(jid) - Show all client sessions with the specified JID (or all if no JID given)]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
258 print [[c2s:show_insecure() - Show all unencrypted client connections]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
259 print [[c2s:show_secure() - Show all encrypted client connections]] |
6174
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
260 print [[c2s:show_tls() - Show TLS cipher info for encrypted sessions]] |
10086
4ade3674baf0
mod_admin_telnet: Add c2s:count() to help
Kim Alvefur <zash@zash.se>
parents:
10085
diff
changeset
|
261 print [[c2s:count() - Count sessions without listing them]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
262 print [[c2s:close(jid) - Close all sessions for the specified JID]] |
9974
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
263 print [[c2s:closeall() - Close all active c2s connections ]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
264 elseif section == "s2s" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
265 print [[s2s:show(domain) - Show all s2s connections for the given domain (or all if no domain given)]] |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
266 print [[s2s:show_tls(domain) - Show TLS cipher info for encrypted sessions]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
267 print [[s2s:close(from, to) - Close a connection from one domain to another]] |
4978
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
268 print [[s2s:closeall(host) - Close all the incoming/outgoing s2s sessions to specified host]] |
10789
e7eb33a5f8d9
mod_admin_telnet: Document HTTP command in internal help
Kim Alvefur <zash@zash.se>
parents:
10788
diff
changeset
|
269 elseif section == "http" then |
e7eb33a5f8d9
mod_admin_telnet: Document HTTP command in internal help
Kim Alvefur <zash@zash.se>
parents:
10788
diff
changeset
|
270 print [[http:list(hosts) - Show HTTP endpoints]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
271 elseif section == "module" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
272 print [[module:load(module, host) - Load the specified module on the specified host (or all hosts if none given)]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
273 print [[module:reload(module, host) - The same, but unloads and loads the module (saving state if the module supports it)]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
274 print [[module:unload(module, host) - The same, but just unloads the module from memory]] |
1907
1dd4443e7d93
mod_console: Add module:list() to help
Matthew Wild <mwild1@gmail.com>
parents:
1906
diff
changeset
|
275 print [[module:list(host) - List the modules loaded on the specified host]] |
3452
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
276 elseif section == "host" then |
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
277 print [[host:activate(hostname) - Activates the specified host]] |
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
278 print [[host:deactivate(hostname) - Disconnects all clients on this host and deactivates]] |
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
279 print [[host:list() - List the currently-activated hosts]] |
4974
1574f18b0ca4
mod_admin_telnet: Add info about user management commands to the help
Kim Alvefur <zash@zash.se>
parents:
4973
diff
changeset
|
280 elseif section == "user" then |
1574f18b0ca4
mod_admin_telnet: Add info about user management commands to the help
Kim Alvefur <zash@zash.se>
parents:
4973
diff
changeset
|
281 print [[user:create(jid, password) - Create the specified user account]] |
1574f18b0ca4
mod_admin_telnet: Add info about user management commands to the help
Kim Alvefur <zash@zash.se>
parents:
4973
diff
changeset
|
282 print [[user:password(jid, password) - Set the password for the specified user account]] |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
283 print [[user:delete(jid) - Permanently remove the specified user account]] |
5168
46fc0eff10b4
mod_admin_telnet: user:list(): Allow filtering the set of users
Kim Alvefur <zash@zash.se>
parents:
5167
diff
changeset
|
284 print [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
285 elseif section == "server" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
286 print [[server:version() - Show the server's version number]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
287 print [[server:uptime() - Show how long the server has been running]] |
5672
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
288 print [[server:memory() - Show details about the server's memory usage]] |
2870
471c3acffb2a
mod_console: Uncomment the help for server:shutdown() - thanks darkrain
Matthew Wild <mwild1@gmail.com>
parents:
2087
diff
changeset
|
289 print [[server:shutdown(reason) - Shut down the server, with an optional reason to be broadcast to all connections]] |
5270
20e14961f630
mod_admin_telnet: Add info about port commands to help
Kim Alvefur <zash@zash.se>
parents:
5227
diff
changeset
|
290 elseif section == "port" then |
20e14961f630
mod_admin_telnet: Add info about port commands to help
Kim Alvefur <zash@zash.se>
parents:
5227
diff
changeset
|
291 print [[port:list() - Lists all network ports prosody currently listens on]] |
20e14961f630
mod_admin_telnet: Add info about port commands to help
Kim Alvefur <zash@zash.se>
parents:
5227
diff
changeset
|
292 print [[port:close(port, interface) - Close a port]] |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
293 elseif section == "dns" then |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
294 print [[dns:lookup(name, type, class) - Do a DNS lookup]] |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
295 print [[dns:addnameserver(nameserver) - Add a nameserver to the list]] |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
296 print [[dns:setnameserver(nameserver) - Replace the list of name servers with the supplied one]] |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
297 print [[dns:purge() - Clear the DNS cache]] |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
298 print [[dns:cache() - Show cached records]] |
10087
36d3709603d1
mod_admin_telnet: Add xmpp:ping to help
Kim Alvefur <zash@zash.se>
parents:
10086
diff
changeset
|
299 elseif section == "xmpp" then |
36d3709603d1
mod_admin_telnet: Add xmpp:ping to help
Kim Alvefur <zash@zash.se>
parents:
10086
diff
changeset
|
300 print [[xmpp:ping(localhost, remotehost) -- Sends a ping to a remote XMPP server and reports the response]] |
2009
3f9cce29c57d
mod_console: Added help text for config:reload().
Waqas Hussain <waqas20@gmail.com>
parents:
2007
diff
changeset
|
301 elseif section == "config" then |
3f9cce29c57d
mod_console: Added help text for config:reload().
Waqas Hussain <waqas20@gmail.com>
parents:
2007
diff
changeset
|
302 print [[config:reload() - Reload the server configuration. Modules may need to be reloaded for changes to take effect.]] |
10517
6e1163fa2cd2
mod_admin_telnet: Include config:get() in help text
Kim Alvefur <zash@zash.se>
parents:
10510
diff
changeset
|
303 print [[config:get([host,] option) - Show the value of a config option.]] |
10792
ef2bd183f660
mod_admin_telnet: Silence luacheck
Kim Alvefur <zash@zash.se>
parents:
10791
diff
changeset
|
304 elseif section == "stats" then -- luacheck: ignore 542 |
ef2bd183f660
mod_admin_telnet: Silence luacheck
Kim Alvefur <zash@zash.se>
parents:
10791
diff
changeset
|
305 -- TODO describe how stats:show() works |
10788
3fc4863227a9
mod_admin_telnet: Document (in the internal help) debug commands
Kim Alvefur <zash@zash.se>
parents:
10787
diff
changeset
|
306 elseif section == "debug" then |
3fc4863227a9
mod_admin_telnet: Document (in the internal help) debug commands
Kim Alvefur <zash@zash.se>
parents:
10787
diff
changeset
|
307 print [[debug:logevents(host) - Enable logging of fired events on host]] |
3fc4863227a9
mod_admin_telnet: Document (in the internal help) debug commands
Kim Alvefur <zash@zash.se>
parents:
10787
diff
changeset
|
308 print [[debug:events(host, event) - Show registered event handlers]] |
3fc4863227a9
mod_admin_telnet: Document (in the internal help) debug commands
Kim Alvefur <zash@zash.se>
parents:
10787
diff
changeset
|
309 print [[debug:timers() - Show information about scheduled timers]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
310 elseif section == "console" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
311 print [[Hey! Welcome to Prosody's admin console.]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
312 print [[First thing, if you're ever wondering how to get out, simply type 'quit'.]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
313 print [[Secondly, note that we don't support the full telnet protocol yet (it's coming)]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
314 print [[so you may have trouble using the arrow keys, etc. depending on your system.]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
315 print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
316 print [[For now we offer a couple of handy shortcuts:]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
317 print [[!! - Repeat the last command]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
318 print [[!old!new! - repeat the last command, but with 'old' replaced by 'new']] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
319 print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
320 print [[For those well-versed in Prosody's internals, or taking instruction from those who are,]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
321 print [[you can prefix a command with > to escape the console sandbox, and access everything in]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
322 print [[the running server. Great fun, but be careful not to break anything :)]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
323 end |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
324 print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
325 end |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
326 |
736 | 327 -- Session environment -- |
328 -- Anything in def_env will be accessible within the session as a global variable | |
329 | |
6987
06696882d972
mod_admin_telnet: Add http:list() command to get info about current HTTP endpoints on the server
Matthew Wild <mwild1@gmail.com>
parents:
6927
diff
changeset
|
330 --luacheck: ignore 212/self |
10795
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
331 local serialize_defaults = module:get_option("console_prettyprint_settings", { fatal = false, unquoted = true, maxdepth = 2}) |
6987
06696882d972
mod_admin_telnet: Add http:list() command to get info about current HTTP endpoints on the server
Matthew Wild <mwild1@gmail.com>
parents:
6927
diff
changeset
|
332 |
10791
f46c5e3c97ee
mod_admin_telnet: Add a command to configure pretty-printing settings
Kim Alvefur <zash@zash.se>
parents:
10790
diff
changeset
|
333 def_env.output = {}; |
f46c5e3c97ee
mod_admin_telnet: Add a command to configure pretty-printing settings
Kim Alvefur <zash@zash.se>
parents:
10790
diff
changeset
|
334 function def_env.output:configure(opts) |
10795
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
335 if type(opts) ~= "table" then |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
336 opts = { preset = opts }; |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
337 end |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
338 for k,v in pairs(serialize_defaults) do |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
339 if opts[k] == nil then |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
340 opts[k] = v; |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
341 end |
4c90f06f2247
mod_admin_telnet: Allow configuring pretty printing defaults
Kim Alvefur <zash@zash.se>
parents:
10792
diff
changeset
|
342 end |
10791
f46c5e3c97ee
mod_admin_telnet: Add a command to configure pretty-printing settings
Kim Alvefur <zash@zash.se>
parents:
10790
diff
changeset
|
343 self.session.serialize = serialization.new(opts); |
f46c5e3c97ee
mod_admin_telnet: Add a command to configure pretty-printing settings
Kim Alvefur <zash@zash.se>
parents:
10790
diff
changeset
|
344 end |
f46c5e3c97ee
mod_admin_telnet: Add a command to configure pretty-printing settings
Kim Alvefur <zash@zash.se>
parents:
10790
diff
changeset
|
345 |
736 | 346 def_env.server = {}; |
1558
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
347 |
1556
8154aa1fbe6c
mod_console: Rename server:reload() to server:insane_reload() (basically no-one should use it except me...)
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
348 function def_env.server:insane_reload() |
1316
28ae044f1aaf
mod_console: Some "improvements" to the useless server:reload() command :)
Matthew Wild <mwild1@gmail.com>
parents:
1315
diff
changeset
|
349 prosody.unlock_globals(); |
736 | 350 dofile "prosody" |
1316
28ae044f1aaf
mod_console: Some "improvements" to the useless server:reload() command :)
Matthew Wild <mwild1@gmail.com>
parents:
1315
diff
changeset
|
351 prosody = _G.prosody; |
736 | 352 return true, "Server reloaded"; |
353 end | |
354 | |
1496
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
355 function def_env.server:version() |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
356 return true, tostring(prosody.version or "unknown"); |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
357 end |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
358 |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
359 function def_env.server:uptime() |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
360 local t = os.time()-prosody.start_time; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
361 local seconds = t%60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
362 t = (t - seconds)/60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
363 local minutes = t%60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
364 t = (t - minutes)/60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
365 local hours = t%24; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
366 t = (t - hours)/24; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
367 local days = t; |
3540
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
3452
diff
changeset
|
368 return true, string.format("This server has been running for %d day%s, %d hour%s and %d minute%s (since %s)", |
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
3452
diff
changeset
|
369 days, (days ~= 1 and "s") or "", hours, (hours ~= 1 and "s") or "", |
1496
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
370 minutes, (minutes ~= 1 and "s") or "", os.date("%c", prosody.start_time)); |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
371 end |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
372 |
1559
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
373 function def_env.server:shutdown(reason) |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
374 prosody.shutdown(reason); |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
375 return true, "Shutdown initiated"; |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
376 end |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
377 |
5672
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
378 local function human(kb) |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
379 local unit = "K"; |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
380 if kb > 1024 then |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
381 kb, unit = kb/1024, "M"; |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
382 end |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
383 return ("%0.2f%sB"):format(kb, unit); |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
384 end |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
385 |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
386 function def_env.server:memory() |
6503
8437058c4226
mod_admin_telnet: Soft-reqire util.pposix for server:memory()
Kim Alvefur <zash@zash.se>
parents:
6382
diff
changeset
|
387 if not has_pposix or not pposix.meminfo then |
8126
60f6f7ddd2ce
mod_admin_telnet: Output human-friendly memory usage when meminfo is unavailable (thanks nbastin)
Kim Alvefur <zash@zash.se>
parents:
7977
diff
changeset
|
388 return true, "Lua is using "..human(collectgarbage("count")); |
5672
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
389 end |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
390 local mem, lua_mem = pposix.meminfo(), collectgarbage("count"); |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
391 local print = self.session.print; |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
392 print("Process: "..human((mem.allocated+mem.allocated_mmap)/1024)); |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
393 print(" Used: "..human(mem.used/1024).." ("..human(lua_mem).." by Lua)"); |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
394 print(" Free: "..human(mem.unused/1024).." ("..human(mem.returnable/1024).." returnable)"); |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
395 return true, "OK"; |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
396 end |
0c68cea74d5d
mod_admin_telnet: Add server:memory() command to view details of Prosody's memory usage
Matthew Wild <mwild1@gmail.com>
parents:
5665
diff
changeset
|
397 |
736 | 398 def_env.module = {}; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
399 |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
400 local function get_hosts_set(hosts) |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
401 if type(hosts) == "table" then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
402 if hosts[1] then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
403 return set.new(hosts); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
404 elseif hosts._items then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
405 return hosts; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
406 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
407 elseif type(hosts) == "string" then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
408 return set.new { hosts }; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
409 elseif hosts == nil then |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
410 return set.new(array.collect(keys(prosody.hosts))); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
411 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
412 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
413 |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
414 -- Hosts with a module or all virtualhosts if no module given |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
415 -- matching modules_enabled in the global section |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
416 local function get_hosts_with_module(hosts, module) |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
417 local hosts_set = get_hosts_set(hosts) |
10657
197ba9539390
mod_admin_telnet: Reflow hosts filter for readability
Kim Alvefur <zash@zash.se>
parents:
10644
diff
changeset
|
418 / function (host) |
10658
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
419 if module then |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
420 -- Module given, filter in hosts with this module loaded |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
421 if modulemanager.is_loaded(host, module) then |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
422 return host; |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
423 else |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
424 return nil; |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
425 end |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
426 end |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
427 if not hosts then |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
428 -- No hosts given, filter in VirtualHosts |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
429 if prosody.hosts[host].type == "local" then |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
430 return host; |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
431 else |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
432 return nil |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
433 end |
10657
197ba9539390
mod_admin_telnet: Reflow hosts filter for readability
Kim Alvefur <zash@zash.se>
parents:
10644
diff
changeset
|
434 end; |
10658
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
435 -- No module given, but hosts are, don't filter at all |
52c6dfa04dba
mod_admin_telnet: Fix host selection filter, fixes loading on components
Kim Alvefur <zash@zash.se>
parents:
10657
diff
changeset
|
436 return host; |
10657
197ba9539390
mod_admin_telnet: Reflow hosts filter for readability
Kim Alvefur <zash@zash.se>
parents:
10644
diff
changeset
|
437 end; |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
438 if module and modulemanager.get_module("*", module) then |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
439 hosts_set:add("*"); |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
440 end |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
441 return hosts_set; |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
442 end |
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
443 |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
444 function def_env.module:load(name, hosts, config) |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
445 hosts = get_hosts_with_module(hosts); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
446 |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
447 -- Load the module for each host |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
448 local ok, err, count, mod = true, nil, 0; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
449 for host in hosts do |
6781
05cd80ec107c
mod_admin_telnet: Remove now broken importing of modulemanager from various commands, use upvalue defined at top of file (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
6580
diff
changeset
|
450 if (not modulemanager.is_loaded(host, name)) then |
05cd80ec107c
mod_admin_telnet: Remove now broken importing of modulemanager from various commands, use upvalue defined at top of file (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
6580
diff
changeset
|
451 mod, err = modulemanager.load(host, name, config); |
4647
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
452 if not mod then |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
453 ok = false; |
4647
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
454 if err == "global-module-already-loaded" then |
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
455 if count > 0 then |
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
456 ok, err, count = true, nil, 1; |
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
457 end |
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
458 break; |
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
459 end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
460 self.session.print(err or "Unknown error loading module"); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
461 else |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
462 count = count + 1; |
4647
57a4f863e48f
mod_admin_telnet: module:load(): Fix 'global-module-already-loaded' errors when successfully loading a global module (fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4646
diff
changeset
|
463 self.session.print("Loaded for "..mod.module.host); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
464 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
465 end |
736 | 466 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
467 |
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
468 return ok, (ok and "Module loaded onto "..count.." host"..(count ~= 1 and "s" or "")) or ("Last error: "..tostring(err)); |
736 | 469 end |
470 | |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
471 function def_env.module:unload(name, hosts) |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
472 hosts = get_hosts_with_module(hosts, name); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
473 |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
474 -- Unload the module for each host |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
475 local ok, err, count = true, nil, 0; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
476 for host in hosts do |
6781
05cd80ec107c
mod_admin_telnet: Remove now broken importing of modulemanager from various commands, use upvalue defined at top of file (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
6580
diff
changeset
|
477 if modulemanager.is_loaded(host, name) then |
05cd80ec107c
mod_admin_telnet: Remove now broken importing of modulemanager from various commands, use upvalue defined at top of file (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
6580
diff
changeset
|
478 ok, err = modulemanager.unload(host, name); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
479 if not ok then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
480 ok = false; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
481 self.session.print(err or "Unknown error unloading module"); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
482 else |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
483 count = count + 1; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
484 self.session.print("Unloaded from "..host); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
485 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
486 end |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
487 end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
488 return ok, (ok and "Module unloaded from "..count.." host"..(count ~= 1 and "s" or "")) or ("Last error: "..tostring(err)); |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
489 end |
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
490 |
9332
048389a9bbd4
mod_admin_telnet: Split out sort function for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
491 local function _sort_hosts(a, b) |
048389a9bbd4
mod_admin_telnet: Split out sort function for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
492 if a == "*" then return true |
048389a9bbd4
mod_admin_telnet: Split out sort function for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
493 elseif b == "*" then return false |
10506
af214e2739f5
mod_admin_telnet: Merge hostname comparison functions
Kim Alvefur <zash@zash.se>
parents:
10505
diff
changeset
|
494 else return a:gsub("[^.]+", string.reverse):reverse() < b:gsub("[^.]+", string.reverse):reverse(); end |
9332
048389a9bbd4
mod_admin_telnet: Split out sort function for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
495 end |
048389a9bbd4
mod_admin_telnet: Split out sort function for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
496 |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
497 function def_env.module:reload(name, hosts) |
10507
4d3549e64489
mod_admin_telnet: Refactor internal function for listing hosts
Kim Alvefur <zash@zash.se>
parents:
10506
diff
changeset
|
498 hosts = array.collect(get_hosts_with_module(hosts, name)):sort(_sort_hosts) |
4645
4539e99be743
mod_admin_telnet: module:reload(): If module is loaded on *, reload it there first (ensuring shared module code is reloaded before per-host children of that module)
Matthew Wild <mwild1@gmail.com>
parents:
4644
diff
changeset
|
499 |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
500 -- Reload the module for each host |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
501 local ok, err, count = true, nil, 0; |
4645
4539e99be743
mod_admin_telnet: module:reload(): If module is loaded on *, reload it there first (ensuring shared module code is reloaded before per-host children of that module)
Matthew Wild <mwild1@gmail.com>
parents:
4644
diff
changeset
|
502 for _, host in ipairs(hosts) do |
6781
05cd80ec107c
mod_admin_telnet: Remove now broken importing of modulemanager from various commands, use upvalue defined at top of file (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
6580
diff
changeset
|
503 if modulemanager.is_loaded(host, name) then |
05cd80ec107c
mod_admin_telnet: Remove now broken importing of modulemanager from various commands, use upvalue defined at top of file (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
6580
diff
changeset
|
504 ok, err = modulemanager.reload(host, name); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
505 if not ok then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
506 ok = false; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
507 self.session.print(err or "Unknown error reloading module"); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
508 else |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
509 count = count + 1; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
510 if ok == nil then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
511 ok = true; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
512 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
513 self.session.print("Reloaded on "..host); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
514 end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
515 end |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
516 end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
517 return ok, (ok and "Module reloaded on "..count.." host"..(count ~= 1 and "s" or "")) or ("Last error: "..tostring(err)); |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
518 end |
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
519 |
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
520 function def_env.module:list(hosts) |
10508
edd323b30de1
mod_admin_telnet: Sort hosts in module:list
Kim Alvefur <zash@zash.se>
parents:
10507
diff
changeset
|
521 hosts = array.collect(set.new({ not hosts and "*" or nil }) + get_hosts_set(hosts)):sort(_sort_hosts); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
522 |
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
523 local print = self.session.print; |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
524 for _, host in ipairs(hosts) do |
4646
e0bd8587f2fb
mod_admin_telnet: module:list(): List global modules (part-fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4645
diff
changeset
|
525 print((host == "*" and "Global" or host)..":"); |
e0bd8587f2fb
mod_admin_telnet: module:list(): List global modules (part-fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4645
diff
changeset
|
526 local modules = array.collect(keys(modulemanager.get_modules(host) or {})):sort(); |
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
527 if #modules == 0 then |
2010
1a4f14ea39b6
mod_console: Fixed traceback occuring on using module:list on unknown hosts.
Waqas Hussain <waqas20@gmail.com>
parents:
2009
diff
changeset
|
528 if prosody.hosts[host] then |
1a4f14ea39b6
mod_console: Fixed traceback occuring on using module:list on unknown hosts.
Waqas Hussain <waqas20@gmail.com>
parents:
2009
diff
changeset
|
529 print(" No modules loaded"); |
1a4f14ea39b6
mod_console: Fixed traceback occuring on using module:list on unknown hosts.
Waqas Hussain <waqas20@gmail.com>
parents:
2009
diff
changeset
|
530 else |
1a4f14ea39b6
mod_console: Fixed traceback occuring on using module:list on unknown hosts.
Waqas Hussain <waqas20@gmail.com>
parents:
2009
diff
changeset
|
531 print(" Host not found"); |
1a4f14ea39b6
mod_console: Fixed traceback occuring on using module:list on unknown hosts.
Waqas Hussain <waqas20@gmail.com>
parents:
2009
diff
changeset
|
532 end |
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
533 else |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
534 for _, name in ipairs(modules) do |
9868
0361e3379dd1
mod_admin_telnet: Show module status in module:list()
Matthew Wild <mwild1@gmail.com>
parents:
9786
diff
changeset
|
535 local status, status_text = modulemanager.get_module(host, name).module:get_status(); |
0361e3379dd1
mod_admin_telnet: Show module status in module:list()
Matthew Wild <mwild1@gmail.com>
parents:
9786
diff
changeset
|
536 local status_summary = ""; |
0361e3379dd1
mod_admin_telnet: Show module status in module:list()
Matthew Wild <mwild1@gmail.com>
parents:
9786
diff
changeset
|
537 if status == "warn" or status == "error" then |
0361e3379dd1
mod_admin_telnet: Show module status in module:list()
Matthew Wild <mwild1@gmail.com>
parents:
9786
diff
changeset
|
538 status_summary = (" (%s: %s)"):format(status, status_text); |
0361e3379dd1
mod_admin_telnet: Show module status in module:list()
Matthew Wild <mwild1@gmail.com>
parents:
9786
diff
changeset
|
539 end |
0361e3379dd1
mod_admin_telnet: Show module status in module:list()
Matthew Wild <mwild1@gmail.com>
parents:
9786
diff
changeset
|
540 print((" %s%s"):format(name, status_summary)); |
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
541 end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
542 end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
543 end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
544 end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
545 |
736 | 546 def_env.config = {}; |
547 function def_env.config:load(filename, format) | |
548 local config_load = require "core.configmanager".load; | |
549 local ok, err = config_load(filename, format); | |
550 if not ok then | |
551 return false, err or "Unknown error loading config"; | |
552 end | |
553 return true, "Config loaded"; | |
554 end | |
555 | |
9753
3a14815f5430
mod_admin_telnet: Remove the long gone 'section' argument in the undocumented config:get command
Kim Alvefur <zash@zash.se>
parents:
9748
diff
changeset
|
556 function def_env.config:get(host, key) |
9754
cbbc6fefd07d
mod_admin_telnet: config:get: Assume the global section if only one argument is given
Kim Alvefur <zash@zash.se>
parents:
9753
diff
changeset
|
557 if key == nil then |
cbbc6fefd07d
mod_admin_telnet: config:get: Assume the global section if only one argument is given
Kim Alvefur <zash@zash.se>
parents:
9753
diff
changeset
|
558 host, key = "*", host; |
cbbc6fefd07d
mod_admin_telnet: config:get: Assume the global section if only one argument is given
Kim Alvefur <zash@zash.se>
parents:
9753
diff
changeset
|
559 end |
736 | 560 local config_get = require "core.configmanager".get |
10787
459efb1afbfe
mod_admin_telnet: Pretty-print values returned from commands
Kim Alvefur <zash@zash.se>
parents:
10701
diff
changeset
|
561 return true, serialize_config(config_get(host, key)); |
736 | 562 end |
563 | |
1558
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
564 function def_env.config:reload() |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
565 local ok, err = prosody.reload_config(); |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
566 return ok, (ok and "Config reloaded (you may need to reload modules to take effect)") or tostring(err); |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
567 end |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
568 |
6173
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
569 local function common_info(session, line) |
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
570 if session.id then |
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
571 line[#line+1] = "["..session.id.."]" |
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
572 else |
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
573 line[#line+1] = "["..session.type..(tostring(session):match("%x*$")).."]" |
736 | 574 end |
575 end | |
576 | |
5586
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
577 local function session_flags(session, line) |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
578 line = line or {}; |
6173
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
579 common_info(session, line); |
6171
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
580 if session.type == "c2s" then |
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
581 local status, priority = "unavailable", tostring(session.priority or "-"); |
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
582 if session.presence then |
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
583 status = session.presence:get_child_text("show") or "available"; |
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
584 end |
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
585 line[#line+1] = status.."("..priority..")"; |
c69fca37f338
mod_admin_telnet: Move extraction of c2s presence info into session_flags()
Kim Alvefur <zash@zash.se>
parents:
6170
diff
changeset
|
586 end |
5586
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
587 if session.cert_identity_status == "valid" then |
6170
1dff425ffe84
mod_admin_telnet: Split (secure) into (authenticated) + (secure)
Kim Alvefur <zash@zash.se>
parents:
6169
diff
changeset
|
588 line[#line+1] = "(authenticated)"; |
1dff425ffe84
mod_admin_telnet: Split (secure) into (authenticated) + (secure)
Kim Alvefur <zash@zash.se>
parents:
6169
diff
changeset
|
589 end |
10383
496248e48a1d
mod_admin_telnet: Show s2s authentication method (probably) used
Kim Alvefur <zash@zash.se>
parents:
10310
diff
changeset
|
590 if session.dialback_key then |
496248e48a1d
mod_admin_telnet: Show s2s authentication method (probably) used
Kim Alvefur <zash@zash.se>
parents:
10310
diff
changeset
|
591 line[#line+1] = "(dialback)"; |
496248e48a1d
mod_admin_telnet: Show s2s authentication method (probably) used
Kim Alvefur <zash@zash.se>
parents:
10310
diff
changeset
|
592 end |
496248e48a1d
mod_admin_telnet: Show s2s authentication method (probably) used
Kim Alvefur <zash@zash.se>
parents:
10310
diff
changeset
|
593 if session.external_auth then |
496248e48a1d
mod_admin_telnet: Show s2s authentication method (probably) used
Kim Alvefur <zash@zash.se>
parents:
10310
diff
changeset
|
594 line[#line+1] = "(SASL)"; |
496248e48a1d
mod_admin_telnet: Show s2s authentication method (probably) used
Kim Alvefur <zash@zash.se>
parents:
10310
diff
changeset
|
595 end |
6170
1dff425ffe84
mod_admin_telnet: Split (secure) into (authenticated) + (secure)
Kim Alvefur <zash@zash.se>
parents:
6169
diff
changeset
|
596 if session.secure then |
5586
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
597 line[#line+1] = "(encrypted)"; |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
598 end |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
599 if session.compressed then |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
600 line[#line+1] = "(compressed)"; |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
601 end |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
602 if session.smacks then |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
603 line[#line+1] = "(sm)"; |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
604 end |
5662
685d46ec352b
mod_admin_telnet: Simplify IPv6 detection, fixes rare traceback
Kim Alvefur <zash@zash.se>
parents:
5645
diff
changeset
|
605 if session.ip and session.ip:match(":") then |
5586
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
606 line[#line+1] = "(IPv6)"; |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
607 end |
6927
566e1cfcb814
mod_admin_telnet: c2s:show(): Add flag to indicate remote sessions
Matthew Wild <mwild1@gmail.com>
parents:
6838
diff
changeset
|
608 if session.remote then |
566e1cfcb814
mod_admin_telnet: c2s:show(): Add flag to indicate remote sessions
Matthew Wild <mwild1@gmail.com>
parents:
6838
diff
changeset
|
609 line[#line+1] = "(remote)"; |
566e1cfcb814
mod_admin_telnet: c2s:show(): Add flag to indicate remote sessions
Matthew Wild <mwild1@gmail.com>
parents:
6838
diff
changeset
|
610 end |
10252
aa3f98853816
mod_admin_telnet: Identify native bidi sessions
Kim Alvefur <zash@zash.se>
parents:
10239
diff
changeset
|
611 if session.incoming and session.outgoing then |
aa3f98853816
mod_admin_telnet: Identify native bidi sessions
Kim Alvefur <zash@zash.se>
parents:
10239
diff
changeset
|
612 line[#line+1] = "(bidi)"; |
aa3f98853816
mod_admin_telnet: Identify native bidi sessions
Kim Alvefur <zash@zash.se>
parents:
10239
diff
changeset
|
613 elseif session.is_bidi or session.bidi_session then |
9711
39dc037875e1
admin_telnet: show when bidi is used on s2s
Maxime “pep” Buquet <pep@bouah.net>
parents:
9691
diff
changeset
|
614 line[#line+1] = "(bidi)"; |
39dc037875e1
admin_telnet: show when bidi is used on s2s
Maxime “pep” Buquet <pep@bouah.net>
parents:
9691
diff
changeset
|
615 end |
9988
cdf0b63a0d61
mod_admin_telnet: added "(bosh)" and "(websocket)" connection flags (#998)
Arc Riley <arcriley@gmail.com>
parents:
9987
diff
changeset
|
616 if session.bosh_version then |
cdf0b63a0d61
mod_admin_telnet: added "(bosh)" and "(websocket)" connection flags (#998)
Arc Riley <arcriley@gmail.com>
parents:
9987
diff
changeset
|
617 line[#line+1] = "(bosh)"; |
cdf0b63a0d61
mod_admin_telnet: added "(bosh)" and "(websocket)" connection flags (#998)
Arc Riley <arcriley@gmail.com>
parents:
9987
diff
changeset
|
618 end |
cdf0b63a0d61
mod_admin_telnet: added "(bosh)" and "(websocket)" connection flags (#998)
Arc Riley <arcriley@gmail.com>
parents:
9987
diff
changeset
|
619 if session.websocket_request then |
cdf0b63a0d61
mod_admin_telnet: added "(bosh)" and "(websocket)" connection flags (#998)
Arc Riley <arcriley@gmail.com>
parents:
9987
diff
changeset
|
620 line[#line+1] = "(websocket)"; |
cdf0b63a0d61
mod_admin_telnet: added "(bosh)" and "(websocket)" connection flags (#998)
Arc Riley <arcriley@gmail.com>
parents:
9987
diff
changeset
|
621 end |
5586
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
622 return table.concat(line, " "); |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
623 end |
7e1264bf7af8
mod_admin_telnet: List session flags (encryption, compression etc) the same way for c2s as s2s
Kim Alvefur <zash@zash.se>
parents:
5579
diff
changeset
|
624 |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
625 local function tls_info(session, line) |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
626 line = line or {}; |
6173
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
627 common_info(session, line); |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
628 if session.secure then |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
629 local sock = session.conn and session.conn.socket and session.conn:socket(); |
10699
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
630 if sock then |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
631 local info = sock.info and sock:info(); |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
632 if info then |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
633 line[#line+1] = ("(%s with %s)"):format(info.protocol, info.cipher); |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
634 else |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
635 -- TLS session might not be ready yet |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
636 line[#line+1] = "(cipher info unavailable)"; |
fd77b6cec38d
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
Kim Alvefur <zash@zash.se>
parents:
10618
diff
changeset
|
637 end |
10644
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
638 if sock.getsniname then |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
639 local name = sock:getsniname(); |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
640 if name then |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
641 line[#line+1] = ("(SNI:%q)"):format(name); |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
642 end |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
643 end |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
644 if sock.getalpn then |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
645 local proto = sock:getalpn(); |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
646 if proto then |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
647 line[#line+1] = ("(ALPN:%q)"):format(proto); |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
648 end |
6c4ab1b87588
mod_admin_telnet: Avoid indexing missing socket (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents:
10620
diff
changeset
|
649 end |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
650 end |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
651 else |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
652 line[#line+1] = "(insecure)"; |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
653 end |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
654 return table.concat(line, " "); |
736 | 655 end |
656 | |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
657 def_env.c2s = {}; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
658 |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
659 local function get_jid(session) |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
660 if session.username then |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
661 return session.full_jid or jid_join(session.username, session.host, session.resource); |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
662 end |
7069
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
663 |
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
664 local conn = session.conn; |
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
665 local ip = session.ip or "?"; |
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
666 local clientport = conn and conn:clientport() or "?"; |
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
667 local serverip = conn and conn.server and conn:server():ip() or "?"; |
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
668 local serverport = conn and conn:serverport() or "?" |
eae5d2f1311d
mod_admin_telnet: Show unauthenticated clients identified by local/remote IP and port
Kim Alvefur <zash@zash.se>
parents:
7068
diff
changeset
|
669 return jid_join("["..ip.."]:"..clientport, session.host or "["..serverip.."]:"..serverport); |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
670 end |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
671 |
10084
e4043e3928f2
mod_admin_telnet: Factor out function for collecting all c2s sessions for easier reuse
Kim Alvefur <zash@zash.se>
parents:
10083
diff
changeset
|
672 local function get_c2s() |
10083
f30d505e755b
mod_admin_telnet: Include both c2s connections and sessions in c2s:show()
Kim Alvefur <zash@zash.se>
parents:
10068
diff
changeset
|
673 local c2s = array.collect(values(prosody.full_sessions)); |
f30d505e755b
mod_admin_telnet: Include both c2s connections and sessions in c2s:show()
Kim Alvefur <zash@zash.se>
parents:
10068
diff
changeset
|
674 c2s:append(array.collect(values(module:shared"/*/c2s/sessions"))); |
10044
4fd27023224a
mod_admin_telnet: Collect array from Bosh connections when appending to connection list
Michel Le Bihan <michel@lebihan.pl>
parents:
9989
diff
changeset
|
675 c2s:append(array.collect(values(module:shared"/*/bosh/sessions"))); |
10083
f30d505e755b
mod_admin_telnet: Include both c2s connections and sessions in c2s:show()
Kim Alvefur <zash@zash.se>
parents:
10068
diff
changeset
|
676 c2s:unique(); |
10084
e4043e3928f2
mod_admin_telnet: Factor out function for collecting all c2s sessions for easier reuse
Kim Alvefur <zash@zash.se>
parents:
10083
diff
changeset
|
677 return c2s; |
e4043e3928f2
mod_admin_telnet: Factor out function for collecting all c2s sessions for easier reuse
Kim Alvefur <zash@zash.se>
parents:
10083
diff
changeset
|
678 end |
e4043e3928f2
mod_admin_telnet: Factor out function for collecting all c2s sessions for easier reuse
Kim Alvefur <zash@zash.se>
parents:
10083
diff
changeset
|
679 |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
680 local function show_c2s(callback) |
10084
e4043e3928f2
mod_admin_telnet: Factor out function for collecting all c2s sessions for easier reuse
Kim Alvefur <zash@zash.se>
parents:
10083
diff
changeset
|
681 get_c2s():sort(function(a, b) |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
682 if a.host == b.host then |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
683 if a.username == b.username then |
7090
7aa37d70944b
mod_admin_telnet: Fix sorting of JIDs in c2s:show() family of functions (thanks lookshe and Zash)
Matthew Wild <mwild1@gmail.com>
parents:
7070
diff
changeset
|
684 return (a.resource or "") > (b.resource or ""); |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
685 end |
7090
7aa37d70944b
mod_admin_telnet: Fix sorting of JIDs in c2s:show() family of functions (thanks lookshe and Zash)
Matthew Wild <mwild1@gmail.com>
parents:
7070
diff
changeset
|
686 return (a.username or "") > (b.username or ""); |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
687 end |
10509
0aa0fd1adbb0
mod_admin_telnet: Use existing host comparison when comparing JIDs
Kim Alvefur <zash@zash.se>
parents:
10508
diff
changeset
|
688 return _sort_hosts(a.host or "", b.host or ""); |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
689 end):map(function (session) |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
690 callback(get_jid(session), session) |
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
691 end); |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
692 end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
693 |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
694 function def_env.c2s:count() |
10085
bf51a08a94a7
mod_admin_telnet: Make c2s:count() consistent with c2s:show()
Kim Alvefur <zash@zash.se>
parents:
10084
diff
changeset
|
695 local c2s = get_c2s(); |
bf51a08a94a7
mod_admin_telnet: Make c2s:count() consistent with c2s:show()
Kim Alvefur <zash@zash.se>
parents:
10084
diff
changeset
|
696 return true, "Total: ".. #c2s .." clients"; |
4779
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
697 end |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
698 |
6174
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
699 function def_env.c2s:show(match_jid, annotate) |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
700 local print, count = self.session.print, 0; |
6174
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
701 annotate = annotate or session_flags; |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
702 local curr_host = false; |
1798
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
703 show_c2s(function (jid, session) |
1763
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
704 if curr_host ~= session.host then |
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
705 curr_host = session.host; |
7068
0c494bca43cb
mod_admin_telnet: c2s:show() etc, list all sessions including unauthenticated or not with no stream opened
Kim Alvefur <zash@zash.se>
parents:
7067
diff
changeset
|
706 print(curr_host or "(not connected to any host yet)"); |
1763
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
707 end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
708 if (not match_jid) or jid:match(match_jid) then |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
709 count = count + 1; |
6174
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
710 print(annotate(session, { " ", jid })); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
711 end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
712 end); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
713 return true, "Total: "..count.." clients"; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
714 end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
715 |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
716 function def_env.c2s:show_insecure(match_jid) |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
717 local print, count = self.session.print, 0; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
718 show_c2s(function (jid, session) |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
719 if ((not match_jid) or jid:match(match_jid)) and not session.secure then |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
720 count = count + 1; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
721 print(jid); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
722 end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
723 end); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
724 return true, "Total: "..count.." insecure client connections"; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
725 end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
726 |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
727 function def_env.c2s:show_secure(match_jid) |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
728 local print, count = self.session.print, 0; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
729 show_c2s(function (jid, session) |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
730 if ((not match_jid) or jid:match(match_jid)) and session.secure then |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
731 count = count + 1; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
732 print(jid); |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
733 end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
734 end); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
735 return true, "Total: "..count.." secure client connections"; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
736 end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
737 |
6174
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
738 function def_env.c2s:show_tls(match_jid) |
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
739 return self:show(match_jid, tls_info); |
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
740 end |
513ea94761b2
mod_admin_telnet: Add c2s:show_tls(), behaves like s2s:show_tls()
Kim Alvefur <zash@zash.se>
parents:
6173
diff
changeset
|
741 |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
742 local function build_reason(text, condition) |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
743 if text or condition then |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
744 return { |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
745 text = text, |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
746 condition = condition or "undefined-condition", |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
747 }; |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
748 end |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
749 end |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
750 |
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
751 function def_env.c2s:close(match_jid, text, condition) |
5028
10a69a7e4545
mod_admin_telnet: Remove unused variable
Matthew Wild <mwild1@gmail.com>
parents:
5027
diff
changeset
|
752 local count = 0; |
1491
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
753 show_c2s(function (jid, session) |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
754 if jid == match_jid or jid_bare(jid) == match_jid then |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
755 count = count + 1; |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
756 session:close(build_reason(text, condition)); |
1491
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
757 end |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
758 end); |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
759 return true, "Total: "..count.." sessions closed"; |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
760 end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
761 |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
762 function def_env.c2s:closeall(text, condition) |
9974
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
763 local count = 0; |
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
764 --luacheck: ignore 212/jid |
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
765 show_c2s(function (jid, session) |
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
766 count = count + 1; |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
767 session:close(build_reason(text, condition)); |
9974
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
768 end); |
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
769 return true, "Total: "..count.." sessions closed"; |
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
770 end |
c30933aa0242
mod_admin_telnet: Adds c2s:closeall() (Fixes #1315)
João Duarte <jvsDuarte08@gmail.com>
parents:
9868
diff
changeset
|
771 |
4514
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
772 |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
773 def_env.s2s = {}; |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
774 function def_env.s2s:show(match_jid, annotate) |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
775 local print = self.session.print; |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
776 annotate = annotate or session_flags; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
777 |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
778 local count_in, count_out = 0,0; |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
779 local s2s_list = { }; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
780 |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
781 local s2s_sessions = module:shared"/*/s2s/sessions"; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
782 for _, session in pairs(s2s_sessions) do |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
783 local remotehost, localhost, direction; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
784 if session.direction == "outgoing" then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
785 direction = "->"; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
786 count_out = count_out + 1; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
787 remotehost, localhost = session.to_host or "?", session.from_host or "?"; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
788 else |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
789 direction = "<-"; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
790 count_in = count_in + 1; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
791 remotehost, localhost = session.from_host or "?", session.to_host or "?"; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
792 end |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
793 local sess_lines = { l = localhost, r = remotehost, |
6173
1600438c0c14
mod_admin_telnet: Move generation of log tag for s2s:show() (adds it to c2s:show() too)
Kim Alvefur <zash@zash.se>
parents:
6172
diff
changeset
|
794 annotate(session, { "", direction, remotehost or "?" })}; |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
795 |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
796 if (not match_jid) or remotehost:match(match_jid) or localhost:match(match_jid) then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
797 table.insert(s2s_list, sess_lines); |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
798 -- luacheck: ignore 421/print |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
799 local print = function (s) table.insert(sess_lines, " "..s); end |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
800 if session.sendq then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
801 print("There are "..#session.sendq.." queued outgoing stanzas for this connection"); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
802 end |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
803 if session.type == "s2sout_unauthed" then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
804 if session.connecting then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
805 print("Connection not yet established"); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
806 if not session.srv_hosts then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
807 if not session.conn then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
808 print("We do not yet have a DNS answer for this host's SRV records"); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
809 else |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
810 print("This host has no SRV records, using A record instead"); |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
811 end |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
812 elseif session.srv_choice then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
813 print("We are on SRV record "..session.srv_choice.." of "..#session.srv_hosts); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
814 local srv_choice = session.srv_hosts[session.srv_choice]; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
815 print("Using "..(srv_choice.target or ".")..":"..(srv_choice.port or 5269)); |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
816 end |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
817 elseif session.notopen then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
818 print("The <stream> has not yet been opened"); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
819 elseif not session.dialback_key then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
820 print("Dialback has not been initiated yet"); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
821 elseif session.dialback_key then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
822 print("Dialback has been requested, but no result received"); |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
823 end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
824 end |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
825 if session.type == "s2sin_unauthed" then |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
826 print("Connection not yet authenticated"); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
827 elseif session.type == "s2sin" then |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
828 for name in pairs(session.hosts) do |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
829 if name ~= session.from_host then |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
830 print("also hosts "..tostring(name)); |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
831 end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
832 end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
833 end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
834 end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
835 end |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
836 |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
837 -- Sort by local host, then remote host |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
838 table.sort(s2s_list, function(a,b) |
10510
fe0884ddb4f8
mod_admin_telnet: Use common sort function in s2s:show
Kim Alvefur <zash@zash.se>
parents:
10509
diff
changeset
|
839 if a.l == b.l then return _sort_hosts(a.r, b.r); end |
fe0884ddb4f8
mod_admin_telnet: Use common sort function in s2s:show
Kim Alvefur <zash@zash.se>
parents:
10509
diff
changeset
|
840 return _sort_hosts(a.l, b.l); |
5710
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
841 end); |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
842 local lasthost; |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
843 for _, sess_lines in ipairs(s2s_list) do |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
844 if sess_lines.l ~= lasthost then print(sess_lines.l); lasthost=sess_lines.l end |
e66bbfdf588e
mod_admin_telnet: Refactor s2s:show()
Kim Alvefur <zash@zash.se>
parents:
5709
diff
changeset
|
845 for _, line in ipairs(sess_lines) do print(line); end |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
846 end |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
847 return true, "Total: "..count_out.." outgoing, "..count_in.." incoming connections"; |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
848 end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
849 |
6172
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
850 function def_env.s2s:show_tls(match_jid) |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
851 return self:show(match_jid, tls_info); |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
852 end |
0205b97bb355
mod_admin_telnet: Add s2s:show_tls() for showing ciphers used on s2s connections
Kim Alvefur <zash@zash.se>
parents:
6171
diff
changeset
|
853 |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
854 local function print_subject(print, subject) |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
855 for _, entry in ipairs(subject) do |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
856 print( |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
857 (" %s: %q"):format( |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
858 entry.name or entry.oid, |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
859 entry.value:gsub("[\r\n%z%c]", " ") |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
860 ) |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
861 ); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
862 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
863 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
864 |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
865 -- As much as it pains me to use the 0-based depths that OpenSSL does, |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
866 -- I think there's going to be more confusion among operators if we |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
867 -- break from that. |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
868 local function print_errors(print, errors) |
5769
f6ea5b3739c9
mod_admin_telnet, mod_s2s: Fix reporting of certificate chain validation details
Kim Alvefur <zash@zash.se>
parents:
5672
diff
changeset
|
869 for depth, t in pairs(errors) do |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
870 print( |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
871 (" %d: %s"):format( |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
872 depth-1, |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
873 table.concat(t, "\n| ") |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
874 ) |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
875 ); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
876 end |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
877 end |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
878 |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
879 function def_env.s2s:showcert(domain) |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
880 local print = self.session.print; |
5706
896094da72e4
mod_admin_telnet: Refactor s2s:showcert()
Kim Alvefur <zash@zash.se>
parents:
5674
diff
changeset
|
881 local s2s_sessions = module:shared"/*/s2s/sessions"; |
896094da72e4
mod_admin_telnet: Refactor s2s:showcert()
Kim Alvefur <zash@zash.se>
parents:
5674
diff
changeset
|
882 local domain_sessions = set.new(array.collect(values(s2s_sessions))) |
896094da72e4
mod_admin_telnet: Refactor s2s:showcert()
Kim Alvefur <zash@zash.se>
parents:
5674
diff
changeset
|
883 /function(session) return (session.to_host == domain or session.from_host == domain) and session or nil; end; |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
884 local cert_set = {}; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
885 for session in domain_sessions do |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
886 local conn = session.conn; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
887 conn = conn and conn:socket(); |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
888 if not conn.getpeerchain then |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
889 if conn.dohandshake then |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
890 error("This version of LuaSec does not support certificate viewing"); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
891 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
892 else |
5596
73fea1a87afd
mod_admin_telnet: Don't rely on getpeerchain returning an empty list
Kim Alvefur <zash@zash.se>
parents:
5567
diff
changeset
|
893 local cert = conn:getpeercertificate(); |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
894 if cert then |
5596
73fea1a87afd
mod_admin_telnet: Don't rely on getpeerchain returning an empty list
Kim Alvefur <zash@zash.se>
parents:
5567
diff
changeset
|
895 local certs = conn:getpeerchain(); |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
896 local digest = cert:digest("sha1"); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
897 if not cert_set[digest] then |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
898 local chain_valid, chain_errors = conn:getpeerverification(); |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
899 cert_set[digest] = { |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
900 { |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
901 from = session.from_host, |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
902 to = session.to_host, |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
903 direction = session.direction |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
904 }; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
905 chain_valid = chain_valid; |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
906 chain_errors = chain_errors; |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
907 certs = certs; |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
908 }; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
909 else |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
910 table.insert(cert_set[digest], { |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
911 from = session.from_host, |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
912 to = session.to_host, |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
913 direction = session.direction |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
914 }); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
915 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
916 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
917 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
918 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
919 local domain_certs = array.collect(values(cert_set)); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
920 -- Phew. We now have a array of unique certificates presented by domain. |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
921 local n_certs = #domain_certs; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
922 |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
923 if n_certs == 0 then |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
924 return "No certificates found for "..domain; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
925 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
926 |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
927 local function _capitalize_and_colon(byte) |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
928 return string.upper(byte)..":"; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
929 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
930 local function pretty_fingerprint(hash) |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
931 return hash:gsub("..", _capitalize_and_colon):sub(1, -2); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
932 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
933 |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
934 for cert_info in values(domain_certs) do |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
935 local certs = cert_info.certs; |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
936 local cert = certs[1]; |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
937 print("---") |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
938 print("Fingerprint (SHA1): "..pretty_fingerprint(cert:digest("sha1"))); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
939 print(""); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
940 local n_streams = #cert_info; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
941 print("Currently used on "..n_streams.." stream"..(n_streams==1 and "" or "s")..":"); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
942 for _, stream in ipairs(cert_info) do |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
943 if stream.direction == "incoming" then |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
944 print(" "..stream.to.." <- "..stream.from); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
945 else |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
946 print(" "..stream.from.." -> "..stream.to); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
947 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
948 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
949 print(""); |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
950 local chain_valid, errors = cert_info.chain_valid, cert_info.chain_errors; |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
951 local valid_identity = cert_verify_identity(domain, "xmpp-server", cert); |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
952 if chain_valid then |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
953 print("Trusted certificate: Yes"); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
954 else |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
955 print("Trusted certificate: No"); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
956 print_errors(print, errors); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
957 end |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
958 print(""); |
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
959 print("Issuer: "); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
960 print_subject(print, cert:issuer()); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
961 print(""); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
962 print("Valid for "..domain..": "..(valid_identity and "Yes" or "No")); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
963 print("Subject:"); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
964 print_subject(print, cert:subject()); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
965 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
966 print("---"); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
967 return ("Showing "..n_certs.." certificate" |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
968 ..(n_certs==1 and "" or "s") |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
969 .." presented by "..domain.."."); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
970 end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
971 |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
972 function def_env.s2s:close(from, to, text, condition) |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
973 local print, count = self.session.print, 0; |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
974 local s2s_sessions = module:shared"/*/s2s/sessions"; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
975 |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
976 local match_id; |
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
977 if from and not to then |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
978 match_id, from = from, nil; |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
979 elseif not to then |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
980 return false, "Syntax: s2s:close('from', 'to') - Closes all s2s sessions from 'from' to 'to'"; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
981 elseif from == to then |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
982 return false, "Both from and to are the same... you can't do that :)"; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
983 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
984 |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
985 for _, session in pairs(s2s_sessions) do |
10095
a3c66d0294e1
mod_admin_telnet: Use already generated session id
Kim Alvefur <zash@zash.se>
parents:
10094
diff
changeset
|
986 local id = session.id or (session.type..tostring(session):match("[a-f0-9]+$")); |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
987 if (match_id and match_id == id) |
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
988 or (session.from_host == from and session.to_host == to) then |
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
989 print(("Closing connection from %s to %s [%s]"):format(session.from_host, session.to_host, id)); |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
990 (session.close or s2smanager.destroy_session)(session, build_reason(text, condition)); |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
991 count = count + 1 ; |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
992 end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
993 end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
994 return true, "Closed "..count.." s2s session"..((count == 1 and "") or "s"); |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
995 end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
996 |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
997 function def_env.s2s:closeall(host, text, condition) |
6838
229e95aecf41
mod_admin_telnet: Fix indentation
Kim Alvefur <zash@zash.se>
parents:
6781
diff
changeset
|
998 local count = 0; |
5708
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
999 local s2s_sessions = module:shared"/*/s2s/sessions"; |
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
1000 for _,session in pairs(s2s_sessions) do |
667cf4e45356
mod_admin_telnet: Refactor s2s:close and s2s:closeall
Kim Alvefur <zash@zash.se>
parents:
5706
diff
changeset
|
1001 if not host or session.from_host == host or session.to_host == host then |
10094
6b1e89868328
mod_admin_telnet: Allow specifying a reason when closing sessions (#1400)
Kim Alvefur <zash@zash.se>
parents:
10087
diff
changeset
|
1002 session:close(build_reason(text, condition)); |
6838
229e95aecf41
mod_admin_telnet: Fix indentation
Kim Alvefur <zash@zash.se>
parents:
6781
diff
changeset
|
1003 count = count + 1; |
4978
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
1004 end |
6838
229e95aecf41
mod_admin_telnet: Fix indentation
Kim Alvefur <zash@zash.se>
parents:
6781
diff
changeset
|
1005 end |
4978
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
1006 if count == 0 then return false, "No sessions to close."; |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
1007 else return true, "Closed "..count.." s2s session"..((count == 1 and "") or "s"); end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
1008 end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
1009 |
1977
325a49f8edab
mod_console: Add commands host:activate(host, config) and host:deactivate(host, reason) to add/remove hosts at runtime
Matthew Wild <mwild1@gmail.com>
parents:
1927
diff
changeset
|
1010 def_env.host = {}; def_env.hosts = def_env.host; |
3840
abcbce5e4240
mod_console: Removed redundant code for host:activate() and host:deactivate(), now that hostmanager has error checking.
Waqas Hussain <waqas20@gmail.com>
parents:
3614
diff
changeset
|
1011 |
1977
325a49f8edab
mod_console: Add commands host:activate(host, config) and host:deactivate(host, reason) to add/remove hosts at runtime
Matthew Wild <mwild1@gmail.com>
parents:
1927
diff
changeset
|
1012 function def_env.host:activate(hostname, config) |
3840
abcbce5e4240
mod_console: Removed redundant code for host:activate() and host:deactivate(), now that hostmanager has error checking.
Waqas Hussain <waqas20@gmail.com>
parents:
3614
diff
changeset
|
1013 return hostmanager.activate(hostname, config); |
1977
325a49f8edab
mod_console: Add commands host:activate(host, config) and host:deactivate(host, reason) to add/remove hosts at runtime
Matthew Wild <mwild1@gmail.com>
parents:
1927
diff
changeset
|
1014 end |
325a49f8edab
mod_console: Add commands host:activate(host, config) and host:deactivate(host, reason) to add/remove hosts at runtime
Matthew Wild <mwild1@gmail.com>
parents:
1927
diff
changeset
|
1015 function def_env.host:deactivate(hostname, reason) |
3840
abcbce5e4240
mod_console: Removed redundant code for host:activate() and host:deactivate(), now that hostmanager has error checking.
Waqas Hussain <waqas20@gmail.com>
parents:
3614
diff
changeset
|
1016 return hostmanager.deactivate(hostname, reason); |
1977
325a49f8edab
mod_console: Add commands host:activate(host, config) and host:deactivate(host, reason) to add/remove hosts at runtime
Matthew Wild <mwild1@gmail.com>
parents:
1927
diff
changeset
|
1017 end |
325a49f8edab
mod_console: Add commands host:activate(host, config) and host:deactivate(host, reason) to add/remove hosts at runtime
Matthew Wild <mwild1@gmail.com>
parents:
1927
diff
changeset
|
1018 |
2007
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1019 function def_env.host:list() |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1020 local print = self.session.print; |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1021 local i = 0; |
6175
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1022 local type; |
10506
af214e2739f5
mod_admin_telnet: Merge hostname comparison functions
Kim Alvefur <zash@zash.se>
parents:
10505
diff
changeset
|
1023 for host, host_session in iterators.sorted_pairs(prosody.hosts, _sort_hosts) do |
2007
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1024 i = i + 1; |
9330
36badabc85ce
mod_admin_telnet: Make use of util.iterators.sorted_pairs()
Matthew Wild <mwild1@gmail.com>
parents:
9009
diff
changeset
|
1025 type = host_session.type; |
6175
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1026 if type == "local" then |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1027 print(host); |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1028 else |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1029 type = module:context(host):get_option_string("component_module", type); |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1030 if type ~= "component" then |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1031 type = type .. " component"; |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1032 end |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1033 print(("%s (%s)"):format(host, type)); |
50ddaec11f2a
mod_admin_telnet: Show which hosts are components and what type of component in host:list()
Kim Alvefur <zash@zash.se>
parents:
6174
diff
changeset
|
1034 end |
2007
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1035 end |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1036 return true, i.." hosts"; |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1037 end |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
1038 |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1039 def_env.port = {}; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1040 |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1041 function def_env.port:list() |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1042 local print = self.session.print; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1043 local services = portmanager.get_active_services().data; |
9330
36badabc85ce
mod_admin_telnet: Make use of util.iterators.sorted_pairs()
Matthew Wild <mwild1@gmail.com>
parents:
9009
diff
changeset
|
1044 local n_services, n_ports = 0, 0; |
9391
4001eb3f465a
mod_admin_telnet: Fix local reference to util.iterator
Kim Alvefur <zash@zash.se>
parents:
9332
diff
changeset
|
1045 for service, interfaces in iterators.sorted_pairs(services) do |
9330
36badabc85ce
mod_admin_telnet: Make use of util.iterators.sorted_pairs()
Matthew Wild <mwild1@gmail.com>
parents:
9009
diff
changeset
|
1046 n_services = n_services + 1; |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1047 local ports_list = {}; |
9330
36badabc85ce
mod_admin_telnet: Make use of util.iterators.sorted_pairs()
Matthew Wild <mwild1@gmail.com>
parents:
9009
diff
changeset
|
1048 for interface, ports in pairs(interfaces) do |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1049 for port in pairs(ports) do |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1050 table.insert(ports_list, "["..interface.."]:"..port); |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1051 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1052 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1053 n_ports = n_ports + #ports_list; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1054 print(service..": "..table.concat(ports_list, ", ")); |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1055 end |
9330
36badabc85ce
mod_admin_telnet: Make use of util.iterators.sorted_pairs()
Matthew Wild <mwild1@gmail.com>
parents:
9009
diff
changeset
|
1056 return true, n_services.." services listening on "..n_ports.." ports"; |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1057 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1058 |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1059 function def_env.port:close(close_port, close_interface) |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1060 close_port = assert(tonumber(close_port), "Invalid port number"); |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1061 local n_closed = 0; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1062 local services = portmanager.get_active_services().data; |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1063 for service, interfaces in pairs(services) do -- luacheck: ignore 213 |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1064 for interface, ports in pairs(interfaces) do |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1065 if not close_interface or close_interface == interface then |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1066 if ports[close_port] then |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1067 self.session.print("Closing ["..interface.."]:"..close_port.."..."); |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1068 local ok, err = portmanager.close(interface, close_port) |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1069 if not ok then |
5029
7bcd79631492
mod_admin_telnet: Fix usage of incorrect variable
Matthew Wild <mwild1@gmail.com>
parents:
5028
diff
changeset
|
1070 self.session.print("Failed to close "..interface.." "..close_port..": "..err); |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1071 else |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1072 n_closed = n_closed + 1; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1073 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1074 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1075 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1076 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1077 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1078 return true, "Closed "..n_closed.." ports"; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1079 end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1080 |
4807
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1081 def_env.muc = {}; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1082 |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1083 local console_room_mt = { |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1084 __index = function (self, k) return self.room[k]; end; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1085 __tostring = function (self) |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1086 return "MUC room <"..self.room.jid..">"; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1087 end; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1088 }; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1089 |
5520
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1090 local function check_muc(jid) |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1091 local room_name, host = jid_split(jid); |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1092 if not prosody.hosts[host] then |
4807
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1093 return nil, "No such host: "..host; |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1094 elseif not prosody.hosts[host].modules.muc then |
4807
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1095 return nil, "Host '"..host.."' is not a MUC service"; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1096 end |
5520
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1097 return room_name, host; |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1098 end |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1099 |
8876
9e72e63819dc
console: Allow passing a config when creating a room
Kim Alvefur <zash@zash.se>
parents:
8591
diff
changeset
|
1100 function def_env.muc:create(room_jid, config) |
7471
3631d259bb85
mod_admin_telnet: rename variable to make it defined (room -> room_name)
Anton Shestakov <av6@dwimlabs.net>
parents:
7090
diff
changeset
|
1101 local room_name, host = check_muc(room_jid); |
6064
c4a3222165c4
mod_admin_telnet: muc:*: Fix nil index error when a room JID is passed with a non-existent host
Matthew Wild <mwild1@gmail.com>
parents:
6016
diff
changeset
|
1102 if not room_name then |
c4a3222165c4
mod_admin_telnet: muc:*: Fix nil index error when a room JID is passed with a non-existent host
Matthew Wild <mwild1@gmail.com>
parents:
6016
diff
changeset
|
1103 return room_name, host; |
c4a3222165c4
mod_admin_telnet: muc:*: Fix nil index error when a room JID is passed with a non-existent host
Matthew Wild <mwild1@gmail.com>
parents:
6016
diff
changeset
|
1104 end |
7471
3631d259bb85
mod_admin_telnet: rename variable to make it defined (room -> room_name)
Anton Shestakov <av6@dwimlabs.net>
parents:
7090
diff
changeset
|
1105 if not room_name then return nil, host end |
8876
9e72e63819dc
console: Allow passing a config when creating a room
Kim Alvefur <zash@zash.se>
parents:
8591
diff
changeset
|
1106 if config ~= nil and type(config) ~= "table" then return nil, "Config must be a table"; end |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1107 if prosody.hosts[host].modules.muc.get_room_from_jid(room_jid) then return nil, "Room exists already" end |
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1108 return prosody.hosts[host].modules.muc.create_room(room_jid, config); |
5520
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1109 end |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1110 |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1111 function def_env.muc:room(room_jid) |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
1112 local room_name, host = check_muc(room_jid); |
6064
c4a3222165c4
mod_admin_telnet: muc:*: Fix nil index error when a room JID is passed with a non-existent host
Matthew Wild <mwild1@gmail.com>
parents:
6016
diff
changeset
|
1113 if not room_name then |
c4a3222165c4
mod_admin_telnet: muc:*: Fix nil index error when a room JID is passed with a non-existent host
Matthew Wild <mwild1@gmail.com>
parents:
6016
diff
changeset
|
1114 return room_name, host; |
c4a3222165c4
mod_admin_telnet: muc:*: Fix nil index error when a room JID is passed with a non-existent host
Matthew Wild <mwild1@gmail.com>
parents:
6016
diff
changeset
|
1115 end |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1116 local room_obj = prosody.hosts[host].modules.muc.get_room_from_jid(room_jid); |
4807
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1117 if not room_obj then |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1118 return nil, "No such room: "..room_jid; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1119 end |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1120 return setmetatable({ room = room_obj }, console_room_mt); |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1121 end |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
1122 |
6260
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1123 function def_env.muc:list(host) |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1124 local host_session = prosody.hosts[host]; |
6260
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1125 if not host_session or not host_session.modules.muc then |
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1126 return nil, "Please supply the address of a local MUC component"; |
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1127 end |
6533
5da544e97bea
mod_admin_telnet: Use the session-specific print function
Kim Alvefur <zash@zash.se>
parents:
6503
diff
changeset
|
1128 local print = self.session.print; |
6260
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1129 local c = 0; |
6270
ee2d5b2a263d
mod_admin_telnet: Update muc:room(jid) and muc:list(host) to use the new MUC API
Waqas Hussain <waqas20@gmail.com>
parents:
6260
diff
changeset
|
1130 for room in host_session.modules.muc.each_room() do |
ee2d5b2a263d
mod_admin_telnet: Update muc:room(jid) and muc:list(host) to use the new MUC API
Waqas Hussain <waqas20@gmail.com>
parents:
6260
diff
changeset
|
1131 print(room.jid); |
6260
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1132 c = c + 1; |
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1133 end |
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1134 return true, c.." rooms"; |
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1135 end |
6986ca575568
mod_admin_telnet: Add command to list MUC rooms
Matthew Wild <mwild1@gmail.com>
parents:
6176
diff
changeset
|
1136 |
5006
af7e563cf453
mod_admin_telnet: Add missing import of usermanager
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
1137 local um = require"core.usermanager"; |
af7e563cf453
mod_admin_telnet: Add missing import of usermanager
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
1138 |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1139 def_env.user = {}; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1140 function def_env.user:create(jid, password) |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1141 local username, host = jid_split(jid); |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1142 if not prosody.hosts[host] then |
5598
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
1143 return nil, "No such host: "..host; |
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
1144 elseif um.user_exists(username, host) then |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1145 return nil, "User exists"; |
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1146 end |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1147 local ok, err = um.create_user(username, password, host); |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1148 if ok then |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1149 return true, "User created"; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1150 else |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1151 return nil, "Could not create user: "..err; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1152 end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1153 end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1154 |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1155 function def_env.user:delete(jid) |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1156 local username, host = jid_split(jid); |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1157 if not prosody.hosts[host] then |
5598
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
1158 return nil, "No such host: "..host; |
5643
e612e1887e39
mod_admin_telnet: Fix inverted boolean logic
Kim Alvefur <zash@zash.se>
parents:
5630
diff
changeset
|
1159 elseif not um.user_exists(username, host) then |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1160 return nil, "No such user"; |
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1161 end |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1162 local ok, err = um.delete_user(username, host); |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1163 if ok then |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1164 return true, "User deleted"; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1165 else |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1166 return nil, "Could not delete user: "..err; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1167 end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1168 end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1169 |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1170 function def_env.user:password(jid, password) |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1171 local username, host = jid_split(jid); |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1172 if not prosody.hosts[host] then |
5598
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
1173 return nil, "No such host: "..host; |
5665
da1881e1b35b
mod_admin_telnet: Fix another wrong boolean expression
Kim Alvefur <zash@zash.se>
parents:
5643
diff
changeset
|
1174 elseif not um.user_exists(username, host) then |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1175 return nil, "No such user"; |
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1176 end |
8192
4354f556c5db
core.usermanager, various modules: Disconnect other resources on password change (thanks waqas) (fixes #512)
Kim Alvefur <zash@zash.se>
parents:
8126
diff
changeset
|
1177 local ok, err = um.set_password(username, password, host, nil); |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1178 if ok then |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1179 return true, "User password changed"; |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1180 else |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1181 return nil, "Could not change password for user: "..err; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1182 end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1183 end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1184 |
5168
46fc0eff10b4
mod_admin_telnet: user:list(): Allow filtering the set of users
Kim Alvefur <zash@zash.se>
parents:
5167
diff
changeset
|
1185 function def_env.user:list(host, pat) |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1186 if not host then |
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1187 return nil, "No host given"; |
9405
86e3e37f25ff
mod_admin_telnet: Use prosody.hosts to be more explicit and avoid name clash with 'hosts' arguments [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9404
diff
changeset
|
1188 elseif not prosody.hosts[host] then |
5167
ecd9e300ec94
mod_admin_telnet: user:list() check that the given host exists
Kim Alvefur <zash@zash.se>
parents:
5159
diff
changeset
|
1189 return nil, "No such host"; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1190 end |
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1191 local print = self.session.print; |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1192 local total, matches = 0, 0; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1193 for user in um.users(host) do |
5168
46fc0eff10b4
mod_admin_telnet: user:list(): Allow filtering the set of users
Kim Alvefur <zash@zash.se>
parents:
5167
diff
changeset
|
1194 if not pat or user:match(pat) then |
46fc0eff10b4
mod_admin_telnet: user:list(): Allow filtering the set of users
Kim Alvefur <zash@zash.se>
parents:
5167
diff
changeset
|
1195 print(user.."@"..host); |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1196 matches = matches + 1; |
5168
46fc0eff10b4
mod_admin_telnet: user:list(): Allow filtering the set of users
Kim Alvefur <zash@zash.se>
parents:
5167
diff
changeset
|
1197 end |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1198 total = total + 1; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1199 end |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1200 return true, "Showing "..(pat and (matches.." of ") or "all " )..total.." users"; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1201 end |
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1202 |
5011
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1203 def_env.xmpp = {}; |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1204 |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1205 local st = require "util.stanza"; |
9736
a5ae3f4e1a40
mod_admin_telnet: Make xmpp:ping command wait and report the reply
Kim Alvefur <zash@zash.se>
parents:
9735
diff
changeset
|
1206 local new_id = require "util.id".medium; |
a5ae3f4e1a40
mod_admin_telnet: Make xmpp:ping command wait and report the reply
Kim Alvefur <zash@zash.se>
parents:
9735
diff
changeset
|
1207 function def_env.xmpp:ping(localhost, remotehost, timeout) |
9741
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1208 localhost = select(2, jid_split(localhost)); |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1209 remotehost = select(2, jid_split(remotehost)); |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1210 if not localhost then |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1211 return nil, "Invalid sender hostname"; |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1212 elseif not prosody.hosts[localhost] then |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1213 return nil, "No such local host"; |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1214 end |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1215 if not remotehost then |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1216 return nil, "Invalid destination hostname"; |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1217 elseif prosody.hosts[remotehost] then |
d46c376dfe2c
mod_admin_telnet: Validate hostnames in xmpp:ping command
Kim Alvefur <zash@zash.se>
parents:
9736
diff
changeset
|
1218 return nil, "Both hosts are local"; |
5011
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1219 end |
9736
a5ae3f4e1a40
mod_admin_telnet: Make xmpp:ping command wait and report the reply
Kim Alvefur <zash@zash.se>
parents:
9735
diff
changeset
|
1220 local iq = st.iq{ from=localhost, to=remotehost, type="get", id=new_id()} |
a5ae3f4e1a40
mod_admin_telnet: Make xmpp:ping command wait and report the reply
Kim Alvefur <zash@zash.se>
parents:
9735
diff
changeset
|
1221 :tag("ping", {xmlns="urn:xmpp:ping"}); |
10310
b03065cd033a
mod_admin_telnet: xmpp:ping: Log ping time
Kim Alvefur <zash@zash.se>
parents:
10292
diff
changeset
|
1222 local time_start = time.now(); |
10292
8fb546e40756
mod_admin_telnet: Use new compact function for waiting on promises
Kim Alvefur <zash@zash.se>
parents:
10252
diff
changeset
|
1223 local ret, err = async.wait(module:context(localhost):send_iq(iq, nil, timeout)); |
9736
a5ae3f4e1a40
mod_admin_telnet: Make xmpp:ping command wait and report the reply
Kim Alvefur <zash@zash.se>
parents:
9735
diff
changeset
|
1224 if ret then |
10310
b03065cd033a
mod_admin_telnet: xmpp:ping: Log ping time
Kim Alvefur <zash@zash.se>
parents:
10292
diff
changeset
|
1225 return true, ("pong from %s in %gs"):format(ret.stanza.attr.from, time.now() - time_start); |
5011
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1226 else |
9736
a5ae3f4e1a40
mod_admin_telnet: Make xmpp:ping command wait and report the reply
Kim Alvefur <zash@zash.se>
parents:
9735
diff
changeset
|
1227 return false, tostring(err); |
5011
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1228 end |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1229 end |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1230 |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1231 def_env.dns = {}; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1232 local adns = require"net.adns"; |
10618
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1233 |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1234 local function get_resolver(session) |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1235 local resolver = session.dns_resolver; |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1236 if not resolver then |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1237 resolver = adns.resolver(); |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1238 session.dns_resolver = resolver; |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1239 end |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1240 return resolver; |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1241 end |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1242 |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1243 function def_env.dns:lookup(name, typ, class) |
10618
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1244 local resolver = get_resolver(self.session); |
10620
09d98cd38fe2
mod_admin_telnet: Use promise based DNS resolving
Kim Alvefur <zash@zash.se>
parents:
10619
diff
changeset
|
1245 local ret, err = async.wait(resolver:lookup_promise(name, typ, class)); |
09d98cd38fe2
mod_admin_telnet: Use promise based DNS resolving
Kim Alvefur <zash@zash.se>
parents:
10619
diff
changeset
|
1246 if ret then |
09d98cd38fe2
mod_admin_telnet: Use promise based DNS resolving
Kim Alvefur <zash@zash.se>
parents:
10619
diff
changeset
|
1247 return true, ret; |
09d98cd38fe2
mod_admin_telnet: Use promise based DNS resolving
Kim Alvefur <zash@zash.se>
parents:
10619
diff
changeset
|
1248 elseif err then |
09d98cd38fe2
mod_admin_telnet: Use promise based DNS resolving
Kim Alvefur <zash@zash.se>
parents:
10619
diff
changeset
|
1249 return false, err; |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1250 end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1251 end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1252 |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1253 function def_env.dns:addnameserver(...) |
10618
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1254 local resolver = get_resolver(self.session); |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1255 resolver._resolver:addnameserver(...) |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1256 return true |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1257 end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1258 |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1259 function def_env.dns:setnameserver(...) |
10618
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1260 local resolver = get_resolver(self.session); |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1261 resolver._resolver:setnameserver(...) |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1262 return true |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1263 end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1264 |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1265 function def_env.dns:purge() |
10618
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1266 local resolver = get_resolver(self.session); |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1267 resolver._resolver:purge() |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1268 return true |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1269 end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1270 |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1271 function def_env.dns:cache() |
10618
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1272 local resolver = get_resolver(self.session); |
232841373711
mod_admin_telnet: Create a DNS resolver per console session (fixes #1492)
Kim Alvefur <zash@zash.se>
parents:
9454
diff
changeset
|
1273 return true, "Cache:\n"..tostring(resolver._resolver.cache) |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1274 end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1275 |
7029
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1276 def_env.http = {}; |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1277 |
10663
fd651ba2317f
mod_admin_telnet: Allow passing list of hosts to http:list()
Kim Alvefur <zash@zash.se>
parents:
10658
diff
changeset
|
1278 function def_env.http:list(hosts) |
7029
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1279 local print = self.session.print; |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1280 |
10663
fd651ba2317f
mod_admin_telnet: Allow passing list of hosts to http:list()
Kim Alvefur <zash@zash.se>
parents:
10658
diff
changeset
|
1281 for host in get_hosts_set(hosts) do |
7029
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1282 local http_apps = modulemanager.get_items("http-provider", host); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1283 if #http_apps > 0 then |
7977
01d6298de991
plugins/various: Use type-specific config API
Kim Alvefur <zash@zash.se>
parents:
7911
diff
changeset
|
1284 local http_host = module:context(host):get_option_string("http_host"); |
7029
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1285 print("HTTP endpoints on "..host..(http_host and (" (using "..http_host.."):") or ":")); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1286 for _, provider in ipairs(http_apps) do |
8589
4e475ef4b569
mod_admin_telnet: Include the default path property in URL calculation (fixes #1099)
Kim Alvefur <zash@zash.se>
parents:
7029
diff
changeset
|
1287 local url = module:context(host):http_url(provider.name, provider.default_path); |
7029
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1288 print("", url); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1289 end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1290 print(""); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1291 end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1292 end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1293 |
7977
01d6298de991
plugins/various: Use type-specific config API
Kim Alvefur <zash@zash.se>
parents:
7911
diff
changeset
|
1294 local default_host = module:get_option_string("http_default_host"); |
7029
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1295 if not default_host then |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1296 print("HTTP requests to unknown hosts will return 404 Not Found"); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1297 else |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1298 print("HTTP requests to unknown hosts will be handled by "..default_host); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1299 end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1300 return true; |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1301 end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6578
diff
changeset
|
1302 |
8921
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1303 def_env.debug = {}; |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1304 |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1305 function def_env.debug:logevents(host) |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1306 helpers.log_host_events(host); |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1307 return true; |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1308 end |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1309 |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1310 function def_env.debug:events(host, event) |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1311 local events_obj; |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1312 if host and host ~= "*" then |
9454
6780049be177
mod_admin_telnet: Allow viewing HTTP event listeners via debug:events('http')
Matthew Wild <mwild1@gmail.com>
parents:
9411
diff
changeset
|
1313 if host == "http" then |
6780049be177
mod_admin_telnet: Allow viewing HTTP event listeners via debug:events('http')
Matthew Wild <mwild1@gmail.com>
parents:
9411
diff
changeset
|
1314 events_obj = require "net.http.server"._events; |
6780049be177
mod_admin_telnet: Allow viewing HTTP event listeners via debug:events('http')
Matthew Wild <mwild1@gmail.com>
parents:
9411
diff
changeset
|
1315 elseif not prosody.hosts[host] then |
8921
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1316 return false, "Unknown host: "..host; |
9454
6780049be177
mod_admin_telnet: Allow viewing HTTP event listeners via debug:events('http')
Matthew Wild <mwild1@gmail.com>
parents:
9411
diff
changeset
|
1317 else |
6780049be177
mod_admin_telnet: Allow viewing HTTP event listeners via debug:events('http')
Matthew Wild <mwild1@gmail.com>
parents:
9411
diff
changeset
|
1318 events_obj = prosody.hosts[host].events; |
8921
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1319 end |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1320 else |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1321 events_obj = prosody.events; |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1322 end |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1323 return true, helpers.show_events(events_obj, event); |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1324 end |
1c2925376315
mod_admin_telnet: Add debug:events() and debug:logevents()
Matthew Wild <mwild1@gmail.com>
parents:
8590
diff
changeset
|
1325 |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1326 function def_env.debug:timers() |
9009
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1327 local print = self.session.print; |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1328 local add_task = require"util.timer".add_task; |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1329 local h, params = add_task.h, add_task.params; |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1330 if h then |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1331 print("-- util.timer"); |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1332 for i, id in ipairs(h.ids) do |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1333 if not params[id] then |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1334 print(os.date("%F %T", h.priorities[i]), h.items[id]); |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1335 elseif not params[id].callback then |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1336 print(os.date("%F %T", h.priorities[i]), h.items[id], unpack(params[id])); |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1337 else |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1338 print(os.date("%F %T", h.priorities[i]), params[id].callback, unpack(params[id])); |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1339 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1340 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1341 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1342 if server.event_base then |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1343 local count = 0; |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1344 for _, v in pairs(debug.getregistry()) do |
9009
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1345 if type(v) == "function" and v.callback and v.callback == add_task._on_timer then |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1346 count = count + 1; |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1347 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1348 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1349 print(count .. " libevent callbacks"); |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1350 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1351 if h then |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1352 local next_time = h:peek(); |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1353 if next_time then |
10489
fabe50ea39f2
mod_admin_telnet: Avoid using LuaSocket for timestamps
Kim Alvefur <zash@zash.se>
parents:
10470
diff
changeset
|
1354 return true, os.date("Next event at %F %T (in %%.6fs)", next_time):format(next_time - time.now()); |
9009
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1355 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1356 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1357 return true; |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1358 end |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1359 |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1360 -- COMPAT: debug:timers() was timer:info() for some time in trunk |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1361 def_env.timer = { info = def_env.debug.timers }; |
4c745d42c974
mod_admin_telnet: Rename timer:info() -> debug:timers()
Matthew Wild <mwild1@gmail.com>
parents:
8964
diff
changeset
|
1362 |
7911
e528d848a185
mod_admin_telnet: Print a message to open sessions when shutting down, including the reason
Kim Alvefur <zash@zash.se>
parents:
7722
diff
changeset
|
1363 module:hook("server-stopping", function(event) |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1364 for _, session in pairs(sessions) do |
7911
e528d848a185
mod_admin_telnet: Print a message to open sessions when shutting down, including the reason
Kim Alvefur <zash@zash.se>
parents:
7722
diff
changeset
|
1365 session.print("Shutting down: "..(event.reason or "unknown reason")); |
e528d848a185
mod_admin_telnet: Print a message to open sessions when shutting down, including the reason
Kim Alvefur <zash@zash.se>
parents:
7722
diff
changeset
|
1366 end |
e528d848a185
mod_admin_telnet: Print a message to open sessions when shutting down, including the reason
Kim Alvefur <zash@zash.se>
parents:
7722
diff
changeset
|
1367 end); |
e528d848a185
mod_admin_telnet: Print a message to open sessions when shutting down, including the reason
Kim Alvefur <zash@zash.se>
parents:
7722
diff
changeset
|
1368 |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1369 def_env.stats = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1370 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1371 local function format_stat(type, value, ref_value) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1372 ref_value = ref_value or value; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1373 --do return tostring(value) end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1374 if type == "duration" then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1375 if ref_value < 0.001 then |
9786
00f7af0be849
mod_admin_telnet: sttas:show: Use format option that allows float numbers
Kim Alvefur <zash@zash.se>
parents:
9756
diff
changeset
|
1376 return ("%g µs"):format(value*1000000); |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1377 elseif ref_value < 0.9 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1378 return ("%0.2f ms"):format(value*1000); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1379 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1380 return ("%0.2f"):format(value); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1381 elseif type == "size" then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1382 if ref_value > 1048576 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1383 return ("%d MB"):format(value/1048576); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1384 elseif ref_value > 1024 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1385 return ("%d KB"):format(value/1024); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1386 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1387 return ("%d bytes"):format(value); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1388 elseif type == "rate" then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1389 if ref_value < 0.9 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1390 return ("%0.2f/min"):format(value*60); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1391 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1392 return ("%0.2f/sec"):format(value); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1393 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1394 return tostring(value); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1395 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1396 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1397 local stats_methods = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1398 function stats_methods:bounds(_lower, _upper) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1399 for _, stat_info in ipairs(self) do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1400 local data = stat_info[4]; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1401 if data then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1402 local lower = _lower or data.min; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1403 local upper = _upper or data.max; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1404 local new_data = { |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1405 min = lower; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1406 max = upper; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1407 samples = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1408 sample_count = 0; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1409 count = data.count; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1410 units = data.units; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1411 }; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1412 local sum = 0; |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1413 for _, v in ipairs(data.samples) do |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1414 if v > upper then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1415 break; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1416 elseif v>=lower then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1417 table.insert(new_data.samples, v); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1418 sum = sum + v; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1419 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1420 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1421 new_data.sample_count = #new_data.samples; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1422 stat_info[4] = new_data; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1423 stat_info[3] = sum/new_data.sample_count; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1424 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1425 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1426 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1427 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1428 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1429 function stats_methods:trim(lower, upper) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1430 upper = upper or (100-lower); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1431 local statistics = require "util.statistics"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1432 for _, stat_info in ipairs(self) do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1433 -- Strip outliers |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1434 local data = stat_info[4]; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1435 if data then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1436 local new_data = { |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1437 min = statistics.get_percentile(data, lower); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1438 max = statistics.get_percentile(data, upper); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1439 samples = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1440 sample_count = 0; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1441 count = data.count; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1442 units = data.units; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1443 }; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1444 local sum = 0; |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1445 for _, v in ipairs(data.samples) do |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1446 if v > new_data.max then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1447 break; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1448 elseif v>=new_data.min then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1449 table.insert(new_data.samples, v); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1450 sum = sum + v; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1451 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1452 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1453 new_data.sample_count = #new_data.samples; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1454 stat_info[4] = new_data; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1455 stat_info[3] = sum/new_data.sample_count; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1456 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1457 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1458 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1459 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1460 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1461 function stats_methods:max(upper) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1462 return self:bounds(nil, upper); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1463 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1464 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1465 function stats_methods:min(lower) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1466 return self:bounds(lower, nil); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1467 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1468 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1469 function stats_methods:summary() |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1470 local statistics = require "util.statistics"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1471 for _, stat_info in ipairs(self) do |
9408
b4a82b726495
mod_admin_telnet: Remove unused variable [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9406
diff
changeset
|
1472 local type, value, data = stat_info[2], stat_info[3], stat_info[4]; |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1473 if data and data.samples then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1474 table.insert(stat_info.output, string.format("Count: %d (%d captured)", |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1475 data.count, |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1476 data.sample_count |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1477 )); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1478 table.insert(stat_info.output, string.format("Min: %s Mean: %s Max: %s", |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1479 format_stat(type, data.min), |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1480 format_stat(type, value), |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1481 format_stat(type, data.max) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1482 )); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1483 table.insert(stat_info.output, string.format("Q1: %s Median: %s Q3: %s", |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1484 format_stat(type, statistics.get_percentile(data, 25)), |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1485 format_stat(type, statistics.get_percentile(data, 50)), |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1486 format_stat(type, statistics.get_percentile(data, 75)) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1487 )); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1488 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1489 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1490 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1491 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1492 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1493 function stats_methods:cfgraph() |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1494 for _, stat_info in ipairs(self) do |
10544
0bd408d93f9a
mod_admin_telnet: Silence luacheck warnings
Kim Alvefur <zash@zash.se>
parents:
10517
diff
changeset
|
1495 local name, type, value, data = unpack(stat_info, 1, 4); -- luacheck: ignore 211 |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1496 local function print(s) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1497 table.insert(stat_info.output, s); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1498 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1499 |
9411
62c876e333e4
mod_admin_telnet: Guard against missing table field
Kim Alvefur <zash@zash.se>
parents:
9410
diff
changeset
|
1500 if data and data.sample_count and data.sample_count > 0 then |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1501 local raw_histogram = require "util.statistics".get_histogram(data); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1502 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1503 local graph_width, graph_height = 50, 10; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1504 local eighth_chars = " ▁▂▃▄▅▆▇█"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1505 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1506 local range = data.max - data.min; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1507 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1508 if range > 0 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1509 local x_scaling = #raw_histogram/graph_width; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1510 local histogram = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1511 for i = 1, graph_width do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1512 histogram[i] = math.max(raw_histogram[i*x_scaling-1] or 0, raw_histogram[i*x_scaling] or 0); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1513 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1514 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1515 print(""); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1516 print(("_"):rep(52)..format_stat(type, data.max)); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1517 for row = graph_height, 1, -1 do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1518 local row_chars = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1519 local min_eighths, max_eighths = 8, 0; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1520 for i = 1, #histogram do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1521 local char_eighths = math.ceil(math.max(math.min((graph_height/(data.max/histogram[i]))-(row-1), 1), 0)*8); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1522 if char_eighths < min_eighths then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1523 min_eighths = char_eighths; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1524 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1525 if char_eighths > max_eighths then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1526 max_eighths = char_eighths; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1527 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1528 if char_eighths == 0 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1529 row_chars[i] = "-"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1530 else |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1531 local char = eighth_chars:sub(char_eighths*3+1, char_eighths*3+3); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1532 row_chars[i] = char; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1533 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1534 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1535 print(table.concat(row_chars).."|-"..format_stat(type, data.max/(graph_height/(row-0.5)))); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1536 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1537 print(("\\ "):rep(11)); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1538 local x_labels = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1539 for i = 1, 11 do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1540 local s = ("%-4s"):format((i-1)*10); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1541 if #s > 4 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1542 s = s:sub(1, 3).."…"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1543 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1544 x_labels[i] = s; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1545 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1546 print(" "..table.concat(x_labels, " ")); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1547 local units = "%"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1548 local margin = math.floor((graph_width-#units)/2); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1549 print((" "):rep(margin)..units); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1550 else |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1551 print("[range too small to graph]"); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1552 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1553 print(""); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1554 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1555 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1556 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1557 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1558 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1559 function stats_methods:histogram() |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1560 for _, stat_info in ipairs(self) do |
10544
0bd408d93f9a
mod_admin_telnet: Silence luacheck warnings
Kim Alvefur <zash@zash.se>
parents:
10517
diff
changeset
|
1561 local name, type, value, data = unpack(stat_info, 1, 4); -- luacheck: ignore 211 |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1562 local function print(s) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1563 table.insert(stat_info.output, s); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1564 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1565 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1566 if not data then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1567 print("[no data]"); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1568 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1569 elseif not data.sample_count then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1570 print("[not a sampled metric type]"); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1571 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1572 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1573 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1574 local graph_width, graph_height = 50, 10; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1575 local eighth_chars = " ▁▂▃▄▅▆▇█"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1576 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1577 local range = data.max - data.min; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1578 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1579 if range > 0 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1580 local n_buckets = graph_width; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1581 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1582 local histogram = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1583 for i = 1, n_buckets do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1584 histogram[i] = 0; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1585 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1586 local max_bin_samples = 0; |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1587 for _, d in ipairs(data.samples) do |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1588 local bucket = math.floor(1+(n_buckets-1)/(range/(d-data.min))); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1589 histogram[bucket] = histogram[bucket] + 1; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1590 if histogram[bucket] > max_bin_samples then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1591 max_bin_samples = histogram[bucket]; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1592 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1593 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1594 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1595 print(""); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1596 print(("_"):rep(52)..max_bin_samples); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1597 for row = graph_height, 1, -1 do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1598 local row_chars = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1599 local min_eighths, max_eighths = 8, 0; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1600 for i = 1, #histogram do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1601 local char_eighths = math.ceil(math.max(math.min((graph_height/(max_bin_samples/histogram[i]))-(row-1), 1), 0)*8); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1602 if char_eighths < min_eighths then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1603 min_eighths = char_eighths; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1604 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1605 if char_eighths > max_eighths then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1606 max_eighths = char_eighths; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1607 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1608 if char_eighths == 0 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1609 row_chars[i] = "-"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1610 else |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1611 local char = eighth_chars:sub(char_eighths*3+1, char_eighths*3+3); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1612 row_chars[i] = char; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1613 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1614 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1615 print(table.concat(row_chars).."|-"..math.ceil((max_bin_samples/graph_height)*(row-0.5))); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1616 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1617 print(("\\ "):rep(11)); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1618 local x_labels = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1619 for i = 1, 11 do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1620 local s = ("%-4s"):format(format_stat(type, data.min+range*i/11, data.min):match("^%S+")); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1621 if #s > 4 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1622 s = s:sub(1, 3).."…"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1623 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1624 x_labels[i] = s; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1625 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1626 print(" "..table.concat(x_labels, " ")); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1627 local units = format_stat(type, data.min):match("%s+(.+)$") or data.units or ""; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1628 local margin = math.floor((graph_width-#units)/2); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1629 print((" "):rep(margin)..units); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1630 else |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1631 print("[range too small to graph]"); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1632 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1633 print(""); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1634 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1635 return self; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1636 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1637 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1638 local function stats_tostring(stats) |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1639 local print = stats.session.print; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1640 for _, stat_info in ipairs(stats) do |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1641 if #stat_info.output > 0 then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1642 print("\n#"..stat_info[1]); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1643 print(""); |
9404
f40b0cd41a87
mod_admin_telnet: Remove or rename various unused arguments and variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9403
diff
changeset
|
1644 for _, v in ipairs(stat_info.output) do |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1645 print(v); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1646 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1647 print(""); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1648 else |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1649 print(("%-50s %s"):format(stat_info[1], format_stat(stat_info[2], stat_info[3]))); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1650 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1651 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1652 return #stats.." statistics displayed"; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1653 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1654 |
9410
7355b2d0067c
mod_admin_telnet: Create metatable only once
Kim Alvefur <zash@zash.se>
parents:
9409
diff
changeset
|
1655 local stats_mt = {__index = stats_methods, __tostring = stats_tostring } |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1656 local function new_stats_context(self) |
9410
7355b2d0067c
mod_admin_telnet: Create metatable only once
Kim Alvefur <zash@zash.se>
parents:
9409
diff
changeset
|
1657 return setmetatable({ session = self.session, stats = true }, stats_mt); |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1658 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1659 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1660 function def_env.stats:show(filter) |
10544
0bd408d93f9a
mod_admin_telnet: Silence luacheck warnings
Kim Alvefur <zash@zash.se>
parents:
10517
diff
changeset
|
1661 -- luacheck: ignore 211/changed |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1662 local stats, changed, extra = require "core.statsmanager".get_stats(); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1663 local available, displayed = 0, 0; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1664 local displayed_stats = new_stats_context(self); |
9756
38f7bde4cfe0
mod_admin_telnet: Sort stats by name
Kim Alvefur <zash@zash.se>
parents:
9755
diff
changeset
|
1665 for name, value in iterators.sorted_pairs(stats) do |
8964
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1666 available = available + 1; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1667 if not filter or name:match(filter) then |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1668 displayed = displayed + 1; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1669 local type = name:match(":(%a+)$"); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1670 table.insert(displayed_stats, { |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1671 name, type, value, extra[name]; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1672 output = {}; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1673 }); |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1674 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1675 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1676 return displayed_stats; |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1677 end |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1678 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1679 |
76780f37028d
mod_admin_telnet: Add some experimental commands for inspecting stats
Matthew Wild <mwild1@gmail.com>
parents:
8922
diff
changeset
|
1680 |
736 | 1681 ------------- |
1682 | |
1683 function printbanner(session) | |
7067
4c0ec9bd5168
mod_admin_telnet: Remove compat warning about 'console_banner' as a function
Kim Alvefur <zash@zash.se>
parents:
7031
diff
changeset
|
1684 local option = module:get_option_string("console_banner", "full"); |
4c0ec9bd5168
mod_admin_telnet: Remove compat warning about 'console_banner' as a function
Kim Alvefur <zash@zash.se>
parents:
7031
diff
changeset
|
1685 if option == "full" or option == "graphic" then |
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1686 session.print [[ |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
1687 ____ \ / _ |
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
1688 | _ \ _ __ ___ ___ _-_ __| |_ _ |
736 | 1689 | |_) | '__/ _ \/ __|/ _ \ / _` | | | | |
1690 | __/| | | (_) \__ \ |_| | (_| | |_| | | |
1691 |_| |_| \___/|___/\___/ \__,_|\__, | | |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5770
diff
changeset
|
1692 A study in simplicity |___/ |
736 | 1693 |
1694 ]] | |
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1695 end |
7067
4c0ec9bd5168
mod_admin_telnet: Remove compat warning about 'console_banner' as a function
Kim Alvefur <zash@zash.se>
parents:
7031
diff
changeset
|
1696 if option == "short" or option == "full" then |
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1697 session.print("Welcome to the Prosody administration console. For a list of commands, type: help"); |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1698 session.print("You may find more help on using this console in our online documentation at "); |
7359
a5a080c12c96
Update every link to the documentation to use HTTPS
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
7091
diff
changeset
|
1699 session.print("https://prosody.im/doc/console\n"); |
1483
efd19cdda6ca
mod_console: Allow customisation/suppression of the banner
Matthew Wild <mwild1@gmail.com>
parents:
1433
diff
changeset
|
1700 end |
7067
4c0ec9bd5168
mod_admin_telnet: Remove compat warning about 'console_banner' as a function
Kim Alvefur <zash@zash.se>
parents:
7031
diff
changeset
|
1701 if option ~= "short" and option ~= "full" and option ~= "graphic" then |
4c0ec9bd5168
mod_admin_telnet: Remove compat warning about 'console_banner' as a function
Kim Alvefur <zash@zash.se>
parents:
7031
diff
changeset
|
1702 session.print(option); |
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1703 end |
1483
efd19cdda6ca
mod_console: Allow customisation/suppression of the banner
Matthew Wild <mwild1@gmail.com>
parents:
1433
diff
changeset
|
1704 end |
2087
5efd79871205
mod_console: Moved activation of the console port from the main file to mod_console.
Waqas Hussain <waqas20@gmail.com>
parents:
2054
diff
changeset
|
1705 |
5120
bcabea740c00
mod_{admin_telnet,c2s,component,http,net_multiplex,s2s}: Use module:provides() instead of module:add_item().
Waqas Hussain <waqas20@gmail.com>
parents:
5030
diff
changeset
|
1706 module:provides("net", { |
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
1707 name = "console"; |
4550
1c41e4a846a2
mod_admin_telnet: Port to portmanager
Matthew Wild <mwild1@gmail.com>
parents:
4540
diff
changeset
|
1708 listener = console_listener; |
1c41e4a846a2
mod_admin_telnet: Port to portmanager
Matthew Wild <mwild1@gmail.com>
parents:
4540
diff
changeset
|
1709 default_port = 5582; |
4571
32d532b95dc7
mod_admin_telnet: make service private.
Marco Cirillo <maranda@lightwitch.org>
parents:
4550
diff
changeset
|
1710 private = true; |
4550
1c41e4a846a2
mod_admin_telnet: Port to portmanager
Matthew Wild <mwild1@gmail.com>
parents:
4540
diff
changeset
|
1711 }); |