Merge 0.10->trunk
authorMatthew Wild <mwild1@gmail.com>
Thu, 10 Dec 2015 18:58:30 +0000
changeset 6991 329d5fb8a9d3
parent 6981 30c96a5db360 (current diff)
parent 6990 06696882d972 (diff)
child 6992 118858bf47cd
Merge 0.10->trunk
plugins/mod_admin_telnet.lua
plugins/muc/muc.lib.lua
--- a/.luacheckrc	Tue Dec 08 23:15:42 2015 +0000
+++ b/.luacheckrc	Thu Dec 10 18:58:30 2015 +0000
@@ -1,5 +1,5 @@
 cache = true
-read_globals = { "prosody", "hosts" }
+read_globals = { "prosody", "hosts", "import" }
 globals = { "_M" }
 allow_defined_top = true
 module = true
--- a/core/portmanager.lua	Tue Dec 08 23:15:42 2015 +0000
+++ b/core/portmanager.lua	Thu Dec 10 18:58:30 2015 +0000
@@ -111,10 +111,10 @@
 					local global_ssl_config = config.get("*", "ssl") or {};
 					local prefix_ssl_config = config.get("*", config_prefix.."ssl") or global_ssl_config;
 					ssl, err = certmanager.create_context(service_info.name.." port "..port, "server",
-						service_info.ssl_config or {},
 						prefix_ssl_config[interface],
 						prefix_ssl_config[port],
 						prefix_ssl_config,
+						service_info.ssl_config or {},
 						global_ssl_config[interface],
 						global_ssl_config[port]);
 					if not ssl then
--- a/core/usermanager.lua	Tue Dec 08 23:15:42 2015 +0000
+++ b/core/usermanager.lua	Thu Dec 10 18:58:30 2015 +0000
@@ -111,7 +111,6 @@
 	if host and not hosts[host] then return false; end
 	if type(jid) ~= "string" then return false; end
 
-	local is_admin;
 	jid = jid_bare(jid);
 	host = host or "*";
 
@@ -122,8 +121,7 @@
 		if type(host_admins) == "table" then
 			for _,admin in ipairs(host_admins) do
 				if jid_prep(admin) == jid then
-					is_admin = true;
-					break;
+					return true;
 				end
 			end
 		elseif host_admins then
@@ -131,12 +129,11 @@
 		end
 	end
 
-	if not is_admin and global_admins then
+	if global_admins then
 		if type(global_admins) == "table" then
 			for _,admin in ipairs(global_admins) do
 				if jid_prep(admin) == jid then
-					is_admin = true;
-					break;
+					return true;
 				end
 			end
 		elseif global_admins then
@@ -145,10 +142,10 @@
 	end
 
 	-- Still not an admin, check with auth provider
-	if not is_admin and host ~= "*" and hosts[host].users and hosts[host].users.is_admin then
-		is_admin = hosts[host].users.is_admin(jid);
+	if host ~= "*" and hosts[host].users and hosts[host].users.is_admin then
+		return hosts[host].users.is_admin(jid);
 	end
-	return is_admin or false;
+	return false;
 end
 
 return {
--- a/plugins/mod_admin_telnet.lua	Tue Dec 08 23:15:42 2015 +0000
+++ b/plugins/mod_admin_telnet.lua	Thu Dec 10 18:58:30 2015 +0000
@@ -282,6 +282,8 @@
 -- Session environment --
 -- Anything in def_env will be accessible within the session as a global variable
 
+--luacheck: ignore 212/self
+
 def_env.server = {};
 
 function def_env.server:insane_reload()
@@ -1125,6 +1127,33 @@
 	return true, "Cache:\n"..tostring(dns.cache())
 end
 
+def_env.http = {};
+
+function def_env.http:list()
+	local print = self.session.print;
+
+	for host in pairs(prosody.hosts) do
+		local http_apps = modulemanager.get_items("http-provider", host);
+		if #http_apps > 0 then
+			local http_host = module:context(host):get_option("http_host");
+			print("HTTP endpoints on "..host..(http_host and (" (using "..http_host.."):") or ":"));
+			for _, provider in ipairs(http_apps) do
+				local url = module:context(host):http_url(provider.name);
+				print("", url);
+			end
+			print("");
+		end
+	end
+
+	local default_host = module:get_option("http_default_host");
+	if not default_host then
+		print("HTTP requests to unknown hosts will return 404 Not Found");
+	else
+		print("HTTP requests to unknown hosts will be handled by "..default_host);
+	end
+	return true;
+end
+
 -------------
 
 function printbanner(session)
--- a/plugins/mod_compression.lua	Tue Dec 08 23:15:42 2015 +0000
+++ b/plugins/mod_compression.lua	Thu Dec 10 18:58:30 2015 +0000
@@ -27,14 +27,12 @@
 module:hook("stream-features", function(event)
 	local origin, features = event.origin, event.features;
 	if not origin.compressed and origin.type == "c2s" then
-		-- FIXME only advertise compression support when TLS layer has no compression enabled
 		features:add_child(compression_stream_feature);
 	end
 end);
 
 module:hook("s2s-stream-features", function(event)
 	local origin, features = event.origin, event.features;
-	-- FIXME only advertise compression support when TLS layer has no compression enabled
 	if not origin.compressed and origin.type == "s2sin" then
 		features:add_child(compression_stream_feature);
 	end
--- a/prosody	Tue Dec 08 23:15:42 2015 +0000
+++ b/prosody	Thu Dec 10 18:58:30 2015 +0000
@@ -43,6 +43,12 @@
 	end
 end
 
+if #arg > 0 and arg[1] ~= "--config" then
+	print("Unknown command-line option: "..tostring(arg[1]));
+	print("Perhaps you meant to use prosodyctl instead?");
+	return 1;
+end
+
 -- Global 'prosody' object
 local prosody = { events = require "util.events".new(); };
 _G.prosody = prosody;
--- a/util/dataforms.lua	Tue Dec 08 23:15:42 2015 +0000
+++ b/util/dataforms.lua	Thu Dec 10 18:58:30 2015 +0000
@@ -118,6 +118,7 @@
 function form_t.data(layout, stanza)
 	local data = {};
 	local errors = {};
+	local present = {};
 
 	for _, field in ipairs(layout) do
 		local tag;
@@ -133,6 +134,7 @@
 				errors[field.name] = "Required value missing";
 			end
 		else
+			present[field.name] = true;
 			local reader = field_readers[field.type];
 			if reader then
 				data[field.name], errors[field.name] = reader(tag, field.required);
@@ -140,9 +142,9 @@
 		end
 	end
 	if next(errors) then
-		return data, errors;
+		return data, errors, present;
 	end
-	return data;
+	return data, nil, present;
 end
 
 local function simple_text(field_tag, required)