function owPost(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); $.post('/plugins/run', {name:'op_waf', func:method, args:JSON.stringify(args)}, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function getRuleByName(rule_name, callback){ owPost('get_rule', {rule_name:rule_name}, function(data){ callback(data); }) } function setRequestCode(ruleName, statusCode){ layer.open({ type: 1, title: "设置响应代码【" + ruleName + "】", area: '300px', shift: 5, closeBtn: 2, shadeClose: true, content: '
\
\ 响应代码\
\ \
\
\
\ \
\
' }); } function setState(ruleName){ var statusCode = $('#statusCode').val(); owPost('set_obj_status', {obj:ruleName,statusCode:statusCode},function(data){ var rdata = $.parseJSON(data.data); if (rdata.status){ layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); wafGloabl(); } else { layer.msg('设置失败!',{icon:0,time:2000,shade: [0.3, '#000']}); } }); } function setObjOpen(ruleName){ owPost('set_obj_open', {obj:ruleName},function(data){ var rdata = $.parseJSON(data.data); if (rdata.status){ layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); wafGloabl(); } else { layer.msg('设置失败!',{icon:0,time:2000,shade: [0.3, '#000']}); } }); } function setCcRule(cycle, limit, endtime, siteName, increase){ var incstr = '
  • 此处设置仅对当前站点有效。
  • '; if (siteName == 'undefined') { incstr = '
  • 此处设置的是初始值,新添加站点时将继承,对现有站点无效。
  • '; } // get_aicc_config(function(res){ var enhance_mode = ''; // if(res.status){ // enhance_mode = 2; // }else{ if(increase){ enhance_mode = 1; }else{ enhance_mode = 0; } // } create_l = layer.open({ type: 1, title: "设置CC规则", area: '540px', closeBtn: 2, shadeClose: false, content: '
    \
    \ 周期\
    \
    \
    \ 频率\
    \
    \
    \ 封锁时间\
    \
    \
    \ 增强模式\
    \ \
    \
    \
    \ 四层防御\
    \ \
    \
    \ \
    \
    ', success:function(layero,index){ // console.log(siteName == 'undefined'); // //\ // if($('[name="enhance_mode"]').val() == 2 && siteName != 'undefined'){ // $('[name="enhance_mode"]').attr('disabled','disabled'); // } // get_stop_ip(function(rdata){ // $('[name="cc_four_defense"]').val(rdata.status?'1':'0'); // }); // $('[name="cc_four_defense"]').change(function(){ // var _val = $(this).val(); // if(_val == '0'){ // set_stop_ip_stop(function(res){ // layer.msg(res.msg,{icon:res.status?1:2}); // }); // }else{ // set_stop_ip(function(res){ // layer.msg(res.msg,{icon:res.status?1:2}); // }); // } // }); // $('.btn_cc_all').click(function(){ // save_cc_rule(siteName,1,$('[name="enhance_mode"]').val()); // layer.close(index); // }); // $('.btn_cc_present').click(function(){ // save_cc_rule(siteName,0,$('[name="enhance_mode"]').val()); // layer.close(index); // }); } }); // }); } //设置retry规则 function setRetry(retry_cycle, retry, retry_time, siteName) { layer.open({ type: 1, title: "设置恶意容忍规则", area: '500px', closeBtn: 2, shadeClose: false, content: '
    \
    \ 周期\
    \
    \
    \ 频率\
    \
    \
    \ 封锁时间\
    \
    \ \
    \ ', success:function(){ $('.btn_retry_all').click(function(){ saveRetry(siteName,1); }); $('.btn_retry_present').click(function(){ saveRetry(siteName,0); }); } }); } //保存retry规则 function saveRetry(siteName,type) { var pdata = { siteName: siteName, retry: $("input[name='retry']").val(), retry_time: $("input[name='retry_time']").val(), retry_cycle: $("input[name='retry_cycle']").val(), is_open_global:type } var act = 'set_retry'; if (siteName != undefined) act = 'set_site_retry'; var loadT = layer.msg('正在保存,请稍候..', { icon: 16, time: 0 }); $.post('/plugin?action=a&name=btwaf&s=' + act, pdata, function (rdata) { layer.close(loadT); if (rdata.status) { layer.close(create_l); if (siteName != 'undefined') { site_waf_config(siteName, 1); } else { wafconfig(); } } layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); }); } //URL白名单 function urlWhite(type) { if (type == undefined) { layer.open({ type: 1, title: "管理URL白名单", area: ['500px', '400px'], closeBtn: 2, shadeClose: false, content: '
    标准模式-URL白名单
    增强模式—URL白名单
    \
    \
    \
    \ \ \
    \
    \
    \ \ \ \ \ \ \ \ \
    URL操作
    \
    \
    \ \ \
    \
    \
    \ \
      \
    • 所有规则对白名单中的URL无效,包括IP黑名单和URL黑名单
    • \
    ', success:function(layero,index){ $('.tab_list .tab_block').click(function(){ var index = $(this).index(); $(this).addClass('active').siblings().removeClass('active'); $('.url_block').eq(index).show().siblings().hide(); if(index == 1) {get_golbls_cc();} }); $('.add_increase_white_event').click(function(){ var _val = $('[name="url_increase_white_address"]').val(); if(_val == ''){ layer.msg('URL规则不能为空!'); return false; } add_golbls_cc({text:_val},function(res){ if(res.status){ get_golbls_cc(function(){ if(res.status) get_golbls_cc(function(){ layer.msg(res.msg,{icon:res.status?1:2}); }); }); $('[name="url_increase_white_address"]').val(''); } }); }); $('#url_increase_white_con').on('click','.del_golbls_cc',function(){ var _val = $(this).attr('data-val'); del_golbls_cc({text:_val},function(res){ if(res.status) get_golbls_cc(function(){ layer.msg(res.msg,{icon:res.status?1:2}); }); }); }); } }); tableFixed("urlWhite"); } getRuleByName('url_white', function(data){ var tmp = $.parseJSON(data.data); var rdata = $.parseJSON(tmp.data); console.log(rdata); var tbody = '' for (var i = 0; i < rdata.length; i++) { tbody += '\ '+ rdata[i] + '\ 删除\ ' } $("#url_white_con").html(tbody); }); } //设置规则 function setObjConf(ruleName, type) { if (type == undefined) { create_l = layer.open({ type: 1, title: "编辑规则【" + ruleName + "】", area: ['700px', '530px'], closeBtn: 2, shadeClose: false, content: '
    \
    \ \ \ \
    \
    \
    \ \ \ \ \ \ \ \ \ \ \
    规则说明操作状态
    \
    \
    \
      \
    • 注意:如果您不了解正则表达式,请不要随意修改规则内容
    • \
    • 您可以添加或修改规则内容,但请使用正则表达式
    • \
    • 内置规则允许修改,但不可以直接删除,您可以设置规则状态来定义防火墙是否使用此规则
    • \
    ' }); tableFixed("jc-file-table") } var loadT = layer.msg('正在获取配置规则,请稍候..', { icon: 16, time: 0 }); $.post('/plugin?action=a&name=btwaf&s=get_rule', { ruleName: ruleName }, function (rdata) { layer.close(loadT); var tbody = '' for (var i = 0; i < rdata.length; i++) { var removeRule = '' if (rdata[i][3] != 0) removeRule = ' | 删除'; tbody += '\ ' + rdata[i][1] + '\ ' + rdata[i][2] + '\ 编辑' + removeRule + '\ \
    \ \ \
    \ \ ' } $("#set_obj_conf_con").html(tbody) }); } function wafScreen(){ owPost('waf_srceen', {}, function(data){ var rdata = $.parseJSON(data.data); console.log(rdata); var con = '
    总拦截'+rdata.total+'
    '; con += '
    安全防护0
    '; con += '
    \
    POST渗透'+rdata.rules.post+'
    \
    GET渗透0
    \
    CC攻击'+rdata.rules.cc+'
    \
    恶意User-Agent'+rdata.rules.user_agent+'
    \
    Cookie渗透'+rdata.rules.cookie+'
    \
    恶意扫描0
    \
    恶意HEAD请求0
    \
    URI自定义拦截0
    \
    URI保护0
    \
    恶意文件上传0
    \
    禁止的扩展名0
    \
    禁止PHP脚本0
    \
    '; con += '
      \
    • 在此处关闭防火墙后,所有站点将失去保护
    • \
    • 网站防火墙会使nginx有一定的性能损失(<5% 10C静态并发测试结果)
    • \
    • 网站防火墙仅主要针对网站渗透攻击,暂时不具备系统加固功能
    • \
    '; $(".soft-man-con").html(con); }); } function wafGloabl(){ owPost('waf_conf', {}, function(data){ var rdata = $.parseJSON(data.data); var con = '
    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
    名称描述响应状态操作
    CC防御防御CC攻击,具体防御参数请到站点配置中调整'+rdata.cc.status+'
    \ \
    \
    初始规则
    恶意容忍度封锁连续恶意请求,请到站点配置中调整容忍阈值' + rdata.cc.status + '--初始规则
    GET-URI过滤'+ rdata.get.ps + '' + rdata.get.status + '
    \ \ \
    规则 | 响应内容
    GET-参数过滤'+ rdata.get.ps + '' + rdata.get.status + '
    \ \ \
    规则 | 响应内容
    POST过滤'+ rdata.post.ps + '' + rdata.post.status + '
    \ \ \
    规则 | 响应内容
    User-Agent过滤'+ rdata['user-agent'].ps + '' + rdata['user-agent'].status + '
    \ \ \
    规则 | 响应内容
    Cookie过滤'+ rdata.cookie.ps + '' + rdata.cookie.status + '
    \ \ \
    规则 | 响应内容
    常见扫描器'+ rdata.scan.ps + '' + rdata.scan.status + '
    \ \ \
    设置
    IP白名单所有规则对IP白名单无效----设置
    IP黑名单禁止访问的IP' + rdata.cc.status + '--设置
    URL白名单大部分规则对URL白名单无效----设置
    URL黑名单禁止访问的URL地址' + rdata.get.status + '--设置
    其它'+ rdata.other.ps + '----响应内容
    \
    '; con += '
      \
    • 继承: 全局设置将在站点配置中自动继承为默认值
    • \
    • 优先级: IP白名单>IP黑名单>URL白名单>URL黑名单>CC防御>禁止国外IP访问>User-Agent>URI过滤>URL参数>Cookie>POST
    • \
    '; $(".soft-man-con").html(con); }); } function wafSite(){ var con = '
    \ \ \ \ \ \ \ \ \ \ \ \ \
    站点GETPOSTUACookieCDNCC状态操作
    \
    '; $(".soft-man-con").html(con); } function wafHistory(){ var con = ''; con += '
    \ \ \ \ \ \ \ \ \
    开始时间IP站点封锁原因封锁时长状态
    \
    '; $(".soft-man-con").html(con); } function wafLogs(){ var con = '
    \ \ \ \ \ \ \ \
    名称描述响应状态操作
    \
    '; $(".soft-man-con").html(con); }