---- Initialize logging
-require "core.loggingmanager"
-
---- Check runtime dependencies
-require "util.dependencies"
-
---- Load socket framework
-local server = require "net.server"
-
-
-
--- Maps connections to sessions --
-sessions = {};
-hosts = {};
-
---- Load and initialise core modules
-require "util.import"
-require "core.xmlhandlers"
-require "core.rostermanager"
-require "core.eventmanager"
-require "core.hostmanager"
-require "core.modulemanager"
-require "core.usermanager"
-require "core.sessionmanager"
-require "core.stanza_router"
-
-require "util.array"
-require "util.iterators"
-require "util.timer"
-
--- Commented to protect us from
--- the second kind of people
---[[
-pcall(require, "remdebug.engine");
-if remdebug then remdebug.engine.start() end
-]]
-
-local cl = require "net.connlisteners";
-
-require "util.stanza"
-require "util.jid"
-
-------------------------------------------------------------------------
-
-
-------------- Begin code without a home ---------------------
-
-local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
-require "util.datamanager".set_data_path(data_path);
-require "util.datamanager".set_callback(function(username, host, datastore)
- return config.get(host, "core", "anonymous_login");
-end);
-
------------ End of out-of-place code --------------
-
--- Global function to initiate prosody shutdown
-function prosody_shutdown(reason)
- log("info", "Shutting down: %s", reason or "unknown reason");
- eventmanager.fire_event("server-stopping", { reason = reason });
- server.setquitting(true);
-end
-
--- Signal to modules that we are ready to start
-eventmanager.fire_event("server-starting");
-
--- Load SSL settings from config, and create a ctx table
-local global_ssl_ctx = 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
+function load_libraries()
+ --- Initialize logging
+ require "core.loggingmanager"
+
+ --- Check runtime dependencies
+ require "util.dependencies"
+
+ --- Load socket framework
+ server = require "net.server"
+end
+
+function init_global_state()
+ bare_sessions = {};
+ full_sessions = {};
+ hosts = {};
+
+ -- Global 'prosody' object
+ prosody = {};
+ local prosody = prosody;
+
+ prosody.bare_sessions = bare_sessions;
+ prosody.full_sessions = full_sessions;
+ prosody.hosts = hosts;
+
+ prosody.paths = { source = CFG_SOURCEDIR, config = CFG_CONFIGDIR,
+ plugins = CFG_PLUGINDIR, data = CFG_DATADIR };
+
+ prosody.arg = _G.arg;