1 module("luci.httpd.handler.file", package.seeall)
2 require("luci.httpd.module")
6 Simple = luci.util.class(luci.httpd.module.Handler)
7 Response = luci.httpd.module.Response
9 function Simple.__init__(self, docroot)
10 luci.httpd.module.Handler.__init__(self)
11 self.docroot = docroot
14 function Simple.handle(self, request, sourcein, sinkerr)
15 local uri = request.env.PATH_INFO
16 local file = self.docroot .. uri:gsub("%.%./", "")
17 local stat = luci.fs.stat(file)
20 if stat.type == "regular" then
21 return Response(200, {["Content-Length"] = stat.size}), ltn12.source.file(io.open(file))
23 return self:failure(403, "Unable to transmit " .. stat.type .. " " .. uri)
26 return self:failure(404, "No such file: " .. uri)