50 lines
1.3 KiB
Lua
50 lines
1.3 KiB
Lua
--[[
|
|
LuCId HTTP-Slave
|
|
(c) 2009 Steven Barth <steven@midlink.org>
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
$Id$
|
|
]]--
|
|
|
|
local ipairs, require, tostring, type = ipairs, require, tostring, type
|
|
local file = require "luci.lucid.http.handler.file"
|
|
local srv = require "luci.lucid.http.server"
|
|
|
|
module "luci.lucid.http.DirectoryPublisher"
|
|
|
|
|
|
--- Prepare a directory publisher and assign it to a given Virtual Host.
|
|
-- @param server HTTP daemon object
|
|
-- @param config publisher configuration
|
|
function factory(server, config)
|
|
config.domain = config.domain or ""
|
|
local vhost = server:get_vhosts()[config.domain]
|
|
if not vhost then
|
|
vhost = srv.VHost()
|
|
server:set_vhost(config.domain, vhost)
|
|
end
|
|
|
|
local handler = file.Simple(config.name, config.physical, config)
|
|
if config.read then
|
|
for _, r in ipairs(config.read) do
|
|
if r:sub(1,1) == ":" then
|
|
handler:restrict({interface = r:sub(2)})
|
|
else
|
|
handler:restrict({user = r})
|
|
end
|
|
end
|
|
end
|
|
|
|
if type(config.virtual) == "table" then
|
|
for _, v in ipairs(config.virtual) do
|
|
vhost:set_handler(v, handler)
|
|
end
|
|
else
|
|
vhost:set_handler(config.virtual or "", handler)
|
|
end
|
|
end
|