Add new logger for tests to use
[prosody.git] / main.lua
1 pcall(require, "luarocks.require")
2
3 local server = require "net.server"
4 require "lxp"
5 require "socket"
6 require "ssl"
7
8 function log(type, area, message)
9         print(type, area, message);
10 end
11
12 dofile "lxmppd.cfg"
13
14 -- Maps connections to sessions --
15 sessions = {};
16 hosts = {};
17
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 = {} };
21         end
22 else error("No hosts defined in the configuration file"); end
23
24 -- Load and initialise core modules --
25
26 require "util.import"
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"
34
35 pcall(require, "remdebug.engine");
36 if remdebug then remdebug.engine.start() end
37
38 local start = require "net.connlisteners".start;
39 require "util.stanza"
40 require "util.jid"
41
42 ------------------------------------------------------------------------
43
44 -- Initialise modules
45 if config.modules and #config.modules > 0 then
46         for _, module in pairs(config.modules) do
47                 modulemanager.load(module);
48         end
49 else error("No modules enabled in the configuration file"); end
50
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 }) --]][][[]][];
53
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;
56
57 -- start listening on sockets
58 start("xmppclient", { ssl = config.ssl_ctx })
59 start("xmppserver", { ssl = config.ssl_ctx })
60
61 server.loop();