Diff

prosodyctl @ 7208:f666d50cc32b

prosodyctl: check certs: Use certmanager to get the final ssl config in order to support the new certificate(s) config option
author Kim Alvefur <zash@zash.se>
date Sun, 28 Feb 2016 18:22:23 +0100
parent 7193:1c0104a56321
child 7209:92e5036bc55c
line wrap: on
line diff
--- a/prosodyctl	Sun Feb 28 15:03:16 2016 +0100
+++ b/prosodyctl	Sun Feb 28 18:22:23 2016 +0100
@@ -1197,6 +1197,7 @@
 		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 @@
 			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)