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

-- 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