prosodyctl
changeset 12975 7214baed9e9d
parent 12958 4f2accd99373
child 13063 a47bd6ea7626
equal deleted inserted replaced
12974:d36243e98704 12975:7214baed9e9d
    53 
    53 
    54 if not pcall(require, "prosody.loader") then
    54 if not pcall(require, "prosody.loader") then
    55 	pcall(require, "loader");
    55 	pcall(require, "loader");
    56 end
    56 end
    57 
    57 
    58 local startup = require "util.startup";
    58 local startup = require "prosody.util.startup";
    59 startup.prosodyctl();
    59 startup.prosodyctl();
    60 
    60 
    61 -----------
    61 -----------
    62 
    62 
    63 local configmanager = require "core.configmanager";
    63 local configmanager = require "prosody.core.configmanager";
    64 local modulemanager = require "core.modulemanager"
    64 local modulemanager = require "prosody.core.modulemanager"
    65 local prosodyctl = require "util.prosodyctl"
    65 local prosodyctl = require "prosody.util.prosodyctl"
    66 local socket = require "socket"
    66 local socket = require "socket"
    67 local dependencies = require "util.dependencies";
    67 local dependencies = require "prosody.util.dependencies";
    68 local lfs = dependencies.softreq "lfs";
    68 local lfs = dependencies.softreq "lfs";
    69 
    69 
    70 -----------------------
    70 -----------------------
    71 
    71 
    72 local parse_args = require "util.argparse".parse;
    72 local parse_args = require "prosody.util.argparse".parse;
    73 local human_io = require "util.human.io";
    73 local human_io = require "prosody.util.human.io";
    74 
    74 
    75 local show_message, show_warning = prosodyctl.show_message, prosodyctl.show_warning;
    75 local show_message, show_warning = prosodyctl.show_message, prosodyctl.show_warning;
    76 local show_usage = prosodyctl.show_usage;
    76 local show_usage = prosodyctl.show_usage;
    77 local read_password = human_io.read_password;
    77 local read_password = human_io.read_password;
    78 local call_luarocks = prosodyctl.call_luarocks;
    78 local call_luarocks = prosodyctl.call_luarocks;
    79 local error_messages = prosodyctl.error_messages;
    79 local error_messages = prosodyctl.error_messages;
    80 
    80 
    81 local jid_split = require "util.jid".prepped_split;
    81 local jid_split = require "prosody.util.jid".prepped_split;
    82 
    82 
    83 local prosodyctl_timeout = (configmanager.get("*", "prosodyctl_timeout") or 5) * 2;
    83 local prosodyctl_timeout = (configmanager.get("*", "prosodyctl_timeout") or 5) * 2;
    84 -----------------------
    84 -----------------------
    85 local commands = {};
    85 local commands = {};
    86 local command = table.remove(arg, 1);
    86 local command = table.remove(arg, 1);
   436 		show_usage([[about]], [[Show information about this Prosody installation]]);
   436 		show_usage([[about]], [[Show information about this Prosody installation]]);
   437 		return 0;
   437 		return 0;
   438 	end
   438 	end
   439 
   439 
   440 	local pwd = ".";
   440 	local pwd = ".";
   441 	local sorted_pairs = require "util.iterators".sorted_pairs;
   441 	local sorted_pairs = require "prosody.util.iterators".sorted_pairs;
   442 	local hg = require"util.mercurial";
   442 	local hg = require"prosody.util.mercurial";
   443 	local relpath = configmanager.resolve_relative_path;
   443 	local relpath = configmanager.resolve_relative_path;
   444 
   444 
   445 	print("Prosody "..(prosody.version or "(unknown version)"));
   445 	print("Prosody "..(prosody.version or "(unknown version)"));
   446 	print("");
   446 	print("");
   447 	print("# Prosody directories");
   447 	print("# Prosody directories");
   459 			hgrepo = hgrepo == "010452cfaf53" and "prosody-modules";
   459 			hgrepo = hgrepo == "010452cfaf53" and "prosody-modules";
   460 			return path..(hgid and " - "..(hgrepo or "HG").." rev: "..hgid or "")
   460 			return path..(hgid and " - "..(hgrepo or "HG").." rev: "..hgid or "")
   461 				.."\n  ";
   461 				.."\n  ";
   462 		end)));
   462 		end)));
   463 	print("");
   463 	print("");
   464 	local have_pposix, pposix = pcall(require, "util.pposix");
   464 	local have_pposix, pposix = pcall(require, "prosody.util.pposix");
   465 	if have_pposix and pposix.uname then
   465 	if have_pposix and pposix.uname then
   466 		print("# Operating system");
   466 		print("# Operating system");
   467 		local uname, err = pposix.uname();
   467 		local uname, err = pposix.uname();
   468 		print(uname and uname.sysname .. " " .. uname.release or "Unknown POSIX", err or "");
   468 		print(uname and uname.sysname .. " " .. uname.release or "Unknown POSIX", err or "");
   469 		print("");
   469 		print("");
   492 	end
   492 	end
   493 	print("LuaRocks:        ", luarocks_status);
   493 	print("LuaRocks:        ", luarocks_status);
   494 	print("");
   494 	print("");
   495 	print("# Network");
   495 	print("# Network");
   496 	print("");
   496 	print("");
   497 	print("Backend: "..require "net.server".get_backend());
   497 	print("Backend: "..require "prosody.net.server".get_backend());
   498 	print("");
   498 	print("");
   499 	print("# Lua module versions");
   499 	print("# Lua module versions");
   500 	local module_versions, longest_name = {}, 8;
   500 	local module_versions, longest_name = {}, 8;
   501 	local library_versions = {};
   501 	local library_versions = {};
   502 	dependencies.softreq"ssl";
   502 	dependencies.softreq"ssl";
   514 		-- These diverge from the module._VERSION convention
   514 		-- These diverge from the module._VERSION convention
   515 		readline = "Version";
   515 		readline = "Version";
   516 	}
   516 	}
   517 	local lunbound = dependencies.softreq"lunbound";
   517 	local lunbound = dependencies.softreq"lunbound";
   518 	local lxp = dependencies.softreq"lxp";
   518 	local lxp = dependencies.softreq"lxp";
   519 	local hashes = dependencies.softreq"util.hashes";
   519 	local hashes = dependencies.softreq"prosody.util.hashes";
   520 	for name, module in pairs(package.loaded) do
   520 	for name, module in pairs(package.loaded) do
   521 		local version_field = alternate_version_fields[name] or "_VERSION";
   521 		local version_field = alternate_version_fields[name] or "_VERSION";
   522 		if type(module) == "table" and rawget(module, version_field)
   522 		if type(module) == "table" and rawget(module, version_field)
   523 			and name ~= "_G" and not name:match("%.") then
   523 			and name ~= "_G" and not name:match("%.") then
   524 			name = friendly_names[name] or name;
   524 			name = friendly_names[name] or name;
   547 	for name, version in sorted_pairs(module_versions) do
   547 	for name, version in sorted_pairs(module_versions) do
   548 		print(name..":"..string.rep(" ", longest_name-#name), version);
   548 		print(name..":"..string.rep(" ", longest_name-#name), version);
   549 	end
   549 	end
   550 	print("");
   550 	print("");
   551 	print("# library versions");
   551 	print("# library versions");
   552 	if require "net.server".event_base then
   552 	if require "prosody.net.server".event_base then
   553 		library_versions["libevent"] = require"luaevent".core.libevent_version();
   553 		library_versions["libevent"] = require"luaevent".core.libevent_version();
   554 	end
   554 	end
   555 	for name, version in sorted_pairs(library_versions) do
   555 	for name, version in sorted_pairs(library_versions) do
   556 		print(name..":"..string.rep(" ", longest_name-#name), version);
   556 		print(name..":"..string.rep(" ", longest_name-#name), version);
   557 	end
   557 	end
   637 	return 1;
   637 	return 1;
   638 end
   638 end
   639 
   639 
   640 ---------------------
   640 ---------------------
   641 
   641 
   642 local async = require "util.async";
   642 local async = require "prosody.util.async";
   643 local server = require "net.server";
   643 local server = require "prosody.net.server";
   644 local watchers = {
   644 local watchers = {
   645 	error = function (_, err)
   645 	error = function (_, err)
   646 		error(err);
   646 		error(err);
   647 	end;
   647 	end;
   648 	waiting = function ()
   648 	waiting = function ()
   684 			os.exit(1); -- :(
   684 			os.exit(1); -- :(
   685 		end
   685 		end
   686 	end
   686 	end
   687 
   687 
   688 	if command and not commands[command] then
   688 	if command and not commands[command] then
   689 		local ok, command_module = pcall(require, "util.prosodyctl."..command);
   689 		local ok, command_module = pcall(require, "prosody.util.prosodyctl."..command);
   690 		if ok and command_module[command] then
   690 		if ok and command_module[command] then
   691 			commands[command] = command_module[command];
   691 			commands[command] = command_module[command];
   692 		end
   692 		end
   693 	end
   693 	end
   694 
   694 
   701 		print("");
   701 		print("");
   702 		print("Usage: "..arg[0].." COMMAND [OPTIONS]");
   702 		print("Usage: "..arg[0].." COMMAND [OPTIONS]");
   703 		print("");
   703 		print("");
   704 		print("Where COMMAND may be one of:");
   704 		print("Where COMMAND may be one of:");
   705 
   705 
   706 		local hidden_commands = require "util.set".new{ "register", "unregister" };
   706 		local hidden_commands = require "prosody.util.set".new{ "register", "unregister" };
   707 		local commands_order = {
   707 		local commands_order = {
   708 			"Process management:",
   708 			"Process management:",
   709 				"start"; "stop"; "restart"; "reload"; "status";
   709 				"start"; "stop"; "restart"; "reload"; "status";
   710 				"shell",
   710 				"shell",
   711 			"User management:",
   711 			"User management:",