|
|
|
|
|
|
|
|
|
|
|
local setmetatable = setmetatable
|
|
|
|
local _M = { _VERSION = '0.01' }
|
|
|
|
local mt = { __index = _M }
|
|
|
|
local json = require "cjson"
|
|
|
|
|
|
|
|
|
|
|
|
function _M.new(cpath, rpath)
|
|
|
|
-- ngx.log(ngx.ERR,"read:"..cpath..",rpath:"..rpath)
|
|
|
|
local self = {
|
|
|
|
cpath = cpath,
|
|
|
|
rpath = rpath,
|
|
|
|
config = '',
|
|
|
|
site_config = ''
|
|
|
|
}
|
|
|
|
local p = setmetatable(self, mt)
|
|
|
|
return p
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function _M.setConfData( self, config, site_config )
|
|
|
|
self.config = config
|
|
|
|
self.site_config = site_config
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function _M.return_message(self, status, msg)
|
|
|
|
ngx.header.content_type = "application/json;"
|
|
|
|
ngx.status = status
|
|
|
|
ngx.say(json.encode(msg))
|
|
|
|
ngx.exit(status)
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function _M.return_html(self,status,html)
|
|
|
|
ngx.header.content_type = "text/html"
|
|
|
|
ngx.status = status
|
|
|
|
ngx.say(html)
|
|
|
|
ngx.exit(status)
|
|
|
|
end
|
|
|
|
|
|
|
|
function _M.read_file_body(self, filename)
|
|
|
|
-- ngx.log(ngx.ERR,"read_file_body:"..filename)
|
|
|
|
fp = io.open(filename, 'r')
|
|
|
|
if fp == nil then
|
|
|
|
return nil
|
|
|
|
end
|
|
|
|
fbody = fp:read("*a")
|
|
|
|
fp:close()
|
|
|
|
if fbody == '' then
|
|
|
|
return nil
|
|
|
|
end
|
|
|
|
return fbody
|
|
|
|
end
|
|
|
|
|
|
|
|
function _M.continue_key(self,key)
|
|
|
|
key = tostring(key)
|
|
|
|
if string.len(key) > 64 then return false end;
|
|
|
|
local keys = {"content","contents","body","msg","file","files","img","newcontent"}
|
|
|
|
for _,k in ipairs(keys)
|
|
|
|
do
|
|
|
|
if k == key then return false end;
|
|
|
|
end
|
|
|
|
return true;
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function _M.array_len(self, arr)
|
|
|
|
if not arr then return 0 end
|
|
|
|
local count = 0
|
|
|
|
for _,v in ipairs(arr)
|
|
|
|
do
|
|
|
|
count = count + 1
|
|
|
|
end
|
|
|
|
return count
|
|
|
|
end
|
|
|
|
|
|
|
|
function _M.is_ipaddr(self, client_ip)
|
|
|
|
local cipn = split(client_ip,'.')
|
|
|
|
if self:array_len(cipn) < 4 then return false end
|
|
|
|
for _,v in ipairs({1,2,3,4})
|
|
|
|
do
|
|
|
|
local ipv = tonumber(cipn[v])
|
|
|
|
if ipv == nil then return false end
|
|
|
|
if ipv > 255 or ipv < 0 then return false end
|
|
|
|
end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function _M.read_file_body_decode(self, filename)
|
|
|
|
return json.decode(self:read_file_body(filename))
|
|
|
|
end
|
|
|
|
|
|
|
|
function _M.select_rule(self, rules)
|
|
|
|
if not rules then return {} end
|
|
|
|
new_rules = {}
|
|
|
|
for i,v in ipairs(rules)
|
|
|
|
do
|
|
|
|
if v[1] == 1 then
|
|
|
|
table.insert(new_rules,v[2])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return new_rules
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function _M.read_file(self, name)
|
|
|
|
f = self.rpath .. name .. '.json'
|
|
|
|
fbody = self:read_file_body(f)
|
|
|
|
if fbody == nil then
|
|
|
|
return {}
|
|
|
|
end
|
|
|
|
return json.decode(fbody)
|
|
|
|
end
|
|
|
|
|
|
|
|
function _M.read_file_table( self, name )
|
|
|
|
return self:select_rule(self:read_file('args'))
|
|
|
|
end
|
|
|
|
|
|
|
|
function _M.t(self)
|
|
|
|
ngx.say(',,,')
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
return _M
|