aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2010-07-13 09:25:45 +0100
committerMatthew Wild <mwild1@gmail.com>2010-07-13 09:25:45 +0100
commit5b93b0675f9df50181de081cb082dcea35d9b643 (patch)
tree3a21781c174cdb06edbe2e883776fbd4ee23d7d7
parente48fd00794d9f11a1f7cd642ce6a476e8ec91e02 (diff)
downloadprosody-5b93b0675f9df50181de081cb082dcea35d9b643.tar.gz
prosody-5b93b0675f9df50181de081cb082dcea35d9b643.zip
mod_httpserver: Serve index.html if a request is made for a directory and it contains one (thanks Brian Cully)
-rw-r--r--plugins/mod_httpserver.lua11
1 files changed, 10 insertions, 1 deletions
diff --git a/plugins/mod_httpserver.lua b/plugins/mod_httpserver.lua
index c55bd20f..654aff06 100644
--- a/plugins/mod_httpserver.lua
+++ b/plugins/mod_httpserver.lua
@@ -8,9 +8,11 @@
local httpserver = require "net.httpserver";
+local lfs = require "lfs";
local open = io.open;
local t_concat = table.concat;
+local stat = lfs.attributes;
local http_base = config.get("*", "core", "http_path") or "www_files";
@@ -48,7 +50,14 @@ local function preprocess_path(path)
end
function serve_file(path)
- local f, err = open(http_base..path, "rb");
+ local full_path = http_base..path;
+ if stat(full_path, "mode") == "directory" then
+ if stat(full_path.."/index.html", "mode") == "file" then
+ return serve_file(path.."/index.html");
+ end
+ return response_403;
+ end
+ local f, err = open(full_path, "rb");
if not f then return response_404; end
local data = f:read("*a");
f:close();