From da563cbf87e505d415399441d69277ee55277a23 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Fri, 21 Dec 2012 20:08:33 +0100 Subject: mod_http_files: Replace file listing with an event, allowing a different plugin to generate it --- plugins/mod_http_files.lua | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) (limited to 'plugins/mod_http_files.lua') diff --git a/plugins/mod_http_files.lua b/plugins/mod_http_files.lua index 1de58407..bd39936d 100644 --- a/plugins/mod_http_files.lua +++ b/plugins/mod_http_files.lua @@ -7,6 +7,7 @@ -- module:depends("http"); +local server = require"net.http.server"; local lfs = require "lfs"; local os_date = os.date; @@ -94,27 +95,14 @@ function serve(opts) end end - if not directory_index then + if directory_index then + data = server._events.fire_event("directory-index", { path = request.path, full_path = full_path }); + end + if not data then return 403; - else - local html = require"util.stanza".stanza("html") - :tag("head"):tag("title"):text(path):up() - :tag("meta", { charset="utf-8" }):up() - :up() - :tag("body"):tag("h1"):text(path):up() - :tag("ul"); - for file in lfs.dir(full_path) do - if file:sub(1,1) ~= "." then - local attr = stat(full_path..file) or {}; - html:tag("li", { class = attr.mode }) - :tag("a", { href = file }):text(file) - :up():up(); - end - end - data = "\n"..tostring(html); - cache[path] = { data = data, content_type = mime_map.html; etag = etag; }; - response_headers.content_type = mime_map.html; end + cache[path] = { data = data, content_type = mime_map.html; etag = etag; }; + response_headers.content_type = mime_map.html; else local f, err = open(full_path, "rb"); -- cgit v1.2.3