author | Kim Alvefur <zash@zash.se> |
Fri, 09 Jun 2023 17:38:46 +0200 | |
changeset 13136 | 5bfcfd12c423 |
parent 13063 | a47bd6ea7626 |
child 13171 | 6226f75f55a7 |
permissions | -rwxr-xr-x |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/env lua |
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
1501
diff
changeset
|
2 |
-- Prosody IM |
3742
a18acd47904b
prosodyctl: Added and updated some comments and some semicolons, to match main prosody executable.
Waqas Hussain <waqas20@gmail.com>
parents:
3741
diff
changeset
|
3 |
-- Copyright (C) 2008-2010 Matthew Wild |
a18acd47904b
prosodyctl: Added and updated some comments and some semicolons, to match main prosody executable.
Waqas Hussain <waqas20@gmail.com>
parents:
3741
diff
changeset
|
4 |
-- Copyright (C) 2008-2010 Waqas Hussain |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
5 |
-- |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 |
-- This project is MIT/X11 licensed. Please see the |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
-- COPYING file in the source package for more information. |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
-- |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 |
-- prosodyctl - command-line controller for Prosody XMPP server |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
-- Will be modified by configure script if run -- |
7300
b34a42a10c9f
prosody, prosodyctl: Allow setting CFG_* variables via Lua interpreter before loading Prosody. Fixes #308.
Matthew Wild <mwild1@gmail.com>
parents:
7270
diff
changeset
|
13 |
CFG_SOURCEDIR=CFG_SOURCEDIR or os.getenv("PROSODY_SRCDIR"); |
b34a42a10c9f
prosody, prosodyctl: Allow setting CFG_* variables via Lua interpreter before loading Prosody. Fixes #308.
Matthew Wild <mwild1@gmail.com>
parents:
7270
diff
changeset
|
14 |
CFG_CONFIGDIR=CFG_CONFIGDIR or os.getenv("PROSODY_CFGDIR"); |
b34a42a10c9f
prosody, prosodyctl: Allow setting CFG_* variables via Lua interpreter before loading Prosody. Fixes #308.
Matthew Wild <mwild1@gmail.com>
parents:
7270
diff
changeset
|
15 |
CFG_PLUGINDIR=CFG_PLUGINDIR or os.getenv("PROSODY_PLUGINDIR"); |
b34a42a10c9f
prosody, prosodyctl: Allow setting CFG_* variables via Lua interpreter before loading Prosody. Fixes #308.
Matthew Wild <mwild1@gmail.com>
parents:
7270
diff
changeset
|
16 |
CFG_DATADIR=CFG_DATADIR or os.getenv("PROSODY_DATADIR"); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
|
3742
a18acd47904b
prosodyctl: Added and updated some comments and some semicolons, to match main prosody executable.
Waqas Hussain <waqas20@gmail.com>
parents:
3741
diff
changeset
|
18 |
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
|
3999
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
20 |
local function is_relative(path) |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
21 |
local path_sep = package.config:sub(1,1); |
11888
248477e45c64
prosodyctl: Fix weird indentation
Kim Alvefur <zash@zash.se>
parents:
11816
diff
changeset
|
22 |
return ((path_sep == "/" and path:sub(1,1) ~= "/") |
248477e45c64
prosodyctl: Fix weird indentation
Kim Alvefur <zash@zash.se>
parents:
11816
diff
changeset
|
23 |
or (path_sep == "\\" and (path:sub(1,1) ~= "/" and path:sub(2,3) ~= ":\\"))) |
3999
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
24 |
end |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
25 |
|
3742
a18acd47904b
prosodyctl: Added and updated some comments and some semicolons, to match main prosody executable.
Waqas Hussain <waqas20@gmail.com>
parents:
3741
diff
changeset
|
26 |
-- Tell Lua where to find our libraries |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 |
if CFG_SOURCEDIR then |
3999
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
28 |
local function filter_relative_paths(path) |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
29 |
if is_relative(path) then return ""; end |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
30 |
end |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
31 |
local function sanitise_paths(paths) |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
32 |
return (paths:gsub("[^;]+;?", filter_relative_paths):gsub(";;+", ";")); |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
33 |
end |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
34 |
package.path = sanitise_paths(CFG_SOURCEDIR.."/?.lua;"..package.path); |
58c0de7c6da0
prosody, prosodyctl: Filter out relative paths from package.(c)path when installed
Matthew Wild <mwild1@gmail.com>
parents:
3998
diff
changeset
|
35 |
package.cpath = sanitise_paths(CFG_SOURCEDIR.."/?.so;"..package.cpath); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 |
|
3742
a18acd47904b
prosodyctl: Added and updated some comments and some semicolons, to match main prosody executable.
Waqas Hussain <waqas20@gmail.com>
parents:
3741
diff
changeset
|
38 |
-- Substitute ~ with path to home directory in data path |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 |
if CFG_DATADIR then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 |
if os.getenv("HOME") then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 |
CFG_DATADIR = CFG_DATADIR:gsub("^~", os.getenv("HOME")); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 |
|
8638
47e3b8b6f17a
prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents:
8564
diff
changeset
|
45 |
----------- |
1580
5be6dc582df3
prosodyctl: Also switch group when we switch user
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
46 |
|
12582
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
47 |
-- Check before first require, to preempt the probable failure |
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
48 |
if _VERSION < "Lua 5.2" then |
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
49 |
io.stderr:write("Prosody is no longer compatible with Lua 5.1\n") |
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
50 |
io.stderr:write("See https://prosody.im/doc/depends#lua for more information\n") |
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
51 |
return os.exit(1); |
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
52 |
end |
10bb58ad5583
executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
53 |
|
12958
4f2accd99373
executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents:
12868
diff
changeset
|
54 |
if not pcall(require, "prosody.loader") then |
4f2accd99373
executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents:
12868
diff
changeset
|
55 |
pcall(require, "loader"); |
4f2accd99373
executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents:
12868
diff
changeset
|
56 |
end |
4f2accd99373
executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents:
12868
diff
changeset
|
57 |
|
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
58 |
local startup = require "prosody.util.startup"; |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
59 |
startup.prosodyctl(); |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
60 |
|
8638
47e3b8b6f17a
prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents:
8564
diff
changeset
|
61 |
----------- |
3339
7893055e54d1
prosodyctl: Warn and exit if any log files are not writeable, fixes #94
Matthew Wild <mwild1@gmail.com>
parents:
3338
diff
changeset
|
62 |
|
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
63 |
local configmanager = require "prosody.core.configmanager"; |
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
64 |
local modulemanager = require "prosody.core.modulemanager" |
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
65 |
local prosodyctl = require "prosody.util.prosodyctl" |
6787
4da860edc27c
prosodyctl: Import LuaSocket to a local, don't assume that a global will be set
Kim Alvefur <zash@zash.se>
parents:
6754
diff
changeset
|
66 |
local socket = require "socket" |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
67 |
local dependencies = require "prosody.util.dependencies"; |
10614
b9a054ad38e7
prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents:
10612
diff
changeset
|
68 |
local lfs = dependencies.softreq "lfs"; |
8201
db82ce3decee
prosody, prosodyctl: Set up TLS settings for HTTPS requests in net.http (part of fix for #659)
Kim Alvefur <zash@zash.se>
parents:
8193
diff
changeset
|
69 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 |
----------------------- |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 |
|
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
72 |
local parse_args = require "prosody.util.argparse".parse; |
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
73 |
local human_io = require "prosody.util.human.io"; |
10875
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
74 |
|
4142
caa78589598f
prosodyctl, util.prosodyctl: Move UI functions to util.prosodyctl so they can be used outside of prosodyctl itself
Matthew Wild <mwild1@gmail.com>
parents:
4095
diff
changeset
|
75 |
local show_message, show_warning = prosodyctl.show_message, prosodyctl.show_warning; |
caa78589598f
prosodyctl, util.prosodyctl: Move UI functions to util.prosodyctl so they can be used outside of prosodyctl itself
Matthew Wild <mwild1@gmail.com>
parents:
4095
diff
changeset
|
76 |
local show_usage = prosodyctl.show_usage; |
10875
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
77 |
local read_password = human_io.read_password; |
10211
4c755c2e6305
prosodyctl: Install, remove and list commands now use the call_luarocks function
João Duarte <jvsDuarte08@gmail.com>
parents:
10206
diff
changeset
|
78 |
local call_luarocks = prosodyctl.call_luarocks; |
10875
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
79 |
local error_messages = prosodyctl.error_messages; |
1459
545208bc0e84
prosodyctl: Use prosodyctl_timeout option if it exists in the config
Matthew Wild <mwild1@gmail.com>
parents:
1458
diff
changeset
|
80 |
|
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
81 |
local jid_split = require "prosody.util.jid".prepped_split; |
6324
c9730926002b
prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
82 |
|
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
83 |
local prosodyctl_timeout = (configmanager.get("*", "prosodyctl_timeout") or 5) * 2; |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 |
----------------------- |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 |
local commands = {}; |
9784
c7727c13260f
prosodyctl: Pass the original argv table to subcommands (with first argument removed)
Kim Alvefur <zash@zash.se>
parents:
9713
diff
changeset
|
86 |
local command = table.remove(arg, 1); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 |
|
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
88 |
local only_help = { short_params = { h = "help"; ["?"] = "help" } } |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
89 |
|
10145
cf70deac27f6
prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents:
10144
diff
changeset
|
90 |
function commands.install(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
91 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
92 |
if opts.help or not arg[1] then |
10176
5da519ef2d51
prosodyctl: Corrected the help output of the install and remove commands
João Duarte <jvsDuarte08@gmail.com>
parents:
10174
diff
changeset
|
93 |
show_usage([[install]], [[Installs a prosody/luarocks plugin]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
94 |
return opts.help and 0 or 1; |
10151
1a35b3a2b11b
prosodyctl: Corrected indentation on my code
João Duarte <jvsDuarte08@gmail.com>
parents:
10150
diff
changeset
|
95 |
end |
11139
56490ffde93f
util.prosodyctl: Get Luarocks server from config
Kim Alvefur <zash@zash.se>
parents:
11138
diff
changeset
|
96 |
-- TODO finalize config option name |
12271
a52a0680fcd8
prosodyctl: Allow passing server on command line with --server
Kim Alvefur <zash@zash.se>
parents:
12270
diff
changeset
|
97 |
local server = opts.server or configmanager.get("*", "plugin_server"); |
12270
24b0c4c4e28a
prosodyctl: Allow install plugin via explicit path or URL
Kim Alvefur <zash@zash.se>
parents:
12269
diff
changeset
|
98 |
if not (arg[1]:match("^https://") or lfs.attributes(arg[1]) or server) then |
11299
50ea7d9143ad
prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents:
11298
diff
changeset
|
99 |
show_warning("There is no 'plugin_server' option in the configuration file"); |
50ea7d9143ad
prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents:
11298
diff
changeset
|
100 |
-- see https://prosody.im/doc/TODO documentation |
11305
d7f0dc727a47
prosodyctl: Add reference to #1602 (plugin installer docs) in comment
Kim Alvefur <zash@zash.se>
parents:
11304
diff
changeset
|
101 |
-- #1602 |
11299
50ea7d9143ad
prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents:
11298
diff
changeset
|
102 |
return 1; |
50ea7d9143ad
prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents:
11298
diff
changeset
|
103 |
end |
11304
d0d64655e584
prosodyctl: Move message after condition
Kim Alvefur <zash@zash.se>
parents:
11301
diff
changeset
|
104 |
show_message("Installing %s in %s", arg[1], prosody.paths.installer); |
11299
50ea7d9143ad
prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents:
11298
diff
changeset
|
105 |
local ret = call_luarocks("install", arg[1], server); |
12270
24b0c4c4e28a
prosodyctl: Allow install plugin via explicit path or URL
Kim Alvefur <zash@zash.se>
parents:
12269
diff
changeset
|
106 |
if ret == 0 and arg[1]:match("^mod_") then |
11301
2e9d4c517919
prosodyctl: Fix copypaste oversight
Kim Alvefur <zash@zash.se>
parents:
11299
diff
changeset
|
107 |
prosodyctl.show_module_configuration_help(arg[1]); |
11298
a1939b261f67
prosodyctl: Move UI related calls out of util.prosodyctl
Kim Alvefur <zash@zash.se>
parents:
11297
diff
changeset
|
108 |
end |
11297
cd27ac5e5afe
prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents:
11251
diff
changeset
|
109 |
return ret; |
10145
cf70deac27f6
prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents:
10144
diff
changeset
|
110 |
end |
cf70deac27f6
prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents:
10144
diff
changeset
|
111 |
|
10165
ea10561e5566
prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents:
10164
diff
changeset
|
112 |
function commands.remove(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
113 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
114 |
if opts.help or not arg[1] then |
10206
d3764eed7ded
prosodyctl: Fixed a typo
João Duarte <jvsDuarte08@gmail.com>
parents:
10194
diff
changeset
|
115 |
show_usage([[remove]], [[Removes a module installed in the working directory's plugins folder]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
116 |
return opts.help and 0 or 1; |
10165
ea10561e5566
prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents:
10164
diff
changeset
|
117 |
end |
11298
a1939b261f67
prosodyctl: Move UI related calls out of util.prosodyctl
Kim Alvefur <zash@zash.se>
parents:
11297
diff
changeset
|
118 |
show_message("Removing %s from %s", arg[1], prosody.paths.installer); |
11297
cd27ac5e5afe
prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents:
11251
diff
changeset
|
119 |
local ret = call_luarocks("remove", arg[1]); |
cd27ac5e5afe
prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents:
11251
diff
changeset
|
120 |
return ret; |
10165
ea10561e5566
prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents:
10164
diff
changeset
|
121 |
end |
ea10561e5566
prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents:
10164
diff
changeset
|
122 |
|
10130
ad640c2e072e
prosodyctl: Implemented the 'list' command, which is a bridge to 'luarocks list'
João Duarte <jvsDuarte08@gmail.com>
parents:
10129
diff
changeset
|
123 |
function commands.list(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
124 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
125 |
if opts.help then |
10139
3ae2809030dd
prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents:
10138
diff
changeset
|
126 |
show_usage([[list]], [[Shows installed rocks]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
127 |
return 0; |
10139
3ae2809030dd
prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents:
10138
diff
changeset
|
128 |
end |
12456
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
129 |
local server = opts.server or configmanager.get("*", "plugin_server"); |
12296
7fe5cd8a10e2
prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents:
12271
diff
changeset
|
130 |
if opts.outdated then |
7fe5cd8a10e2
prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents:
12271
diff
changeset
|
131 |
-- put this back for luarocks |
7fe5cd8a10e2
prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents:
12271
diff
changeset
|
132 |
arg[1] = "--outdated"; |
12456
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
133 |
|
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
134 |
if not server then |
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
135 |
show_warning("There is no 'plugin_server' option in the configuration file, but this is needed for 'list --outdated' to work."); |
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
136 |
return 1; |
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
137 |
end |
12296
7fe5cd8a10e2
prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents:
12271
diff
changeset
|
138 |
end |
12456
c475a7802169
prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents:
12439
diff
changeset
|
139 |
local ret = call_luarocks("list", arg[1], server); |
11297
cd27ac5e5afe
prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents:
11251
diff
changeset
|
140 |
return ret; |
10130
ad640c2e072e
prosodyctl: Implemented the 'list' command, which is a bridge to 'luarocks list'
João Duarte <jvsDuarte08@gmail.com>
parents:
10129
diff
changeset
|
141 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 |
function commands.adduser(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
144 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
145 |
if opts.help or not arg[1] then |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
146 |
show_usage([[adduser JID]], [[Create the specified user account in Prosody]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
147 |
return opts.help and 0 or 1; |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
148 |
end |
6324
c9730926002b
prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
149 |
local user, host = jid_split(arg[1]); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
150 |
if not user and host then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
151 |
show_message [[Failed to understand JID, please supply the JID you want to create]] |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
152 |
show_usage [[adduser user@host]] |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
153 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
154 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
155 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
156 |
if not host then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
157 |
show_message [[Please specify a JID, including a host. e.g. alice@example.com]]; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
158 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
160 |
|
8721
c23cdeac5b61
prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents:
8704
diff
changeset
|
161 |
if not prosody.hosts[host] then |
3038
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
162 |
show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host) |
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
163 |
show_warning("The user will not be able to log in until this is changed."); |
8721
c23cdeac5b61
prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents:
8704
diff
changeset
|
164 |
prosody.hosts[host] = startup.make_host(host); --luacheck: ignore 122 |
3038
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
165 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
166 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
167 |
if prosodyctl.user_exists{ user = user, host = host } then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
168 |
show_message [[That user already exists]]; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
169 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
170 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
171 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
172 |
local password = read_password(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
173 |
if not password then return 1; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
174 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
175 |
local ok, msg = prosodyctl.adduser { user = user, host = host, password = password }; |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
176 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
177 |
if ok then return 0; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
178 |
|
10373
9d20fca6a485
prosodyctl: Print friendly version of error messages
Kim Alvefur <zash@zash.se>
parents:
10274
diff
changeset
|
179 |
show_message(error_messages[msg]) |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
180 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
181 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
182 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
183 |
function commands.passwd(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
184 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
185 |
if opts.help or not arg[1] then |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
186 |
show_usage([[passwd JID]], [[Set the password for the specified user account in Prosody]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
187 |
return opts.help and 0 or 1; |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
188 |
end |
5610
f73d5fb4ea13
prosodyctl: Use jid.split() to parse parameter to adduser/deluser/passwd
Matthew Wild <mwild1@gmail.com>
parents:
5592
diff
changeset
|
189 |
local user, host = jid_split(arg[1]); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
190 |
if not user and host then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
191 |
show_message [[Failed to understand JID, please supply the JID you want to set the password for]] |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
192 |
show_usage [[passwd user@host]] |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
193 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
194 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
195 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
196 |
if not host then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
197 |
show_message [[Please specify a JID, including a host. e.g. alice@example.com]]; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
198 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
199 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
200 |
|
8721
c23cdeac5b61
prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents:
8704
diff
changeset
|
201 |
if not prosody.hosts[host] then |
3038
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
202 |
show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host) |
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
203 |
show_warning("The user will not be able to log in until this is changed."); |
8721
c23cdeac5b61
prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents:
8704
diff
changeset
|
204 |
prosody.hosts[host] = startup.make_host(host); --luacheck: ignore 122 |
3038
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
205 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
206 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
207 |
if not prosodyctl.user_exists { user = user, host = host } then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
208 |
show_message [[That user does not exist, use prosodyctl adduser to create a new user]] |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
209 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
210 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
211 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
212 |
local password = read_password(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
213 |
if not password then return 1; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
214 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
215 |
local ok, msg = prosodyctl.passwd { user = user, host = host, password = password }; |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
216 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
217 |
if ok then return 0; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
218 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
219 |
show_message(error_messages[msg]) |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
220 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
221 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
222 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
223 |
function commands.deluser(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
224 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
225 |
if opts.help or not arg[1] then |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
226 |
show_usage([[deluser JID]], [[Permanently remove the specified user account from Prosody]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
227 |
return opts.help and 0 or 1; |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
228 |
end |
6324
c9730926002b
prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents:
6035
diff
changeset
|
229 |
local user, host = jid_split(arg[1]); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
230 |
if not user and host then |
7679
7311dc843718
prosodyctl: Fix copy/paste error in help text for deluser command
Matthew Wild <mwild1@gmail.com>
parents:
6501
diff
changeset
|
231 |
show_message [[Failed to understand JID, please supply the JID to the user account you want to delete]] |
7311dc843718
prosodyctl: Fix copy/paste error in help text for deluser command
Matthew Wild <mwild1@gmail.com>
parents:
6501
diff
changeset
|
232 |
show_usage [[deluser user@host]] |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
233 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
234 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
235 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
236 |
if not host then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
237 |
show_message [[Please specify a JID, including a host. e.g. alice@example.com]]; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
238 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
239 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
240 |
|
8721
c23cdeac5b61
prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents:
8704
diff
changeset
|
241 |
if not prosody.hosts[host] then |
3038
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
242 |
show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host) |
8721
c23cdeac5b61
prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents:
8704
diff
changeset
|
243 |
prosody.hosts[host] = startup.make_host(host); --luacheck: ignore 122 |
3038
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
244 |
end |
6b68355d615a
prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents:
3015
diff
changeset
|
245 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
246 |
if not prosodyctl.user_exists { user = user, host = host } then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
247 |
show_message [[That user does not exist on this server]] |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
248 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
249 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
250 |
|
5101
a94c43cad081
prosodyctl: Use util.prosodyctl.deluser
Kim Alvefur <zash@zash.se>
parents:
5024
diff
changeset
|
251 |
local ok, msg = prosodyctl.deluser { user = user, host = host }; |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
252 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
253 |
if ok then return 0; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
254 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
255 |
show_message(error_messages[msg]) |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
256 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
257 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
258 |
|
12107
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
259 |
local function has_init_system() --> which |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
260 |
lfs = lfs or require"lfs"; |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
261 |
if lfs.attributes("/etc/systemd") then |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
262 |
return "systemd"; |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
263 |
elseif lfs.attributes("/etc/init.d/prosody") then |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
264 |
return "rc.d"; |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
265 |
end |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
266 |
end |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
267 |
|
10614
b9a054ad38e7
prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents:
10612
diff
changeset
|
268 |
local function service_command_warning(service_command) |
10612
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
269 |
if prosody.installed and configmanager.get("*", "prosodyctl_service_warnings") ~= false then |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
270 |
show_warning("WARNING: Use of prosodyctl start/stop/restart/reload is not recommended"); |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
271 |
show_warning(" if Prosody is managed by an init system - use that directly instead."); |
12107
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
272 |
local init = has_init_system() |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
273 |
if init == "systemd" then |
10614
b9a054ad38e7
prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents:
10612
diff
changeset
|
274 |
show_warning(" e.g. systemctl %s prosody", service_command); |
12107
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
275 |
elseif init == "rc.d" then |
10614
b9a054ad38e7
prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents:
10612
diff
changeset
|
276 |
show_warning(" e.g. /etc/init.d/prosody %s", service_command); |
10612
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
277 |
end |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
278 |
show_warning(""); |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
279 |
end |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
280 |
end |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
281 |
|
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
282 |
function commands.start(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
283 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
284 |
if opts.help then |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
285 |
show_usage([[start]], [[Start Prosody]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
286 |
return 0; |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
287 |
end |
10612
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
288 |
service_command_warning("start"); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
289 |
local ok, ret = prosodyctl.isrunning(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
290 |
if not ok then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
291 |
show_message(error_messages[ret]); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
292 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
293 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
294 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
295 |
if ret then |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
296 |
--luacheck: ignore 421/ret |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
297 |
local ok, ret = prosodyctl.getpid(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
298 |
if not ok then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
299 |
show_message("Couldn't get running Prosody's PID"); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
300 |
show_message(error_messages[ret]); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
301 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
302 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
303 |
show_message("Prosody is already running with PID %s", ret or "(unknown)"); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
304 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
305 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
306 |
|
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
307 |
--luacheck: ignore 411/ret |
10068
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
308 |
local lua; |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
309 |
do |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
310 |
local i = 0; |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
311 |
repeat |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
312 |
i = i - 1; |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
313 |
until arg[i-1] == nil |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
314 |
lua = arg[i]; |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
315 |
end |
1acfd25cd507
prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents:
9996
diff
changeset
|
316 |
local ok, ret = prosodyctl.start(prosody.paths.source, lua); |
1458
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
317 |
if ok then |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
318 |
local daemonize = configmanager.get("*", "daemonize"); |
6062
6cc6b4d407df
prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents:
6038
diff
changeset
|
319 |
if daemonize == nil then |
6cc6b4d407df
prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents:
6038
diff
changeset
|
320 |
daemonize = prosody.installed; |
6cc6b4d407df
prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents:
6038
diff
changeset
|
321 |
end |
6cc6b4d407df
prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents:
6038
diff
changeset
|
322 |
if daemonize then |
2511
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
323 |
local i=1; |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
324 |
while true do |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
325 |
local ok, running = prosodyctl.isrunning(); |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
326 |
if ok and running then |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
327 |
break; |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
328 |
elseif i == 5 then |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
329 |
show_message("Still waiting..."); |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
330 |
elseif i >= prosodyctl_timeout then |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
331 |
show_message("Prosody is still not running. Please give it some time or check your log files for errors."); |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
332 |
return 2; |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
333 |
end |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
334 |
socket.sleep(0.5); |
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
335 |
i = i + 1; |
1458
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
336 |
end |
2511
a81c710b1708
prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
337 |
show_message("Started"); |
1458
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
338 |
end |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
339 |
return 0; |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
340 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
341 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
342 |
show_message("Failed to start Prosody"); |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
343 |
show_message(error_messages[ret]) |
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
344 |
return 1; |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
345 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
346 |
|
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
347 |
function commands.status(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
348 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
349 |
if opts.help then |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
350 |
show_usage([[status]], [[Reports the running status of Prosody]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
351 |
return 0; |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
352 |
end |
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
353 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
354 |
local ok, ret = prosodyctl.isrunning(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
355 |
if not ok then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
356 |
show_message(error_messages[ret]); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
357 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
358 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
359 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
360 |
if ret then |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
361 |
--luacheck: ignore 421/ret |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
362 |
local ok, ret = prosodyctl.getpid(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
363 |
if not ok then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
364 |
show_message("Couldn't get running Prosody's PID"); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
365 |
show_message(error_messages[ret]); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
366 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
367 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
368 |
show_message("Prosody is running with PID %s", ret or "(unknown)"); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
369 |
return 0; |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
370 |
else |
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
371 |
show_message("Prosody is not running"); |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
372 |
if not prosody.switched_user and prosody.current_uid ~= 0 then |
1122
07b2b5942957
prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents:
1120
diff
changeset
|
373 |
print("\nNote:") |
07b2b5942957
prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents:
1120
diff
changeset
|
374 |
print(" You will also see this if prosodyctl is not running under"); |
07b2b5942957
prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents:
1120
diff
changeset
|
375 |
print(" the same user account as Prosody. Try running as root (e.g. "); |
07b2b5942957
prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents:
1120
diff
changeset
|
376 |
print(" with 'sudo' in front) to gain access to Prosody's real status."); |
1115
8a7bc1a5eae6
prosodyctl: status: Show warning if we can't find a running Prosody, and we didn't switch user
Matthew Wild <mwild1@gmail.com>
parents:
1114
diff
changeset
|
377 |
end |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
378 |
return 2 |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
379 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
380 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
381 |
|
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
382 |
function commands.stop(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
383 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
384 |
if opts.help then |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
385 |
show_usage([[stop]], [[Stop a running Prosody server]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
386 |
return 0; |
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
387 |
end |
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
388 |
|
10612
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
389 |
service_command_warning("stop"); |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
390 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
391 |
if not prosodyctl.isrunning() then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
392 |
show_message("Prosody is not running"); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
393 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
394 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
395 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
396 |
local ok, ret = prosodyctl.stop(); |
1458
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
397 |
if ok then |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
398 |
local i=1; |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
399 |
while true do |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
400 |
local ok, running = prosodyctl.isrunning(); |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
401 |
if ok and not running then |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
402 |
break; |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
403 |
elseif i == 5 then |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
404 |
show_message("Still waiting..."); |
1459
545208bc0e84
prosodyctl: Use prosodyctl_timeout option if it exists in the config
Matthew Wild <mwild1@gmail.com>
parents:
1458
diff
changeset
|
405 |
elseif i >= prosodyctl_timeout then |
1458
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
406 |
show_message("Prosody is still running. Please give it some time or check your log files for errors."); |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
407 |
return 2; |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
408 |
end |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
409 |
socket.sleep(0.5); |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
410 |
i = i + 1; |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
411 |
end |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
412 |
show_message("Stopped"); |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
413 |
return 0; |
fce75b4efda9
prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents:
1390
diff
changeset
|
414 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
415 |
|
1089
a817cbaa0f46
prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents:
1087
diff
changeset
|
416 |
show_message(error_messages[ret]); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
417 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
418 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
419 |
|
2696
cb5acafbec62
prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents:
2587
diff
changeset
|
420 |
function commands.restart(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
421 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
422 |
if opts.help then |
2705
8a5af6f14c07
prosodyctl: Fix 'restart' command to not report itself as the 'stop' command (thanks albert!)
Matthew Wild <mwild1@gmail.com>
parents:
2696
diff
changeset
|
423 |
show_usage([[restart]], [[Restart a running Prosody server]]); |
2696
cb5acafbec62
prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents:
2587
diff
changeset
|
424 |
return 1; |
cb5acafbec62
prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents:
2587
diff
changeset
|
425 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
426 |
|
10612
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
427 |
service_command_warning("restart"); |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
428 |
|
3724
c12ebbd4ab61
prosodyctl: Make the 'restart' command start Prosody even if it wasn't already running
Matthew Wild <mwild1@gmail.com>
parents:
3630
diff
changeset
|
429 |
commands.stop(arg); |
c12ebbd4ab61
prosodyctl: Make the 'restart' command start Prosody even if it wasn't already running
Matthew Wild <mwild1@gmail.com>
parents:
3630
diff
changeset
|
430 |
return commands.start(arg); |
2696
cb5acafbec62
prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents:
2587
diff
changeset
|
431 |
end |
cb5acafbec62
prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents:
2587
diff
changeset
|
432 |
|
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
433 |
function commands.about(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
434 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
435 |
if opts.help then |
4331
9c45858e3208
prosodyctl: Fix 'about' command to not show up where it shouldn't...
Matthew Wild <mwild1@gmail.com>
parents:
4324
diff
changeset
|
436 |
show_usage([[about]], [[Show information about this Prosody installation]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
437 |
return 0; |
4331
9c45858e3208
prosodyctl: Fix 'about' command to not show up where it shouldn't...
Matthew Wild <mwild1@gmail.com>
parents:
4324
diff
changeset
|
438 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
439 |
|
6587
c3a56f8847ac
prosodyctl: Show relative paths in about
Kim Alvefur <zash@zash.se>
parents:
6504
diff
changeset
|
440 |
local pwd = "."; |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
441 |
local sorted_pairs = require "prosody.util.iterators".sorted_pairs; |
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
442 |
local hg = require"prosody.util.mercurial"; |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
443 |
local relpath = configmanager.resolve_relative_path; |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
444 |
|
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
445 |
print("Prosody "..(prosody.version or "(unknown version)")); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
446 |
print(""); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
447 |
print("# Prosody directories"); |
8638
47e3b8b6f17a
prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents:
8564
diff
changeset
|
448 |
print("Data directory: "..relpath(pwd, prosody.paths.data)); |
47e3b8b6f17a
prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents:
8564
diff
changeset
|
449 |
print("Config directory: "..relpath(pwd, prosody.paths.config or ".")); |
47e3b8b6f17a
prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents:
8564
diff
changeset
|
450 |
print("Source directory: "..relpath(pwd, prosody.paths.source or ".")); |
6590
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
451 |
print("Plugin directories:") |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
452 |
print(" "..(prosody.paths.plugins:gsub("([^;]+);?", function(path) |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
453 |
path = configmanager.resolve_relative_path(pwd, path); |
6590
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
454 |
local hgid, hgrepo = hg.check_id(path); |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
455 |
if not hgid and hgrepo then |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
456 |
return path.." - "..hgrepo .."!\n "; |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
457 |
end |
6614
65dd3770bcb0
prosodyctl: Document magic commit ID
Paul Aurich <paul@darkrain42.org>
parents:
6590
diff
changeset
|
458 |
-- 010452cfaf53 is the first commit in the prosody-modules repository |
6590
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
459 |
hgrepo = hgrepo == "010452cfaf53" and "prosody-modules"; |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
460 |
return path..(hgid and " - "..(hgrepo or "HG").." rev: "..hgid or "") |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
461 |
.."\n "; |
54306208f30b
prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents:
6589
diff
changeset
|
462 |
end))); |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
463 |
print(""); |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
464 |
local have_pposix, pposix = pcall(require, "prosody.util.pposix"); |
9830
bdc2a024933b
prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents:
9802
diff
changeset
|
465 |
if have_pposix and pposix.uname then |
bdc2a024933b
prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents:
9802
diff
changeset
|
466 |
print("# Operating system"); |
bdc2a024933b
prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents:
9802
diff
changeset
|
467 |
local uname, err = pposix.uname(); |
bdc2a024933b
prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents:
9802
diff
changeset
|
468 |
print(uname and uname.sysname .. " " .. uname.release or "Unknown POSIX", err or ""); |
bdc2a024933b
prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents:
9802
diff
changeset
|
469 |
print(""); |
bdc2a024933b
prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents:
9802
diff
changeset
|
470 |
end |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
471 |
print("# Lua environment"); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
472 |
print("Lua version: ", _G._VERSION); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
473 |
print(""); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
474 |
print("Lua module search paths:"); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
475 |
for path in package.path:gmatch("[^;]+") do |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
476 |
print(" "..path); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
477 |
end |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
478 |
print(""); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
479 |
print("Lua C module search paths:"); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
480 |
for path in package.cpath:gmatch("[^;]+") do |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
481 |
print(" "..path); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
482 |
end |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
483 |
print(""); |
8704
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
484 |
local luarocks_status = "Not installed" |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
485 |
if pcall(require, "luarocks.loader") then |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
486 |
luarocks_status = "Installed (2.x+)"; |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
487 |
if package.loaded["luarocks.cfg"] then |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
488 |
luarocks_status = "Installed ("..(package.loaded["luarocks.cfg"].program_version or "2.x+")..")"; |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
489 |
end |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
490 |
elseif pcall(require, "luarocks.require") then |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
491 |
luarocks_status = "Installed (1.x)"; |
b7a22baaf55f
prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents:
8674
diff
changeset
|
492 |
end |
4333
040193dead77
prosodyctl: Add info about the presence of LuaRocks to 'about' command
Matthew Wild <mwild1@gmail.com>
parents:
4331
diff
changeset
|
493 |
print("LuaRocks: ", luarocks_status); |
040193dead77
prosodyctl: Add info about the presence of LuaRocks to 'about' command
Matthew Wild <mwild1@gmail.com>
parents:
4331
diff
changeset
|
494 |
print(""); |
9860
4be2af104bf0
prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents:
9713
diff
changeset
|
495 |
print("# Network"); |
4be2af104bf0
prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents:
9713
diff
changeset
|
496 |
print(""); |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
497 |
print("Backend: "..require "prosody.net.server".get_backend()); |
9860
4be2af104bf0
prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents:
9713
diff
changeset
|
498 |
print(""); |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
499 |
print("# Lua module versions"); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
500 |
local module_versions, longest_name = {}, 8; |
11007
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
501 |
local library_versions = {}; |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
502 |
dependencies.softreq"ssl"; |
9995
8cd180dc18a8
prosodyctl: Include version of LuaDBI in 'about'
Kim Alvefur <zash@zash.se>
parents:
9860
diff
changeset
|
503 |
dependencies.softreq"DBI"; |
12439
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
504 |
dependencies.softreq"readline"; |
11008
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
505 |
local friendly_names = { |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
506 |
DBI = "LuaDBI"; |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
507 |
lfs = "LuaFileSystem"; |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
508 |
lunbound = "luaunbound"; |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
509 |
lxp = "LuaExpat"; |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
510 |
socket = "LuaSocket"; |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
511 |
ssl = "LuaSec"; |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
512 |
}; |
12439
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
513 |
local alternate_version_fields = { |
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
514 |
-- These diverge from the module._VERSION convention |
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
515 |
readline = "Version"; |
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
516 |
} |
10968
d6a3d652ca32
prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents:
10909
diff
changeset
|
517 |
local lunbound = dependencies.softreq"lunbound"; |
11564 | 518 |
local lxp = dependencies.softreq"lxp"; |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
519 |
local hashes = dependencies.softreq"prosody.util.hashes"; |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
520 |
for name, module in pairs(package.loaded) do |
12439
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
521 |
local version_field = alternate_version_fields[name] or "_VERSION"; |
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
522 |
if type(module) == "table" and rawget(module, version_field) |
11008
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
523 |
and name ~= "_G" and not name:match("%.") then |
d175de07dd73
prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents:
11007
diff
changeset
|
524 |
name = friendly_names[name] or name; |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
525 |
if #name > longest_name then |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
526 |
longest_name = #name; |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
527 |
end |
12439
1ee72c0013f3
prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents:
12296
diff
changeset
|
528 |
local mod_version = module[version_field]; |
11009
cff243aafdce
prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents:
11008
diff
changeset
|
529 |
if tostring(mod_version):sub(1, #name+1) == name .. " " then |
cff243aafdce
prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents:
11008
diff
changeset
|
530 |
mod_version = mod_version:sub(#name+2); |
cff243aafdce
prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents:
11008
diff
changeset
|
531 |
end |
cff243aafdce
prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents:
11008
diff
changeset
|
532 |
module_versions[name] = mod_version; |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
533 |
end |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
534 |
end |
10968
d6a3d652ca32
prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents:
10909
diff
changeset
|
535 |
if lunbound then |
11010
8ac958938e0f
prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents:
11009
diff
changeset
|
536 |
if not module_versions["luaunbound"] then |
8ac958938e0f
prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents:
11009
diff
changeset
|
537 |
module_versions["luaunbound"] = "0.5 (?)"; |
10968
d6a3d652ca32
prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents:
10909
diff
changeset
|
538 |
end |
11007
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
539 |
library_versions["libunbound"] = lunbound._LIBVER; |
7252
c49f69bb68f7
prosodyctl: Include libevent version in "about" output if luaevent is available
Kim Alvefur <zash@zash.se>
parents:
7216
diff
changeset
|
540 |
end |
11556
d4b735272a61
prosodyctl about: Report libexpat version if known
Matthew Wild <mwild1@gmail.com>
parents:
11533
diff
changeset
|
541 |
if lxp then |
11564 | 542 |
library_versions["libexpat"] = lxp._EXPAT_VERSION; |
543 |
end |
|
11567
0983653cbfdf
prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents:
11564
diff
changeset
|
544 |
if hashes then |
0983653cbfdf
prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents:
11564
diff
changeset
|
545 |
library_versions["libcrypto"] = hashes._LIBCRYPTO_VERSION; |
0983653cbfdf
prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents:
11564
diff
changeset
|
546 |
end |
11006
b0766f2603e9
prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents:
10968
diff
changeset
|
547 |
for name, version in sorted_pairs(module_versions) do |
b0766f2603e9
prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents:
10968
diff
changeset
|
548 |
print(name..":"..string.rep(" ", longest_name-#name), version); |
11556
d4b735272a61
prosodyctl about: Report libexpat version if known
Matthew Wild <mwild1@gmail.com>
parents:
11533
diff
changeset
|
549 |
end |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
550 |
print(""); |
11007
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
551 |
print("# library versions"); |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
552 |
if require "prosody.net.server".event_base then |
11007
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
553 |
library_versions["libevent"] = require"luaevent".core.libevent_version(); |
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
554 |
end |
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
555 |
for name, version in sorted_pairs(library_versions) do |
c82ede8892fc
prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents:
11006
diff
changeset
|
556 |
print(name..":"..string.rep(" ", longest_name-#name), version); |
4324
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
557 |
end |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
558 |
print(""); |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
559 |
end |
5e7cba840409
prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents:
4167
diff
changeset
|
560 |
|
4335
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
561 |
function commands.reload(arg) |
12268
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
562 |
local opts = parse_args(arg, only_help); |
ba712f7559dc
prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents:
12107
diff
changeset
|
563 |
if opts.help then |
4476
53ce21286b8c
prosodyctl: Adjust description of 'reload' command (thanks crocket)
Matthew Wild <mwild1@gmail.com>
parents:
4336
diff
changeset
|
564 |
show_usage([[reload]], [[Reload Prosody's configuration and re-open log files]]); |
12269
47d5233a1fc7
prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents:
12268
diff
changeset
|
565 |
return 0; |
4335
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
566 |
end |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
567 |
|
10612
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
568 |
service_command_warning("reload"); |
87003b937672
Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents:
10582
diff
changeset
|
569 |
|
4335
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
570 |
if not prosodyctl.isrunning() then |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
571 |
show_message("Prosody is not running"); |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
572 |
return 1; |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
573 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
574 |
|
4335
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
575 |
local ok, ret = prosodyctl.reload(); |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
576 |
if ok then |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
577 |
|
4336
abcbcb15205c
prosodyctl: Update message on reload success
Matthew Wild <mwild1@gmail.com>
parents:
4335
diff
changeset
|
578 |
show_message("Prosody log files re-opened and config file reloaded. You may need to reload modules for some changes to take effect."); |
4335
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
579 |
return 0; |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
580 |
end |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
581 |
|
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
582 |
show_message(error_messages[ret]); |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
583 |
return 1; |
3a2a01432b5c
Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents:
4334
diff
changeset
|
584 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
585 |
-- ejabberdctl compatibility |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
586 |
|
12593
39ae08180c81
compat: Remove handling of Lua 5.1 location of 'unpack' function
Kim Alvefur <zash@zash.se>
parents:
12582
diff
changeset
|
587 |
local unpack = table.unpack; |
7923
1db51061342b
prosodyctl: Handle move of 'unpack' in Lua 5.2
Kim Alvefur <zash@zash.se>
parents:
7682
diff
changeset
|
588 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
589 |
function commands.register(arg) |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
590 |
local user, host, password = unpack(arg); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
591 |
if (not (user and host)) or arg[1] == "--help" then |
1102
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
592 |
if user ~= "--help" then |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
593 |
if not user then |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
594 |
show_message [[No username specified]] |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
595 |
elseif not host then |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
596 |
show_message [[Please specify which host you want to register the user on]]; |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
597 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
598 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
599 |
show_usage("register USER HOST [PASSWORD]", "Register a user on the server, with the given password"); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
600 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
601 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
602 |
if not password then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
603 |
password = read_password(); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
604 |
if not password then |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
605 |
show_message [[Unable to register user with no password]]; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
606 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
607 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
608 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
609 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
610 |
local ok, msg = prosodyctl.adduser { user = user, host = host, password = password }; |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
611 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
612 |
if ok then return 0; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
613 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
614 |
show_message(error_messages[msg]) |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
615 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
616 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
617 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
618 |
function commands.unregister(arg) |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
619 |
local user, host = unpack(arg); |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
620 |
if (not (user and host)) or arg[1] == "--help" then |
1102
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
621 |
if user ~= "--help" then |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
622 |
if not user then |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
623 |
show_message [[No username specified]] |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
624 |
elseif not host then |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
625 |
show_message [[Please specify which host you want to unregister the user from]]; |
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
626 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
627 |
end |
1102
c81df501fd38
prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents:
1089
diff
changeset
|
628 |
show_usage("unregister USER HOST [PASSWORD]", "Permanently remove a user account from the server"); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
629 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
630 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
631 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
632 |
local ok, msg = prosodyctl.deluser { user = user, host = host }; |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
633 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
634 |
if ok then return 0; end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
635 |
|
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
636 |
show_message(error_messages[msg]) |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
637 |
return 1; |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
638 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
639 |
|
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
640 |
--------------------- |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
641 |
|
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
642 |
local async = require "prosody.util.async"; |
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
643 |
local server = require "prosody.net.server"; |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
644 |
local watchers = { |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
645 |
error = function (_, err) |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
646 |
error(err); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
647 |
end; |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
648 |
waiting = function () |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
649 |
server.loop(); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
650 |
end; |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
651 |
}; |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
652 |
local command_runner = async.runner(function () |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
653 |
if command and command:match("^mod_") then -- Is a command in a module |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
654 |
local module_name = command:match("^mod_(.+)"); |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
655 |
do |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
656 |
local ret, err = modulemanager.load("*", module_name); |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
657 |
if not ret then |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
658 |
show_message("Failed to load module '"..module_name.."': "..err); |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
659 |
os.exit(1); |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
660 |
end |
1390
ef672c9fe7c9
prosodyctl: Allow commands to be implemented in modules
Matthew Wild <mwild1@gmail.com>
parents:
1205
diff
changeset
|
661 |
end |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
662 |
|
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
663 |
local module = modulemanager.get_module("*", module_name); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
664 |
if not module then |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
665 |
show_message("Failed to load module '"..module_name.."': Unknown error"); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
666 |
os.exit(1); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
667 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
668 |
|
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
669 |
if not modulemanager.module_has_method(module, "command") then |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
670 |
show_message("Fail: mod_"..module_name.." does not support any commands"); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
671 |
os.exit(1); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
672 |
end |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
673 |
|
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
674 |
local ok, ret = modulemanager.call_module_method(module, "command", arg); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
675 |
if ok then |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
676 |
if type(ret) == "number" then |
12867
891edd1ebde6
util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
677 |
os.exit(ret, true); |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
678 |
elseif type(ret) == "string" then |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
679 |
show_message(ret); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
680 |
end |
12867
891edd1ebde6
util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
681 |
os.exit(0, true); -- :) |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
682 |
else |
13061
20b1526772d2
prosodyctl: Fix using variable content in a format string
Matthew Wild <mwild1@gmail.com>
parents:
12867
diff
changeset
|
683 |
show_message("Failed to execute command: %s", error_messages[ret]); |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
684 |
os.exit(1); -- :( |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
685 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
686 |
end |
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
687 |
|
10909
709255e332d8
prosodyctl: Fix traceback when no command provided (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
10875
diff
changeset
|
688 |
if command and not commands[command] then |
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
689 |
local ok, command_module = pcall(require, "prosody.util.prosodyctl."..command); |
10875
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
690 |
if ok and command_module[command] then |
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
691 |
commands[command] = command_module[command]; |
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
692 |
end |
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
693 |
end |
e5dee71d0ebb
prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
10862
diff
changeset
|
694 |
|
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
695 |
if not commands[command] then -- Show help for all commands |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
696 |
function show_usage(usage, desc) |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
697 |
print(string.format(" %-11s %s", usage, desc)); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
698 |
end |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
699 |
|
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
700 |
print("prosodyctl - Manage a Prosody server"); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
701 |
print(""); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
702 |
print("Usage: "..arg[0].." COMMAND [OPTIONS]"); |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
703 |
print(""); |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
704 |
print("Where COMMAND may be one of:"); |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
705 |
|
12975
7214baed9e9d
executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
12958
diff
changeset
|
706 |
local hidden_commands = require "prosody.util.set".new{ "register", "unregister" }; |
12106
949c2b52f51e
prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents:
11888
diff
changeset
|
707 |
local commands_order = { |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
708 |
"Process management:", |
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
709 |
"start"; "stop"; "restart"; "reload"; "status"; |
11695
a6c18f434d7b
prosodyctl: Add 'shell' to command listing
Kim Alvefur <zash@zash.se>
parents:
11694
diff
changeset
|
710 |
"shell", |
12106
949c2b52f51e
prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents:
11888
diff
changeset
|
711 |
"User management:", |
949c2b52f51e
prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents:
11888
diff
changeset
|
712 |
"adduser"; "passwd"; "deluser"; |
949c2b52f51e
prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents:
11888
diff
changeset
|
713 |
"Plugin management:", |
949c2b52f51e
prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents:
11888
diff
changeset
|
714 |
"install"; "remove"; "list"; |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
715 |
"Informative:", |
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
716 |
"about", |
11694
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
717 |
"check", |
11696
d1e7f5b2f524
prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents:
11695
diff
changeset
|
718 |
"Other:", |
d1e7f5b2f524
prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents:
11695
diff
changeset
|
719 |
"cert", |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
720 |
}; |
11694
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
721 |
-- These live in util.prosodyctl.$command so we have their short help here. |
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
722 |
local external_commands = { |
11696
d1e7f5b2f524
prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents:
11695
diff
changeset
|
723 |
cert = "Certificate management commands", |
11694
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
724 |
check = "Perform basic checks on your Prosody installation", |
11695
a6c18f434d7b
prosodyctl: Add 'shell' to command listing
Kim Alvefur <zash@zash.se>
parents:
11694
diff
changeset
|
725 |
shell = "Interact with a running Prosody", |
11694
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
726 |
} |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
727 |
|
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
728 |
local done = {}; |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
729 |
|
12107
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
730 |
if prosody.installed and has_init_system() then |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
731 |
-- Hide start, stop, restart |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
732 |
done[table.remove(commands_order, 2)] = true; |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
733 |
done[table.remove(commands_order, 2)] = true; |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
734 |
done[table.remove(commands_order, 2)] = true; |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
735 |
end |
fc297128c33a
prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents:
12106
diff
changeset
|
736 |
|
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
737 |
for _, command_name in ipairs(commands_order) do |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
738 |
local command_func = commands[command_name]; |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
739 |
if command_func then |
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
740 |
command_func{ "--help" }; |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
741 |
done[command_name] = true; |
11694
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
742 |
elseif external_commands[command_name] then |
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
743 |
show_usage(command_name, external_commands[command_name]); |
4e36a1e7222b
prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents:
11591
diff
changeset
|
744 |
done[command_name] = true; |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
745 |
else |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
746 |
print"" |
11586
a3d48204ec95
prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents:
11567
diff
changeset
|
747 |
print(command_name); |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
748 |
end |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
749 |
end |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
750 |
|
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
751 |
for command_name, command_func in pairs(commands) do |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
752 |
if not done[command_name] and not hidden_commands:contains(command_name) then |
8674
a4899174a894
prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents:
8671
diff
changeset
|
753 |
command_func{ "--help" }; |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
754 |
done[command_name] = true; |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
755 |
end |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
756 |
end |
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
757 |
|
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
758 |
|
12867
891edd1ebde6
util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
759 |
os.exit(0, true); |
1087
5e9475bec571
prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
760 |
end |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
761 |
|
12867
891edd1ebde6
util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents:
12456
diff
changeset
|
762 |
os.exit(commands[command](arg), true); |
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
763 |
end, watchers); |
7925
2fd20f372cb1
prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
7923
diff
changeset
|
764 |
|
8655
03bb534593cb
prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents:
8638
diff
changeset
|
765 |
command_runner:run(true); |