Reworked the way lxmppd.cfg is used

Thu, 06 Nov 2008 16:52:39 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Thu, 06 Nov 2008 16:52:39 +0500
changeset 218
1263896ab2f1
parent 217
d522f3a25dda
child 219
f06e97f525bc

Reworked the way lxmppd.cfg is used

core/modulemanager.lua file | annotate | diff | comparison | revisions
lxmppd.cfg.dist file | annotate | diff | comparison | revisions
main.lua file | annotate | diff | comparison | revisions
--- a/core/modulemanager.lua	Tue Nov 04 22:50:32 2008 +0000
+++ b/core/modulemanager.lua	Thu Nov 06 16:52:39 2008 +0500
@@ -64,18 +64,6 @@
 	_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
--- a/lxmppd.cfg.dist	Tue Nov 04 22:50:32 2008 +0000
+++ b/lxmppd.cfg.dist	Thu Nov 06 16:52:39 2008 +0500
@@ -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";
+
+		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";
 	};
 }
-
--- 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",
-}
--- a/main.lua	Tue Nov 04 22:50:32 2008 +0000
+++ b/main.lua	Thu Nov 06 16:52:39 2008 +0500
@@ -13,6 +13,13 @@
 
 -- 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 @@
 
 ------------------------------------------------------------------------
 
--- 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;
-------------------------------
+-- Initialise modules
+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
 
-local hosts, sessions = hosts, sessions;
-
--- Initialise modules
-modulemanager.loadall();
-
+-- 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();

mercurial