Annotate

prosodyctl @ 13057:20b1526772d2 0.12

prosodyctl: Fix using variable content in a format string This broke if the error message contained a format specified such as '%s'.
author Matthew Wild <mwild1@gmail.com>
date Fri, 07 Apr 2023 15:54:59 +0100
parent 12863:891edd1ebde6
child 13059:a47bd6ea7626
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
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 --
7297
b34a42a10c9f prosody, prosodyctl: Allow setting CFG_* variables via Lua interpreter before loading Prosody. Fixes #308.
Matthew Wild <mwild1@gmail.com>
parents: 7267
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: 7267
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: 7267
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: 7267
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);
11884
248477e45c64 prosodyctl: Fix weird indentation
Kim Alvefur <zash@zash.se>
parents: 11812
diff changeset
22 return ((path_sep == "/" and path:sub(1,1) ~= "/")
248477e45c64 prosodyctl: Fix weird indentation
Kim Alvefur <zash@zash.se>
parents: 11812
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
8635
47e3b8b6f17a prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents: 8561
diff changeset
45 -----------
1580
5be6dc582df3 prosodyctl: Also switch group when we switch user
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
46
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
47 local startup = require "util.startup";
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
48 startup.prosodyctl();
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
49
8635
47e3b8b6f17a prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents: 8561
diff changeset
50 -----------
3339
7893055e54d1 prosodyctl: Warn and exit if any log files are not writeable, fixes #94
Matthew Wild <mwild1@gmail.com>
parents: 3338
diff changeset
51
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
52 local configmanager = require "core.configmanager";
5023
dcc8e789df36 mod_admin_telnet, prosody, prosodyctl, ejabberd2prosody: Don't depend on modules setting globals
Florian Zeitz <florob@babelmonkeys.de>
parents: 4881
diff changeset
53 local modulemanager = require "core.modulemanager"
dcc8e789df36 mod_admin_telnet, prosody, prosodyctl, ejabberd2prosody: Don't depend on modules setting globals
Florian Zeitz <florob@babelmonkeys.de>
parents: 4881
diff changeset
54 local prosodyctl = require "util.prosodyctl"
6784
4da860edc27c prosodyctl: Import LuaSocket to a local, don't assume that a global will be set
Kim Alvefur <zash@zash.se>
parents: 6751
diff changeset
55 local socket = require "socket"
8635
47e3b8b6f17a prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents: 8561
diff changeset
56 local dependencies = require "util.dependencies";
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
57 local lfs = dependencies.softreq "lfs";
8198
db82ce3decee prosody, prosodyctl: Set up TLS settings for HTTPS requests in net.http (part of fix for #659)
Kim Alvefur <zash@zash.se>
parents: 8190
diff changeset
58
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 -----------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
61 local parse_args = require "util.argparse".parse;
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
62 local human_io = require "util.human.io";
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
63
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
64 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
65 local show_usage = prosodyctl.show_usage;
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
66 local read_password = human_io.read_password;
10207
4c755c2e6305 prosodyctl: Install, remove and list commands now use the call_luarocks function
João Duarte <jvsDuarte08@gmail.com>
parents: 10202
diff changeset
67 local call_luarocks = prosodyctl.call_luarocks;
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
68 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
69
6324
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
70 local jid_split = require "util.jid".prepped_split;
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
71
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
72 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
73 -----------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 local commands = {};
9780
c7727c13260f prosodyctl: Pass the original argv table to subcommands (with first argument removed)
Kim Alvefur <zash@zash.se>
parents: 9709
diff changeset
75 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
76
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
77 local only_help = { short_params = { h = "help"; ["?"] = "help" } }
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
78
10141
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
79 function commands.install(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
80 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
81 if opts.help or not arg[1] then
10172
5da519ef2d51 prosodyctl: Corrected the help output of the install and remove commands
João Duarte <jvsDuarte08@gmail.com>
parents: 10170
diff changeset
82 show_usage([[install]], [[Installs a prosody/luarocks plugin]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
83 return opts.help and 0 or 1;
10147
1a35b3a2b11b prosodyctl: Corrected indentation on my code
João Duarte <jvsDuarte08@gmail.com>
parents: 10146
diff changeset
84 end
11135
56490ffde93f util.prosodyctl: Get Luarocks server from config
Kim Alvefur <zash@zash.se>
parents: 11134
diff changeset
85 -- TODO finalize config option name
12267
a52a0680fcd8 prosodyctl: Allow passing server on command line with --server
Kim Alvefur <zash@zash.se>
parents: 12266
diff changeset
86 local server = opts.server or configmanager.get("*", "plugin_server");
12266
24b0c4c4e28a prosodyctl: Allow install plugin via explicit path or URL
Kim Alvefur <zash@zash.se>
parents: 12265
diff changeset
87 if not (arg[1]:match("^https://") or lfs.attributes(arg[1]) or server) then
11295
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
88 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: 11294
diff changeset
89 -- see https://prosody.im/doc/TODO documentation
11301
d7f0dc727a47 prosodyctl: Add reference to #1602 (plugin installer docs) in comment
Kim Alvefur <zash@zash.se>
parents: 11300
diff changeset
90 -- #1602
11295
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
91 return 1;
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
92 end
11300
d0d64655e584 prosodyctl: Move message after condition
Kim Alvefur <zash@zash.se>
parents: 11297
diff changeset
93 show_message("Installing %s in %s", arg[1], prosody.paths.installer);
11295
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
94 local ret = call_luarocks("install", arg[1], server);
12266
24b0c4c4e28a prosodyctl: Allow install plugin via explicit path or URL
Kim Alvefur <zash@zash.se>
parents: 12265
diff changeset
95 if ret == 0 and arg[1]:match("^mod_") then
11297
2e9d4c517919 prosodyctl: Fix copypaste oversight
Kim Alvefur <zash@zash.se>
parents: 11295
diff changeset
96 prosodyctl.show_module_configuration_help(arg[1]);
11294
a1939b261f67 prosodyctl: Move UI related calls out of util.prosodyctl
Kim Alvefur <zash@zash.se>
parents: 11293
diff changeset
97 end
11293
cd27ac5e5afe prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents: 11247
diff changeset
98 return ret;
10141
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
99 end
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
100
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
101 function commands.remove(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
102 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
103 if opts.help or not arg[1] then
10202
d3764eed7ded prosodyctl: Fixed a typo
João Duarte <jvsDuarte08@gmail.com>
parents: 10190
diff changeset
104 show_usage([[remove]], [[Removes a module installed in the working directory's plugins folder]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
105 return opts.help and 0 or 1;
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
106 end
11294
a1939b261f67 prosodyctl: Move UI related calls out of util.prosodyctl
Kim Alvefur <zash@zash.se>
parents: 11293
diff changeset
107 show_message("Removing %s from %s", arg[1], prosody.paths.installer);
11293
cd27ac5e5afe prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents: 11247
diff changeset
108 local ret = call_luarocks("remove", arg[1]);
cd27ac5e5afe prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents: 11247
diff changeset
109 return ret;
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
110 end
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
111
10126
ad640c2e072e prosodyctl: Implemented the 'list' command, which is a bridge to 'luarocks list'
João Duarte <jvsDuarte08@gmail.com>
parents: 10125
diff changeset
112 function commands.list(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
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: 12103
diff changeset
114 if opts.help then
10135
3ae2809030dd prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents: 10134
diff changeset
115 show_usage([[list]], [[Shows installed rocks]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
116 return 0;
10135
3ae2809030dd prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents: 10134
diff changeset
117 end
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
118 local server = opts.server or configmanager.get("*", "plugin_server");
12292
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
119 if opts.outdated then
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
120 -- put this back for luarocks
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
121 arg[1] = "--outdated";
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
122
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
123 if not server then
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
124 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: 12435
diff changeset
125 return 1;
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
126 end
12292
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
127 end
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
128 local ret = call_luarocks("list", arg[1], server);
11293
cd27ac5e5afe prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents: 11247
diff changeset
129 return ret;
10126
ad640c2e072e prosodyctl: Implemented the 'list' command, which is a bridge to 'luarocks list'
João Duarte <jvsDuarte08@gmail.com>
parents: 10125
diff changeset
130 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
131
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
132 function commands.adduser(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
133 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
134 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
135 show_usage([[adduser JID]], [[Create the specified user account in Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
136 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
137 end
6324
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
138 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
139 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
140 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
141 show_usage [[adduser user@host]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
144
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145 if not host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146 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
147 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
148 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
149
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
150 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
151 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
152 show_warning("The user will not be able to log in until this is changed.");
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
153 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
154 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
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 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
157 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
158 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
159 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
160
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
161 local password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
162 if not password then return 1; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
163
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
164 local ok, msg = prosodyctl.adduser { user = user, host = host, password = password };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
165
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
166 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
167
10369
9d20fca6a485 prosodyctl: Print friendly version of error messages
Kim Alvefur <zash@zash.se>
parents: 10270
diff changeset
168 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
169 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
170 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
171
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
172 function commands.passwd(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
173 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
174 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
175 show_usage([[passwd JID]], [[Set the password for the specified user account in Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
176 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
177 end
5610
f73d5fb4ea13 prosodyctl: Use jid.split() to parse parameter to adduser/deluser/passwd
Matthew Wild <mwild1@gmail.com>
parents: 5592
diff changeset
178 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
179 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
180 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
181 show_usage [[passwd user@host]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
182 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
183 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
184
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
185 if not host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
186 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
187 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
188 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
189
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
190 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
191 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
192 show_warning("The user will not be able to log in until this is changed.");
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
193 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
194 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
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 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
197 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
198 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
199 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
200
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
201 local password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
202 if not password then return 1; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
203
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
204 local ok, msg = prosodyctl.passwd { user = user, host = host, password = password };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
205
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
206 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
207
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
208 show_message(error_messages[msg])
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
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
211
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
212 function commands.deluser(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
213 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
214 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
215 show_usage([[deluser JID]], [[Permanently remove the specified user account from Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
216 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
217 end
6324
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
218 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
219 if not user and host then
7676
7311dc843718 prosodyctl: Fix copy/paste error in help text for deluser command
Matthew Wild <mwild1@gmail.com>
parents: 6498
diff changeset
220 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: 6498
diff changeset
221 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
222 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
223 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
224
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
225 if not host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
226 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
227 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
228 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
229
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
230 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
231 show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
232 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
233 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
234
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
235 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
236 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
237 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
238 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
239
5101
a94c43cad081 prosodyctl: Use util.prosodyctl.deluser
Kim Alvefur <zash@zash.se>
parents: 5024
diff changeset
240 local ok, msg = prosodyctl.deluser { user = user, host = host };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
241
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
242 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
243
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
244 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
245 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
246 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
247
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
248 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: 12102
diff changeset
249 lfs = lfs or require"lfs";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
250 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: 12102
diff changeset
251 return "systemd";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
252 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: 12102
diff changeset
253 return "rc.d";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
254 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
255 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
256
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
257 local function service_command_warning(service_command)
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
258 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: 10578
diff changeset
259 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: 10578
diff changeset
260 show_warning(" if Prosody is managed by an init system - use that directly instead.");
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
261 local init = has_init_system()
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
262 if init == "systemd" then
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
263 show_warning(" e.g. systemctl %s prosody", service_command);
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
264 elseif init == "rc.d" then
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
265 show_warning(" e.g. /etc/init.d/prosody %s", service_command);
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
266 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
267 show_warning("");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
268 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
269 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
270
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
271 function commands.start(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
272 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
273 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
274 show_usage([[start]], [[Start Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
275 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
276 end
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
277 service_command_warning("start");
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
278 local ok, ret = prosodyctl.isrunning();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
279 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
280 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
281 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
282 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
283
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
284 if ret then
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
285 --luacheck: ignore 421/ret
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
286 local ok, ret = prosodyctl.getpid();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
287 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
288 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
289 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
290 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
291 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
292 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
293 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
294 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
295
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
296 --luacheck: ignore 411/ret
10064
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
297 local lua;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
298 do
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
299 local i = 0;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
300 repeat
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
301 i = i - 1;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
302 until arg[i-1] == nil
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
303 lua = arg[i];
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
304 end
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
305 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
306 if ok then
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
307 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
308 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
309 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
310 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
311 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
312 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
313 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
314 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
315 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
316 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
317 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
318 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
319 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
320 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
321 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
322 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
323 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
324 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
325 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
326 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
327 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
328 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
329 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
330
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
331 show_message("Failed to start Prosody");
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
332 show_message(error_messages[ret])
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
333 return 1;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
334 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
335
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
336 function commands.status(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
337 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
338 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
339 show_usage([[status]], [[Reports the running status of Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
340 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
341 end
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
342
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
343 local ok, ret = prosodyctl.isrunning();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
344 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
345 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
346 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
347 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
348
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
349 if ret then
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
350 --luacheck: ignore 421/ret
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
351 local ok, ret = prosodyctl.getpid();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
352 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
353 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
354 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
355 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
356 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
357 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
358 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
359 else
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
360 show_message("Prosody is not running");
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
361 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
362 print("\nNote:")
07b2b5942957 prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents: 1120
diff changeset
363 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
364 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
365 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
366 end
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
367 return 2
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
368 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
369 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
370
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
371 function commands.stop(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
372 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
373 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
374 show_usage([[stop]], [[Stop a running Prosody server]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
375 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
376 end
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
377
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
378 service_command_warning("stop");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
379
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
380 if not prosodyctl.isrunning() then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
381 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
382 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
383 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
384
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
385 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
386 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
387 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
388 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
389 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
390 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
391 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
392 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
393 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
394 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
395 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
396 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
397 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
398 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
399 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
400 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
401 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
402 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
403 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
404
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
405 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
406 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
407 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
408
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
409 function commands.restart(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
410 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
411 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
412 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
413 return 1;
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
414 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
415
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
416 service_command_warning("restart");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
417
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
418 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
419 return commands.start(arg);
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
420 end
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
421
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
422 function commands.about(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
423 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
424 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
425 show_usage([[about]], [[Show information about this Prosody installation]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
426 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
427 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
428
6584
c3a56f8847ac prosodyctl: Show relative paths in about
Kim Alvefur <zash@zash.se>
parents: 6501
diff changeset
429 local pwd = ".";
11002
b0766f2603e9 prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents: 10964
diff changeset
430 local sorted_pairs = require "util.iterators".sorted_pairs;
6587
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
431 local hg = require"util.mercurial";
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
432 local relpath = configmanager.resolve_relative_path;
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
433
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
434 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
435 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
436 print("# Prosody directories");
8635
47e3b8b6f17a prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents: 8561
diff changeset
437 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: 8561
diff changeset
438 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: 8561
diff changeset
439 print("Source directory: "..relpath(pwd, prosody.paths.source or "."));
6587
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
440 print("Plugin directories:")
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
441 print(" "..(prosody.paths.plugins:gsub("([^;]+);?", function(path)
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
442 path = configmanager.resolve_relative_path(pwd, path);
6587
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
443 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: 6586
diff changeset
444 if not hgid and hgrepo then
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
445 return path.." - "..hgrepo .."!\n ";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
446 end
6611
65dd3770bcb0 prosodyctl: Document magic commit ID
Paul Aurich <paul@darkrain42.org>
parents: 6587
diff changeset
447 -- 010452cfaf53 is the first commit in the prosody-modules repository
6587
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
448 hgrepo = hgrepo == "010452cfaf53" and "prosody-modules";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
449 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: 6586
diff changeset
450 .."\n ";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
451 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
452 print("");
9826
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
453 local have_pposix, pposix = pcall(require, "util.pposix");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
454 if have_pposix and pposix.uname then
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
455 print("# Operating system");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
456 local uname, err = pposix.uname();
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
457 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: 9798
diff changeset
458 print("");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
459 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
460 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
461 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
462 print("");
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("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
464 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
465 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
466 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
467 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
468 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
469 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
470 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
471 end
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("");
8701
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
473 local luarocks_status = "Not installed"
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
474 if pcall(require, "luarocks.loader") then
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
475 luarocks_status = "Installed (2.x+)";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
476 if package.loaded["luarocks.cfg"] then
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
477 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: 8671
diff changeset
478 end
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
479 elseif pcall(require, "luarocks.require") then
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
480 luarocks_status = "Installed (1.x)";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
481 end
4333
040193dead77 prosodyctl: Add info about the presence of LuaRocks to 'about' command
Matthew Wild <mwild1@gmail.com>
parents: 4331
diff changeset
482 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
483 print("");
9856
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
484 print("# Network");
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
485 print("");
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
486 print("Backend: "..require "net.server".get_backend());
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
487 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
488 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
489 local module_versions, longest_name = {}, 8;
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
490 local library_versions = {};
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
491 dependencies.softreq"ssl";
9991
8cd180dc18a8 prosodyctl: Include version of LuaDBI in 'about'
Kim Alvefur <zash@zash.se>
parents: 9856
diff changeset
492 dependencies.softreq"DBI";
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
493 dependencies.softreq"readline";
11004
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
494 local friendly_names = {
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
495 DBI = "LuaDBI";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
496 lfs = "LuaFileSystem";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
497 lunbound = "luaunbound";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
498 lxp = "LuaExpat";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
499 socket = "LuaSocket";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
500 ssl = "LuaSec";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
501 };
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
502 local alternate_version_fields = {
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
503 -- These diverge from the module._VERSION convention
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
504 readline = "Version";
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
505 }
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
506 local lunbound = dependencies.softreq"lunbound";
11560
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
507 local lxp = dependencies.softreq"lxp";
11563
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
508 local hashes = dependencies.softreq"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
509 for name, module in pairs(package.loaded) do
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
510 local version_field = alternate_version_fields[name] or "_VERSION";
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
511 if type(module) == "table" and rawget(module, version_field)
11004
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
512 and name ~= "_G" and not name:match("%.") then
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
513 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
514 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
515 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
516 end
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
517 local mod_version = module[version_field];
11005
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
518 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: 11004
diff changeset
519 mod_version = mod_version:sub(#name+2);
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
520 end
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
521 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
522 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
523 end
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
524 if lunbound then
11006
8ac958938e0f prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents: 11005
diff changeset
525 if not module_versions["luaunbound"] then
8ac958938e0f prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents: 11005
diff changeset
526 module_versions["luaunbound"] = "0.5 (?)";
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
527 end
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
528 library_versions["libunbound"] = lunbound._LIBVER;
7249
c49f69bb68f7 prosodyctl: Include libevent version in "about" output if luaevent is available
Kim Alvefur <zash@zash.se>
parents: 7213
diff changeset
529 end
11552
d4b735272a61 prosodyctl about: Report libexpat version if known
Matthew Wild <mwild1@gmail.com>
parents: 11529
diff changeset
530 if lxp then
11560
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
531 library_versions["libexpat"] = lxp._EXPAT_VERSION;
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
532 end
11563
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
533 if hashes then
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
534 library_versions["libcrypto"] = hashes._LIBCRYPTO_VERSION;
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
535 end
11002
b0766f2603e9 prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents: 10964
diff changeset
536 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: 10964
diff changeset
537 print(name..":"..string.rep(" ", longest_name-#name), version);
11552
d4b735272a61 prosodyctl about: Report libexpat version if known
Matthew Wild <mwild1@gmail.com>
parents: 11529
diff changeset
538 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
539 print("");
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
540 print("# library versions");
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
541 if require "net.server".event_base then
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
542 library_versions["libevent"] = require"luaevent".core.libevent_version();
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
543 end
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
544 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: 11002
diff changeset
545 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
546 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
547 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
548 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
549
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
550 function commands.reload(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
551 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
552 if opts.help then
4476
53ce21286b8c prosodyctl: Adjust description of 'reload' command (thanks crocket)
Matthew Wild <mwild1@gmail.com>
parents: 4336
diff changeset
553 show_usage([[reload]], [[Reload Prosody's configuration and re-open log files]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
554 return 0;
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
555 end
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
556
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
557 service_command_warning("reload");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
558
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
559 if not prosodyctl.isrunning() then
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
560 show_message("Prosody is not running");
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
561 return 1;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
562 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
563
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
564 local ok, ret = prosodyctl.reload();
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
565 if ok then
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
566
4336
abcbcb15205c prosodyctl: Update message on reload success
Matthew Wild <mwild1@gmail.com>
parents: 4335
diff changeset
567 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
568 return 0;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
569 end
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
570
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
571 show_message(error_messages[ret]);
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
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
574 -- ejabberdctl compatibility
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
575
7920
1db51061342b prosodyctl: Handle move of 'unpack' in Lua 5.2
Kim Alvefur <zash@zash.se>
parents: 7679
diff changeset
576 local unpack = table.unpack or unpack; -- luacheck: ignore 113
1db51061342b prosodyctl: Handle move of 'unpack' in Lua 5.2
Kim Alvefur <zash@zash.se>
parents: 7679
diff changeset
577
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
578 function commands.register(arg)
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
579 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
580 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
581 if user ~= "--help" then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
582 if not user then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
583 show_message [[No username specified]]
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
584 elseif not host then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
585 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
586 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
587 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
588 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
589 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
590 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
591 if not password then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
592 password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
593 if not password then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
594 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
595 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
596 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
597 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
598
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
599 local ok, msg = prosodyctl.adduser { user = user, host = host, password = password };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
600
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
601 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
602
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
603 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
604 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
605 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
606
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
607 function commands.unregister(arg)
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
608 local user, host = unpack(arg);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
609 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
610 if user ~= "--help" then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
611 if not user then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
612 show_message [[No username specified]]
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
613 elseif not host then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
614 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
615 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
616 end
1102
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
617 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
618 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
619 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
620
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
621 local ok, msg = prosodyctl.deluser { user = user, host = host };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
622
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
623 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
624
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
625 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
626 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
627 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
628
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
629 ---------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
630
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
631 local async = require "util.async";
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
632 local server = require "net.server";
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
633 local watchers = {
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
634 error = function (_, err)
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
635 error(err);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
636 end;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
637 waiting = function ()
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
638 server.loop();
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
639 end;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
640 };
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
641 local command_runner = async.runner(function ()
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
642 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: 8635
diff changeset
643 local module_name = command:match("^mod_(.+)");
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
644 do
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
645 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: 8668
diff changeset
646 if not ret then
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
647 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: 8668
diff changeset
648 os.exit(1);
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
649 end
1390
ef672c9fe7c9 prosodyctl: Allow commands to be implemented in modules
Matthew Wild <mwild1@gmail.com>
parents: 1205
diff changeset
650 end
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
651
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
652 local module = modulemanager.get_module("*", module_name);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
653 if not module then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
654 show_message("Failed to load module '"..module_name.."': Unknown error");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
655 os.exit(1);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
656 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
657
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
658 if not modulemanager.module_has_method(module, "command") then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
659 show_message("Fail: mod_"..module_name.." does not support any commands");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
660 os.exit(1);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
661 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
662
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
663 local ok, ret = modulemanager.call_module_method(module, "command", arg);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
664 if ok then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
665 if type(ret) == "number" then
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
666 os.exit(ret, true);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
667 elseif type(ret) == "string" then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
668 show_message(ret);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
669 end
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
670 os.exit(0, true); -- :)
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
671 else
13057
20b1526772d2 prosodyctl: Fix using variable content in a format string
Matthew Wild <mwild1@gmail.com>
parents: 12863
diff changeset
672 show_message("Failed to execute command: %s", error_messages[ret]);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
673 os.exit(1); -- :(
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
674 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
675 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
676
10905
709255e332d8 prosodyctl: Fix traceback when no command provided (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents: 10871
diff changeset
677 if command and not commands[command] then
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
678 local ok, command_module = pcall(require, "util.prosodyctl."..command);
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
679 if ok and command_module[command] then
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
680 commands[command] = command_module[command];
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
681 end
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
682 end
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
683
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
684 if not commands[command] then -- Show help for all commands
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
685 function show_usage(usage, desc)
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
686 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
687 end
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
688
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
689 print("prosodyctl - Manage a Prosody server");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
690 print("");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
691 print("Usage: "..arg[0].." COMMAND [OPTIONS]");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
692 print("");
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
693 print("Where COMMAND may be one of:");
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
694
11247
4e803e80d7b1 prosodyctl: Remove non-existant command from hidden commands
Kim Alvefur <zash@zash.se>
parents: 11135
diff changeset
695 local hidden_commands = require "util.set".new{ "register", "unregister" };
12102
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
696 local commands_order = {
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
697 "Process management:",
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
698 "start"; "stop"; "restart"; "reload"; "status";
11691
a6c18f434d7b prosodyctl: Add 'shell' to command listing
Kim Alvefur <zash@zash.se>
parents: 11690
diff changeset
699 "shell",
12102
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
700 "User management:",
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
701 "adduser"; "passwd"; "deluser";
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
702 "Plugin management:",
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
703 "install"; "remove"; "list";
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
704 "Informative:",
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
705 "about",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
706 "check",
11692
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
707 "Other:",
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
708 "cert",
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
709 };
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
710 -- 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: 11587
diff changeset
711 local external_commands = {
11692
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
712 cert = "Certificate management commands",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
713 check = "Perform basic checks on your Prosody installation",
11691
a6c18f434d7b prosodyctl: Add 'shell' to command listing
Kim Alvefur <zash@zash.se>
parents: 11690
diff changeset
714 shell = "Interact with a running Prosody",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
715 }
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
716
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
717 local done = {};
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
718
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
719 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: 12102
diff changeset
720 -- Hide start, stop, restart
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
721 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: 12102
diff changeset
722 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: 12102
diff changeset
723 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: 12102
diff changeset
724 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
725
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
726 for _, command_name in ipairs(commands_order) do
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
727 local command_func = commands[command_name];
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
728 if command_func then
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
729 command_func{ "--help" };
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
730 done[command_name] = true;
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
731 elseif external_commands[command_name] then
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
732 show_usage(command_name, external_commands[command_name]);
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
733 done[command_name] = true;
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
734 else
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
735 print""
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
736 print(command_name);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
737 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
738 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
739
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
740 for command_name, command_func in pairs(commands) do
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
741 if not done[command_name] and not hidden_commands:contains(command_name) then
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
742 command_func{ "--help" };
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
743 done[command_name] = true;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
744 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
745 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
746
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
747
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
748 os.exit(0, true);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
749 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
750
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
751 os.exit(commands[command](arg), true);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
752 end, watchers);
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
753
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
754 command_runner:run(true);