Annotate

prosodyctl @ 13674:1ba58459c919 13.0

mod_invites: Add shell commands to list, show and delete pending invitations
author Matthew Wild <mwild1@gmail.com>
date Thu, 13 Feb 2025 13:04:37 +0000
parent 13653:e0bbf85edc21
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
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
81 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
82 -----------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 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
84 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
85
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
86 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
87
10141
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
88 function commands.install(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
89 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
90 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
91 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
92 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
93 end
11135
56490ffde93f util.prosodyctl: Get Luarocks server from config
Kim Alvefur <zash@zash.se>
parents: 11134
diff changeset
94 -- 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
95 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
96 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
97 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
98 -- 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
99 -- #1602
11295
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
100 return 1;
50ea7d9143ad prosodyctl: Abort if no plugin source specified for the installer
Kim Alvefur <zash@zash.se>
parents: 11294
diff changeset
101 end
11300
d0d64655e584 prosodyctl: Move message after condition
Kim Alvefur <zash@zash.se>
parents: 11297
diff changeset
102 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
103 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
104 if ret == 0 and arg[1]:match("^mod_") then
11297
2e9d4c517919 prosodyctl: Fix copypaste oversight
Kim Alvefur <zash@zash.se>
parents: 11295
diff changeset
105 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
106 end
11293
cd27ac5e5afe prosodyctl: Use luarocks status code as exit code
Kim Alvefur <zash@zash.se>
parents: 11247
diff changeset
107 return ret;
10141
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
108 end
cf70deac27f6 prosodyctl: Added the 'install' command
João Duarte <jvsDuarte08@gmail.com>
parents: 10140
diff changeset
109
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
110 function commands.remove(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
111 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
112 if opts.help or not arg[1] then
10202
d3764eed7ded prosodyctl: Fixed a typo
João Duarte <jvsDuarte08@gmail.com>
parents: 10190
diff changeset
113 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
114 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
115 end
11294
a1939b261f67 prosodyctl: Move UI related calls out of util.prosodyctl
Kim Alvefur <zash@zash.se>
parents: 11293
diff changeset
116 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
117 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
118 return ret;
10161
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
119 end
ea10561e5566 prosodyctl: Corrected the remove and install commands' order
João Duarte <jvsDuarte08@gmail.com>
parents: 10160
diff changeset
120
10126
ad640c2e072e prosodyctl: Implemented the 'list' command, which is a bridge to 'luarocks list'
João Duarte <jvsDuarte08@gmail.com>
parents: 10125
diff changeset
121 function commands.list(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
122 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
123 if opts.help then
10135
3ae2809030dd prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents: 10134
diff changeset
124 show_usage([[list]], [[Shows installed rocks]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
125 return 0;
10135
3ae2809030dd prosodyctl: added help support to all my functions
João Duarte <jvsDuarte08@gmail.com>
parents: 10134
diff changeset
126 end
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
127 local server = opts.server or configmanager.get("*", "plugin_server");
12292
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
128 if opts.outdated then
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
129 -- put this back for luarocks
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
130 arg[1] = "--outdated";
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
131
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
132 if not server then
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
133 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
134 return 1;
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
135 end
12292
7fe5cd8a10e2 prosodyctl: Restore 'list --outdated'
Kim Alvefur <zash@zash.se>
parents: 12267
diff changeset
136 end
12452
c475a7802169 prosodyctl: Pass server when listing (outdated) plugins (fix #1738)
Kim Alvefur <zash@zash.se>
parents: 12435
diff changeset
137 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
138 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
139 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
140
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
141 function commands.adduser(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
142 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
143 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
144 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
145 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
146 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
147
13595
6fafe51df188 prosodyctl: adduser: use shell user:create() to provide the implementation
Matthew Wild <mwild1@gmail.com>
parents: 13167
diff changeset
148 local shell = require "prosody.util.prosodyctl.shell";
6fafe51df188 prosodyctl: adduser: use shell user:create() to provide the implementation
Matthew Wild <mwild1@gmail.com>
parents: 13167
diff changeset
149 return shell.shell({ ("user:create(%q, nil, %q)"):format(arg[1], "prosody:member") });
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
150 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
151
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
152 function commands.passwd(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
153 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
154 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
155 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
156 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
157 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
158
13599
54803fb5b4d4 prosodyctl: passwd: Use user:password() shell command for implementation
Matthew Wild <mwild1@gmail.com>
parents: 13595
diff changeset
159 local shell = require "prosody.util.prosodyctl.shell";
54803fb5b4d4 prosodyctl: passwd: Use user:password() shell command for implementation
Matthew Wild <mwild1@gmail.com>
parents: 13595
diff changeset
160 return shell.shell({ ("user:password(%q, nil)"):format(arg[1]) });
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
161 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
162
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
163 function commands.deluser(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
164 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
165 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
166 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
167 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
168 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
169
13600
854df134274f prosodyctl: deluser: Use user:delete() shell command for implementation
Matthew Wild <mwild1@gmail.com>
parents: 13599
diff changeset
170 local shell = require "prosody.util.prosodyctl.shell";
854df134274f prosodyctl: deluser: Use user:delete() shell command for implementation
Matthew Wild <mwild1@gmail.com>
parents: 13599
diff changeset
171 return shell.shell({ ("user:delete(%q)"):format(arg[1]) });
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
172 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
173
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
174 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
175 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
176 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
177 return "systemd";
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
178 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
179 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
180 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
181 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
182
10610
b9a054ad38e7 prosodyctl: Fix some luacheck warnings
Matthew Wild <mwild1@gmail.com>
parents: 10608
diff changeset
183 local function service_command_warning(service_command)
13653
e0bbf85edc21 prosodyctl: Fix check for whether to show init system warning
Matthew Wild <mwild1@gmail.com>
parents: 13651
diff changeset
184 if prosody.installed and configmanager.get("*", "prosodyctl_service_warnings") ~= false then
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
185 show_warning("ERROR: Use of 'prosodyctl %s' is disabled in this installation because", service_command);
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
186
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
187 local init = has_init_system()
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
188 if init then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
189 show_warning(" we detected that this system uses %s for managing services.", init);
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
190 show_warning("");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
191 show_warning(" To avoid problems, use that directly instead. For example:");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
192 show_warning("");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
193 if init == "systemd" then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
194 show_warning(" systemctl %s prosody", service_command);
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
195 elseif init == "rc.d" then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
196 show_warning(" /etc/init.d/prosody %s", service_command);
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
197 end
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
198 else
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
199 show_warning(" it may conflict with your system's service manager.");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
200 show_warning("");
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
201 end
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
202
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
203 show_warning(" Proceeding to use prosodyctl may cause process management issues.");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
204 show_warning(" You can pass --force to override this warning, or set");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
205 show_warning(" prosodyctl_service_warnings = false in your global config.");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
206
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
207 os.exit(1);
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
208 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
209 end
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
210
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
211 function commands.start(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
212 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
213 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
214 show_usage([[start]], [[Start Prosody]]);
12265
47d5233a1fc7 prosodyctl: Return success status code from --help
Kim Alvefur <zash@zash.se>
parents: 12264
diff changeset
215 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
216 end
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
217 if not opts.force then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
218 service_command_warning("start");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
219 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
220 local ok, ret = prosodyctl.isrunning();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
221 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
222 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
223 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
224 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
225
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
226 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
227 --luacheck: ignore 421/ret
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
228 local ok, ret = prosodyctl.getpid();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
229 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
230 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
231 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
232 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
233 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
234 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
235 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
236 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
237
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
238 --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
239 local lua;
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
240 do
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
241 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
242 repeat
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
243 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
244 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
245 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
246 end
1acfd25cd507 prosodyctl: Fix extraction of interpreter from arg when additional arguments (fixes #1386)
Kim Alvefur <zash@zash.se>
parents: 9992
diff changeset
247 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
248 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
249 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
250 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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 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
262 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
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
272
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
273 show_message("Failed to start Prosody");
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
274 show_message(error_messages[ret])
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
275 return 1;
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
276 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
277
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
278 function commands.status(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
279 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
280 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
281 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
282 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
283 end
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
284
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
285 local ok, ret = prosodyctl.isrunning();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
286 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
287 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
288 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
289 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
290
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
291 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
292 --luacheck: ignore 421/ret
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
293 local ok, ret = prosodyctl.getpid();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
294 if not ok then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
295 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
296 show_message(error_messages[ret]);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
297 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
298 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
299 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
300 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
301 else
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
302 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
303 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
304 print("\nNote:")
07b2b5942957 prosodyctl: Reformat note to fit in small-width terminals
Matthew Wild <mwild1@gmail.com>
parents: 1120
diff changeset
305 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
306 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
307 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
308 end
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
309 return 2
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
310 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
311 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
312
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
313 function commands.stop(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
314 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
315 if opts.help then
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
316 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
317 return 0;
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
318 end
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
319
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
320 if not opts.force then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
321 service_command_warning("stop");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
322 end
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
323
13646
4e7ac0e8dfc4 prosodyctl: stop: Fix detection of whether Prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13645
diff changeset
324 local ok, running = prosodyctl.isrunning();
4e7ac0e8dfc4 prosodyctl: stop: Fix detection of whether Prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13645
diff changeset
325 if not ok then
4e7ac0e8dfc4 prosodyctl: stop: Fix detection of whether Prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13645
diff changeset
326 show_message(error_messages[running]);
4e7ac0e8dfc4 prosodyctl: stop: Fix detection of whether Prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13645
diff changeset
327 return 1;
4e7ac0e8dfc4 prosodyctl: stop: Fix detection of whether Prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13645
diff changeset
328 elseif not running then
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
329 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
330 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
331 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
332
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
333 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
334 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
335 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
336 while true do
13649
d2969e163656 prosodyctl: Fix luacheck warning
Matthew Wild <mwild1@gmail.com>
parents: 13648
diff changeset
337 local ok, running = prosodyctl.isrunning(); --luacheck: ignore 421
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 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
339 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
340 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
341 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
342 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
343 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
344 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
345 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
346 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
347 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
348 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
349 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
350 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
351 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
352
1089
a817cbaa0f46 prosodyctl: Multiple fixes for start/status/stop
Matthew Wild <mwild1@gmail.com>
parents: 1087
diff changeset
353 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
354 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
355 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
356
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
357 function commands.restart(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
358 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
359 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
360 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
361 return 1;
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
362 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
363
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
364 if not opts.force then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
365 service_command_warning("restart");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
366 end
10608
87003b937672 Log warning when using prosodyctl start/stop/restart
Matthew Wild <mwild1@gmail.com>
parents: 10578
diff changeset
367
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
368 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
369 return commands.start(arg);
2696
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
370 end
cb5acafbec62 prosodyctl: Add restart command for KSid and johnny :)
Matthew Wild <mwild1@gmail.com>
parents: 2587
diff changeset
371
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
372 function commands.about(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
373 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
374 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
375 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
376 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
377 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
378
6584
c3a56f8847ac prosodyctl: Show relative paths in about
Kim Alvefur <zash@zash.se>
parents: 6501
diff changeset
379 local pwd = ".";
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
380 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
381 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
382 local relpath = configmanager.resolve_relative_path;
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
383
4324
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
384 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
385 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
386 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
387 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
388 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
389 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
390 print("Plugin directories:")
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
391 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
392 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
393 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
394 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
395 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
396 end
6611
65dd3770bcb0 prosodyctl: Document magic commit ID
Paul Aurich <paul@darkrain42.org>
parents: 6587
diff changeset
397 -- 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
398 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
399 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
400 .."\n ";
54306208f30b prosodyctl: Expand plugin paths and attempt to identify prosody-modules checkouts
Kim Alvefur <zash@zash.se>
parents: 6586
diff changeset
401 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
402 print("");
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
403 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
404 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
405 print("# Operating system");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
406 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
407 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
408 print("");
bdc2a024933b prosodyctl: about: Report the current operating system according to uname
Kim Alvefur <zash@zash.se>
parents: 9798
diff changeset
409 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
410 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
411 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
412 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
413 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
414 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
415 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
416 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
417 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
418 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
419 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
420 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
421 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
422 print("");
8701
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
423 local luarocks_status = "Not installed"
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
424 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
425 luarocks_status = "Installed (2.x+)";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
426 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
427 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
428 end
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
429 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
430 luarocks_status = "Installed (1.x)";
b7a22baaf55f prosodyctl: Increase robustness in luarocks version detection (fixes #1003)
Kim Alvefur <zash@zash.se>
parents: 8671
diff changeset
431 end
4333
040193dead77 prosodyctl: Add info about the presence of LuaRocks to 'about' command
Matthew Wild <mwild1@gmail.com>
parents: 4331
diff changeset
432 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
433 print("");
9856
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
434 print("# Network");
4be2af104bf0 prosodyctl about: Report network backend in use
Matthew Wild <mwild1@gmail.com>
parents: 9709
diff changeset
435 print("");
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
436 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
437 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
438 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
439 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
440 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
441 dependencies.softreq"ssl";
9991
8cd180dc18a8 prosodyctl: Include version of LuaDBI in 'about'
Kim Alvefur <zash@zash.se>
parents: 9856
diff changeset
442 dependencies.softreq"DBI";
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
443 dependencies.softreq"readline";
11004
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
444 local friendly_names = {
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
445 DBI = "LuaDBI";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
446 lfs = "LuaFileSystem";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
447 lunbound = "luaunbound";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
448 lxp = "LuaExpat";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
449 socket = "LuaSocket";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
450 ssl = "LuaSec";
d175de07dd73 prosodyctl about: Substitute better names for some Lua modules
Kim Alvefur <zash@zash.se>
parents: 11003
diff changeset
451 };
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
452 local alternate_version_fields = {
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
453 -- These diverge from the module._VERSION convention
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
454 readline = "Version";
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
455 }
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
456 local lunbound = dependencies.softreq"lunbound";
11560
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
457 local lxp = dependencies.softreq"lxp";
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
458 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
459 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
460 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
461 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
462 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
463 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
464 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
465 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
466 end
12435
1ee72c0013f3 prosodyctl about: Report version of lua-readline
Kim Alvefur <zash@zash.se>
parents: 12292
diff changeset
467 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
468 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
469 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
470 end
cff243aafdce prosodyctl about: Strip name from lua module _VERSION
Kim Alvefur <zash@zash.se>
parents: 11004
diff changeset
471 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
472 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
473 end
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
474 if lunbound then
11006
8ac958938e0f prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents: 11005
diff changeset
475 if not module_versions["luaunbound"] then
8ac958938e0f prosodyctl about: Show longer name for luaunbound
Kim Alvefur <zash@zash.se>
parents: 11005
diff changeset
476 module_versions["luaunbound"] = "0.5 (?)";
10964
d6a3d652ca32 prosodyctl about: Report versions of luaunbound and libunbound
Kim Alvefur <zash@zash.se>
parents: 10905
diff changeset
477 end
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
478 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
479 end
11552
d4b735272a61 prosodyctl about: Report libexpat version if known
Matthew Wild <mwild1@gmail.com>
parents: 11529
diff changeset
480 if lxp then
11560
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
481 library_versions["libexpat"] = lxp._EXPAT_VERSION;
3bbb1af92514 Merge 0.11->trunk
Matthew Wild <mwild1@gmail.com>
parents: 11301 11552
diff changeset
482 end
11563
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
483 if hashes then
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
484 library_versions["libcrypto"] = hashes._LIBCRYPTO_VERSION;
0983653cbfdf prosodyctl: Report OpenSSL version
Kim Alvefur <zash@zash.se>
parents: 11560
diff changeset
485 end
11002
b0766f2603e9 prosodyctl about: Use library function for sorted listing of lua modules
Kim Alvefur <zash@zash.se>
parents: 10964
diff changeset
486 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
487 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
488 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
489 print("");
11003
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
490 print("# library versions");
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
491 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
492 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
493 end
c82ede8892fc prosodyctl about: Split out libraries into a separate section
Kim Alvefur <zash@zash.se>
parents: 11002
diff changeset
494 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
495 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
496 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
497 print("");
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
498 end
5e7cba840409 prosodyctl: Add 'about' command to list Prosody version, directories, and various other stuff
Matthew Wild <mwild1@gmail.com>
parents: 4167
diff changeset
499
13609
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
500 function commands.version(arg)
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
501 local flags = { short_params = { h = "help"; ["?"] = "help", v = "verbose" } };
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
502 local opts = parse_args(arg, flags);
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
503 if opts.help then
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
504 show_usage("version [-v]", [[Show current Prosody version, or more]]);
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
505 return 0;
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
506 elseif opts.verbose then
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
507 return commands.about(arg);
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
508 end
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
509
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
510 print("Prosody "..(prosody.version or "(unknown version)"));
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
511 end
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
512
13610
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
513 function commands.lua_paths()
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
514 local function shell_escape(s)
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
515 return "'" .. tostring(s):gsub("'",[['\'']]) .. "'";
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
516 end
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
517
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
518 print("LUA_PATH="..shell_escape(package.path));
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
519 print("LUA_CPATH="..shell_escape(package.cpath));
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
520 end
ff0f4d1f16c8 prosodyctl: Add lua_paths command to print the LUA_PATH and LUA_CPATH used
Matthew Wild <mwild1@gmail.com>
parents: 13609
diff changeset
521
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
522 function commands.reload(arg)
12264
ba712f7559dc prosodyctl: Use argument parsing library to parse --help, -h, -?
Kim Alvefur <zash@zash.se>
parents: 12103
diff changeset
523 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
524 if opts.help then
4476
53ce21286b8c prosodyctl: Adjust description of 'reload' command (thanks crocket)
Matthew Wild <mwild1@gmail.com>
parents: 4336
diff changeset
525 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
526 return 0;
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
527 end
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
528
13644
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
529 local shell = require "prosody.util.prosodyctl.shell";
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
530 if shell.available() then
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
531 if arg[1] and arg[1]:match"^mod_" then
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
532 -- TODO reword the usage text, document
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
533 arg[1] = arg[1]:match("^mod_(.*)"); -- strip mod_ prefix
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
534 table.insert(arg, 1, "module");
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
535 table.insert(arg, 2, "reload");
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
536 return shell.shell(arg);
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
537 end
263ae995bc86 prosodyctl: reload: use admin socket to issue reload command, if available
Matthew Wild <mwild1@gmail.com>
parents: 13612
diff changeset
538 return shell.shell({ "config", "reload" });
13650
9a66b53a5076 prosodyctl: reload: Assume reload-via-socket if any arguments passed
Matthew Wild <mwild1@gmail.com>
parents: 13649
diff changeset
539 elseif arg[1] then
9a66b53a5076 prosodyctl: reload: Assume reload-via-socket if any arguments passed
Matthew Wild <mwild1@gmail.com>
parents: 13649
diff changeset
540 show_message("Admin socket not found - is it enabled and is Prosody running?");
9a66b53a5076 prosodyctl: reload: Assume reload-via-socket if any arguments passed
Matthew Wild <mwild1@gmail.com>
parents: 13649
diff changeset
541 return 1;
13167
6226f75f55a7 prosodyctl: Add experimental way to reload specific modules directly
Kim Alvefur <zash@zash.se>
parents: 13059
diff changeset
542 end
6226f75f55a7 prosodyctl: Add experimental way to reload specific modules directly
Kim Alvefur <zash@zash.se>
parents: 13059
diff changeset
543
13645
7f6f0e47624a prosodyctl: reload: Fix detection of whether prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13644
diff changeset
544 local ok, running = prosodyctl.isrunning();
7f6f0e47624a prosodyctl: reload: Fix detection of whether prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13644
diff changeset
545 if not ok then
7f6f0e47624a prosodyctl: reload: Fix detection of whether prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13644
diff changeset
546 show_message(error_messages[running]);
7f6f0e47624a prosodyctl: reload: Fix detection of whether prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13644
diff changeset
547 return 1;
7f6f0e47624a prosodyctl: reload: Fix detection of whether prosody is running
Matthew Wild <mwild1@gmail.com>
parents: 13644
diff changeset
548 elseif not running then
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
549 show_message("Prosody is not running");
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
550 return 1;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
551 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
552
13651
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
553 if not opts.force then
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
554 service_command_warning("reload");
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
555 end
b9d369f77121 prosodyctl: Further deprecate start/stop/restart commands when installed
Matthew Wild <mwild1@gmail.com>
parents: 13650
diff changeset
556
4335
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
557 local ok, ret = prosodyctl.reload();
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
558 if ok then
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
559
4336
abcbcb15205c prosodyctl: Update message on reload success
Matthew Wild <mwild1@gmail.com>
parents: 4335
diff changeset
560 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
561 return 0;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
562 end
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
563
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
564 show_message(error_messages[ret]);
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
565 return 1;
3a2a01432b5c Add "reload" command to prosodyctl
Vladimir Protasov <eoranged@ya.ru>
parents: 4334
diff changeset
566 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
567 -- ejabberdctl compatibility
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
568
12589
39ae08180c81 compat: Remove handling of Lua 5.1 location of 'unpack' function
Kim Alvefur <zash@zash.se>
parents: 12578
diff changeset
569 local unpack = table.unpack;
7920
1db51061342b prosodyctl: Handle move of 'unpack' in Lua 5.2
Kim Alvefur <zash@zash.se>
parents: 7679
diff changeset
570
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
571 function commands.register(arg)
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
572 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
573 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
574 if user ~= "--help" then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
575 if not user then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
576 show_message [[No username specified]]
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
577 elseif not host then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
578 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
579 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
580 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
581 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
582 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
583 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
584 if not password then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
585 password = read_password();
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
586 if not password then
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
587 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
588 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
589 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
590 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
591
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
592 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
593
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
594 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
595
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
596 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
597 return 1;
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
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
600 function commands.unregister(arg)
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
601 local user, host = unpack(arg);
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
602 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
603 if user ~= "--help" then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
604 if not user then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
605 show_message [[No username specified]]
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
606 elseif not host then
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
607 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
608 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
609 end
1102
c81df501fd38 prosodyctl: Hide ejabberd compatibility commands from command listing
Matthew Wild <mwild1@gmail.com>
parents: 1089
diff changeset
610 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
611 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
612 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
613
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
614 local ok, msg = prosodyctl.deluser { user = user, host = host };
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
615
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
616 if ok then return 0; end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
617
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
618 show_message(error_messages[msg])
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
619 return 1;
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
620 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
621
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
622 ---------------------
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
623
12971
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
624 local async = require "prosody.util.async";
7214baed9e9d executables: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12954
diff changeset
625 local server = require "prosody.net.server";
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
626 local watchers = {
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
627 error = function (_, err)
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
628 error(err);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
629 end;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
630 waiting = function ()
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
631 server.loop();
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
632 end;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
633 };
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
634 local command_runner = async.runner(function ()
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
635 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
636 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
637 do
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
638 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
639 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
640 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
641 os.exit(1);
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
642 end
1390
ef672c9fe7c9 prosodyctl: Allow commands to be implemented in modules
Matthew Wild <mwild1@gmail.com>
parents: 1205
diff changeset
643 end
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
644
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
645 local module = modulemanager.get_module("*", module_name);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
646 if not module then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
647 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
648 os.exit(1);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
649 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
650
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
651 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
652 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
653 os.exit(1);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
654 end
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
655
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
656 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
657 if ok then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
658 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
659 os.exit(ret, true);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
660 elseif type(ret) == "string" then
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
661 show_message(ret);
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
662 end
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
663 os.exit(0, true); -- :)
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
664 else
13057
20b1526772d2 prosodyctl: Fix using variable content in a format string
Matthew Wild <mwild1@gmail.com>
parents: 12863
diff changeset
665 show_message("Failed to execute command: %s", error_messages[ret]);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
666 os.exit(1); -- :(
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
667 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
668 end
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
669
10905
709255e332d8 prosodyctl: Fix traceback when no command provided (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents: 10871
diff changeset
670 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
671 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
672 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
673 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
674 end
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
675 end
e5dee71d0ebb prosodyctl+util.prosodyctl.*: Start breaking up the ever-growing prosodyctl
Matthew Wild <mwild1@gmail.com>
parents: 10858
diff changeset
676
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
677 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
678 function show_usage(usage, desc)
13609
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
679 print(string.format(" %-14s %s", usage, desc));
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
680 end
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
681
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
682 print("prosodyctl - Manage a Prosody server");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
683 print("");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
684 print("Usage: "..arg[0].." COMMAND [OPTIONS]");
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
685 print("");
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
686 print("Where COMMAND may be one of:");
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
687
13612
8617f5962e47 prosodyctl: Hide the 'lua_paths' command from default command listing
Kim Alvefur <zash@zash.se>
parents: 13610
diff changeset
688 local hidden_commands = require "prosody.util.set".new{ "register", "unregister", "lua_paths" };
12102
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
689 local commands_order = {
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
690 "Process management:",
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
691 "start"; "stop"; "restart"; "reload"; "status";
11691
a6c18f434d7b prosodyctl: Add 'shell' to command listing
Kim Alvefur <zash@zash.se>
parents: 11690
diff changeset
692 "shell",
12102
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
693 "User management:",
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
694 "adduser"; "passwd"; "deluser";
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
695 "Plugin management:",
949c2b52f51e prosodyctl: Reorder help sections
Kim Alvefur <zash@zash.se>
parents: 11884
diff changeset
696 "install"; "remove"; "list";
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
697 "Informative:",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
698 "check",
13609
c0b6b6a12228 prosodyctl: 'about' becomes 'version -v', 'version' prints only version
Matthew Wild <mwild1@gmail.com>
parents: 13606
diff changeset
699 "version",
11692
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
700 "Other:",
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
701 "cert",
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
702 };
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
703 -- 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
704 local external_commands = {
11692
d1e7f5b2f524 prosodyctl: Add cert to command listing
Kim Alvefur <zash@zash.se>
parents: 11691
diff changeset
705 cert = "Certificate management commands",
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
706 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
707 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
708 }
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
709
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
710 local done = {};
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
711
12103
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
712 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
713 -- 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
714 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
715 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
716 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
717 end
fc297128c33a prosodyctl: Hide process management commands when init system should be used instead
Kim Alvefur <zash@zash.se>
parents: 12102
diff changeset
718
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
719 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
720 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
721 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
722 command_func{ "--help" };
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
723 done[command_name] = true;
11690
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
724 elseif external_commands[command_name] then
4e36a1e7222b prosodyctl: Add 'check' to command listing (fixes #1622)
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
725 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
726 done[command_name] = true;
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
727 else
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
728 print""
11582
a3d48204ec95 prosodyctl: Reorganize help / command list
Kim Alvefur <zash@zash.se>
parents: 11563
diff changeset
729 print(command_name);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
730 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
731 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
732
8671
a4899174a894 prosodyctl: Large number of changes to satisfy [luacheck], includes bug fixes
Matthew Wild <mwild1@gmail.com>
parents: 8668
diff changeset
733 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
734 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
735 command_func{ "--help" };
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
736 done[command_name] = true;
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
737 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
738 end
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
739
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
740
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
741 os.exit(0, true);
1087
5e9475bec571 prosodyctl, util.prosodyctl: New prosodyctl utility for managing Prosody servers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
742 end
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
743
12863
891edd1ebde6 util.startup: Close state on exit to ensure GC finalizers are called
Kim Alvefur <zash@zash.se>
parents: 12452
diff changeset
744 os.exit(commands[command](arg), true);
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
745 end, watchers);
7922
2fd20f372cb1 prosodyctl: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 7920
diff changeset
746
8652
03bb534593cb prosodyctl: Run commands inside async context
Matthew Wild <mwild1@gmail.com>
parents: 8635
diff changeset
747 command_runner:run(true);