+
+ -- Load SSL settings from config, and create a ctx table
+ local global_ssl_ctx = rawget(_G, "ssl") and config.get("*", "core", "ssl");
+ if global_ssl_ctx then
+ local default_ssl_ctx = { mode = "server", protocol = "sslv23", capath = "/etc/ssl/certs", verify = "none"; };
+ setmetatable(global_ssl_ctx, { __index = default_ssl_ctx });
+ end
+
+ local cl = require "net.connlisteners";
+ function prosody.net_activate_ports(option, listener, default, conntype)
+ conntype = conntype or (global_ssl_ctx and "tls") or "tcp";
+ if not cl.get(listener) then return; end
+ local ports = config.get("*", "core", option.."_ports") or default;
+ if type(ports) == "number" then ports = {ports} end;
+
+ if type(ports) ~= "table" then
+ log("error", "core."..option.." is not a table");
+ else
+ for _, port in ipairs(ports) do
+ if type(port) ~= "number" then
+ log("error", "Non-numeric "..option.."_ports: "..tostring(port));
+ else
+ cl.start(listener, {
+ ssl = conntype ~= "tcp" and global_ssl_ctx,
+ port = port,
+ interface = config.get("*", "core", option.."_interface")
+ or cl.get(listener).default_interface
+ or config.get("*", "core", "interface"),
+ type = conntype
+ });
+ end
+ end
+ end
+ end