1 pcall(require, "luarocks.require")
3 local server = require "net.server"
8 function log(type, area, message)
9 print(type, area, message);
14 -- Maps connections to sessions --
18 if config.hosts and #config.hosts > 0 then
19 for _, host in pairs(config.hosts) do
20 hosts[host] = {type = "local", connected = true, sessions = {}, host = host, s2sout = {} };
22 else error("No hosts defined in the configuration file"); end
24 -- Load and initialise core modules --
27 require "core.xmlhandlers"
28 require "core.rostermanager"
29 require "core.offlinemessage"
30 require "core.modulemanager"
31 require "core.usermanager"
32 require "core.sessionmanager"
33 require "core.stanza_router"
35 pcall(require, "remdebug.engine");
36 if remdebug then remdebug.engine.start() end
38 local start = require "net.connlisteners".start;
42 ------------------------------------------------------------------------
45 if config.modules and #config.modules > 0 then
46 for _, module in pairs(config.modules) do
47 modulemanager.load(module);
49 else error("No modules enabled in the configuration file"); end
51 -- setup error handling
52 setmetatable(_G, { __index = function (t, k) print("WARNING: ATTEMPT TO READ A NIL GLOBAL!!!", k); error("Attempt to read a non-existent global. Naughty boy.", 2); end, __newindex = function (t, k, v) print("ATTEMPT TO SET A GLOBAL!!!!", tostring(k).." = "..tostring(v)); error("Attempt to set a global. Naughty boy.", 2); end }) --]][][[]][];
54 local protected_handler = function (conn, data, err) local success, ret = pcall(handler, conn, data, err); if not success then print("ERROR on "..tostring(conn)..": "..ret); conn:close(); end end;
55 local protected_disconnect = function (conn, err) local success, ret = pcall(disconnect, conn, err); if not success then print("ERROR on "..tostring(conn).." disconnect: "..ret); conn:close(); end end;
57 -- start listening on sockets
58 start("xmppclient", { ssl = config.ssl_ctx })
59 start("xmppserver", { ssl = config.ssl_ctx })