pull/437/head
midoks 2 years ago
parent a46eabce10
commit 2e5c5ef5b9
  1. 83
      plugins/op_waf/index.py
  2. 2
      plugins/op_waf/install.sh
  3. 36
      plugins/op_waf/waf/lua/init.lua

@ -104,8 +104,6 @@ def pSqliteDb(dbname='logs'):
def initDomainInfo(conf_reload=False):
data = []
path_domains = getJsonPath('domains')
if not os.path.exists(path_domains) and not conf_reload:
return True
_list = mw.M('sites').field('id,name,path').where(
'status=?', ('1',)).order('id desc').select()
@ -301,8 +299,6 @@ def autoMakeLuaConf(conf_reload=False, cp_reload=False):
import_list = ['config', 'site', 'domains']
for x in import_list:
if cp_reload:
autoCpImport(x)
autoMakeLuaImportSingle(x, conf_reload)
html_list = ['get', 'post', 'safe_js', 'user_agent', 'cookie', 'other']
@ -314,10 +310,12 @@ def autoMakeLuaConf(conf_reload=False, cp_reload=False):
def initDefaultInfo(conf_reload=False):
path = getServerDir()
djson = path + "/waf/domains.json"
default_json = path + "/waf/default.json"
content = mw.readFile(djson)
dst_path = path + "/waf/default.pl"
default_site = ''
if os.path.exists(dst_path):
return True
source_path = path + "/waf/domains.json"
content = mw.readFile(source_path)
content = json.loads(content)
ddata = {}
@ -328,11 +326,43 @@ def initDefaultInfo(conf_reload=False):
dlist.append('unset')
ddata["list"] = dlist
if len(ddata["list"]) < 1:
ddata["default"] = "unset"
default_site = "unset"
else:
ddata["default"] = dlist[0]
default_site = dlist[0]
mw.writeFile(dst_path, default_site)
def getSiteListData():
path = getServerDir()
source_path = path + "/waf/domains.json"
dst_path = path + "/waf/default.pl"
content = mw.readFile(source_path)
content = json.loads(content)
dlist = []
for i in content:
dlist.append(i["name"])
dlist.append('unset')
default_site = mw.readFile(dst_path)
data = {}
data['list'] = dlist
data['default'] = default_site
return data
def setDefaultSite(name):
path = getServerDir()
dst_path = path + "/waf/default.pl"
mw.writeFile(dst_path, name)
return mw.returnJson(True, 'OK')
mw.writeFile(default_json, json.dumps(ddata))
def getDefaultSite():
data = getSiteListData()
return mw.returnJson(True, 'OK', data)
def autoMakeConfig(conf_reload=False, cp_reload=False):
@ -385,9 +415,18 @@ def makeOpDstRunLua(conf_reload=False):
access_file_dst = root_access_dir + '/opwaf_init.lua'
if not os.path.exists(access_file_dst) or conf_reload:
access_file_tpl = path_tpl + "/waf/lua/init.lua"
access_file_dst_s = path + "/waf/lua/init.lua"
content = mw.readFile(access_file_tpl)
content = contentReplace(content)
mw.writeFile(access_file_dst, content)
mw.writeFile(access_file_dst_s, content)
waf_mmdb_dst = path + "/waf/lua/waf_maxminddb.lua"
if not os.path.exists(waf_mmdb_dst) or conf_reload:
waf_mmdb_tpl = path_tpl + "/waf/lua/waf_maxminddb.lua"
content = mw.readFile(waf_mmdb_tpl)
content = contentReplace(content)
mw.writeFile(waf_mmdb_dst, content)
mw.opLuaMakeAll()
return True
@ -498,7 +537,7 @@ def reload():
mw.opWeb('stop')
makeOpDstRunLua(True)
autoMakeConfig(True, False)
autoMakeConfig(True, True)
elog = mw.getServerDir() + "/openresty/nginx/logs/error.log"
if os.path.exists(elog):
@ -1014,26 +1053,6 @@ def getSiteConfig():
return mw.returnJson(True, 'ok!', content)
def getSiteListData():
path = getServerDir() + "/waf/default.json"
data = mw.readFile(path)
return json.loads(data)
def setDefaultSite(name):
path = getServerDir() + "/waf/default.json"
data = mw.readFile(path)
data = json.loads(data)
data['default'] = name
mw.writeFile(path, json.dumps(data))
return mw.returnJson(True, 'OK')
def getDefaultSite():
data = getSiteListData()
return mw.returnJson(True, 'OK', data)
def getSiteConfigByName():
args = getArgs()
data = checkArgs(args, ['siteName'])

@ -117,7 +117,7 @@ Install_App(){
echo 'install ok' > $install_tmp
cd ${rootPath} && python3 ${rootPath}/plugins/op_waf/index.py start
# cd ${rootPath} && python3 ${rootPath}/plugins/op_waf/index.py restart
echo "cd ${rootPath} && python3 ${rootPath}/plugins/op_waf/index.py start"
}
Uninstall_App(){

@ -549,11 +549,47 @@ local function waf_cookie()
return false
end
local function initmaxminddb()
if geo ==nil then
maxminddb ,geo = pcall(function() return require 'waf_maxminddb' end)
if not maxminddb then
return nil
end
end
if type(geo)=='number' then return nil end
local ok2,data=pcall(function()
if not geo.initted() then
geo.init("{$WAF_ROOT}/GeoLite2-City.mmdb")
end
end )
if not ok2 then
geo=nil
end
end
local function get_ip_Country()
initmaxminddb()
if type(geo)=='number' then return "21" end
if geo==nil then return "22" end
if geo.lookup==nil then return "23" end
local res,err=geo.lookup(param['ip'] or ngx.var.remote_addr)
if not res then
return "2"
else
return res
end
end
function waf()
if server_name == "unset" then ngx.exit(403) end
min_route()
-- C:D("min_route")
overcon = get_ip_Country()
C:D(tostring(overcon))
if site_config[server_name] and site_config[server_name]['open'] then
-- white ip

Loading…
Cancel
Save