-- Will be modified by configure script if run --
-CFG_SOURCEDIR=nil;
+CFG_SOURCEDIR=os.getenv("PROSODY_SRCDIR");
CFG_CONFIGDIR=os.getenv("PROSODY_CFGDIR");
-CFG_PLUGINDIR=nil;
+CFG_PLUGINDIR=os.getenv("PROSODY_PLUGINDIR");
CFG_DATADIR=os.getenv("PROSODY_DATADIR");
-- -- -- -- -- -- -- ---- -- -- -- -- -- -- -- --
-- Required to be able to find packages installed with luarocks
pcall(require, "luarocks.require")
-
+require "util.require";
config = require "core.configmanager"
prosody.events = require "util.events".new();
+ prosody.platform = "unknown";
+ if os.getenv("WINDIR") then
+ prosody.platform = "windows";
+ elseif package.config:sub(1,1) == "/" then
+ prosody.platform = "posix";
+ end
+
+ prosody.installed = nil;
+ if CFG_SOURCEDIR and (prosody.platform == "windows" or CFG_SOURCEDIR:match("^/")) then
+ prosody.installed = true;
+ end
-- Function to reload the config file
function prosody.reload_config()
log("error", "Couldn't read the config file when trying to reload: %s", tostring(err));
end
end
+ return ok, (err and tostring(level)..": "..tostring(err)) or nil;
end
-- Function to reopen logfiles
-- Function to initiate prosody shutdown
function prosody.shutdown(reason)
log("info", "Shutting down: %s", reason or "unknown reason");
+ prosody.shutdown_reason = reason;
prosody.events.fire_event("server-stopping", {reason = reason});
server.setquitting(true);
end
require "core.sessionmanager"
require "core.stanza_router"
+ require "net.http"
+
require "util.array"
+ require "util.datetime"
require "util.iterators"
require "util.timer"
-
+ require "util.helpers"
+
+ pcall(require, "util.signal") -- Not on Windows
+
-- Commented to protect us from
-- the second kind of people
--[[
local cl = require "net.connlisteners";
-- start listening on sockets
- function net_activate_ports(option, listener, default, conntype)
+ 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;
end
end
- net_activate_ports("c2s", "xmppclient", {5222}, (global_ssl_ctx and "tls") or "tcp");
- net_activate_ports("s2s", "xmppserver", {5269}, "tcp");
- net_activate_ports("component", "xmppcomponent", {}, "tcp");
- net_activate_ports("legacy_ssl", "xmppclient", {}, "ssl");
-
- if cl.get("console") then
- cl.start("console", { interface = config.get("*", "core", "console_interface") or "127.0.0.1" })
- 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("component", "xmppcomponent", {}, "tcp");
+ prosody.net_activate_ports("legacy_ssl", "xmppclient", {}, "ssl");
+ prosody.net_activate_ports("console", "console", {5582}, "tcp");
prosody.start_time = os.time();
end
for hostname, host in pairs(hosts) do
log("debug", "Shutdown status: Closing client connections for %s", hostname)
if host.sessions then
+ local reason = { condition = "system-shutdown", text = "Server is shutting down" };
+ if prosody.shutdown_reason then
+ reason.text = reason.text..": "..prosody.shutdown_reason;
+ end
for username, user in pairs(host.sessions) do
for resource, session in pairs(user.sessions) do
log("debug", "Closing connection for %s@%s/%s", username, hostname, resource);
- session:close("system-shutdown");
+ session:close(reason);
end
end
end
log("info", "Hello and welcome to Prosody version %s", prosody.version);
load_secondary_libraries();
init_data_store();
-prepare_to_start();
init_global_protection();
+prepare_to_start();
eventmanager.fire_event("server-started");
prosody.events.fire_event("server-started");