prosodyctl: check certs: Use certmanager to get the final ssl config in order to...
authorKim Alvefur <zash@zash.se>
Sun, 28 Feb 2016 17:22:23 +0000 (18:22 +0100)
committerKim Alvefur <zash@zash.se>
Sun, 28 Feb 2016 17:22:23 +0000 (18:22 +0100)
prosodyctl

index 95e091de2151c520f52684f33d333441d5f89ad4..2972aa5365a9fc3f0d0bd0ddf044851166c8c469 100755 (executable)
@@ -1197,6 +1197,7 @@ function commands.check(arg)
                local cert_ok;
                print"Checking certificates..."
                local x509_verify_identity = require"util.x509".verify_identity;
+               local create_context = require "core.certmanager".create_context;
                local ssl = dependencies.softreq"ssl";
                -- local datetime_parse = require"util.datetime".parse_x509;
                local load_cert = ssl and ssl.loadcertificate;
@@ -1211,13 +1212,12 @@ function commands.check(arg)
                        for host in enabled_hosts() do
                                print("Checking certificate for "..host);
                                -- First, let's find out what certificate this host uses.
-                               local ssl_config = config.rawget(host, "ssl");
-                               if not ssl_config then
-                                       local base_host = host:match("%.(.*)");
-                                       ssl_config = config.get(base_host, "ssl");
-                               end
-                               if not ssl_config then
-                                       print("  No 'ssl' option defined for "..host)
+                               local host_ssl_config = config.rawget(host, "ssl")
+                                       or config.rawget(host:match("%.(.*)"), "ssl");
+                               local global_ssl_config = config.rawget("*", "ssl");
+                               local ok, err, ssl_config = create_context(host, "server", host_ssl_config, global_ssl_config);
+                               if not ok then
+                                       print("  Error: "..err);
                                        cert_ok = false
                                elseif not ssl_config.certificate then
                                        print("  No 'certificate' set in ssl option for "..host)