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 |
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:", |