diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-07-13 09:25:45 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-07-13 09:25:45 +0100 |
commit | 5b93b0675f9df50181de081cb082dcea35d9b643 (patch) | |
tree | 3a21781c174cdb06edbe2e883776fbd4ee23d7d7 /plugins/mod_httpserver.lua | |
parent | e48fd00794d9f11a1f7cd642ce6a476e8ec91e02 (diff) | |
download | prosody-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)
Diffstat (limited to 'plugins/mod_httpserver.lua')
-rw-r--r-- | plugins/mod_httpserver.lua | 11 |
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(); |