This commit is contained in:
midoks 2023-08-15 00:00:44 +08:00
parent 00ce3e00d3
commit b2fe35771d
6 changed files with 203 additions and 4 deletions

View File

@ -102,7 +102,7 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443:
### 版本更新 0.15.4
* OP防火墙-验证优化。
* OP防火墙-验证优化[cf缓存问题解决]
* 在aarch64架构下低于PHP70的版本[安装/扩展安装]优化。
### JSDelivr安装地址

View File

@ -245,6 +245,7 @@
<p onclick="wafScreen();">首页</p>
<p onclick="wafGloabl();">全局配置</p>
<p onclick="wafSite();">站点配置</p>
<p onclick="wafAreaLimit();">地区限制</p>
<p onclick="wafLogs();">封锁历史</p>
<!-- <p onclick="wafOpLogs();">操作日志</p> -->
</div>

View File

@ -1284,6 +1284,14 @@ def getWafConf():
return mw.readFile(conf)
def getAreaLimit():
conf = getJsonPath('area_limit')
if not os.path.exists(conf):
mw.writeFile(conf, '[]')
setConfRestartWeb()
return mw.readFile(conf)
def cleanDropIp():
url = "http://127.0.0.1/clean_waf_drop_ip"
data = mw.httpGet(url)
@ -1397,8 +1405,8 @@ if __name__ == "__main__":
print(getWafSrceen())
elif func == 'waf_conf':
print(getWafConf())
elif func == 'waf_site':
print(getWafSite())
elif func == 'get_area_limit':
print(getAreaLimit())
elif func == 'clean_drop_ip':
print(cleanDropIp())
elif func == 'test_run':

View File

@ -1634,6 +1634,187 @@ function wafSite(){
});
}
function wafAreaLimitRender(){
owPost('get_area_limit', {}, function(rdata) {
var rdata = $.parseJSON(rdata.data);
console.log(rdata);
if (!rdata.status) {
layer.msg(rdata.msg, { icon: 2, time: 2000 });
return;
}
var list = '';
var rlist = rdata.data;
for (var i = 0; i < rlist.length; i++) {
var docker_status = 'stop';
var status = '<span class="glyphicon glyphicon-pause" style="color:red;font-size:12px"></span>';
if (rlist[i]['State']['Status'] == 'running') {
docker_status = 'start';
status = '<span class="glyphicon glyphicon-play" style="color:#20a53a;font-size:12px"></span>';
}
var op = '';
op += '<a href="javascript:;" onclick="execCon(\'' + rlist[i]['Config']['Hostname'] + '\')" class="btlink">终端</a> | ';
op += '<a href="javascript:;" onclick="logsCon(\'' + rlist[i]['Id'] + '\')" class="btlink">日志</a> | ';
op += '<a href="javascript:;" onclick="deleteCon(\'' + rlist[i]['Config']['Hostname'] + '\')" class="btlink">删除</a>';
list += '<tr>';
list += '<td>' + rlist[i]['Name'].substring(1) + '</td>';
list += '<td>' + rlist[i]['Config']['Image'] + '</td>';
list += '<td>' + getFormatTime(rlist[i]['Created']) + '</td>';
if (docker_status == 'start') {
list += '<td style="cursor:pointer;" align="center" onclick="stopCon(\'' + rlist[i]['Config']['Hostname'] + '\')">' + status + '</td>';
} else {
list += '<td style="cursor:pointer;" align="center" onclick="startCon(\'' + rlist[i]['Config']['Hostname'] + '\')">' + status + '</td>';
}
list += '<td class="text-right">' + op + '</td>';
list += '</tr>';
}
$('#con_list tbody').html(list);
});
}
// 地区限制
function wafAreaLimit(){
var con = '<div class="safe bgw">\
<button id="create_area_limit" class="btn btn-success btn-sm" type="button" style="margin-right: 5px;">添加地区限制</button>\
<div class="divtable mtb10">\
<div class="tablescroll">\
<table id="con_list" class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0" style="border: 0 none;">\
<thead><tr>\
<th>地区</th>\
<th>站点</th>\
<th>类型</th>\
<th style="text-align:right;">操作</th></tr></thead>\
<tbody></tbody></table>\
</div>\
</div>\
</div>';
$(".soft-man-con").html(con);
wafAreaLimitRender();
$('#create_area_limit').click(function(){
layer.open({
type: 1,
title: '添加地区限制',
area: ['450px','280px'],
closeBtn: 1,
btn: ['添加', '取消'],
content: '<div class="waf-form pd20">\
<div class="line">\
<span class="tname">类型</span>\
<div class="info-r c4">\
<select class="bt-input-text docker-image" style="width:230px">\
<option value="refuse" selected="">拦截</option>\
<option value="accept">只放行</option>\
</select>\
</div>\
</div>\
<div class="line">\
<span class="tname">站点</span>\
<div class="info-r">\
<div id="demo1"></div>\
</div>\
</div>\
<div class="line">\
<span class="tname">地区</span>\
<div class="info-r" id="demo2"></div>\
</div>\
</div>',
success: function (layers, index) {
document.getElementById('layui-layer' + index).getElementsByClassName('layui-layer-content')[0].style.overflow = 'unset';
var demo1 = xmSelect.render({
el: '#demo1',
language: 'zn',
toolbar: {show: true,},
paging: true,
pageSize: 10,
data: [
{name: '张三', value: 1},
{name: '李四', value: 2},
{name: '王五', value: 3},
]
})
var demo2 = xmSelect.render({
el: '#demo2',
language: 'zn',
toolbar: {show: true,},
paging: true,
pageSize: 10,
data: [
{name: '张三', value: 1},
{name: '李四', value: 2},
{name: '王五', value: 3},
]
})
// var robj = $('.bt-form'),
// reg_html = '',
// site_html = '',
// elName = ['multi_reg', 'multi_site'];
// $.post('/plugin?action=a&name=btwaf&s=city', function (res) {
// for (var i = 0; i < res.length; i++) {
// reg_html += '<li><a><span class="text">' + res[i] + '</span><span class="glyphicon check-mark"></span></a></li>';
// }
// robj.append('<div class="line" style="height: 45px;"><span class="tname">地区</span><div class="info-r ml0">' + that.multi_select_view(elName[0], reg_html) + '</div></div>');
// that.nulti_event(elName[0], res, '地区');
// });
// $.post('/plugin?action=a&name=btwaf&s=reg_domains', function (res) {
// var data = [];
// for (var i = 0; i < res.length; i++) {
// data.push(res[i].name);
// site_html += '<li><a><span class="text">' + res[i].name + '</span><span class="glyphicon check-mark"></span></a></li>';
// }
// site_length = data.length;
// robj.append('<div class="line" style="height: 45px;"><span class="tname">站点</span><div class="info-r ml0">' + that.multi_select_view(elName[1], site_html) + '</div></div>');
// that.nulti_event(elName[1], data, '站点');
// });
},
yes: function (indexs) {
// var region = $('.multi_reg .btn .filter-option')
// .text()
// .replace('中国大陆以外的地区(包括[中国特别行政区:港,澳,台])', '海外')
// .replace('中国大陆(不包括[中国特别行政区:港,澳,台])', '中国')
// .replace('中国香港', '香港')
// .replace('中国澳门', '澳门')
// .replace('中国台湾', '台湾');
// var site_text = $('.multi_site .btn .filter-option').text(),
// site = '';
// if (site_length === site.split(',').length) {
// site = 'allsite';
// } else {
// site = site_text;
// }
// if (region.indexOf('请选择') > -1) return layer.msg('地区最少选一个!', { icon: 2 });
// if (site.indexOf('请选择') > -1) return layer.msg('站点最少选一个!', { icon: 2 });
// that.ajaxTask(
// 'add_reg_tions',
// {
// region: region,
// types: formData.types,
// site: site,
// },
// function (res) {
// if (res.status) {
// layer.close(indexs);
// that.render_regional_restrictions();
// }
// layer.msg(res.msg, { icon: res.status ? 1 : 2 });
// }
// );
},
});
});
}
function wafLogRequest(page){
var args = {};
args['page'] = page;

8
route/static/js/xm-select.js Executable file

File diff suppressed because one or more lines are too long

View File

@ -73,7 +73,7 @@
<link rel="stylesheet" href="/static/build/addons/fullscreen/fullscreen.css?v={{config.version}}">
<script src="/static/js/jquery-1.10.2.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/layer/layer.js?v={{config.version}}"></script>
<script src="/static/layer/layer.js"></script>
<script src="/static/js/jquery.fly.min.js"></script>
<script src="/static/js/clipboard.min.js"></script>
<script src="/static/build/xterm.js"></script>
@ -87,6 +87,7 @@
<script src="/static/app/public.js?v={{config.version}}"></script>
<script src="/static/js/echarts.min.js"></script>
<script src="/static/js/jquery.dragsort-0.5.2.min.js"></script>
<script src="/static/js/xm-select.js"></script>
{% block content %}{% endblock %}
<div class="footer bgw">mdserver-web &copy;2018-∞ Linux面板 (<a class="btlink" target="_blank" href="//github.com/midoks/mdserver-web">源码</a>) <span style="margin-left:5px;">/</span>