aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/modulemanager.lua12
-rw-r--r--lxmppd.cfg.dist44
-rw-r--r--main.lua32
3 files changed, 40 insertions, 48 deletions
diff --git a/core/modulemanager.lua b/core/modulemanager.lua
index bf5d4c2f..3e1dfa30 100644
--- a/core/modulemanager.lua
+++ b/core/modulemanager.lua
@@ -64,18 +64,6 @@ function modulehelpers.add_handler(origin_type, tag, xmlns, handler)
_add_handler(getfenv(2).module, origin_type, tag, xmlns, handler);
end
-function loadall()
- load("saslauth");
- load("legacyauth");
- load("roster");
- load("register");
- load("tls");
- load("vcard");
- load("private");
- load("version");
- load("dialback");
-end
-
function load(name)
local mod, err = loadfile("plugins/mod_"..name..".lua");
if not mod then
diff --git a/lxmppd.cfg.dist b/lxmppd.cfg.dist
index c743f2cb..b523c697 100644
--- a/lxmppd.cfg.dist
+++ b/lxmppd.cfg.dist
@@ -1,26 +1,30 @@
---- lxmppd configuration file ----
--- define the local hosts
-hosts = {
- ["localhost"] = {
- type = "local";
- connected = true;
- sessions = {};
+config = {
+ hosts = { -- local hosts
+ "localhost";
+ --"snikket.com";
};
- ["getjabber.ath.cx"] = {
- type = "local";
- connected = true;
- sessions = {};
- };
-}
+ -- If the following is commented, no SSL will be set up on 5223
+ --[[ssl_ctx = {
+ mode = "server";
+ protocol = "sslv23";
--- if the following is not defined, no SSL will be set up on 5223
-ssl_ctx = {
- mode = "server",
- protocol = "sslv23",
-
- key = "/home/matthew/ssl_cert/server.key",
- certificate = "/home/matthew/ssl_cert/server.crt",
- capath = "/etc/ssl/certs", verify = "none",
+ key = "/home/matthew/ssl_cert/server.key";
+ certificate = "/home/matthew/ssl_cert/server.crt";
+ capath = "/etc/ssl/certs";
+ verify = "none";
+ };]]
+ modules = { -- enabled modules
+ "saslauth";
+ "legacyauth";
+ "roster";
+ "register";
+ "tls";
+ "vcard";
+ "private";
+ "version";
+ "dialback";
+ };
}
diff --git a/main.lua b/main.lua
index 939f4512..ec883234 100644
--- a/main.lua
+++ b/main.lua
@@ -13,6 +13,13 @@ dofile "lxmppd.cfg"
-- Maps connections to sessions --
sessions = {};
+hosts = {};
+
+if config.hosts and #config.hosts > 0 then
+ for _, host in pairs(config.hosts) do
+ hosts[host] = {type = "local", connected = true, sessions = {}};
+ end
+else error("No hosts defined in the configuration file"); end
-- Load and initialise core modules --
@@ -31,28 +38,21 @@ require "util.jid"
------------------------------------------------------------------------
--- Locals for faster access --
-local t_insert = table.insert;
-local t_concat = table.concat;
-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
-local m_random = math.random;
-local format = string.format;
-local sm_new_session, sm_destroy_session = sessionmanager.new_session, sessionmanager.destroy_session; --import("core.sessionmanager", "new_session", "destroy_session");
-local st = stanza;
-------------------------------
-
-local hosts, sessions = hosts, sessions;
-
-- Initialise modules
-modulemanager.loadall();
+if config.modules and #config.modules > 0 then
+ for _, module in pairs(config.modules) do
+ modulemanager.load(module);
+ end
+else error("No modules enabled in the configuration file"); end
+-- setup error handling
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 }) --]][][[]][];
-
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;
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;
-start("xmppclient", { ssl = ssl_ctx })
-start("xmppserver", { ssl = ssl_ctx })
+-- start listening on sockets
+start("xmppclient", { ssl = config.ssl_ctx })
+start("xmppserver", { ssl = config.ssl_ctx })
server.loop();