You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

57 lines
1.4 KiB

-- secdownload.lua
-- usage:
-- a) load mod_lua and this plugin:
-- setup {
-- module_load "mod_lua";
-- lua.plugin "/path/secdownload.lua";
-- }
-- b) activate it anywhere you want:
-- secdownload [ "prefix" => "/sec/", "document-root" => "/secret/path", "secret" => "abc", "timeout" => 600 ];
local filename, args = ...
-- basepath for loading sub handlers with lua.handler
-- this allows us to have lua actions that don't use the global lock
local basepath = filename:gsub("(.*/)(.*)", "%1")
local function secdownload(options)
if type(options) ~= "table" then
lighty.error("secdownload expects a hashtable as parameter")
return nil
end
local uri_prefix = options["prefix"]
local doc_root = options["document-root"]
local secret = options["secret"]
local timeout = tonumber(options["timeout"]) or 60
if secret == nil then
lighty.error("secdownload: need secret in options")
return nil
end
if doc_root == nil then
lighty.error("secdownload: need doc_root in options")
return nil
end
if doc_root:sub(-1) ~= "/" then
doc_root = doc_root .. "/"
end
if uri_prefix == nil then
uri_prefix = "/"
end
local args = { ["prefix"] = uri_prefix, ["document-root"] = doc_root, ["secret"] = secret, ["timeout"] = timeout }
local handle_secdownload = action.lua.handler(basepath .. 'secdownload__secdownload.lua', nil, args)
return handle_secdownload
end
actions = {
["secdownload"] = secdownload
}