Inbound subscription request
[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  
17 -- Load and initialise core modules --
18  
19 require "util.import"
20 require "core.stanza_dispatch"
21 require "core.xmlhandlers"
22 require "core.rostermanager"
23 require "core.offlinemessage"
24 require "core.modulemanager"
25 require "core.usermanager"
26 require "core.sessionmanager"
27 require "core.stanza_router"
28
29 local start = require "net.connlisteners".start;
30 require "util.stanza"
31 require "util.jid"
32
33 ------------------------------------------------------------------------
34
35 -- Locals for faster access --
36 local t_insert = table.insert;
37 local t_concat = table.concat;
38 local t_concatall = function (t, sep) local tt = {}; for _, s in ipairs(t) do t_insert(tt, tostring(s)); end return t_concat(tt, sep); end
39 local m_random = math.random;
40 local format = string.format;
41 local sm_new_session, sm_destroy_session = sessionmanager.new_session, sessionmanager.destroy_session; --import("core.sessionmanager", "new_session", "destroy_session");
42 local st = stanza;
43 ------------------------------
44
45 local hosts, sessions = hosts, sessions;
46
47 -- Initialise modules
48 modulemanager.loadall();
49
50 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 }) --]][][[]][];
51
52
53 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;
54 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;
55
56 start("xmppclient", { ssl = ssl_ctx })
57 start("xmppserver", { ssl = ssl_ctx })
58
59 server.loop();