From 8fa56f4bcfc98f7c040288375bbf4ad25dbd4172 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Wed, 18 Nov 2009 08:26:43 +0500 Subject: prosody.net_activate_ports: Slightly refactored and definition moved to before modules are loaded. --- prosody | 71 +++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) (limited to 'prosody') diff --git a/prosody b/prosody index e22e5945..3a1dafb2 100755 --- a/prosody +++ b/prosody @@ -153,6 +153,40 @@ function init_global_state() prosody.events.fire_event("server-stopping", {reason = reason}); server.setquitting(true); end + + -- 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 end function read_version() @@ -220,42 +254,9 @@ function prepare_to_start() eventmanager.fire_event("server-starting"); prosody.events.fire_event("server-starting"); - -- 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"; -- start listening on sockets - function prosody.net_activate_ports(option, listener, default, conntype) - 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 - - prosody.net_activate_ports("c2s", "xmppclient", {5222}, (global_ssl_ctx and "tls") or "tcp"); - prosody.net_activate_ports("s2s", "xmppserver", {5269}, (global_ssl_ctx and "tls") or "tcp"); + prosody.net_activate_ports("c2s", "xmppclient", {5222}); + prosody.net_activate_ports("s2s", "xmppserver", {5269}); prosody.net_activate_ports("component", "xmppcomponent", {}, "tcp"); prosody.net_activate_ports("legacy_ssl", "xmppclient", {}, "ssl"); prosody.net_activate_ports("console", "console", {5582}, "tcp"); -- cgit v1.2.3