X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=prosody;h=dc28c771b2cee7c97935e4739b95790df20624c0;hb=faabef234e99d90b0197c50aa2fa5b9c812779cb;hp=d11e463d31ed1f26a387d7684b2226c6fb763629;hpb=8512e2d4acec1160346435605370a6f31ef9f1bb;p=prosody.git diff --git a/prosody b/prosody index d11e463d..dc28c771 100755 --- a/prosody +++ b/prosody @@ -9,9 +9,9 @@ -- 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"); -- -- -- -- -- -- -- ---- -- -- -- -- -- -- -- -- @@ -32,7 +32,7 @@ end -- Required to be able to find packages installed with luarocks pcall(require, "luarocks.require") - +require "util.require"; config = require "core.configmanager" @@ -93,6 +93,17 @@ function init_global_state() 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() @@ -106,6 +117,7 @@ function init_global_state() 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 @@ -118,6 +130,7 @@ function init_global_state() -- 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 @@ -149,11 +162,16 @@ function load_secondary_libraries() 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 --[[ @@ -192,7 +210,8 @@ function prepare_to_start() 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; @@ -216,14 +235,11 @@ function prepare_to_start() 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 @@ -277,10 +293,14 @@ function cleanup() 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 @@ -310,8 +330,8 @@ read_version(); 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");