X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=plugins%2Fmod_http_files.lua;h=7c503c826cde665db207d75f1020ab092722e6d8;hb=0979336ed04a158da127710b0cf574c885556668;hp=915bec58b56b28a1e6a6a1f0250c1f25bf0b3ad1;hpb=5a1000e8e61beb0c9ecf56ad9342d5b7031f9b49;p=prosody.git diff --git a/plugins/mod_http_files.lua b/plugins/mod_http_files.lua index 915bec58..7c503c82 100644 --- a/plugins/mod_http_files.lua +++ b/plugins/mod_http_files.lua @@ -1,7 +1,7 @@ -- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain --- +-- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- @@ -14,12 +14,13 @@ local os_date = os.date; local open = io.open; local stat = lfs.attributes; local build_path = require"socket.url".build_path; +local path_sep = package.config:sub(1,1); local base_path = module:get_option_string("http_files_dir", module:get_option_string("http_path")); local dir_indices = module:get_option("http_index_files", { "index.html", "index.htm" }); local directory_index = module:get_option_boolean("http_dir_listing"); -local mime_map = module:shared("mime").types; +local mime_map = module:shared("/*/http_files/mime").types; if not mime_map then mime_map = { html = "text/html", htm = "text/html", @@ -32,7 +33,7 @@ if not mime_map then jpeg = "image/jpeg", jpg = "image/jpeg", svg = "image/svg+xml", }; - module:shared("mime").types = mime_map; + module:shared("/*/http_files/mime").types = mime_map; local mime_types, err = open(module:get_option_string("mime_types_file", "/etc/mime.types"),"r"); if mime_types then @@ -60,8 +61,8 @@ function serve(opts) local function serve_file(event, path) local request, response = event.request, event.response; local orig_path = request.path; - local full_path = base_path .. (path and "/"..path or ""); - local attr = stat(full_path); + local full_path = base_path .. (path and "/"..path or ""):gsub("/", path_sep); + local attr = stat(full_path:match("^.*[^\\/]")); -- Strip trailing path separator because Windows if not attr then return 404; end