# HG changeset patch # User Matthew Wild # Date 1279009545 -3600 # Node ID cd3cbf361f8ff5c2d2249f93daf10b9bbc0363eb # Parent 770e27bf11eab6ef1af205e5e7a57de57fb622f2 mod_httpserver: Serve index.html if a request is made for a directory and it contains one (thanks Brian Cully) diff -r 770e27bf11ea -r cd3cbf361f8f plugins/mod_httpserver.lua --- a/plugins/mod_httpserver.lua Tue Jul 13 08:59:00 2010 +0100 +++ b/plugins/mod_httpserver.lua Tue Jul 13 09:25:45 2010 +0100 @@ -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 @@ 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();