@ -753,6 +753,23 @@ function addIpBlack() {
} ) ;
}
function addIpBlackArgs ( ip ) {
var pdata = {
start _ip : ip ,
end _ip : ip ,
}
if ( pdata [ 'start_ip' ] . split ( '.' ) . length < 4 || pdata [ 'end_ip' ] . split ( '.' ) . length < 4 ) {
layer . msg ( '起始IP或结束IP格式不正确!' ) ;
return ;
}
owPost ( 'add_ip_black' , pdata , function ( data ) {
var rdata = $ . parseJSON ( data . data ) ;
layer . msg ( rdata . msg , { icon : rdata . status ? 1 : 2 } ) ;
} ) ;
}
//从IP黑名单删除IP段
function removeIpBlack ( index ) {
@ -1024,146 +1041,6 @@ function back_css(v) {
}
}
//查看网站日志
function siteWafLog ( siteName ) {
var loadT = layer . msg ( '正在处理,请稍候..' , { icon : 16 , time : 0 } ) ;
owPost ( 'get_logs_list' , { siteName : siteName } , function ( data ) {
var tmp = $ . parseJSON ( data . data ) ;
var rdata = tmp . data ;
var selectLogDay = "" ;
var day = rdata [ 0 ] ;
for ( var i = 0 ; i < rdata . length ; i ++ ) {
selectLogDay += '<option value="' + rdata [ i ] + '">' + rdata [ i ] + '</option>' ;
}
if ( rdata == "" ) {
layer . msg ( "暂无日志记录" , { icon : 6 , shade : 0.3 , time : 1000 } ) ;
return
}
layer . open ( {
type : 1 ,
title : "日志【" + siteName + "】" ,
area : [ '880px' , '500px' ] ,
closeBtn : 1 ,
shadeClose : false ,
content : ' < div class = "lib-box pd15 lib-box-log" > \
< div class = "lib-con-title" style = "height:40px" > < select id = "selectLogDay" class = "bt-input-text" onchange = "siteLogCon(\''+ siteName + '\',this.options[this.options.selectedIndex].value,1)" > ' + selectLogDay + ' < / s e l e c t > < / d i v > \
< div class = "lib-con" > \
< div class = "divtable" > \
< div id = "site_waf_log" style = "max-height:400px;overflow:auto;border:#ddd 1px solid" > \
< table class = "table table-hover" style = "border:none;" > \
< thead > < tr > < th width = "150" > 时间 < / t h > < t h w i d t h = " 1 2 0 " > 用 户 I P < / t h > < t h w i d t h = " 7 0 " > 类 型 < / t h > < t h > U R I 地 址 < / t h > < t h c l a s s = " t d h i d e " > U s e r - A g e n t < / t h > < t h w i d t h = " 6 0 " > 状 态 < / t h > < t h w i d t h = " 1 0 0 " > 过 滤 器 < / t h > < t h c l a s s = " t d h i d e " > 过 滤 规 则 < / t h > < t h w i d t h = " 1 0 0 " c l a s s = " t e x t - r i g h t " > 操 作 < / t h > < / t r > < / t h e a d > \
< tbody id = "LogDayCon" > < / t b o d y > \
< / t a b l e > \
< / d i v > \
< / d i v > \
< div class = "page pull-right" id = "size_log_page" style = "margin-top:10px" > < / d i v > \
< / d i v > \
< / d i v > '
} ) ;
siteLogCon ( siteName , day , 1 ) ;
tableFixed ( "site_waf_log" ) ;
} ) ;
}
//日志内容
function siteLogCon ( siteName , day , page ) {
if ( ! page ) page = 1 ;
var last = page - 1 ;
var next = page + 1 ;
var pagehtml = '' ;
$ ( "#site_waf_log" ) . scrollTop ( 0 ) ;
owPost ( 'get_safe_logs' , { siteName : siteName , toDate : day , p : page } , function ( data ) {
var tmp = $ . parseJSON ( data . data ) ;
if ( ! tmp . status ) {
layer . msg ( rdata . msg , { icon : rdata . status ? 1 : 2 } ) ;
return ;
}
var rdata = tmp . data ;
var con = '' ;
for ( var i = 0 ; i < rdata . length ; i ++ ) {
con += ' < tr > \
< td class = "td0" > '+ escapeHTML(rdata[i][0]) + ' < / t d > \
< td class = "td1" > < a class = "btlink" href = "javascript:add_log_ip_black(\''+ escapeHTML(rdata[i][1]) + '\');" title = "加入黑名单" > ' + escapeHTML(rdata[i][1]) + ' < / a > < / t d > \
< td class = "td2" > '+ escapeHTML(rdata[i][2]) + ' < / t d > \
< td class = "td3" > < span class = "td3txt" > '+ escapeHTML(rdata[i][3]) + ' < / s p a n > < / t d > \
< td class = "tdhide td4" > '+ escapeHTML(rdata[i][4]) + ' < / t d > < t d > 已 拦 截 < / t d > \
< td class = "td5" > < span class = "filtertext" > '+ escapeHTML(rdata[i][5]) + ' < / s p a n > < / t d > \
< td class = "tdhide td6" > '+ escapeHTML(rdata[i][6]) + ' < / t d > \
< td class = "text-right" > < a href = "javascript:;" class = "btlink submit_msg" data - index = "'+ i +'" > 误报 < / a > | < a h r e f = " j a v a s c r i p t : ; " c l a s s = " b t l i n k b t w a f _ d e t a i l s " d a t a - i n d e x = " ' + i + ' " > 详 细 < / a > < / t d > \
< / t r > '
}
$ ( "#LogDayCon" ) . html ( con ) ;
pagehtml = '<a class="Pstart" onclick="site_log_con(\'' + siteName + '\',\'' + day + '\',1)">首页</a><a class="prevPage" onclick="site_log_con(\'' + siteName + '\',\'' + day + '\',' + last + ')">上一页</a><a class="nextPage" onclick="site_log_con(\'' + siteName + '\',\'' + day + '\',' + next + ')">下一页</a><a class="Pcount">第 ' + page + ' 页</a>' ;
$ ( "#size_log_page" ) . html ( pagehtml ) ;
if ( rdata . length < 1 ) $ ( ".nextPage" ) . hide ( ) ;
if ( last < 1 ) $ ( ".prevPage" ) . hide ( ) ;
// 发送误报请求
$ ( ".submit_msg" ) . click ( function ( ) {
var _this = $ ( this ) ;
var res = rdata [ $ ( this ) . attr ( 'data-index' ) ] ;
layer . confirm ( '是否确定提交误报反馈?' , { title : '误报反馈' , closeBtn : 2 , icon : 3 } , function ( ) {
var url _address = res [ 3 ] ;
var rule _arry = res [ 6 ] . split ( " >> " ) ;
var pdata = { url _rule : url _address } ;
var loadT = layer . msg ( '正在添加URL白名单..' , { icon : 16 , time : 0 } ) ;
$ . post ( '/plugin?action=a&name=btwaf&s=add_url_white' , pdata , function ( rdata ) {
layer . msg ( rdata . msg , { icon : rdata . status ? 1 : 2 } ) ;
layer . close ( loadT ) ;
if ( rule _arry [ 1 ] != undefined ) { $ . get ( 'https://www.bt.cn/Api/add_waf_logs?data=' + rule _arry [ 1 ] , function ( rdata ) { } , 'jsonp' ) }
} ) ;
} ) ;
} )
// 详情
$ ( ".btwaf_details" ) . click ( function ( ) {
var res = rdata [ $ ( this ) . attr ( 'data-index' ) ] ;
var time = res [ 0 ] ; //时间
var ip _address = res [ 1 ] ; //IP地址
var req _type = res [ 2 ] ; // 请求类型
var url _address = res [ 3 ] ; // 请求类型
var user _agent = res [ 4 ] ; // 请求类型
var filters = res [ 5 ] ; //过滤器
var filter _rule = '' ; //过滤规则
var rule _arry = res [ 6 ] . split ( " >> " ) ;
var incoming _value = '' , risk _value = '' ; //传入值,风险值
if ( rule _arry . length == 0 ) filter _rule = rule _arry [ 0 ]
incoming _value = rule _arry [ 1 ] == undefined ? '空' : rule _arry [ 1 ] ;
risk _value = incoming _value . match ( new RegExp ( rule _arry [ 0 ] . replace ( /\//g , '\\/' ) , 'i' ) ) ;
risk _value = risk _value ? risk _value [ 0 ] : '空' ;
layer . open ( {
type : 1 ,
title : time + "详情" ,
area : '600px' ,
closeBtn : 1 ,
shadeClose : false ,
content : ' < div class = "pd15 lib-box" > \
< table class = "table" style = "border:#ddd 1px solid; margin-bottom:10px" > \
< tbody > < tr > < th > 时间 < / t h > < t d > ' + e s c a p e H T M L ( t i m e ) + ' < / t d > < t h > 用 户 I P < / t h > < t d > < a c l a s s = " b t l i n k " h r e f = " j a v a s c r i p t : a d d _ l o g _ i p _ b l a c k ( \ ' ' + e s c a p e H T M L ( i p _ a d d r e s s ) + ' \ ' ) " t i t l e = " 加 入 黑 名 单 " > ' + e s c a p e H T M L ( i p _ a d d r e s s ) + ' < / a > < / t d > < / t r > < t r > < t h > 类 型 < / t h > < t d > ' + e s c a p e H T M L ( r e q _ t y p e ) + ' < / t d > < t h > 过 滤 器 < / t h > < t d > ' + e s c a p e H T M L ( f i l t e r s ) + ' < / t d > < / t r > < / t b o d y > < / t a b l e > \
< div > < b style = "margin-left:10px" > URI地址 < / b > < / d i v > \
< div class = "lib-con pull-left mt10" > < div class = "divpre" > '+ escapeHTML(url_address) + ' < / d i v > < / d i v > \
< div > < b style = "margin-left:10px" > User - Agent < / b > < / d i v > \
< div class = "lib-con pull-left mt10" > < div class = "divpre" > '+ escapeHTML(user_agent) + ' < / d i v > < / d i v > \
< div > < b style = "margin-left:10px" > 过滤规则 < / b > < / d i v > \
< div class = "lib-con pull-left mt10" > < div class = "divpre" > '+ escapeHTML(rule_arry[0]) + ' < / d i v > < / d i v > \
< div > < b style = "margin-left:10px" > 传入值 < / b > < / d i v > \
< div class = "lib-con pull-left mt10" > < div class = "divpre" > '+ escapeHTML(incoming_value) + ' < / d i v > < / d i v > \
< div > < b style = "margin-left:10px" > 风险值 < / b > < / d i v > \
< div class = "lib-con pull-left mt10" > < div class = "divpre" > '+ escapeHTML(risk_value) + ' < / d i v > < / d i v > \
< / d i v > '
} )
} )
$ ( "#LogDayCon td" ) . click ( function ( ) {
$ ( this ) . parents ( "tr" ) . addClass ( "active" ) . siblings ( ) . removeClass ( "active" ) ;
} ) ;
} ) ;
}
function html _encode ( value ) {
return $ ( '<div></div>' ) . html ( value ) . text ( ) ;
}
@ -1734,7 +1611,7 @@ function wafLogRequest(page){
shadeClose : false ,
content : ' < div class = "pd15 lib-box" > \
< table class = "table" style = "border:#ddd 1px solid; margin-bottom:10px" > \
< tbody > < tr > < th > 时间 < / t h > < t d > ' + t i m e + ' < / t d > < t h > 用 户 I P < / t h > < t d > < a c l a s s = " b t l i n k " h r e f = " j a v a s c r i p t : a d d _ l o g _ i p _ b l a c k ( \ ' ' + e s c a p e H T M L ( i p ) + ' \ ' ) " t i t l e = " 加 入 黑 名 单 " > ' + e s c a p e H T M L ( i p ) + ' < / a > < / t d > < / t r > < t r > < t h > 类 型 < / t h > < t d > ' + e s c a p e H T M L ( r e s . m e t h o d ) + ' < / t d > < t h > 过 滤 器 < / t h > < t d > ' + e s c a p e H T M L ( r e s . r u l e _ n a m e ) + ' < / t d > < / t r > < / t b o d y > < / t a b l e > \
< tbody > < tr > < th > 时间 < / t h > < t d > ' + t i m e + ' < / t d > < t h > 用 户 I P < / t h > < t d > < a c l a s s = " b t l i n k " h r e f = " j a v a s c r i p t : a d d I p B l a c k A r g s ( \ ' ' + e s c a p e H T M L ( i p ) + ' \ ' ) " t i t l e = " 加 入 黑 名 单 " > ' + e s c a p e H T M L ( i p ) + ' < / a > < / t d > < / t r > < t r > < t h > 类 型 < / t h > < t d > ' + e s c a p e H T M L ( r e s . m e t h o d ) + ' < / t d > < t h > 过 滤 器 < / t h > < t d > ' + e s c a p e H T M L ( r e s . r u l e _ n a m e ) + ' < / t d > < / t r > < / t b o d y > < / t a b l e > \
< div > < b style = "margin-left:10px" > URI地址 < / b > < / d i v > \
< div class = "lib-con pull-left mt10" > < div class = "divpre" > '+ escapeHTML(res.uri) + ' < / d i v > < / d i v > \
< div > < b style = "margin-left:10px" > User - Agent < / b > < / d i v > \
@ -1777,7 +1654,15 @@ function wafLogs(){
// wafLogRequest(1);
$ ( "#UncoverAll" ) . click ( function ( ) {
console . log ( "UncoverAll" ) ;
owPost ( 'clean_drop_ip' , { } , function ( data ) {
var rdata = $ . parseJSON ( data . data ) ;
var ndata = $ . parseJSON ( rdata . data ) ;
if ( ndata . status == 0 ) {
layer . msg ( "解封所有成功" , { icon : 1 , time : 2000 , shade : [ 0.3 , '#000' ] } ) ;
} else {
layer . msg ( "解封所有异常:" + ndata . msg , { icon : 5 , time : 2000 , shade : [ 0.3 , '#000' ] } ) ;
}
} ) ;
} ) ;