author | Matthew Wild <mwild1@gmail.com> |
Fri, 08 Jan 2016 13:01:27 +0000 | |
changeset 7062 | 7ec52755622f |
parent 7032 | b2d160baa957 |
child 7034 | 89221daefae9 |
child 8592 | 4e475ef4b569 |
permissions | -rw-r--r-- |
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 |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
461
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 |
-- |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
461
diff
changeset
|
8 |
|
4623
403b56b78018
mod_posix, mod_bosh, mod_admin_telnet: Use module:set_global()
Kim Alvefur <zash@zash.se>
parents:
4582
diff
changeset
|
9 |
module:set_global(); |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
461
diff
changeset
|
10 |
|
5030
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
11 |
local hostmanager = require "core.hostmanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
12 |
local modulemanager = require "core.modulemanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
13 |
local s2smanager = require "core.s2smanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
14 |
local portmanager = require "core.portmanager"; |
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
15 |
|
1342
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
16 |
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
|
17 |
|
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
18 |
local prosody = _G.prosody; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
19 |
local hosts = prosody.hosts; |
5030
9962fc19f9e9
mod_admin_telnet: Import prosody.incoming_s2s
Matthew Wild <mwild1@gmail.com>
parents:
5029
diff
changeset
|
20 |
local incoming_s2s = prosody.incoming_s2s; |
736 | 21 |
|
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
|
22 |
local console_listener = { default_port = 5582; default_mode = "*a"; interface = "127.0.0.1" }; |
736 | 23 |
|
4582
542afb9c2ab1
mod_admin_telnet: Import util.iterators properly
Kim Alvefur <zash@zash.se>
parents:
4571
diff
changeset
|
24 |
local iterators = require "util.iterators"; |
542afb9c2ab1
mod_admin_telnet: Import util.iterators properly
Kim Alvefur <zash@zash.se>
parents:
4571
diff
changeset
|
25 |
local keys, values = iterators.keys, iterators.values; |
6016
eb05360e8525
mod_admin_telnet: Prep jids for user:create() etc.
Kim Alvefur <zash@zash.se>
parents:
5769
diff
changeset
|
26 |
local jid_bare, jid_split = import("util.jid", "bare", "prepped_split"); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
27 |
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
|
28 |
local cert_verify_identity = require "util.x509".verify_identity; |
5021
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
29 |
local envload = require "util.envload".envload; |
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
30 |
local envloadfile = require "util.envload".envloadfile; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
31 |
|
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
|
32 |
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
|
33 |
local def_env = module:shared("env"); |
736 | 34 |
local default_env_mt = { __index = def_env }; |
5013
ab693eea0869
mod_admin_adhoc, mod_admin_telnet, mod_bosh, mod_c2s, mod_component, mod_pep, mod_presence, mod_roster, mod_s2s: Import core_post_stanza from the global prosody table.
Kim Alvefur <zash@zash.se>
parents:
5011
diff
changeset
|
35 |
local core_post_stanza = prosody.core_post_stanza; |
736 | 36 |
|
1342
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
37 |
local function redirect_output(_G, session) |
3557
58ab7e61d220
mod_console: Keep global variable assignments sandboxed by default.
Waqas Hussain <waqas20@gmail.com>
parents:
3540
diff
changeset
|
38 |
local env = setmetatable({ print = session.print }, { __index = function (t, k) return rawget(_G, 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
|
39 |
env.dofile = function(name) |
5021
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
40 |
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
|
41 |
if not f then return f, err; end |
5021
85b2689dbcfe
Eliminate direct setfenv usage
Florian Zeitz <florob@babelmonkeys.de>
parents:
4913
diff
changeset
|
42 |
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
|
43 |
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
|
44 |
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
|
45 |
end |
947d94e3619f
mod_console: Redirect print() to console session when executing commands in global environment
Matthew Wild <mwild1@gmail.com>
parents:
1341
diff
changeset
|
46 |
|
736 | 47 |
console = {}; |
48 |
||
49 |
function console:new_session(conn) |
|
2145
daeb6ebf304c
mod_console: Update for new net.server API
Matthew Wild <mwild1@gmail.com>
parents:
2087
diff
changeset
|
50 |
local w = function(s) conn:write(s:gsub("\n", "\r\n")); end; |
736 | 51 |
local session = { conn = conn; |
52 |
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
|
53 |
print = function (...) |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
54 |
local t = {}; |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
55 |
for i=1,select("#", ...) do |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
56 |
t[i] = tostring(select(i, ...)); |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
57 |
end |
33c81ee280e3
mod_console: Added support for multiple arguments to print().
Waqas Hussain <waqas20@gmail.com>
parents:
3044
diff
changeset
|
58 |
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
|
59 |
end; |
2253
a3537266a916
mod_console: Update for new server API, fixes traceback when closing console sessions
Matthew Wild <mwild1@gmail.com>
parents:
2145
diff
changeset
|
60 |
disconnect = function () conn:close(); end; |
736 | 61 |
}; |
62 |
session.env = setmetatable({}, default_env_mt); |
|
63 |
||
64 |
-- Load up environment with helper objects |
|
65 |
for name, t in pairs(def_env) do |
|
66 |
if type(t) == "table" then |
|
67 |
session.env[name] = setmetatable({ session = session }, { __index = t }); |
|
68 |
end |
|
69 |
end |
|
70 |
||
71 |
return session; |
|
72 |
end |
|
73 |
||
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
|
74 |
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
|
75 |
local useglobalenv; |
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
|
76 |
|
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
|
77 |
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
|
78 |
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
|
79 |
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
|
80 |
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
|
81 |
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
|
82 |
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
|
83 |
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
|
84 |
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
|
85 |
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
|
86 |
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
|
87 |
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
|
88 |
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
|
89 |
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
|
90 |
|
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
|
91 |
session.env._ = 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
|
92 |
|
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
|
93 |
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
|
94 |
local env = (useglobalenv and redirect_output(_G, session)) or session.env or nil |
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
|
95 |
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
|
96 |
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
|
97 |
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
|
98 |
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
|
99 |
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
|
100 |
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
|
101 |
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
|
102 |
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
|
103 |
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
|
104 |
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
|
105 |
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
|
106 |
|
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 ranok, taskok, message = pcall(chunk); |
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
|
108 |
|
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 not (ranok or message or useglobalenv) and commands[line:lower()] 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 |
commands[line:lower()](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
|
111 |
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
|
112 |
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
|
113 |
|
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 |
if not ranok 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
|
115 |
session.print("Fatal error while running command, it did not complete"); |
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 |
session.print("Error: "..taskok); |
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 |
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
|
118 |
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
|
119 |
|
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 |
if not 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
|
121 |
session.print("Result: "..tostring(taskok)); |
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
|
122 |
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
|
123 |
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
|
124 |
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
|
125 |
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
|
126 |
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
|
127 |
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
|
128 |
|
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
|
129 |
session.print("OK: "..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
|
130 |
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
|
131 |
|
736 | 132 |
local sessions = {}; |
133 |
||
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
|
134 |
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
|
135 |
-- 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
|
136 |
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
|
137 |
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
|
138 |
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
|
139 |
session.send(string.char(0)); |
736 | 140 |
end |
141 |
||
2145
daeb6ebf304c
mod_console: Update for new net.server API
Matthew Wild <mwild1@gmail.com>
parents:
2087
diff
changeset
|
142 |
function console_listener.onincoming(conn, data) |
736 | 143 |
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
|
144 |
|
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
|
145 |
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
|
146 |
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
|
147 |
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
|
148 |
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
|
149 |
|
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
|
150 |
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
|
151 |
if session.closed then return end |
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 |
console:process_line(session, 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
|
153 |
session.send(string.char(0)); |
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
|
154 |
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
|
155 |
session.partial_data = data:match("[^\n]+$"); |
736 | 156 |
end |
157 |
||
2145
daeb6ebf304c
mod_console: Update for new net.server API
Matthew Wild <mwild1@gmail.com>
parents:
2087
diff
changeset
|
158 |
function console_listener.ondisconnect(conn, err) |
2054
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
159 |
local session = sessions[conn]; |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
160 |
if session then |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
161 |
session.disconnect(); |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
162 |
sessions[conn] = nil; |
a43aea9b0bd1
mod_console: Added proper cleanup for disconnected console sessions.
Waqas Hussain <waqas20@gmail.com>
parents:
2010
diff
changeset
|
163 |
end |
736 | 164 |
end |
165 |
||
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
|
166 |
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
|
167 |
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
|
168 |
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
|
169 |
|
736 | 170 |
-- Console commands -- |
171 |
-- These are simple commands, not valid standalone in Lua |
|
172 |
||
173 |
function commands.bye(session) |
|
174 |
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
|
175 |
session.closed = true; |
736 | 176 |
session.disconnect(); |
177 |
end |
|
1503
5970e06d9335
mod_console: Add quit and exit as aliases for 'bye' command
Matthew Wild <mwild1@gmail.com>
parents:
1502
diff
changeset
|
178 |
commands.quit, commands.exit = commands.bye, commands.bye; |
736 | 179 |
|
180 |
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
|
181 |
if data:match("^!!") and session.env._ then |
736 | 182 |
session.print("!> "..session.env._); |
2512
d04b0eeeb954
mod_console: Update !! shortcut for new connection API
Matthew Wild <mwild1@gmail.com>
parents:
2296
diff
changeset
|
183 |
return console_listener.onincoming(session.conn, session.env._); |
736 | 184 |
end |
185 |
local old, new = data:match("^!(.-[^\\])!(.-)!$"); |
|
186 |
if old and new then |
|
187 |
local ok, res = pcall(string.gsub, session.env._, old, new); |
|
188 |
if not ok then |
|
189 |
session.print(res) |
|
190 |
return; |
|
191 |
end |
|
192 |
session.print("!> "..res); |
|
2512
d04b0eeeb954
mod_console: Update !! shortcut for new connection API
Matthew Wild <mwild1@gmail.com>
parents:
2296
diff
changeset
|
193 |
return console_listener.onincoming(session.conn, res); |
736 | 194 |
end |
195 |
session.print("Sorry, not sure what you want"); |
|
196 |
end |
|
197 |
||
3452
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
198 |
|
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
199 |
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
|
200 |
local print = session.print; |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
201 |
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
|
202 |
if not section then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
203 |
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
|
204 |
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
|
205 |
print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
206 |
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
|
207 |
print [[s2s - Commands to manage sessions between this server and others]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
208 |
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
|
209 |
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
|
210 |
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
|
211 |
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
|
212 |
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
|
213 |
print [[dns - Commands to manage and inspect the internal DNS resolver]] |
2009
3f9cce29c57d
mod_console: Added help text for config:reload().
Waqas Hussain <waqas20@gmail.com>
parents:
2007
diff
changeset
|
214 |
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
|
215 |
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
|
216 |
elseif section == "c2s" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
217 |
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
|
218 |
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
|
219 |
print [[c2s:show_secure() - Show all encrypted client connections]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
220 |
print [[c2s:close(jid) - Close all sessions for the specified JID]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
221 |
elseif section == "s2s" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
222 |
print [[s2s:show(domain) - Show all s2s connections for the given domain (or all if no domain given)]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
223 |
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
|
224 |
print [[s2s:closeall(host) - Close all the incoming/outgoing s2s sessions to specified host]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
225 |
elseif section == "module" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
226 |
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
|
227 |
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
|
228 |
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
|
229 |
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
|
230 |
elseif section == "host" then |
2d1a5d8893c2
mod_console: Add host:* commands to help (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3407
diff
changeset
|
231 |
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
|
232 |
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
|
233 |
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
|
234 |
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
|
235 |
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
|
236 |
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
|
237 |
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
|
238 |
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
|
239 |
elseif section == "server" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
240 |
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
|
241 |
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
|
242 |
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
|
243 |
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
|
244 |
elseif section == "port" then |
20e14961f630
mod_admin_telnet: Add info about port commands to help
Kim Alvefur <zash@zash.se>
parents:
5227
diff
changeset
|
245 |
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
|
246 |
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
|
247 |
elseif section == "dns" then |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
248 |
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
|
249 |
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
|
250 |
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
|
251 |
print [[dns:purge() - Clear the DNS cache]] |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
252 |
print [[dns:cache() - Show cached records]] |
2009
3f9cce29c57d
mod_console: Added help text for config:reload().
Waqas Hussain <waqas20@gmail.com>
parents:
2007
diff
changeset
|
253 |
elseif section == "config" then |
3f9cce29c57d
mod_console: Added help text for config:reload().
Waqas Hussain <waqas20@gmail.com>
parents:
2007
diff
changeset
|
254 |
print [[config:reload() - Reload the server configuration. Modules may need to be reloaded for changes to take effect.]] |
1616
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
255 |
elseif section == "console" then |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
256 |
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
|
257 |
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
|
258 |
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
|
259 |
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
|
260 |
print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
261 |
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
|
262 |
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
|
263 |
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
|
264 |
print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
265 |
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
|
266 |
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
|
267 |
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
|
268 |
end |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
269 |
print [[]] |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
270 |
end |
80ea744f2643
mod_console: Finally add in the missing 'help' command \o/
Matthew Wild <mwild1@gmail.com>
parents:
1575
diff
changeset
|
271 |
|
736 | 272 |
-- Session environment -- |
273 |
-- Anything in def_env will be accessible within the session as a global variable |
|
274 |
||
275 |
def_env.server = {}; |
|
1558
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
276 |
|
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
|
277 |
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
|
278 |
prosody.unlock_globals(); |
736 | 279 |
dofile "prosody" |
1316
28ae044f1aaf
mod_console: Some "improvements" to the useless server:reload() command :)
Matthew Wild <mwild1@gmail.com>
parents:
1315
diff
changeset
|
280 |
prosody = _G.prosody; |
736 | 281 |
return true, "Server reloaded"; |
282 |
end |
|
283 |
||
1496
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
284 |
function def_env.server:version() |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
285 |
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
|
286 |
end |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
287 |
|
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
288 |
function def_env.server:uptime() |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
289 |
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
|
290 |
local seconds = t%60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
291 |
t = (t - seconds)/60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
292 |
local minutes = t%60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
293 |
t = (t - minutes)/60; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
294 |
local hours = t%24; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
295 |
t = (t - hours)/24; |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
296 |
local days = t; |
3540
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
3452
diff
changeset
|
297 |
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
|
298 |
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
|
299 |
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
|
300 |
end |
4fa337035f46
mod_console: server:version() and server:uptime() commands
Matthew Wild <mwild1@gmail.com>
parents:
1491
diff
changeset
|
301 |
|
1559
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
302 |
function def_env.server:shutdown(reason) |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
303 |
prosody.shutdown(reason); |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
304 |
return true, "Shutdown initiated"; |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
305 |
end |
831649bb1922
mod_console: Add server:shutdown() command
Matthew Wild <mwild1@gmail.com>
parents:
1558
diff
changeset
|
306 |
|
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
|
307 |
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
|
308 |
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
|
309 |
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
|
310 |
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
|
311 |
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
|
312 |
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
|
313 |
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
|
314 |
|
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
|
315 |
function def_env.server:memory() |
6581
6f55db7afd3b
mod_admin_telnet: Require util.pposix (fixes #471)
Matthew Wild <mwild1@gmail.com>
parents:
6380
diff
changeset
|
316 |
local pposix = require("util.pposix"); |
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
|
317 |
if not pposix.meminfo 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
|
318 |
return true, "Lua is using "..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
|
319 |
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
|
320 |
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
|
321 |
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
|
322 |
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
|
323 |
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
|
324 |
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
|
325 |
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
|
326 |
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
|
327 |
|
736 | 328 |
def_env.module = {}; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
329 |
|
1433
e7bd00e70973
mod_console: Reload/unload a module on a component host if it is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
1342
diff
changeset
|
330 |
local function get_hosts_set(hosts, module) |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
331 |
if type(hosts) == "table" then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
332 |
if hosts[1] then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
333 |
return set.new(hosts); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
334 |
elseif hosts._items then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
335 |
return hosts; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
336 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
337 |
elseif type(hosts) == "string" then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
338 |
return set.new { hosts }; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
339 |
elseif hosts == nil then |
1433
e7bd00e70973
mod_console: Reload/unload a module on a component host if it is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
1342
diff
changeset
|
340 |
local mm = require "modulemanager"; |
4644
fb067c8a8d2e
mod_admin_telnet: get_host_set(): Include '*' in the set if no specific hosts are specified and the module is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
4623
diff
changeset
|
341 |
local hosts_set = set.new(array.collect(keys(prosody.hosts))) |
4912
8d0643281fe2
mod_admin_telnet: Code found and updated, which depended on pre-8c5b5ebaacb0 behaviour.
Kim Alvefur <zash@zash.se>
parents:
4807
diff
changeset
|
342 |
/ function (host) return (prosody.hosts[host].type == "local" or module and mm.is_loaded(host, module)) and host or nil; end; |
4644
fb067c8a8d2e
mod_admin_telnet: get_host_set(): Include '*' in the set if no specific hosts are specified and the module is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
4623
diff
changeset
|
343 |
if module and mm.get_module("*", module) then |
fb067c8a8d2e
mod_admin_telnet: get_host_set(): Include '*' in the set if no specific hosts are specified and the module is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
4623
diff
changeset
|
344 |
hosts_set:add("*"); |
fb067c8a8d2e
mod_admin_telnet: get_host_set(): Include '*' in the set if no specific hosts are specified and the module is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
4623
diff
changeset
|
345 |
end |
fb067c8a8d2e
mod_admin_telnet: get_host_set(): Include '*' in the set if no specific hosts are specified and the module is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
4623
diff
changeset
|
346 |
return hosts_set; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
347 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
348 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
349 |
|
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
350 |
function def_env.module:load(name, hosts, config) |
736 | 351 |
local mm = require "modulemanager"; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
352 |
|
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
353 |
hosts = get_hosts_set(hosts); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
354 |
|
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
355 |
-- Load the module for each host |
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
|
356 |
local ok, err, count, mod = true, nil, 0, nil; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
357 |
for host in hosts do |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
358 |
if (not mm.is_loaded(host, name)) then |
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
|
359 |
mod, err = mm.load(host, name, config); |
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
|
360 |
if not mod then |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
361 |
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
|
362 |
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
|
363 |
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
|
364 |
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
|
365 |
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
|
366 |
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
|
367 |
end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
368 |
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
|
369 |
else |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
370 |
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
|
371 |
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
|
372 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
373 |
end |
736 | 374 |
end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
375 |
|
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
376 |
return ok, (ok and "Module loaded onto "..count.." host"..(count ~= 1 and "s" or "")) or ("Last error: "..tostring(err)); |
736 | 377 |
end |
378 |
||
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
379 |
function def_env.module:unload(name, hosts) |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
380 |
local mm = require "modulemanager"; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
381 |
|
1433
e7bd00e70973
mod_console: Reload/unload a module on a component host if it is loaded there
Matthew Wild <mwild1@gmail.com>
parents:
1342
diff
changeset
|
382 |
hosts = get_hosts_set(hosts, name); |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
383 |
|
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
384 |
-- 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
|
385 |
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
|
386 |
for host in hosts do |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
387 |
if mm.is_loaded(host, name) then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
388 |
ok, err = mm.unload(host, name); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
389 |
if not ok then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
390 |
ok = false; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
391 |
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
|
392 |
else |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
393 |
count = count + 1; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
394 |
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
|
395 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
396 |
end |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
397 |
end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
398 |
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
|
399 |
end |
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
400 |
|
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
401 |
function def_env.module:reload(name, hosts) |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
402 |
local mm = require "modulemanager"; |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
403 |
|
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
|
404 |
hosts = array.collect(get_hosts_set(hosts, name)):sort(function (a, b) |
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
|
405 |
if a == "*" then return true |
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
|
406 |
elseif b == "*" then return false |
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
|
407 |
else return a < b; end |
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
|
408 |
end); |
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
|
409 |
|
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
410 |
-- 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
|
411 |
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
|
412 |
for _, host in ipairs(hosts) do |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
413 |
if mm.is_loaded(host, name) then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
414 |
ok, err = mm.reload(host, name); |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
415 |
if not ok then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
416 |
ok = false; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
417 |
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
|
418 |
else |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
419 |
count = count + 1; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
420 |
if ok == nil then |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
421 |
ok = true; |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
422 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
423 |
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
|
424 |
end |
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
425 |
end |
712
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
426 |
end |
1315
bfcd3f0a49df
mod_console: Much improved module load/unload/reload commands
Matthew Wild <mwild1@gmail.com>
parents:
1241
diff
changeset
|
427 |
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
|
428 |
end |
56410c0cd846
mod_console: Added module:reload
Waqas Hussain <waqas20@gmail.com>
parents:
669
diff
changeset
|
429 |
|
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
430 |
function def_env.module:list(hosts) |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
431 |
if hosts == nil then |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
432 |
hosts = array.collect(keys(prosody.hosts)); |
4646
e0bd8587f2fb
mod_admin_telnet: module:list(): List global modules (part-fixes #228)
Matthew Wild <mwild1@gmail.com>
parents:
4645
diff
changeset
|
433 |
table.insert(hosts, 1, "*"); |
1906
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
434 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
435 |
if type(hosts) == "string" then |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
436 |
hosts = { hosts }; |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
437 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
438 |
if type(hosts) ~= "table" then |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
439 |
return false, "Please supply a host or a list of hosts you would like to see"; |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
440 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
441 |
|
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
442 |
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
|
443 |
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
|
444 |
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
|
445 |
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
|
446 |
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
|
447 |
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
|
448 |
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
|
449 |
else |
1a4f14ea39b6
mod_console: Fixed traceback occuring on using module:list on unknown hosts.
Waqas Hussain <waqas20@gmail.com>
parents:
2009
diff
changeset
|
450 |
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
|
451 |
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
|
452 |
else |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
453 |
for _, name in ipairs(modules) do |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
454 |
print(" "..name); |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
455 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
456 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
457 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
458 |
end |
88c61368e669
mod_console: Add module:list() command to show modules loaded on a host
Matthew Wild <mwild1@gmail.com>
parents:
1821
diff
changeset
|
459 |
|
736 | 460 |
def_env.config = {}; |
461 |
function def_env.config:load(filename, format) |
|
462 |
local config_load = require "core.configmanager".load; |
|
463 |
local ok, err = config_load(filename, format); |
|
464 |
if not ok then |
|
465 |
return false, err or "Unknown error loading config"; |
|
466 |
end |
|
467 |
return true, "Config loaded"; |
|
468 |
end |
|
469 |
||
470 |
function def_env.config:get(host, section, key) |
|
471 |
local config_get = require "core.configmanager".get |
|
472 |
return true, tostring(config_get(host, section, key)); |
|
473 |
end |
|
474 |
||
1558
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
475 |
function def_env.config:reload() |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
476 |
local ok, err = prosody.reload_config(); |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
477 |
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
|
478 |
end |
e15917530285
mod_console: Add config:reload() command
Matthew Wild <mwild1@gmail.com>
parents:
1556
diff
changeset
|
479 |
|
736 | 480 |
def_env.hosts = {}; |
481 |
function def_env.hosts:list() |
|
482 |
for host, host_session in pairs(hosts) do |
|
483 |
self.session.print(host); |
|
484 |
end |
|
485 |
return true, "Done"; |
|
486 |
end |
|
487 |
||
488 |
function def_env.hosts:add(name) |
|
489 |
end |
|
490 |
||
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
491 |
def_env.c2s = {}; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
492 |
|
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
493 |
local function show_c2s(callback) |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
494 |
for hostname, host in pairs(hosts) do |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
495 |
for username, user in pairs(host.sessions or {}) do |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
496 |
for resource, session in pairs(user.sessions or {}) do |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
497 |
local jid = username.."@"..hostname.."/"..resource; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
498 |
callback(jid, session); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
499 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
500 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
501 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
502 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
503 |
|
4779
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
504 |
function def_env.c2s:count(match_jid) |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
505 |
local count = 0; |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
506 |
show_c2s(function (jid, session) |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
507 |
if (not match_jid) or jid:match(match_jid) then |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
508 |
count = count + 1; |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
509 |
end |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
510 |
end); |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
511 |
return true, "Total: "..count.." clients"; |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
512 |
end |
9f2639b3d9b1
mod_admin_telnet: Add c2s:count() which shows number of connected users.
Kim Alvefur <zash@zash.se>
parents:
4684
diff
changeset
|
513 |
|
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
514 |
function def_env.c2s:show(match_jid) |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
515 |
local print, count = self.session.print, 0; |
1763
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
516 |
local curr_host; |
1798
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
517 |
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
|
518 |
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
|
519 |
curr_host = session.host; |
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
520 |
print(curr_host); |
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
521 |
end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
522 |
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
|
523 |
count = count + 1; |
1798
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
524 |
local status, priority = "unavailable", tostring(session.priority or "-"); |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
525 |
if session.presence then |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
526 |
status = session.presence:child_with_name("show"); |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
527 |
if status then |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
528 |
status = status:get_text() or "[invalid!]"; |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
529 |
else |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
530 |
status = "available"; |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
531 |
end |
4c8f3fa9d926
mod_console: Show status and priority of clients
Matthew Wild <mwild1@gmail.com>
parents:
1616
diff
changeset
|
532 |
end |
1763
9e4ff3b66ed1
mod_console: c2s:show(): Group listed clients by host
Matthew Wild <mwild1@gmail.com>
parents:
1623
diff
changeset
|
533 |
print(" "..jid.." - "..status.."("..priority..")"); |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
534 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
535 |
end); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
536 |
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
|
537 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
538 |
|
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
539 |
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
|
540 |
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
|
541 |
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
|
542 |
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
|
543 |
count = count + 1; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
544 |
print(jid); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
545 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
546 |
end); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
547 |
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
|
548 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
549 |
|
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
550 |
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
|
551 |
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
|
552 |
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
|
553 |
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
|
554 |
count = count + 1; |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
555 |
print(jid); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
556 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
557 |
end); |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
558 |
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
|
559 |
end |
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
560 |
|
1491
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
561 |
function def_env.c2s:close(match_jid) |
5028
10a69a7e4545
mod_admin_telnet: Remove unused variable
Matthew Wild <mwild1@gmail.com>
parents:
5027
diff
changeset
|
562 |
local count = 0; |
1491
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
563 |
show_c2s(function (jid, session) |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
564 |
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
|
565 |
count = count + 1; |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
566 |
session:close(); |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
567 |
end |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
568 |
end); |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
569 |
return true, "Total: "..count.." sessions closed"; |
694a0a00e1a5
mod_console: Add c2s:close() command
Matthew Wild <mwild1@gmail.com>
parents:
1483
diff
changeset
|
570 |
end |
1241
9c53fb182044
mod_console: c2s:show(), c2s:show_secure(), c2s:show_insecure()
Matthew Wild <mwild1@gmail.com>
parents:
1240
diff
changeset
|
571 |
|
4514
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
572 |
local function session_flags(session, line) |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
573 |
if session.cert_identity_status == "valid" then |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
574 |
line[#line+1] = "(secure)"; |
4515
e2774644688d
mod_admin_telnet: (encrypted) is redundant in combination with (secure)
Kim Alvefur <zash@zash.se>
parents:
4514
diff
changeset
|
575 |
elseif session.secure then |
4514
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
576 |
line[#line+1] = "(encrypted)"; |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
577 |
end |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
578 |
if session.compressed then |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
579 |
line[#line+1] = "(compressed)"; |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
580 |
end |
4516
24bb3994df7a
mod_admin_telnet: Add flag for stream management.
Kim Alvefur <zash@zash.se>
parents:
4515
diff
changeset
|
581 |
if session.smacks then |
24bb3994df7a
mod_admin_telnet: Add flag for stream management.
Kim Alvefur <zash@zash.se>
parents:
4515
diff
changeset
|
582 |
line[#line+1] = "(sm)"; |
24bb3994df7a
mod_admin_telnet: Add flag for stream management.
Kim Alvefur <zash@zash.se>
parents:
4515
diff
changeset
|
583 |
end |
4517
2e274e088ddc
mod_admin_telnet: Add flag for IPv6
Kim Alvefur <zash@zash.se>
parents:
4516
diff
changeset
|
584 |
if session.conn and session.conn:ip():match(":") then |
2e274e088ddc
mod_admin_telnet: Add flag for IPv6
Kim Alvefur <zash@zash.se>
parents:
4516
diff
changeset
|
585 |
line[#line+1] = "(IPv6)"; |
2e274e088ddc
mod_admin_telnet: Add flag for IPv6
Kim Alvefur <zash@zash.se>
parents:
4516
diff
changeset
|
586 |
end |
4514
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
587 |
return table.concat(line, " "); |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
588 |
end |
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
589 |
|
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
590 |
def_env.s2s = {}; |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
591 |
function def_env.s2s:show(match_jid) |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
592 |
local _print = self.session.print; |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
593 |
local print = self.session.print; |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
594 |
|
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
595 |
local count_in, count_out = 0,0; |
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
596 |
|
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
597 |
for host, host_session in pairs(hosts) do |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
598 |
print = function (...) _print(host); _print(...); print = _print; end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
599 |
for remotehost, session in pairs(host_session.s2sout) do |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
600 |
if (not match_jid) or remotehost:match(match_jid) or host:match(match_jid) then |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
601 |
count_out = count_out + 1; |
4514
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
602 |
print(session_flags(session, {" ", host, "->", remotehost})); |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
603 |
if session.sendq then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
604 |
print(" There are "..#session.sendq.." queued outgoing stanzas for this connection"); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
605 |
end |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
606 |
if session.type == "s2sout_unauthed" then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
607 |
if session.connecting then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
608 |
print(" Connection not yet established"); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
609 |
if not session.srv_hosts then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
610 |
if not session.conn then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
611 |
print(" We do not yet have a DNS answer for this host's SRV records"); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
612 |
else |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
613 |
print(" This host has no SRV records, using A record instead"); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
614 |
end |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
615 |
elseif session.srv_choice then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
616 |
print(" We are on SRV record "..session.srv_choice.." of "..#session.srv_hosts); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
617 |
local srv_choice = session.srv_hosts[session.srv_choice]; |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
618 |
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
|
619 |
end |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
620 |
elseif session.notopen then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
621 |
print(" The <stream> has not yet been opened"); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
622 |
elseif not session.dialback_key then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
623 |
print(" Dialback has not been initiated yet"); |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
624 |
elseif session.dialback_key then |
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
625 |
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
|
626 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
627 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
628 |
end |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
629 |
end |
3540
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
3452
diff
changeset
|
630 |
local subhost_filter = function (h) |
1924
75e6ba240888
mod_console: Also search piggy-backed, er, multiplexed domains when passing a filter to s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1914
diff
changeset
|
631 |
return (match_jid and h:match(match_jid)); |
75e6ba240888
mod_console: Also search piggy-backed, er, multiplexed domains when passing a filter to s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1914
diff
changeset
|
632 |
end |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
633 |
for session in pairs(incoming_s2s) do |
3540
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
3452
diff
changeset
|
634 |
if session.to_host == host and ((not match_jid) or host:match(match_jid) |
1924
75e6ba240888
mod_console: Also search piggy-backed, er, multiplexed domains when passing a filter to s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1914
diff
changeset
|
635 |
or (session.from_host and session.from_host:match(match_jid)) |
75e6ba240888
mod_console: Also search piggy-backed, er, multiplexed domains when passing a filter to s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1914
diff
changeset
|
636 |
-- Pft! is what I say to list comprehensions |
75e6ba240888
mod_console: Also search piggy-backed, er, multiplexed domains when passing a filter to s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1914
diff
changeset
|
637 |
or (session.hosts and #array.collect(keys(session.hosts)):filter(subhost_filter)>0)) then |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
638 |
count_in = count_in + 1; |
4514
ae48e0abc233
mod_admin_telnet: Commond and flexible way to show stream properties.
Kim Alvefur <zash@zash.se>
parents:
4328
diff
changeset
|
639 |
print(session_flags(session, {" ", host, "<-", session.from_host or "(unknown)"})); |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
640 |
if session.type == "s2sin_unauthed" then |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
641 |
print(" Connection not yet authenticated"); |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
642 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
643 |
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
|
644 |
if name ~= session.from_host then |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
645 |
print(" also hosts "..tostring(name)); |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
646 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
647 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
648 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
649 |
end |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
650 |
|
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
651 |
print = _print; |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
652 |
end |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
653 |
|
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
654 |
for session in pairs(incoming_s2s) do |
1240
397b6e9c1568
mod_console: Allow restricting results to matching JIDs in s2s:show()
Matthew Wild <mwild1@gmail.com>
parents:
1085
diff
changeset
|
655 |
if not session.to_host and ((not match_jid) or session.from_host and session.from_host:match(match_jid)) then |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
656 |
count_in = count_in + 1; |
1085
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
657 |
print("Other incoming s2s connections"); |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
658 |
print(" (unknown) <- "..(session.from_host or "(unknown)")); |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
659 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
660 |
end |
1322
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
661 |
|
33d103b0283f
mod_console: Show total incoming/outgoing s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1317
diff
changeset
|
662 |
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
|
663 |
end |
1ac11fb753ca
mod_console: Add s2s:show() command to list s2s connections
Matthew Wild <mwild1@gmail.com>
parents:
1042
diff
changeset
|
664 |
|
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
665 |
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
|
666 |
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
|
667 |
print( |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
668 |
(" %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
|
669 |
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
|
670 |
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
|
671 |
) |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
672 |
); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
673 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
674 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
675 |
|
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
676 |
-- 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
|
677 |
-- 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
|
678 |
-- break from that. |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
679 |
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
|
680 |
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
|
681 |
print( |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
682 |
(" %d: %s"):format( |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
683 |
depth-1, |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
684 |
table.concat(t, "\n| ") |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
685 |
) |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
686 |
); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
687 |
end |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
688 |
end |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
689 |
|
3669
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
690 |
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
|
691 |
local ser = require "util.serialization".serialize; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
692 |
local print = self.session.print; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
693 |
local domain_sessions = set.new(array.collect(keys(incoming_s2s))) |
4913
02dbed57a355
mod_admin_telnet: More code found and updated, which depended on pre-8c5b5ebaacb0 behaviour.
Kim Alvefur <zash@zash.se>
parents:
4912
diff
changeset
|
694 |
/function(session) return 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
|
695 |
for local_host in values(prosody.hosts) do |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
696 |
local s2sout = local_host.s2sout; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
697 |
if s2sout and s2sout[domain] then |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
698 |
domain_sessions:add(s2sout[domain]); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
699 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
700 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
701 |
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
|
702 |
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
|
703 |
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
|
704 |
conn = conn and conn:socket(); |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
705 |
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
|
706 |
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
|
707 |
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
|
708 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
709 |
else |
5596
73fea1a87afd
mod_admin_telnet: Don't rely on getpeerchain returning an empty list
Kim Alvefur <zash@zash.se>
parents:
5567
diff
changeset
|
710 |
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
|
711 |
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
|
712 |
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
|
713 |
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
|
714 |
if not cert_set[digest] then |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
715 |
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
|
716 |
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
|
717 |
{ |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
718 |
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
|
719 |
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
|
720 |
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
|
721 |
}; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
722 |
chain_valid = chain_valid; |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
723 |
chain_errors = chain_errors; |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
724 |
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
|
725 |
}; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
726 |
else |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
727 |
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
|
728 |
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
|
729 |
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
|
730 |
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
|
731 |
}); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
732 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
733 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
734 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
735 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
736 |
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
|
737 |
-- 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
|
738 |
local n_certs = #domain_certs; |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
739 |
|
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
740 |
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
|
741 |
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
|
742 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
743 |
|
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
744 |
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
|
745 |
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
|
746 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
747 |
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
|
748 |
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
|
749 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
750 |
|
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
751 |
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
|
752 |
local certs = cert_info.certs; |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
753 |
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
|
754 |
print("---") |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
755 |
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
|
756 |
print(""); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
757 |
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
|
758 |
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
|
759 |
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
|
760 |
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
|
761 |
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
|
762 |
else |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
763 |
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
|
764 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
765 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
766 |
print(""); |
4328
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
767 |
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
|
768 |
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
|
769 |
if chain_valid then |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
770 |
print("Trusted certificate: Yes"); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
771 |
else |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
772 |
print("Trusted certificate: No"); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
773 |
print_errors(print, errors); |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
774 |
end |
c71777a8b9c7
mod_admin_telnet: Update to newer luasec.
Paul Aurich <paul@darkrain42.org>
parents:
3899
diff
changeset
|
775 |
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
|
776 |
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
|
777 |
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
|
778 |
print(""); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
779 |
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
|
780 |
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
|
781 |
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
|
782 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
783 |
print("---"); |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
784 |
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
|
785 |
..(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
|
786 |
.." 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
|
787 |
end |
4b56cd1302d4
mod_console: Add s2s:showcert() command to show the certificate for a domain
Matthew Wild <mwild1@gmail.com>
parents:
3652
diff
changeset
|
788 |
|
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
789 |
function def_env.s2s:close(from, to) |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
790 |
local print, count = self.session.print, 0; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
791 |
|
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
792 |
if not (from and to) then |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
793 |
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
|
794 |
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
|
795 |
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
|
796 |
end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
797 |
|
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
798 |
if hosts[from] and not hosts[to] then |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
799 |
-- Is an outgoing connection |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
800 |
local session = hosts[from].s2sout[to]; |
3540
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
3452
diff
changeset
|
801 |
if not session then |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
802 |
print("No outgoing connection 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
|
803 |
else |
1821
05ed826da89b
mod_console: s2s:close: Use session:close() if that exists, otherwise just destroy the session
Matthew Wild <mwild1@gmail.com>
parents:
1798
diff
changeset
|
804 |
(session.close or s2smanager.destroy_session)(session); |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
805 |
count = count + 1; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
806 |
print("Closed outgoing session 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
|
807 |
end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
808 |
elseif hosts[to] and not hosts[from] then |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
809 |
-- Is an incoming connection |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
810 |
for session in pairs(incoming_s2s) do |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
811 |
if session.to_host == to and session.from_host == from then |
1821
05ed826da89b
mod_console: s2s:close: Use session:close() if that exists, otherwise just destroy the session
Matthew Wild <mwild1@gmail.com>
parents:
1798
diff
changeset
|
812 |
(session.close or s2smanager.destroy_session)(session); |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
813 |
count = count + 1; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
814 |
end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
815 |
end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
816 |
|
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
817 |
if count == 0 then |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
818 |
print("No incoming connections 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
|
819 |
else |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
820 |
print("Closed "..count.." incoming session"..((count == 1 and "") or "s").." 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
|
821 |
end |
1341
53decd1ee351
mod_console: Fix syntax error
Matthew Wild <mwild1@gmail.com>
parents:
1340
diff
changeset
|
822 |
elseif hosts[to] and hosts[from] then |
1340
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
823 |
return false, "Both of the hostnames you specified are local, there are no s2s sessions to close"; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
824 |
else |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
825 |
return false, "Neither of the hostnames you specified are being used on this server"; |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
826 |
end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
827 |
|
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
828 |
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
|
829 |
end |
f707d0957155
mod_console: Add s2s:close() to close s2s sessions between two hosts
Matthew Wild <mwild1@gmail.com>
parents:
1322
diff
changeset
|
830 |
|
4978
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
831 |
function def_env.s2s:closeall(host) |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
832 |
local count = 0; |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
833 |
|
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
834 |
if not host or type(host) ~= "string" then return false, "wrong syntax: please use s2s:closeall('hostname.tld')"; end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
835 |
if hosts[host] then |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
836 |
for session in pairs(incoming_s2s) do |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
837 |
if session.to_host == host then |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
838 |
(session.close or s2smanager.destroy_session)(session); |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
839 |
count = count + 1; |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
840 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
841 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
842 |
for _, session in pairs(hosts[host].s2sout) do |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
843 |
(session.close or s2smanager.destroy_session)(session); |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
844 |
count = count + 1; |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
845 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
846 |
else |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
847 |
for session in pairs(incoming_s2s) do |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
848 |
if session.from_host == host then |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
849 |
(session.close or s2smanager.destroy_session)(session); |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
850 |
count = count + 1; |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
851 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
852 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
853 |
for _, h in pairs(hosts) do |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
854 |
if h.s2sout[host] then |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
855 |
(h.s2sout[host].close or s2smanager.destroy_session)(h.s2sout[host]); |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
856 |
count = count + 1; |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
857 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
858 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
859 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
860 |
|
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
861 |
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
|
862 |
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
|
863 |
end |
0b9e86302de4
mod_admin_telnet: add s2s:closeall command and relative help entry.
Marco Cirillo <maranda@lightwitch.org>
parents:
4913
diff
changeset
|
864 |
|
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
|
865 |
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
|
866 |
|
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
|
867 |
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
|
868 |
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
|
869 |
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
|
870 |
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
|
871 |
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
|
872 |
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
|
873 |
|
2007
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
874 |
function def_env.host:list() |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
875 |
local print = self.session.print; |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
876 |
local i = 0; |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
877 |
for host in values(array.collect(keys(prosody.hosts)):sort()) do |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
878 |
i = i + 1; |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
879 |
print(host); |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
880 |
end |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
881 |
return true, i.." hosts"; |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
882 |
end |
b89d61db74d1
mod_console: Add missing hosts:list() command
Matthew Wild <mwild1@gmail.com>
parents:
1977
diff
changeset
|
883 |
|
4674
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
884 |
def_env.port = {}; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
885 |
|
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
886 |
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
|
887 |
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
|
888 |
local services = portmanager.get_active_services().data; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
889 |
local ordered_services, n_ports = {}, 0; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
890 |
for service, interfaces in pairs(services) do |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
891 |
table.insert(ordered_services, service); |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
892 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
893 |
table.sort(ordered_services); |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
894 |
for _, service in ipairs(ordered_services) do |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
895 |
local ports_list = {}; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
896 |
for interface, ports in pairs(services[service]) do |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
897 |
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
|
898 |
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
|
899 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
900 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
901 |
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
|
902 |
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
|
903 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
904 |
return true, #ordered_services.." services listening on "..n_ports.." ports"; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
905 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
906 |
|
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
907 |
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
|
908 |
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
|
909 |
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
|
910 |
local services = portmanager.get_active_services().data; |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
911 |
for service, interfaces in pairs(services) do |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
912 |
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
|
913 |
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
|
914 |
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
|
915 |
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
|
916 |
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
|
917 |
if not ok then |
5029
7bcd79631492
mod_admin_telnet: Fix usage of incorrect variable
Matthew Wild <mwild1@gmail.com>
parents:
5028
diff
changeset
|
918 |
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
|
919 |
else |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
920 |
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
|
921 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
922 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
923 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
924 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
925 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
926 |
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
|
927 |
end |
f44726a910a0
mod_admin_telnet: Add initial port:list() and port:close() commands
Matthew Wild <mwild1@gmail.com>
parents:
4647
diff
changeset
|
928 |
|
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
|
929 |
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
|
930 |
|
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
931 |
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
|
932 |
__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
|
933 |
__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
|
934 |
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
|
935 |
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
|
936 |
}; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
937 |
|
5520
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
938 |
local function check_muc(jid) |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
939 |
local room_name, host = jid_split(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
|
940 |
if not hosts[host] 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
|
941 |
return nil, "No such host: "..host; |
2999f0fd1347
mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
Matthew Wild <mwild1@gmail.com>
parents:
4779
diff
changeset
|
942 |
elseif not hosts[host].modules.muc 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
|
943 |
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
|
944 |
end |
5520
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
945 |
return room_name, host; |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
946 |
end |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
947 |
|
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
948 |
function def_env.muc:create(room_jid) |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
949 |
local room, 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
|
950 |
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
|
951 |
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
|
952 |
end |
5630
5f3c0b11aa88
mod_admin_telnet: Make the muc:create() command complain if the room already exists
Kim Alvefur <zash@zash.se>
parents:
5598
diff
changeset
|
953 |
if not room then return nil, host end |
5f3c0b11aa88
mod_admin_telnet: Make the muc:create() command complain if the room already exists
Kim Alvefur <zash@zash.se>
parents:
5598
diff
changeset
|
954 |
if hosts[host].modules.muc.rooms[room_jid] then return nil, "Room exists already" end |
5520
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
955 |
return hosts[host].modules.muc.create_room(room_jid); |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
956 |
end |
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
957 |
|
75230be5be58
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild <mwild1@gmail.com>
parents:
5278
diff
changeset
|
958 |
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
|
959 |
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
|
960 |
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
|
961 |
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
|
962 |
end |
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
|
963 |
local room_obj = hosts[host].modules.muc.rooms[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
|
964 |
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
|
965 |
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
|
966 |
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
|
967 |
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
|
968 |
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
|
969 |
|
5006
af7e563cf453
mod_admin_telnet: Add missing import of usermanager
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
970 |
local um = require"core.usermanager"; |
af7e563cf453
mod_admin_telnet: Add missing import of usermanager
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
971 |
|
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
972 |
def_env.user = {}; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
973 |
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
|
974 |
local username, host = jid_split(jid); |
5598
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
975 |
if not hosts[host] then |
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
976 |
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
|
977 |
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
|
978 |
return nil, "User exists"; |
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
979 |
end |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
980 |
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
|
981 |
if ok then |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
982 |
return true, "User created"; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
983 |
else |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
984 |
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
|
985 |
end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
986 |
end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
987 |
|
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
988 |
function def_env.user:delete(jid) |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
989 |
local username, host = jid_split(jid); |
5598
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
990 |
if not hosts[host] then |
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
991 |
return nil, "No such host: "..host; |
5643
e612e1887e39
mod_admin_telnet: Fix inverted boolean logic
Kim Alvefur <zash@zash.se>
parents:
5630
diff
changeset
|
992 |
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
|
993 |
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
|
994 |
end |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
995 |
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
|
996 |
if ok then |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
997 |
return true, "User deleted"; |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
998 |
else |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
999 |
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
|
1000 |
end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1001 |
end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1002 |
|
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1003 |
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
|
1004 |
local username, host = jid_split(jid); |
5598
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
1005 |
if not hosts[host] then |
3bb8aefd8ce0
mod_admin_telnet: Verify that the host exists in user commands (Thanks SkyBlue)
Kim Alvefur <zash@zash.se>
parents:
5596
diff
changeset
|
1006 |
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
|
1007 |
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
|
1008 |
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
|
1009 |
end |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1010 |
local ok, err = um.set_password(username, password, host); |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1011 |
if ok then |
5128
834ab74585ec
mod_admin_telnet: Fix user:*, correct names, docs, do validation
Kim Alvefur <zash@zash.se>
parents:
5030
diff
changeset
|
1012 |
return true, "User password changed"; |
4973
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1013 |
else |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1014 |
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
|
1015 |
end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1016 |
end |
3f7248ac1a3b
mod_admin_telnet: Add some user management commands.
Kim Alvefur <zash@zash.se>
parents:
4913
diff
changeset
|
1017 |
|
5168
46fc0eff10b4
mod_admin_telnet: user:list(): Allow filtering the set of users
Kim Alvefur <zash@zash.se>
parents:
5167
diff
changeset
|
1018 |
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
|
1019 |
if not host then |
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1020 |
return nil, "No host given"; |
5167
ecd9e300ec94
mod_admin_telnet: user:list() check that the given host exists
Kim Alvefur <zash@zash.se>
parents:
5159
diff
changeset
|
1021 |
elseif not hosts[host] then |
ecd9e300ec94
mod_admin_telnet: user:list() check that the given host exists
Kim Alvefur <zash@zash.se>
parents:
5159
diff
changeset
|
1022 |
return nil, "No such host"; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1023 |
end |
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1024 |
local print = self.session.print; |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1025 |
local total, matches = 0, 0; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1026 |
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
|
1027 |
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
|
1028 |
print(user.."@"..host); |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1029 |
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
|
1030 |
end |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1031 |
total = total + 1; |
5158
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1032 |
end |
5227
97f395938028
mod_admin_telnet: Improve wording when listing users
Kim Alvefur <zash@zash.se>
parents:
5186
diff
changeset
|
1033 |
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
|
1034 |
end |
c363e7e77f79
mod_admin_telnet: Add support for listing users
Kim Alvefur <zash@zash.se>
parents:
5133
diff
changeset
|
1035 |
|
5011
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1036 |
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
|
1037 |
|
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1038 |
local st = require "util.stanza"; |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1039 |
function def_env.xmpp:ping(localhost, remotehost) |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1040 |
if hosts[localhost] then |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1041 |
core_post_stanza(hosts[localhost], |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1042 |
st.iq{ from=localhost, to=remotehost, type="get", id="ping" } |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1043 |
:tag("ping", {xmlns="urn:xmpp:ping"})); |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1044 |
return true, "Sent ping"; |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1045 |
else |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1046 |
return nil, "No such host"; |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1047 |
end |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1048 |
end |
83b4d3727b4f
mod_admin_telnet: Add xmpp:ping(from, to), useful for initiating s2s connections
Kim Alvefur <zash@zash.se>
parents:
5007
diff
changeset
|
1049 |
|
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1050 |
def_env.dns = {}; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1051 |
local adns = require"net.adns"; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1052 |
local dns = require"net.dns"; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1053 |
|
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1054 |
function def_env.dns:lookup(name, typ, class) |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1055 |
local ret = "Query sent"; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1056 |
local print = self.session.print; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1057 |
local function handler(...) |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1058 |
ret = "Got response"; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1059 |
print(...); |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1060 |
end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1061 |
adns.lookup(handler, name, typ, class); |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1062 |
return true, ret; |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1063 |
end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1064 |
|
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1065 |
function def_env.dns:addnameserver(...) |
6311
f44876548487
mod_admin_telnet: Fix dns:(add,set)nameservers()
Kim Alvefur <zash@zash.se>
parents:
6064
diff
changeset
|
1066 |
dns._resolver:addnameserver(...) |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1067 |
return true |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1068 |
end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1069 |
|
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1070 |
function def_env.dns:setnameserver(...) |
6311
f44876548487
mod_admin_telnet: Fix dns:(add,set)nameservers()
Kim Alvefur <zash@zash.se>
parents:
6064
diff
changeset
|
1071 |
dns._resolver:setnameserver(...) |
5567
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1072 |
return true |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1073 |
end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1074 |
|
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1075 |
function def_env.dns:purge() |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1076 |
dns.purge() |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1077 |
return true |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1078 |
end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1079 |
|
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1080 |
function def_env.dns:cache() |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1081 |
return true, "Cache:\n"..tostring(dns.cache()) |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1082 |
end |
c4ab25b35a55
mod_admin_telnet: Add some DNS commands.
Kim Alvefur <zash@zash.se>
parents:
5520
diff
changeset
|
1083 |
|
7032
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1084 |
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:
6581
diff
changeset
|
1085 |
|
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1086 |
function def_env.http:list() |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1087 |
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:
6581
diff
changeset
|
1088 |
|
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1089 |
for host in pairs(prosody.hosts) do |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1090 |
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:
6581
diff
changeset
|
1091 |
if #http_apps > 0 then |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1092 |
local http_host = module:context(host):get_option("http_host"); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1093 |
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:
6581
diff
changeset
|
1094 |
for _, provider in ipairs(http_apps) do |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1095 |
local url = module:context(host):http_url(provider.name); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1096 |
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:
6581
diff
changeset
|
1097 |
end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1098 |
print(""); |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1099 |
end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1100 |
end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1101 |
|
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1102 |
local default_host = module:get_option("http_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:
6581
diff
changeset
|
1103 |
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:
6581
diff
changeset
|
1104 |
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:
6581
diff
changeset
|
1105 |
else |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1106 |
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:
6581
diff
changeset
|
1107 |
end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1108 |
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:
6581
diff
changeset
|
1109 |
end |
b2d160baa957
mod_admin_telnet: Backport 06696882d972 from 0.10 (this command greatly helps with debugging HTTP issues)
Matthew Wild <mwild1@gmail.com>
parents:
6581
diff
changeset
|
1110 |
|
736 | 1111 |
------------- |
1112 |
||
1113 |
function printbanner(session) |
|
5025
e68d1b85ee3a
mod_admin_telnet: Use module:get_option() instead of configmanager directly
Matthew Wild <mwild1@gmail.com>
parents:
5024
diff
changeset
|
1114 |
local option = module:get_option("console_banner"); |
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1115 |
if option == nil or option == "full" or option == "graphic" then |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1116 |
session.print [[ |
736 | 1117 |
____ \ / _ |
1118 |
| _ \ _ __ ___ ___ _-_ __| |_ _ |
|
1119 |
| |_) | '__/ _ \/ __|/ _ \ / _` | | | | |
|
1120 |
| __/| | | (_) \__ \ |_| | (_| | |_| | |
|
1121 |
|_| |_| \___/|___/\___/ \__,_|\__, | |
|
1122 |
A study in simplicity |___/ |
|
1123 |
||
1124 |
]] |
|
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1125 |
end |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1126 |
if option == nil or option == "short" or option == "full" then |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1127 |
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
|
1128 |
session.print("You may find more help on using this console in our online documentation at "); |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1129 |
session.print("http://prosody.im/doc/console\n"); |
1483
efd19cdda6ca
mod_console: Allow customisation/suppression of the banner
Matthew Wild <mwild1@gmail.com>
parents:
1433
diff
changeset
|
1130 |
end |
5026
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1131 |
if option and option ~= "short" and option ~= "full" and option ~= "graphic" then |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1132 |
if type(option) == "string" then |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1133 |
session.print(option) |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1134 |
elseif type(option) == "function" then |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1135 |
module:log("warn", "Using functions as value for the console_banner option is no longer supported"); |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1136 |
end |
c86a14414922
mod_admin_telnet: Fix broken indentation
Matthew Wild <mwild1@gmail.com>
parents:
5025
diff
changeset
|
1137 |
end |
1483
efd19cdda6ca
mod_console: Allow customisation/suppression of the banner
Matthew Wild <mwild1@gmail.com>
parents:
1433
diff
changeset
|
1138 |
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
|
1139 |
|
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
|
1140 |
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
|
1141 |
name = "console"; |
4550
1c41e4a846a2
mod_admin_telnet: Port to portmanager
Matthew Wild <mwild1@gmail.com>
parents:
4540
diff
changeset
|
1142 |
listener = console_listener; |
1c41e4a846a2
mod_admin_telnet: Port to portmanager
Matthew Wild <mwild1@gmail.com>
parents:
4540
diff
changeset
|
1143 |
default_port = 5582; |
4571
32d532b95dc7
mod_admin_telnet: make service private.
Marco Cirillo <maranda@lightwitch.org>
parents:
4550
diff
changeset
|
1144 |
private = true; |
4550
1c41e4a846a2
mod_admin_telnet: Port to portmanager
Matthew Wild <mwild1@gmail.com>
parents:
4540
diff
changeset
|
1145 |
}); |