end
end
--- Required to be able to find packages installed with luarocks
-pcall(require, "luarocks.require");
+-- Check runtime dependencies
+if not require "util.dependencies".check_dependencies() then
+ os.exit(1);
+end
-- Replace require() with one that doesn't pollute _G, required
-- for neat sandboxing of modules
-- functions get called
function read_config()
- -- TODO: Check for other formats when we add support for them
- -- Use lfs? Make a new conf/ dir?
local filenames = {};
local filename;
table.insert(filenames, CFG_CONFIGDIR.."/"..arg[2]);
end
else
- table.insert(filenames, (CFG_CONFIGDIR or ".").."/prosody.cfg.lua");
+ for _, format in ipairs(config.parsers()) do
+ table.insert(filenames, (CFG_CONFIGDIR or ".").."/prosody.cfg."..format);
+ end
end
for _,_filename in ipairs(filenames) do
filename = _filename;
-- Initialize logging
require "core.loggingmanager"
- -- Check runtime dependencies
- require "util.dependencies"
-
-- Load socket framework
server = require "net.server"
end
log("error", "core."..ports_option.." is not a table");
else
for _, port in ipairs(ports) do
+ port = tonumber(port);
if type(port) ~= "number" then
log("error", "Non-numeric "..ports_option..": "..tostring(port));
else
- cl.start(listener, {
- ssl = conntype ~= "tcp" and global_ssl_ctx,
+ local ok, err = cl.start(listener, {
+ ssl = conntype == "ssl" and global_ssl_ctx,
port = port,
- interface = config.get("*", "core", option.."_interface")
- or cl.get(listener).default_interface
+ interface = (option and config.get("*", "core", option.."_interface"))
+ or cl.get(listener).default_interface
or config.get("*", "core", "interface"),
type = conntype
});
+ if not ok then
+ local friendly_message = err;
+ if err:match(" in use") then
+ if port == 5222 or port == 5223 or port == 5269 then
+ friendly_message = "check that Prosody or another XMPP server is "
+ .."not already running and using this port";
+ elseif port == 80 or port == 81 then
+ friendly_message = "check that a HTTP server is not already using "
+ .."this port";
+ elseif port == 5280 then
+ friendly_message = "check that Prosody or a BOSH connection manager "
+ .."is not already running";
+ end
+ elseif err:match("permission") then
+ friendly_message = "Prosody does not have sufficient privileges to use this port";
+ end
+ log("error", "Failed to open server port %d, %s", port, friendly_message);
+ end
end
end
end
else
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("component", "xmppcomponent", {5347}, "tcp");
prosody.net_activate_ports("legacy_ssl", "xmppclient", {}, "ssl");
end