mod_tls: Treat session.ssl_ctx being false as a signal that TLS is disabled
[prosody.git] / prosodyctl
index bfb118c3039949ce2c737ecc40fd8121e21a52e2..ef436106948a2ae316172a3b610cce2db8e7c0e8 100755 (executable)
@@ -251,6 +251,7 @@ require "socket"
 function read_version()
        -- Try to determine version
        local version_file = io.open((CFG_SOURCEDIR or ".").."/prosody.version");
+       prosody.version = "unknown";
        if version_file then
                prosody.version = version_file:read("*a"):gsub("%s*$", "");
                version_file:close();
@@ -258,7 +259,9 @@ function read_version()
                        prosody.version = "hg:"..prosody.version;
                end
        else
-               prosody.version = "unknown";
+               local hg = require"util.mercurial";
+               local hgid = hg.check_id(CFG_SOURCEDIR or ".");
+               if hgid then prosody.version = "hg:" .. hgid; end
        end
 end
 
@@ -528,16 +531,32 @@ function commands.about(arg)
                return 1;
        end
        
+       local pwd = ".";
+       local lfs = require "lfs";
        local array = require "util.array";
        local keys = require "util.iterators".keys;
+       local hg = require"util.mercurial";
+       local relpath = config.resolve_relative_path;
        
        print("Prosody "..(prosody.version or "(unknown version)"));
        print("");
        print("# Prosody directories");
-       print("Data directory:  ", CFG_DATADIR or "./");
-       print("Plugin directory:", CFG_PLUGINDIR or "./");
-       print("Config directory:", CFG_CONFIGDIR or "./");
-       print("Source directory:", CFG_SOURCEDIR or "./");
+       print("Data directory:     "..relpath(pwd, data_path));
+       print("Config directory:   "..relpath(pwd, CFG_CONFIGDIR or "."));
+       print("Source directory:   "..relpath(pwd, CFG_SOURCEDIR or "."));
+       print("Plugin directories:")
+       print("  "..(prosody.paths.plugins:gsub("([^;]+);?", function(path)
+                       local opath = path;
+                       path = config.resolve_relative_path(pwd, path);
+                       local hgid, hgrepo = hg.check_id(path);
+                       if not hgid and hgrepo then
+                               return path.." - "..hgrepo .."!\n  ";
+                       end
+                       -- 010452cfaf53 is the first commit in the prosody-modules repository
+                       hgrepo = hgrepo == "010452cfaf53" and "prosody-modules";
+                       return path..(hgid and " - "..(hgrepo or "HG").." rev: "..hgid or "")
+                               .."\n  ";
+               end)));
        print("");
        print("# Lua environment");
        print("Lua version:             ", _G._VERSION);
@@ -1075,7 +1094,7 @@ function commands.check(arg)
                local x509_verify_identity = require"util.x509".verify_identity;
                local ssl = dependencies.softreq"ssl";
                -- local datetime_parse = require"util.datetime".parse_x509;
-               local load_cert = ssl and ssl.x509 and ssl.x509.load;
+               local load_cert = ssl and ssl.loadcertificate;
                -- or ssl.cert_from_pem
                if not ssl then
                        print("LuaSec not available, can't perform certificate checks")
@@ -1127,7 +1146,7 @@ function commands.check(arg)
                                                end
                                                if (not (config.get(host, "anonymous_login")
                                                        or config.get(host, "authentication") == "anonymous"))
-                                                       and not x509_verify_identity(host, "_xmpp-client", cert) then
+                                                       and not x509_verify_identity(host, "_xmpp-server", cert) then
                                                        print("    Not vaild for server-to-server connections to "..host..".")
                                                        cert_ok = false
                                                end