You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
Lua
58 lines
1.4 KiB
Lua
|
|
-- 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
|
|
}
|