Annotate

prosodyctl @ 13014:06453c564141

util.startup: Add prosody.started promise to easily execute code after startup To avoid a race where server-started fires before the promise function body is run (on next tick), I moved server-started to fire on the next tick, which seems sensible anyway. Errors are logged, I'm not sure if we ought to be doing something more here. I'm sure we'll find out.
author Matthew Wild <mwild1@gmail.com>
date Sat, 01 Apr 2023 11:56:38 +0100
parent 12971:7214baed9e9d
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
12578
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
47 -- Check before first require, to preempt the probable failure
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
48 if _VERSION < "Lua 5.2" then
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
49 io.stderr:write("Prosody is no longer compatible with Lua 5.1\n")
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
50 io.stderr:write("See https://prosody.im/doc/depends#lua for more information\n")
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
51 return os.exit(1);
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
52 end
10bb58ad5583 executables: Reject Lua 5.1 early
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
53
12954
4f2accd99373 executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents: 12864
diff changeset
54 if not pcall(require, "prosody.loader") then
4f2accd99373 executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents: 12864
diff changeset
55 pcall(require, "loader");
4f2accd99373 executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents: 12864
diff changeset
56 end
4f2accd99373 executables: Invoke loader to allow mixing of old and new import style
Kim Alvefur <zash@zash.se>
parents: 12864
diff changeset
57
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
58 local startup = require "prosody.util.startup";
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
59 startup.prosodyctl();
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
60
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
61 -----------
3339
7893055e54d1 prosodyctl: Warn and exit if any log files are not writeable, fixes #94
Matthew Wild <mwild1@gmail.com>
parents: 3338
diff changeset
62
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
63 local configmanager = require "prosody.core.configmanager";
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
64 local modulemanager = require "prosody.core.modulemanager"
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
65 local prosodyctl = require "prosody.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
66 local socket = require "socket"
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
67 local dependencies = require "prosody.util.dependencies";
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
68 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
69
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70 -----------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
72 local parse_args = require "prosody.util.argparse".parse;
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
73 local human_io = require "prosody.util.human.io";
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
74
4142
caa78589598f prosodyctl, util.prosodyctl: Move UI functions to util.prosodyctl so they can be used outside of prosodyctl itself
Matthew Wild <mwild1@gmail.com>
parents: 4095
diff changeset
75 local show_message, show_warning = prosodyctl.show_message, prosodyctl.show_warning;
caa78589598f prosodyctl, util.prosodyctl: Move UI functions to util.prosodyctl so they can be used outside of prosodyctl itself
Matthew Wild <mwild1@gmail.com>
parents: 4095
diff changeset
76 local show_usage = prosodyctl.show_usage;
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
77 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
78 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
79 local error_messages = prosodyctl.error_messages;
1459
545208bc0e84 prosodyctl: Use prosodyctl_timeout option if it exists in the config
Matthew Wild <mwild1@gmail.com>
parents: 1458
diff changeset
80
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
81 local jid_split = require "prosody.util.jid".prepped_split;
6324
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
82
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
83 local prosodyctl_timeout = (configmanager.get("*", "prosodyctl_timeout") or 5) * 2;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 -----------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 local commands = {};
9780
c7727c13260f prosodyctl: Pass the original argv table to subcommands (with first argument removed)
Kim Alvefur <zash@zash.se>
parents: 9709
diff changeset
86 local command = table.remove(arg, 1);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
88 local only_help = { short_params = { h = "help"; ["?"] = "help" } }
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
89
10141
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
90 function commands.install(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
91 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
92 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
93 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
94 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
95 end
11135
56490ffde93f util.prosodyctl: Get Luarocks server from config
Kim Alvefur <zash@zash.se>
parents: 11134
diff changeset
96 -- 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
97 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
98 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
99 show_warning("There is no 'plugin_server' option in the configuration file");
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
100 -- 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
101 -- #1602
11295
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
102 return 1;
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
103 end
11300
d0d64655e584 prosodyctl: Move message after condition
Kim Alvefur <zash@zash.se>
parents: 11297
diff changeset
104 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
105 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
106 if ret == 0 and arg[1]:match("^mod_") then
11297
2e9d4c517919 prosodyctl: Fix copypaste oversight
Kim Alvefur <zash@zash.se>
parents: 11295
diff changeset
107 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
108 end
11293
cd27ac5e5afe prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents: 11247
diff changeset
109 return ret;
10141
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
110 end
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
111
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
112 function commands.remove(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 or not arg[1] then
10202
d3764eed7ded prosodyctl: Fixed a typo
João Duarte <jvsDuarte08@gmail.com>
parents: 10190
diff changeset
115 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
116 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
117 end
11294
a1939b261f67 prosodyctl: Move UI related calls out of util.prosodyctl
Kim Alvefur <zash@zash.se>
parents: 11293
diff changeset
118 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
119 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
120 return ret;
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
121 end
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
122
10126
ad640c2e072e prosodyctl: Implemented the 'list' command, which is a bridge to 'luarocks list'
João Duarte <jvsDuarte08@gmail.com>
parents: 10125
diff changeset
123 function commands.list(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
124 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
125 if opts.help then
10135
3ae2809030dd prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents: 10134
diff changeset
126 show_usage([[list]], [[Shows installed rocks]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
127 return 0;
10135
3ae2809030dd prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents: 10134
diff changeset
128 end
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
129 local server = opts.server or configmanager.get("*", "plugin_server");
12292
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
130 if opts.outdated then
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
131 -- put this back for luarocks
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
132 arg[1] = "--outdated";
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
133
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
134 if not server then
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
135 show_warning("There is no 'plugin_server' option in the configuration file, but this is needed for 'list --outdated' to work.");
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
136 return 1;
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
137 end
12292
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
138 end
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
139 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
140 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
141 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143 function commands.adduser(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
144 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
145 if opts.help or not arg[1] then
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146 show_usage([[adduser JID]], [[Create the specified user account in Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
147 return opts.help and 0 or 1;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
148 end
6324
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
149 local user, host = jid_split(arg[1]);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
150 if not user and host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
151 show_message [[Failed to understand JID, please supply the JID you want to create]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
152 show_usage [[adduser user@host]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
153 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
154 end
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 not host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
157 show_message [[Please specify a JID, including a host. e.g. alice@example.com]];
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
158 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
159 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
160
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
161 if not prosody.hosts[host] then
3038
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
162 show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
163 show_warning("The user will not be able to log in until this is changed.");
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
164 prosody.hosts[host] = startup.make_host(host); --luacheck: ignore 122
3038
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
165 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
166
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
167 if prosodyctl.user_exists{ user = user, host = host } then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
168 show_message [[That user already exists]];
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
169 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
170 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
171
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
172 local password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
173 if not password then return 1; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
174
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
175 local ok, msg = prosodyctl.adduser { user = user, host = host, password = password };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
176
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
177 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
178
10369
9d20fca6a485 prosodyctl: Print friendly version of error messages
Kim Alvefur <zash@zash.se>
parents: 10270
diff changeset
179 show_message(error_messages[msg])
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
180 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
181 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
182
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
183 function commands.passwd(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
184 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
185 if opts.help or not arg[1] then
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
186 show_usage([[passwd JID]], [[Set the password for the specified user account in Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
187 return opts.help and 0 or 1;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
188 end
5610
f73d5fb4ea13 prosodyctl: Use jid.split() to parse parameter to adduser/deluser/passwd
Matthew Wild <mwild1@gmail.com>
parents: 5592
diff changeset
189 local user, host = jid_split(arg[1]);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
190 if not user and host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
191 show_message [[Failed to understand JID, please supply the JID you want to set the password for]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
192 show_usage [[passwd user@host]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
193 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
194 end
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 host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
197 show_message [[Please specify a JID, including a host. e.g. alice@example.com]];
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
198 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
199 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
200
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
201 if not prosody.hosts[host] then
3038
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
202 show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
203 show_warning("The user will not be able to log in until this is changed.");
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
204 prosody.hosts[host] = startup.make_host(host); --luacheck: ignore 122
3038
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
205 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
206
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
207 if not prosodyctl.user_exists { user = user, host = host } then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
208 show_message [[That user does not exist, use prosodyctl adduser to create a new user]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
209 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
210 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
211
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
212 local password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
213 if not password then return 1; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
214
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
215 local ok, msg = prosodyctl.passwd { user = user, host = host, password = password };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
216
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
217 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
218
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
219 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
220 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
221 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
222
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
223 function commands.deluser(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
224 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
225 if opts.help or not arg[1] then
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
226 show_usage([[deluser JID]], [[Permanently remove the specified user account from Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
227 return opts.help and 0 or 1;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
228 end
6324
c9730926002b prosodyctl: Improve JID splitting and normalization for adduser/passwd/deluser
Matthew Wild <mwild1@gmail.com>
parents: 6035
diff changeset
229 local user, host = jid_split(arg[1]);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
230 if not user and host then
7676
7311dc843718 prosodyctl: Fix copy/paste error in help text for deluser command
Matthew Wild <mwild1@gmail.com>
parents: 6498
diff changeset
231 show_message [[Failed to understand JID, please supply the JID to the user account you want to delete]]
7311dc843718 prosodyctl: Fix copy/paste error in help text for deluser command
Matthew Wild <mwild1@gmail.com>
parents: 6498
diff changeset
232 show_usage [[deluser user@host]]
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
233 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
234 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
235
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
236 if not host then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
237 show_message [[Please specify a JID, including a host. e.g. alice@example.com]];
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
238 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
239 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
240
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
241 if not prosody.hosts[host] then
3038
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
242 show_warning("The host '%s' is not listed in the configuration file (or is not enabled).", host)
8718
c23cdeac5b61 prosodyctl: Use prosody.hosts instead of _G.hosts
Kim Alvefur <zash@zash.se>
parents: 8701
diff changeset
243 prosody.hosts[host] = startup.make_host(host); --luacheck: ignore 122
3038
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
244 end
6b68355d615a prosodyctl: Support for the new usermanager, refactor host creation and fail if a host is not using the default authentication provider, for now. (thanks Nicola)
Matthew Wild <mwild1@gmail.com>
parents: 3015
diff changeset
245
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
246 if not prosodyctl.user_exists { user = user, host = host } then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
247 show_message [[That user does not exist on this server]]
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
248 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
249 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
250
5101
a94c43cad081 prosodyctl: Use util.prosodyctl.deluser
Kim Alvefur <zash@zash.se>
parents: 5024
diff changeset
251 local ok, msg = prosodyctl.deluser { user = user, host = host };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
252
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
253 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
254
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
255 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
256 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
257 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
258
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
259 local function has_init_system() --> which
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
260 lfs = lfs or require"lfs";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
261 if lfs.attributes("/etc/systemd") then
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
262 return "systemd";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
263 elseif lfs.attributes("/etc/init.d/prosody") then
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
264 return "rc.d";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
265 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
266 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
267
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
268 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
269 if prosody.installed and configmanager.get("*", "prosodyctl_service_warnings") ~= false then
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
270 show_warning("WARNING: Use of prosodyctl start/stop/restart/reload is not recommended");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
271 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
272 local init = has_init_system()
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
273 if init == "systemd" then
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
274 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
275 elseif init == "rc.d" then
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
276 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
277 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
278 show_warning("");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
279 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
280 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
281
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
282 function commands.start(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
283 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
284 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
285 show_usage([[start]], [[Start Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
286 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
287 end
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
288 service_command_warning("start");
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
289 local ok, ret = prosodyctl.isrunning();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
290 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
291 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
292 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
293 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
294
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
295 if ret then
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 421/ret
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
297 local ok, ret = prosodyctl.getpid();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
298 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
299 show_message("Couldn't get running Prosody's PID");
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
300 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
301 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
302 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
303 show_message("Prosody is already running with PID %s", ret or "(unknown)");
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
304 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
305 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
306
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
307 --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
308 local lua;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
309 do
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
310 local i = 0;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
311 repeat
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
312 i = i - 1;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
313 until arg[i-1] == nil
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
314 lua = arg[i];
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
315 end
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
316 local ok, ret = prosodyctl.start(prosody.paths.source, lua);
1458
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
317 if ok then
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
318 local daemonize = configmanager.get("*", "daemonize");
6062
6cc6b4d407df prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents: 6038
diff changeset
319 if daemonize == nil then
6cc6b4d407df prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents: 6038
diff changeset
320 daemonize = prosody.installed;
6cc6b4d407df prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents: 6038
diff changeset
321 end
6cc6b4d407df prosodyctl, util.prosodyctl: Update to reflect that mod_posix gets loaded by default on posix platforms
Kim Alvefur <zash@zash.se>
parents: 6038
diff changeset
322 if daemonize then
2511
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
323 local i=1;
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
324 while true do
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
325 local ok, running = prosodyctl.isrunning();
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
326 if ok and running then
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
327 break;
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
328 elseif i == 5 then
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
329 show_message("Still waiting...");
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
330 elseif i >= prosodyctl_timeout then
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
331 show_message("Prosody is still not running. Please give it some time or check your log files for errors.");
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
332 return 2;
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
333 end
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
334 socket.sleep(0.5);
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
335 i = i + 1;
1458
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
336 end
2511
a81c710b1708 prosodyctl: Don't display message about failing to start Prosody is daemonizing is disabled (if daemonizing is disabled then Prosody is stopped by the time control returns to prosodyctl, which then can't see Prosody running)
Matthew Wild <mwild1@gmail.com>
parents: 2510
diff changeset
337 show_message("Started");
1458
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
338 end
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
339 return 0;
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
340 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
341
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
342 show_message("Failed to start Prosody");
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
343 show_message(error_messages[ret])
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
344 return 1;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
345 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
346
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
347 function commands.status(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
348 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
349 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
350 show_usage([[status]], [[Reports the running status of Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
351 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
352 end
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
353
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
354 local ok, ret = prosodyctl.isrunning();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
355 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
356 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
357 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
358 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
359
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
360 if ret then
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
361 --luacheck: ignore 421/ret
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
362 local ok, ret = prosodyctl.getpid();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
363 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
364 show_message("Couldn't get running Prosody's PID");
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
365 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
366 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
367 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
368 show_message("Prosody is running with PID %s", ret or "(unknown)");
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
369 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
370 else
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
371 show_message("Prosody is not running");
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
372 if not prosody.switched_user and prosody.current_uid ~= 0 then
1122
07b2b5942957 prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents: 1120
diff changeset
373 print("\nNote:")
07b2b5942957 prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents: 1120
diff changeset
374 print(" You will also see this if prosodyctl is not running under");
07b2b5942957 prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents: 1120
diff changeset
375 print(" the same user account as Prosody. Try running as root (e.g. ");
07b2b5942957 prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents: 1120
diff changeset
376 print(" with 'sudo' in front) to gain access to Prosody's real status.");
1115
8a7bc1a5eae6 prosodyctl: status: Show warning if we can't find a running Prosody, and we didn't switch user
Matthew Wild <mwild1@gmail.com>
parents: 1114
diff changeset
377 end
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
378 return 2
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
379 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
380 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
381
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
382 function commands.stop(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
383 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
384 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
385 show_usage([[stop]], [[Stop a running Prosody server]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
386 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
387 end
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
388
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
389 service_command_warning("stop");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
390
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
391 if not prosodyctl.isrunning() then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
392 show_message("Prosody is not running");
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
393 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
394 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
395
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
396 local ok, ret = prosodyctl.stop();
1458
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
397 if ok then
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
398 local i=1;
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
399 while true do
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
400 local ok, running = prosodyctl.isrunning();
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
401 if ok and not running then
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
402 break;
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
403 elseif i == 5 then
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
404 show_message("Still waiting...");
1459
545208bc0e84 prosodyctl: Use prosodyctl_timeout option if it exists in the config
Matthew Wild <mwild1@gmail.com>
parents: 1458
diff changeset
405 elseif i >= prosodyctl_timeout then
1458
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
406 show_message("Prosody is still running. Please give it some time or check your log files for errors.");
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
407 return 2;
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
408 end
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
409 socket.sleep(0.5);
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
410 i = i + 1;
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
411 end
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
412 show_message("Stopped");
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
413 return 0;
fce75b4efda9 prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
Matthew Wild <mwild1@gmail.com>
parents: 1390
diff changeset
414 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
415
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
416 show_message(error_messages[ret]);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
417 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
418 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
419
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
420 function commands.restart(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
421 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
422 if opts.help then
2705
8a5af6f14c07 prosodyctl: Fix 'restart' command to not report itself as the 'stop' command (thanks albert!)
Matthew Wild <mwild1@gmail.com>
parents: 2696
diff changeset
423 show_usage([[restart]], [[Restart a running Prosody server]]);
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
424 return 1;
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
425 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
426
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
427 service_command_warning("restart");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
428
3724
c12ebbd4ab61 prosodyctl: Make the 'restart' command start Prosody even if it wasn't already running
Matthew Wild <mwild1@gmail.com>
parents: 3630
diff changeset
429 commands.stop(arg);
c12ebbd4ab61 prosodyctl: Make the 'restart' command start Prosody even if it wasn't already running
Matthew Wild <mwild1@gmail.com>
parents: 3630
diff changeset
430 return commands.start(arg);
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
431 end
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
432
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
433 function commands.about(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
434 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
435 if opts.help then
4331
9c45858e3208 prosodyctl: Fix 'about' command to not show up where it shouldn't...
Matthew Wild <mwild1@gmail.com>
parents: 4324
diff changeset
436 show_usage([[about]], [[Show information about this Prosody installation]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
437 return 0;
4331
9c45858e3208 prosodyctl: Fix 'about' command to not show up where it shouldn't...
Matthew Wild <mwild1@gmail.com>
parents: 4324
diff changeset
438 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
439
6584
c3a56f8847ac prosodyctl: Show relative paths in about
Kim Alvefur <zash@zash.se>
parents: 6501
diff changeset
440 local pwd = ".";
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
441 local sorted_pairs = require "prosody.util.iterators".sorted_pairs;
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
442 local hg = require"prosody.util.mercurial";
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
443 local relpath = configmanager.resolve_relative_path;
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
444
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
445 print("Prosody "..(prosody.version or "(unknown version)"));
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
446 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
447 print("# Prosody directories");
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
448 print("Data directory: "..relpath(pwd, prosody.paths.data));
47e3b8b6f17a prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents: 8561
diff changeset
449 print("Config directory: "..relpath(pwd, prosody.paths.config or "."));
47e3b8b6f17a prosody, prosodyctl, util.startup: Finally factor out startup-related and common code into a separate module
Matthew Wild <mwild1@gmail.com>
parents: 8561
diff changeset
450 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
451 print("Plugin directories:")
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
452 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
453 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
454 local hgid, hgrepo = hg.check_id(path);
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
455 if not hgid and hgrepo then
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
456 return path.." - "..hgrepo .."!\n ";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
457 end
6611
65dd3770bcb0 prosodyctl: Document magic commit ID
Paul Aurich <paul@darkrain42.org>
parents: 6587
diff changeset
458 -- 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
459 hgrepo = hgrepo == "010452cfaf53" and "prosody-modules";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
460 return path..(hgid and " - "..(hgrepo or "HG").." rev: "..hgid or "")
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
461 .."\n ";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
462 end)));
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
463 print("");
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
464 local have_pposix, pposix = pcall(require, "prosody.util.pposix");
9826
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
465 if have_pposix and pposix.uname then
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
466 print("# Operating system");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
467 local uname, err = pposix.uname();
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
468 print(uname and uname.sysname .. " " .. uname.release or "Unknown POSIX", err or "");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
469 print("");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
470 end
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
471 print("# Lua environment");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
472 print("Lua version: ", _G._VERSION);
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
473 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
474 print("Lua module search paths:");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
475 for path in package.path:gmatch("[^;]+") do
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
476 print(" "..path);
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
477 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
478 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
479 print("Lua C module search paths:");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
480 for path in package.cpath:gmatch("[^;]+") do
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
481 print(" "..path);
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
482 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
483 print("");
8701
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
484 local luarocks_status = "Not installed"
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
485 if pcall(require, "luarocks.loader") then
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
486 luarocks_status = "Installed (2.x+)";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
487 if package.loaded["luarocks.cfg"] then
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
488 luarocks_status = "Installed ("..(package.loaded["luarocks.cfg"].program_version or "2.x+")..")";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
489 end
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
490 elseif pcall(require, "luarocks.require") then
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
491 luarocks_status = "Installed (1.x)";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
492 end
4333
040193dead77 prosodyctl: Add info about the presence of LuaRocks to 'about' command
Matthew Wild <mwild1@gmail.com>
parents: 4331
diff changeset
493 print("LuaRocks: ", luarocks_status);
040193dead77 prosodyctl: Add info about the presence of LuaRocks to 'about' command
Matthew Wild <mwild1@gmail.com>
parents: 4331
diff changeset
494 print("");
9856
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
495 print("# Network");
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
496 print("");
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
497 print("Backend: "..require "prosody.net.server".get_backend());
9856
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
498 print("");
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
499 print("# Lua module versions");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
500 local module_versions, longest_name = {}, 8;
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
501 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
502 dependencies.softreq"ssl";
9991
8cd180dc18a8 prosodyctl: Include version of LuaDBI in 'about'
Kim Alvefur <zash@zash.se>
parents: 9856
diff changeset
503 dependencies.softreq"DBI";
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
504 dependencies.softreq"readline";
11004
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
505 local friendly_names = {
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
506 DBI = "LuaDBI";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
507 lfs = "LuaFileSystem";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
508 lunbound = "luaunbound";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
509 lxp = "LuaExpat";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
510 socket = "LuaSocket";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
511 ssl = "LuaSec";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
512 };
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
513 local alternate_version_fields = {
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
514 -- These diverge from the module._VERSION convention
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
515 readline = "Version";
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
516 }
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
517 local lunbound = dependencies.softreq"lunbound";
11560
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
518 local lxp = dependencies.softreq"lxp";
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
519 local hashes = dependencies.softreq"prosody.util.hashes";
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
520 for name, module in pairs(package.loaded) do
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
521 local version_field = alternate_version_fields[name] or "_VERSION";
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
522 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
523 and name ~= "_G" and not name:match("%.") then
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
524 name = friendly_names[name] or name;
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
525 if #name > longest_name then
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
526 longest_name = #name;
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
527 end
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
528 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
529 if tostring(mod_version):sub(1, #name+1) == name .. " " then
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
530 mod_version = mod_version:sub(#name+2);
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
531 end
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
532 module_versions[name] = mod_version;
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
533 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
534 end
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
535 if lunbound then
11006
8ac958938e0f prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents: 11005
diff changeset
536 if not module_versions["luaunbound"] then
8ac958938e0f prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents: 11005
diff changeset
537 module_versions["luaunbound"] = "0.5 (?)";
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
538 end
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
539 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
540 end
11552
d4b735272a61 prosodyctl about: Report libexpat version if known
Matthew Wild <mwild1@gmail.com>
parents: 11529
diff changeset
541 if lxp then
11560
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
542 library_versions["libexpat"] = lxp._EXPAT_VERSION;
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
543 end
11563
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
544 if hashes then
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
545 library_versions["libcrypto"] = hashes._LIBCRYPTO_VERSION;
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
546 end
11002
b0766f2603e9 prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents: 10964
diff changeset
547 for name, version in sorted_pairs(module_versions) do
b0766f2603e9 prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents: 10964
diff changeset
548 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
549 end
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
550 print("");
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
551 print("# library versions");
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
552 if require "prosody.net.server".event_base then
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
553 library_versions["libevent"] = require"luaevent".core.libevent_version();
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
554 end
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
555 for name, version in sorted_pairs(library_versions) do
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
556 print(name..":"..string.rep(" ", longest_name-#name), version);
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
557 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
558 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
559 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
560
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
561 function commands.reload(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
562 local opts = parse_args(arg, only_help);
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
563 if opts.help then
4476
53ce21286b8c prosodyctl: Adjust description of 'reload' command (thanks crocket)
Matthew Wild <mwild1@gmail.com>
parents: 4336
diff changeset
564 show_usage([[reload]], [[Reload Prosody's configuration and re-open log files]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
565 return 0;
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
566 end
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
567
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
568 service_command_warning("reload");
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
569
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
570 if not prosodyctl.isrunning() then
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
571 show_message("Prosody is not running");
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
572 return 1;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
573 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
574
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
575 local ok, ret = prosodyctl.reload();
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
576 if ok then
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
577
4336
abcbcb15205c prosodyctl: Update message on reload success
Matthew Wild <mwild1@gmail.com>
parents: 4335
diff changeset
578 show_message("Prosody log files re-opened and config file reloaded. You may need to reload modules for some changes to take effect.");
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
579 return 0;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
580 end
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
581
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
582 show_message(error_messages[ret]);
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
583 return 1;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
584 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
585 -- ejabberdctl compatibility
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
586
12589
39ae08180c81 compat: Remove handling of Lua 5.1 location of 'unpack' function
Kim Alvefur <zash@zash.se>
parents: 12578
diff changeset
587 local unpack = table.unpack;
7920
1db51061342b prosodyctl: Handle move of 'unpack' in Lua 5.2
Kim Alvefur <zash@zash.se>
parents: 7679
diff changeset
588
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
589 function commands.register(arg)
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
590 local user, host, password = unpack(arg);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
591 if (not (user and host)) or arg[1] == "--help" then
1102
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
592 if user ~= "--help" then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
593 if not user then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
594 show_message [[No username specified]]
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
595 elseif not host then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
596 show_message [[Please specify which host you want to register the user on]];
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
597 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
598 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
599 show_usage("register USER HOST [PASSWORD]", "Register a user on the server, with the given password");
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
600 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
601 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
602 if not password then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
603 password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
604 if not password then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
605 show_message [[Unable to register user with no password]];
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
606 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
607 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
608 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
609
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
610 local ok, msg = prosodyctl.adduser { user = user, host = host, password = password };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
611
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
612 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
613
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
614 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
615 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
616 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
617
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
618 function commands.unregister(arg)
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
619 local user, host = unpack(arg);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
620 if (not (user and host)) or arg[1] == "--help" then
1102
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
621 if user ~= "--help" then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
622 if not user then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
623 show_message [[No username specified]]
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
624 elseif not host then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
625 show_message [[Please specify which host you want to unregister the user from]];
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
626 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
627 end
1102
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
628 show_usage("unregister USER HOST [PASSWORD]", "Permanently remove a user account from the server");
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
629 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
630 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
631
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
632 local ok, msg = prosodyctl.deluser { user = user, host = host };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
633
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
634 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
635
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
636 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
637 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
638 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
639
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
640 ---------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
641
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
642 local async = require "prosody.util.async";
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
643 local server = require "prosody.net.server";
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
644 local watchers = {
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
645 error = function (_, err)
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
646 error(err);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
647 end;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
648 waiting = function ()
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
649 server.loop();
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
650 end;
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 command_runner = async.runner(function ()
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
653 if command and command:match("^mod_") then -- Is a command in a module
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
654 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
655 do
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
656 local ret, err = modulemanager.load("*", module_name);
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
657 if not ret then
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
658 show_message("Failed to load module '"..module_name.."': "..err);
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
659 os.exit(1);
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
660 end
1390
ef672c9fe7c9 prosodyctl: Allow commands to be implemented in modules
Matthew Wild <mwild1@gmail.com>
parents: 1205
diff changeset
661 end
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
662
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
663 local module = modulemanager.get_module("*", module_name);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
664 if not module then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
665 show_message("Failed to load module '"..module_name.."': Unknown error");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
666 os.exit(1);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
667 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
668
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
669 if not modulemanager.module_has_method(module, "command") then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
670 show_message("Fail: mod_"..module_name.." does not support any commands");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
671 os.exit(1);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
672 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
673
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
674 local ok, ret = modulemanager.call_module_method(module, "command", arg);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
675 if ok then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
676 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
677 os.exit(ret, true);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
678 elseif type(ret) == "string" then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
679 show_message(ret);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
680 end
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
681 os.exit(0, true); -- :)
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
682 else
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
683 show_message("Failed to execute command: "..error_messages[ret]);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
684 os.exit(1); -- :(
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
685 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
686 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
687
10905
709255e332d8 prosodyctl: Fix traceback when no command provided (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents: 10871
diff changeset
688 if command and not commands[command] then
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
689 local ok, command_module = pcall(require, "prosody.util.prosodyctl."..command);
10871
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
690 if ok and command_module[command] then
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
691 commands[command] = command_module[command];
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
692 end
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
693 end
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
694
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
695 if not commands[command] then -- Show help for all commands
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
696 function show_usage(usage, desc)
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
697 print(string.format(" %-11s %s", usage, desc));
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
698 end
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
699
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
700 print("prosodyctl - Manage a Prosody server");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
701 print("");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
702 print("Usage: "..arg[0].." COMMAND [OPTIONS]");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
703 print("");
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
704 print("Where COMMAND may be one of:");
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
705
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
706 local hidden_commands = require "prosody.util.set".new{ "register", "unregister" };
12102
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
707 local commands_order = {
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
708 "Process management:",
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
709 "start"; "stop"; "restart"; "reload"; "status";
11691
a6c18f434d7b prosodyctl: Add 'shell' to command listing
Kim Alvefur <zash@zash.se>
parents: 11690
diff changeset
710 "shell",
12102
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
711 "User management:",
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
712 "adduser"; "passwd"; "deluser";
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
713 "Plugin management:",
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
714 "install"; "remove"; "list";
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
715 "Informative:",
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
716 "about",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
717 "check",
11692
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
718 "Other:",
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
719 "cert",
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
720 };
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
721 -- These live in util.prosodyctl.$command so we have their short help here.
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
722 local external_commands = {
11692
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
723 cert = "Certificate management commands",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
724 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
725 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
726 }
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
727
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
728 local done = {};
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
729
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
730 if prosody.installed and has_init_system() then
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
731 -- Hide start, stop, restart
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
732 done[table.remove(commands_order, 2)] = true;
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
733 done[table.remove(commands_order, 2)] = true;
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
734 done[table.remove(commands_order, 2)] = true;
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
735 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
736
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
737 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
738 local command_func = commands[command_name];
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
739 if command_func then
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
740 command_func{ "--help" };
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
741 done[command_name] = true;
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
742 elseif external_commands[command_name] then
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
743 show_usage(command_name, external_commands[command_name]);
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
744 done[command_name] = true;
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
745 else
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
746 print""
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
747 print(command_name);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
748 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
749 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
750
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
751 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
752 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
753 command_func{ "--help" };
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
754 done[command_name] = true;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
755 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
756 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
757
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
758
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
759 os.exit(0, true);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
760 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
761
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
762 os.exit(commands[command](arg), true);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
763 end, watchers);
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
764
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
765 command_runner:run(true);