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.
205 lines
6.2 KiB
Lua
205 lines
6.2 KiB
Lua
-- most code is from https://github.com/idevz/vanilla/blob/master/vanilla/sys/nginx/directive.lua
|
|
|
|
package.path = './app/?.lua;' .. package.path
|
|
package.cpath = './app/library/?.so;' .. package.cpath
|
|
|
|
|
|
local Directive = {}
|
|
|
|
function Directive:new(env)
|
|
local run_env = 'prod'
|
|
if env ~= nil then run_env = env end
|
|
local instance = {
|
|
run_env = run_env,
|
|
directiveSets = self.directiveSets
|
|
}
|
|
setmetatable(instance, Directive)
|
|
return instance
|
|
end
|
|
|
|
function Directive:luaPackagePath(lua_path)
|
|
local path = package.path
|
|
if lua_path ~= nil then path = lua_path .. path end
|
|
local res = [[lua_package_path "]] .. path .. [[;;";]]
|
|
return res
|
|
end
|
|
|
|
function Directive:luaPackageCpath(lua_cpath)
|
|
local path = package.cpath
|
|
if lua_cpath ~= nil then path = lua_cpath .. path end
|
|
local res = [[lua_package_cpath "]] .. path .. [[;;";]]
|
|
return res
|
|
end
|
|
|
|
function Directive:codeCache(bool_var)
|
|
if bool_var == true then bool_var = 'on' else bool_var = 'off' end
|
|
local res = [[lua_code_cache ]] .. bool_var.. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:luaSharedDict( lua_lib )
|
|
local ok, sh_dict_conf_or_error = pcall(function() return require(lua_lib) end)
|
|
if ok == false then
|
|
return false
|
|
end
|
|
local res = ''
|
|
if sh_dict_conf_or_error ~= nil then
|
|
for name,size in pairs(sh_dict_conf_or_error) do
|
|
res = res .. [[lua_shared_dict ]] .. name .. ' ' .. size .. ';'
|
|
end
|
|
end
|
|
return res
|
|
end
|
|
|
|
function Directive:initByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[init_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:initByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[init_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:initWorkerByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[init_worker_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:initWorkerByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[init_worker_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:setByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[set_by_lua require(']] .. lua_lib .. [[');]]
|
|
return res
|
|
end
|
|
|
|
function Directive:setByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[set_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:rewriteByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[rewrite_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:rewriteByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[rewrite_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:accessByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[access_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:accessByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[access_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:contentByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
-- local res = [[content_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
local res = [[location / {
|
|
content_by_lua require(']] .. lua_lib .. [['):run();
|
|
}]]
|
|
return res
|
|
end
|
|
|
|
function Directive:contentByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[location / {
|
|
content_by_lua_file ]] .. lua_file .. [[;
|
|
}]]
|
|
return res
|
|
end
|
|
|
|
function Directive:headerFilterByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[header_filter_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:headerFilterByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[header_filter_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:bodyFilterByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[body_filter_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:bodyFilterByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[body_filter_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
function Directive:logByLua(lua_lib)
|
|
if lua_lib == nil then return '' end
|
|
local res = [[log_by_lua require(']] .. lua_lib .. [['):run();]]
|
|
return res
|
|
end
|
|
|
|
function Directive:logByLuaFile(lua_file)
|
|
if lua_file == nil then return '' end
|
|
local res = [[log_by_lua_file ]] .. lua_file .. [[;]]
|
|
return res
|
|
end
|
|
|
|
|
|
function Directive:staticFileDirectory(static_file_directory)
|
|
if static_file_directory == nil then return '' end
|
|
return static_file_directory
|
|
end
|
|
|
|
|
|
function Directive:directiveSets()
|
|
return {
|
|
['LOR_ENV'] = self.run_env,
|
|
['PORT'] = 80,
|
|
['NGX_PATH'] = '',
|
|
['LUA_PACKAGE_PATH'] = Directive.luaPackagePath,
|
|
['LUA_PACKAGE_CPATH'] = Directive.luaPackageCpath,
|
|
['LUA_CODE_CACHE'] = Directive.codeCache,
|
|
['LUA_SHARED_DICT'] = Directive.luaSharedDict,
|
|
['INIT_BY_LUA'] = Directive.initByLua,
|
|
['INIT_BY_LUA_FILE'] = Directive.initByLuaFile,
|
|
['INIT_WORKER_BY_LUA'] = Directive.initWorkerByLua,
|
|
['INIT_WORKER_BY_LUA_FILE'] = Directive.initWorkerByLuaFile,
|
|
['SET_BY_LUA'] = Directive.setByLua,
|
|
['SET_BY_LUA_FILE'] = Directive.setByLuaFile,
|
|
['REWRITE_BY_LUA'] = Directive.rewriteByLua,
|
|
['REWRITE_BY_LUA_FILE'] = Directive.rewriteByLuaFile,
|
|
['ACCESS_BY_LUA'] = Directive.accessByLua,
|
|
['ACCESS_BY_LUA_FILE'] = Directive.accessByLuaFile,
|
|
['CONTENT_BY_LUA'] = Directive.contentByLua,
|
|
['CONTENT_BY_LUA_FILE'] = Directive.contentByLuaFile,
|
|
['HEADER_FILTER_BY_LUA'] = Directive.headerFilterByLua,
|
|
['HEADER_FILTER_BY_LUA_FILE'] = Directive.headerFilterByLuaFile,
|
|
['BODY_FILTER_BY_LUA'] = Directive.bodyFilterByLua,
|
|
['BODY_FILTER_BY_LUA_FILE'] = Directive.bodyFilterByLuaFile,
|
|
['LOG_BY_LUA'] = Directive.logByLua,
|
|
['LOG_BY_LUA_FILE'] = Directive.logByLuaFile,
|
|
['STATIC_FILE_DIRECTORY'] = Directive.staticFileDirectory
|
|
}
|
|
end
|
|
|
|
return Directive |