Changeset

2985:fde53d82fde0

Merge 0.7->trunk (with MUC needing checking, waqas)
author Matthew Wild <mwild1@gmail.com>
date Tue, 04 May 2010 23:36:50 +0100
parents 2975:c1a2e210f47e (current diff) 2984:3094166cfdd5 (diff)
children 2986:fff153f7f4de
files core/configmanager.lua plugins/muc/muc.lib.lua prosody
diffstat 5 files changed, 147 insertions(+), 125 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Tue May 04 23:11:41 2010 +0100
+++ b/.hgtags	Tue May 04 23:36:50 2010 +0100
@@ -36,3 +36,4 @@
 5ae3209fefa2c8dc1c53d08c2c1caa340b8ec542 0.5.2
 1a99a3bf3ce6dbdfb362b7fd101d761fb3cc10af 0.6.0
 81b4e738e4d321b78274132f63a9aec7007e64eb 0.6.1
+0395f2f34bd55a01ec7276884fb9a4e0051b0e7a 0.6.2
--- a/core/hostmanager.lua	Tue May 04 23:11:41 2010 +0100
+++ b/core/hostmanager.lua	Tue May 04 23:36:50 2010 +0100
@@ -42,7 +42,7 @@
 	end
 	
 	if not activated_any_host then
-		log("error", "No hosts defined in the config file. This may cause unexpected behaviour as no modules will be loaded.");
+		log("error", "No active VirtualHost entries in the config file. This may cause unexpected behaviour as no modules will be loaded.");
 	end
 	
 	eventmanager.fire_event("hosts-activated", defined_hosts);
@@ -60,8 +60,8 @@
 			dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen();
 	              };
 	for option_name in pairs(host_config.core) do
-		if option_name:match("_ports$") then
-			log("warn", "%s: Option '%s' has no effect for virtual hosts - put it in global Host \"*\" instead", host, option_name);
+		if option_name:match("_ports$") or option_name:match("_interface$") then
+			log("warn", "%s: Option '%s' has no effect for virtual hosts - put it in the server-wide section instead", host, option_name);
 		end
 	end
 	
--- a/core/modulemanager.lua	Tue May 04 23:11:41 2010 +0100
+++ b/core/modulemanager.lua	Tue May 04 23:36:50 2010 +0100
@@ -19,7 +19,7 @@
 local hosts = hosts;
 local prosody = prosody;
 
-local loadfile, pcall = loadfile, pcall;
+local loadfile, pcall, xpcall = loadfile, pcall, xpcall;
 local setmetatable, setfenv, getfenv = setmetatable, setfenv, getfenv;
 local pairs, ipairs = pairs, ipairs;
 local t_insert, t_concat = table.insert, table.concat;
@@ -29,6 +29,14 @@
 local error = error;
 local tostring, tonumber = tostring, tonumber;
 
+local debug_traceback = debug.traceback;
+local unpack, select = unpack, select;
+pcall = function(f, ...)
+	local n = select("#", ...);
+	local params = {...};
+	return xpcall(function() f(unpack(params, 1, n)) end, function(e) return tostring(e).."\n"..debug_traceback(); end);
+end
+
 local array, set = require "util.array", require "util.set";
 
 local autoload_modules = {"presence", "message", "iq"};
--- a/prosody	Tue May 04 23:11:41 2010 +0100
+++ b/prosody	Tue May 04 23:36:50 2010 +0100
@@ -120,6 +120,29 @@
 	end
 end
 
+function set_function_metatable()
+	local mt = {};
+	function mt.__index(f, upvalue)
+		local i, name, value = 0;
+		repeat
+			i = i + 1;
+			name, value = debug.getupvalue(f, i);
+		until name == upvalue or name == nil;
+		return value;
+	end
+	function mt.__newindex(f, upvalue, value)
+		local i, name = 0;
+		repeat
+			i = i + 1;
+			name = debug.getupvalue(f, i);
+		until name == upvalue or name == nil;
+		if name then
+			debug.setupvalue(f, i, value);
+		end
+	end
+	debug.setmetatable(function() end, mt);
+end
+
 function init_global_state()
 	bare_sessions = {};
 	full_sessions = {};
@@ -415,6 +438,7 @@
 init_logging();
 check_dependencies();
 sandbox_require();
+set_function_metatable();
 load_libraries();
 init_global_state();
 read_version();
--- a/prosody.cfg.lua.dist	Tue May 04 23:11:41 2010 +0100
+++ b/prosody.cfg.lua.dist	Tue May 04 23:36:50 2010 +0100
@@ -1,138 +1,127 @@
 -- Prosody Example Configuration File
---
--- If it wasn't already obvious, -- starts a comment, and all
--- text after it on a line is ignored by Prosody.
---
--- The config is split into sections, a global section, and one
--- for each defined host that we serve. You can add as many host
--- sections as you like.
---
--- Lists are written { "like", "this", "one" }
--- Lists can also be of { 1, 2, 3 } numbers, and other things.
--- Either commas, or semi-colons; may be used
--- as seperators.
+-- 
+-- Information on configuring Prosody can be found on our
+-- website at http://prosody.im/doc/configure
+-- 
+-- Tip: You can check that the syntax of this file is correct
+-- when you have finished by running: luac -p prosody.cfg.lua
+-- If there are any errors, it will let you know what and where
+-- they are, otherwise it will keep quiet.
 --
--- A table is a list of values, except each value has a name. An
--- example table would be:
---
--- ssl = { key = "keyfile.key", certificate = "certificate.cert" }
---
--- Whitespace (that is tabs, spaces, line breaks) is mostly
--- insignificant, so
--- can
--- be placed anywhere that      you deem fitting.
---
--- Tip: You can check that the syntax of this file is correct when you
--- have finished by running: luac -p prosody.cfg.lua
--- If there are any errors, it will let you know what and where they
--- are, otherwise it will keep quiet.
---
--- The only thing left to do is rename this file to remove the .dist
--- ending, and fill in the
+-- The only thing left to do is rename this file to remove the .dist ending, and fill in the
 -- blanks. Good luck, and happy Jabbering!
 
--- Server-wide settings go in this section
-Host "*"
+
+---------- Server-wide settings ----------
+-- Settings in this section apply to the whole server and are the default settings
+-- for any virtual hosts
 
-	-- This is a (by default, empty) list of accounts that are admins for the
-	-- server. Note that you must create the accounts separately (see
-	-- http://prosody.im/doc/creating_accounts)
-	-- Example: admins = { "user1@example.com", "user2@example.net" }
-	admins = { }
+-- This is a (by default, empty) list of accounts that are admins
+-- for the server. Note that you must create the accounts separately
+-- (see http://prosody.im/doc/creating_accounts for info)
+-- Example: admins = { "user1@example.com", "user2@example.net" }
+admins = { }
+
+-- Enable use of libevent for better performance under high load
+-- For more information see: http://prosody.im/doc/libevent
+--use_libevent = true;
+
+-- This is the list of modules Prosody will load on startup.
+-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
+-- Documentation on modules can be found at: http://prosody.im/doc/modules
+modules_enabled = {
 
-	-- Enable use of libevent for better performance under high load
-	-- For more information see: http://prosody.im/doc/libevent
-	--use_libevent = true;
+	-- Generally required
+		"roster"; -- Allow users to have a roster. Recommended ;)
+		"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
+		"tls"; -- Add support for secure TLS on c2s/s2s connections
+		"dialback"; -- s2s dialback support
+		"disco"; -- Service discovery
 
-	-- This is the list of modules Prosody will load on startup. It looks for
-	-- mod_modulename.lua in the plugins folder, so make sure that exists too.
-	-- Documentation on modules can be found at: http://prosody.im/doc/modules
-	modules_enabled = {
-		-- Generally required
-		"roster";   -- Allow users to have a roster. Recommended ;)
-		"saslauth"; -- Authentication for clients and servers. Recommended if
-		            -- you want to log in.
-		"dialback"; -- s2s dialback support
-		"disco";    -- Service discovery
-		"posix";    -- POSIX functionality, daemonizes, enables syslog, etc.
+	-- Not essential, but recommended
+		"private"; -- Private XML storage (for room bookmarks, etc.)
+		"vcard"; -- Allow users to set vCards
+		--"privacy"; -- Support privacy lists
+		--"compression"; -- Stream compression
+
+	-- Nice to have
+		"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
+		"version"; -- Replies to server version requests
+		"uptime"; -- Report how long server has been running
+		"time"; -- Let others know the time here on this server
+		"ping"; -- Replies to XMPP pings with pongs
+		"pep"; -- Enables users to publish their mood, activity, playing music and more
+		"register"; -- Allow users to register on this server using a client and change passwords
 
-		-- Not essential, but recommended
-		"private";       -- Private XML storage (for room bookmarks, etc.)
-		"vcard";         -- Allow users to set vCards
-		"tls";           -- Support for secure TLS on c2s/s2s connections
-		--"privacy";     -- Support privacy lists
-		--"compression"; -- Stream compression for client-to-server streams
+	-- Other specific functionality
+		--"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
+		--"console"; -- Opens admin telnet interface on localhost port 5582
+		--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
+		--"httpserver"; -- Serve static files from a directory over HTTP
+		--"groups"; -- Shared roster support
+		--"announce"; -- Send announcement to all online users
+		--"welcome"; -- Welcome users who register accounts
+		--"watchregistrations"; -- Alert admins of registrations
+};
+
+-- These modules are auto-loaded, should you
+-- for (for some mad reason) want to disable
+-- them then uncomment them below
+modules_disabled = {
+	-- "presence";
+	-- "message";
+	-- "iq";
+};
 
-		-- Nice to have
-		"legacyauth"; -- Legacy authentication. Only used by some old
-		              -- clients and bots.
-		"version";    -- Replies to server version requests
-		"uptime";     -- Report how long server has been running
-		"time";       -- Let others know the time here on this server
-		"ping";       -- Replies to XMPP pings with pongs
-		"pep";        -- Enables users to publish their mood, activity, playing
-		              -- music and more
-		"register";   -- Allow users to register on this server using a client
-		              -- and change passwords
+-- Disable account creation by default, for security
+-- For more information see http://prosody.im/doc/creating_accounts
+allow_registration = false;
+	
+-- These are the SSL/TLS-related settings. If you don't want
+-- to use SSL/TLS, you may comment or remove this
+ssl = {
+	key = "certs/localhost.key";
+	certificate = "certs/localhost.cert";
+}
+
+-- Require encryption on client/server connections?
+--c2s_require_encryption = false
+--s2s_require_encryption = false
 
-		-- Other specific functionality
-		--"console";            -- telnet to port 5582
-		                        -- (needs console_enabled = true)
-		--"bosh";               -- Enable BOSH clients, aka "Jabber over HTTP"
-		--"httpserver";         -- Serve static files from a directory over
-		                        -- HTTP
-		--"groups";             -- Shared roster support
-		--"announce";           -- Send announcement to all online users
-		--"welcome";            -- Welcome users who register accounts
-		--"watchregistrations"; -- Alert admins of registrations
+-- Logging configuration
+-- For advanced logging see http://prosody.im/doc/logging
+log = "prosody.log";
+debug = false; -- Log debug messages?
+
+----------- Virtual hosts -----------
+-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
+-- Settings under each VirtualHost entry apply *only* to that host.
+
+VirtualHost "localhost"
+
+VirtualHost "example.com"
+	enabled = false -- Remove this line to enable this host
+
+	-- Assign this host a certificate for TLS, otherwise it would use the one
+	-- set in the global section (if any).
+	-- Note that old-style SSL on port 5223 only supports one certificate, and will always
+	-- use the global one.
+	ssl = { 
+		key = "certs/example.com.key";
+		certificate = "certs/example.com.crt";
 	}
 
-	-- These modules are auto-loaded, should you for (for some mad
-	-- reason) want to disable them then uncomment them below.
-	modules_disabled = {
-		--"presence";
-		--"message";
-		--"iq";
-	}
-
-	-- Disable account creation by default, for security
-	-- For more information see http://prosody.im/doc/creating_accounts
-	allow_registration = false;
-
-	--These are the SSL/TLS-related settings.
-	--ssl = {
-	--    key = "certs/localhost.key";
-	--    certificate = "certs/localhost.cert";
-	--}
-
-	-- Require encryption on client/server connections?
-	--c2s_require_encryption = false
-	--s2s_require_encryption = false
+------ Components ------
+-- You can specify components to add hosts that provide special services,
+-- like multi-user conferences, and transports.
+-- For more information on components, see http://prosody.im/doc/components
 
-	-- Logging configuration
-	-- For advanced logging see http://prosody.im/doc/logging
-	log = "prosody.log";
-	debug = false; -- Log debug messages?
-
--- This allows clients to connect to localhost. No harm in it.
-Host "localhost"
-
--- Section for example.com
--- (replace example.com with your domain name)
-Host "example.com"
-	enabled = false -- This will disable the host, preserving the config, but
-	                -- denying connections (remove to enable!)
-
-	-- Assign this host a certificate for TLS, otherwise it would use the one
-	-- set in the global section (if any). Note that old-style SSL on port 5223
-	-- only supports one certificate, and will always use the global one.
-	--ssl = {
-	--    key = "certs/example.com.key";
-	--    certificate = "certs/example.com.crt";
-	--}
-
--- Set up a MUC (multi-user chat) room server on conference.example.com:
+---Set up a MUC (multi-user chat) room server on conference.example.com:
 --Component "conference.example.com" "muc"
 
 -- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
 --Component "proxy.example.com" "proxy65"
+
+---Set up an external component (default component port is 5347)
+--Component "gateway.example.com"
+--	component_secret = "password"