Changeset

5257:b125892e187c

mod_http_files: Escape paths in redirects
author Kim Alvefur <zash@zash.se>
date Fri, 21 Dec 2012 09:04:02 +0100
parents 5256:a77c6eba461e
children 5258:79bdd093d6ba 5259:c85c348253bd
files plugins/mod_http_files.lua
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_http_files.lua	Fri Dec 21 08:27:14 2012 +0100
+++ b/plugins/mod_http_files.lua	Fri Dec 21 09:04:02 2012 +0100
@@ -12,6 +12,7 @@
 local os_date = os.date;
 local open = io.open;
 local stat = lfs.attributes;
+local build_path = require"socket.url".build_path;
 
 local http_base = module:get_option_string("http_files_dir", module:get_option_string("http_path", "www_files"));
 local dir_indices = module:get_option("http_files_index", { "index.html", "index.htm" });
@@ -78,7 +79,9 @@
 		data = data.data;
 	elseif attr.mode == "directory" then
 		if full_path:sub(-1) ~= "/" then
-			response_headers.location = orig_path.."/";
+			local path = { is_absolute = true, is_directory = true };
+			for dir in orig_path:gmatch("[^/]+") do path[#path+1]=dir; end
+			response_headers.location = build_path(path);
 			return 301;
 		end
 		for i=1,#dir_indices do