@@ -2235,7 +2235,18 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio
< a href = "" @ click . prevent = "deleteOrigin(origin.id)" > 删除 < / a >
< / t d >
< / t r >
< / t a b l e > ` } ) , V u e . c o m p o n e n t ( " h t t p - f i r e w a l l - p o l i c y - s e l e c t o r " , { p r o p s : [ " v - h t t p - f i r e w a l l - p o l i c y " ] , m o u n t e d : f u n c t i o n ( ) { l e t t = t h i s ; T e a . a c t i o n ( " / s e r v e r s / c o m p o n e n t s / w a f / c o u n t " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . c o u n t = e . d a t a . c o u n t } ) } , d a t a : f u n c t i o n ( ) { r e t u r n { c o u n t : 0 , f i r e w a l l P o l i c y : t h i s . v H t t p F i r e w a l l P o l i c y } } , m e t h o d s : { r e m o v e : f u n c t i o n ( ) { t h i s . f i r e w a l l P o l i c y = n u l l } , s e l e c t : f u n c t i o n ( ) { l e t t = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / c o m p o n e n t s / w a f / s e l e c t P o p u p " , { c a l l b a c k : f u n c t i o n ( e ) { t . f i r e w a l l P o l i c y = e . d a t a . f i r e w a l l P o l i c y } } ) } , c r e a t e : f u n c t i o n ( ) { l e t t = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / c o m p o n e n t s / w a f / c r e a t e P o p u p " , { h e i g h t : " 2 6 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . f i r e w a l l P o l i c y = e . d a t a . f i r e w a l l P o l i c y } } ) } } , t e m p l a t e : ` < d i v >
< / t a b l e > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o r s - h e a d e r - c o n f i g - b o x " , { p r o p s : [ " v a l u e " ] , d a t a : f u n c t i o n ( ) { l e t e = t h i s . v a l u e ; r e t u r n { c o n f i g : e = n u l l = = e ? { i s O n : ! 1 , a l l o w M e t h o d s : [ ] , a l l o w O r i g i n : " " , a l l o w C r e d e n t i a l s : ! 0 , e x p o s e H e a d e r s : [ ] , m a x A g e : 0 , r e q u e s t H e a d e r s : [ ] , r e q u e s t M e t h o d : " " } : e } } , t e m p l a t e : ` < d i v >
< input type = "hidden" name = "corsJSON" : value = "JSON.stringify(config)" / >
< table class = "ui table definition selectable" >
< tr >
< td class = "title" > 启用CORS自适应跨域 < / t d >
< td >
< checkbox v - model = "config.isOn" > < / c h e c k b o x >
< / t d >
< / t r >
< / t a b l e >
< div class = "margin" > < / d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - f i r e w a l l - p o l i c y - s e l e c t o r " , { p r o p s : [ " v - h t t p - f i r e w a l l - p o l i c y " ] , m o u n t e d : f u n c t i o n ( ) { l e t t = t h i s ; T e a . a c t i o n ( " / s e r v e r s / c o m p o n e n t s / w a f / c o u n t " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . c o u n t = e . d a t a . c o u n t } ) } , d a t a : f u n c t i o n ( ) { r e t u r n { c o u n t : 0 , f i r e w a l l P o l i c y : t h i s . v H t t p F i r e w a l l P o l i c y } } , m e t h o d s : { r e m o v e : f u n c t i o n ( ) { t h i s . f i r e w a l l P o l i c y = n u l l } , s e l e c t : f u n c t i o n ( ) { l e t t = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / c o m p o n e n t s / w a f / s e l e c t P o p u p " , { c a l l b a c k : f u n c t i o n ( e ) { t . f i r e w a l l P o l i c y = e . d a t a . f i r e w a l l P o l i c y } } ) } , c r e a t e : f u n c t i o n ( ) { l e t t = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / c o m p o n e n t s / w a f / c r e a t e P o p u p " , { h e i g h t : " 2 6 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . f i r e w a l l P o l i c y = e . d a t a . f i r e w a l l P o l i c y } } ) } } , t e m p l a t e : ` < d i v >
< div v - if = "firewallPolicy != null" class = "ui label basic" >
< input type = "hidden" name = "httpFirewallPolicyId" : value = "firewallPolicy.id" / >
{ { firewallPolicy . name } } & nbsp ; < a : href = "'/servers/components/waf/policy?firewallPolicyId=' + firewallPolicy.id" target = "_blank" title = "修改" > < i class = "icon pencil small" > < / i > < / a > & n b s p ; < a h r e f = " " @ c l i c k . p r e v e n t = " r e m o v e ( ) " t i t l e = " 删 除 " > < i c l a s s = " i c o n r e m o v e s m a l l " > < / i > < / a >
@@ -2976,7 +2987,7 @@ example2.com
< / t b o d y >
< / t a b l e >
< div class = "margin" > < / d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - h e a d e r - p o l i c y - b o x " , { p r o p s : [ " v - r e q u e s t - h e a d e r - p o l i c y " , " v - r e q u e s t - h e a d e r - r e f " , " v - r e s p o n s e - h e a d e r - p o l i c y " , " v - r e s p o n s e - h e a d e r - r e f " , " v - p a r a m s " , " v - i s - l o c a t i o n " , " v - i s - g r o u p " , " v - h a s - g r o u p - r e q u e s t - c o n f i g " , " v - h a s - g r o u p - r e s p o n s e - c o n f i g " , " v - g r o u p - s e t t i n g - u r l " ] , d a t a : f u n c t i o n ( ) { l e t e = " r e s p o n s e " ; " # r e q u e s t " = = w i n d o w . l o c a t i o n . h a s h & & ( e = " r e q u e s t " ) ; l e t t = t h i s . v R e q u e s t H e a d e r R e f , i = ( n u l l = = t & & ( t = { i s P r i o r : ! 1 , i s O n : ! 0 , h e a d e r P o l i c y I d : 0 } ) , t h i s . v R e s p o n s e H e a d e r R e f ) , n = ( n u l l = = i & & ( i = { i s P r i o r : ! 1 , i s O n : ! 0 , h e a d e r P o l i c y I d : 0 } ) , [ ] ) , s = [ ] ; v a r o = t h i s . v R e q u e s t H e a d e r P o l i c y ; n u l l ! = o & & ( n u l l ! = o . s e t H e a d e r s & & ( n = o . s e t H e a d e r s ) , n u l l ! = o . d e l e t e H e a d e r s & & ( s = o . d e l e t e H e a d e r s ) ) ; l e t a = [ ] , l = [ ] ; o = t h i s . v R e s p o n s e H e a d e r P o l i c y ; r e t u r n n u l l ! = o & & ( n u l l ! = o . s e t H e a d e r s & & ( a = o . s e t H e a d e r s ) , n u l l ! = o . d e l e t e H e a d e r s & & ( l = o . d e l e t e H e a d e r s ) ) , { t y p e : e , t y p e N a m e : " r e q u e s t " = = e ? " 请 求 " : " 响 应 " , r e q u e s t H e a d e r R e f : t , r e s p o n s e H e a d e r R e f : i , r e q u e s t S e t t i n g H e a d e r s : n , r e q u e s t D e l e t i n g H e a d e r s : s , r e s p o n s e S e t t i n g H e a d e r s : a , r e s p o n s e D e l e t i n g H e a d e r s : l } } , m e t h o d s : { s e l e c t T y p e : f u n c t i o n ( e ) { t h i s . t y p e = e , w i n d o w . l o c a t i o n . h a s h = " # " + e , w i n d o w . l o c a t i o n . r e l o a d ( ) } , a d d S e t t i n g H e a d e r : f u n c t i o n ( e ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / c r e a t e S e t P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & t y p e = " + t h i s . t y p e , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } , a d d D e l e t i n g H e a d e r : f u n c t i o n ( e , t ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / c r e a t e D e l e t e P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & t y p e = " + t , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } , u p d a t e S e t t i n g P o p u p : f u n c t i o n ( e , t ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / u p d a t e S e t P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & h e a d e r I d = " + t + " & t y p e = " + t h i s . t y p e , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } , d e l e t e D e l e t i n g H e a d e r : f u n c t i o n ( e , t ) { t e a w e b . c o n f i r m ( " 确 定 要 删 除 ' " + t + " ' 吗 ? " , f u n c t i o n ( ) { T e a . a c t i o n ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / d e l e t e D e l e t i n g H e a d e r " ) . p a r a m s ( { h e a d e r P o l i c y I d : e , h e a d e r N a m e : t } ) . p o s t ( ) . r e f r e s h ( ) } ) } , d e l e t e H e a d e r : f u n c t i o n ( e , t , i ) { t e a w e b . c o n f i r m ( " 确 定 要 删 除 此 H e a d e r 吗 ? " , f u n c t i o n ( ) { t h i s . $ p o s t ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / d e l e t e " ) . p a r a m s ( { h e a d e r P o l i c y I d : e , t y p e : t , h e a d e r I d : i } ) . r e f r e s h ( ) } ) } } , t e m p l a t e : ` < d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - h e a d e r - p o l i c y - b o x " , { p r o p s : [ " v - r e q u e s t - h e a d e r - p o l i c y " , " v - r e q u e s t - h e a d e r - r e f " , " v - r e s p o n s e - h e a d e r - p o l i c y " , " v - r e s p o n s e - h e a d e r - r e f " , " v - p a r a m s " , " v - i s - l o c a t i o n " , " v - i s - g r o u p " , " v - h a s - g r o u p - r e q u e s t - c o n f i g " , " v - h a s - g r o u p - r e s p o n s e - c o n f i g " , " v - g r o u p - s e t t i n g - u r l " ] , d a t a : f u n c t i o n ( ) { l e t e = " r e s p o n s e " ; " # r e q u e s t " = = w i n d o w . l o c a t i o n . h a s h & & ( e = " r e q u e s t " ) ; l e t t = t h i s . v R e q u e s t H e a d e r R e f , i = ( n u l l = = t & & ( t = { i s P r i o r : ! 1 , i s O n : ! 0 , h e a d e r P o l i c y I d : 0 } ) , t h i s . v R e s p o n s e H e a d e r R e f ) , n = ( n u l l = = i & & ( i = { i s P r i o r : ! 1 , i s O n : ! 0 , h e a d e r P o l i c y I d : 0 } ) , [ ] ) , s = [ ] ; v a r o = t h i s . v R e q u e s t H e a d e r P o l i c y ; n u l l ! = o & & ( n u l l ! = o . s e t H e a d e r s & & ( n = o . s e t H e a d e r s ) , n u l l ! = o . d e l e t e H e a d e r s & & ( s = o . d e l e t e H e a d e r s ) ) ; l e t a = [ ] , l = [ ] ; o = t h i s . v R e s p o n s e H e a d e r P o l i c y ; n u l l ! = o & & ( n u l l ! = o . s e t H e a d e r s & & ( a = o . s e t H e a d e r s ) , n u l l ! = o . d e l e t e H e a d e r s & & ( l = o . d e l e t e H e a d e r s ) ) ; l e t c = { i s O n : ! 1 } ; r e t u r n n u l l ! = o . c o r s & & ( c = o . c o r s ) , { t y p e : e , t y p e N a m e : " r e q u e s t " = = e ? " 请 求 " : " 响 应 " , r e q u e s t H e a d e r R e f : t , r e s p o n s e H e a d e r R e f : i , r e q u e s t S e t t i n g H e a d e r s : n , r e q u e s t D e l e t i n g H e a d e r s : s , r e s p o n s e S e t t i n g H e a d e r s : a , r e s p o n s e D e l e t i n g H e a d e r s : l , r e s p o n s e C O R S : c } } , m e t h o d s : { s e l e c t T y p e : f u n c t i o n ( e ) { t h i s . t y p e = e , w i n d o w . l o c a t i o n . h a s h = " # " + e , w i n d o w . l o c a t i o n . r e l o a d ( ) } , a d d S e t t i n g H e a d e r : f u n c t i o n ( e ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / c r e a t e S e t P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & t y p e = " + t h i s . t y p e , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } , a d d D e l e t i n g H e a d e r : f u n c t i o n ( e , t ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / c r e a t e D e l e t e P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & t y p e = " + t , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } , u p d a t e S e t t i n g P o p u p : f u n c t i o n ( e , t ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / u p d a t e S e t P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & h e a d e r I d = " + t + " & t y p e = " + t h i s . t y p e , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } , d e l e t e D e l e t i n g H e a d e r : f u n c t i o n ( e , t ) { t e a w e b . c o n f i r m ( " 确 定 要 删 除 ' " + t + " ' 吗 ? " , f u n c t i o n ( ) { T e a . a c t i o n ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / d e l e t e D e l e t i n g H e a d e r " ) . p a r a m s ( { h e a d e r P o l i c y I d : e , h e a d e r N a m e : t } ) . p o s t ( ) . r e f r e s h ( ) } ) } , d e l e t e H e a d e r : f u n c t i o n ( e , t , i ) { t e a w e b . c o n f i r m ( " 确 定 要 删 除 此 H e a d e r 吗 ? " , f u n c t i o n ( ) { t h i s . $ p o s t ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / d e l e t e " ) . p a r a m s ( { h e a d e r P o l i c y I d : e , t y p e : t , h e a d e r I d : i } ) . r e f r e s h ( ) } ) } , u p d a t e C O R S : f u n c t i o n ( e ) { t e a w e b . p o p u p ( " / s e r v e r s / s e r v e r / s e t t i n g s / h e a d e r s / u p d a t e C O R S P o p u p ? " + t h i s . v P a r a m s + " & h e a d e r P o l i c y I d = " + e + " & t y p e = " + t h i s . t y p e , { c a l l b a c k : f u n c t i o n ( ) { t e a w e b . s u c c e s s R e f r e s h ( " 保 存 成 功 " ) } } ) } } , t e m p l a t e : ` < d i v >
< div class = "ui menu tabular small" >
< a class = "item" : class = "{active:type == 'response'}" @ click . prevent = "selectType('response')" > 响应Header < span v - if = "responseSettingHeaders.length > 0" > ( { { responseSettingHeaders . length } } ) < / s p a n > < / a >
< a class = "item" : class = "{active:type == 'request'}" @ click . prevent = "selectType('request')" > 请求Header < span v - if = "requestSettingHeaders.length > 0" > ( { { requestSettingHeaders . length } } ) < / s p a n > < / a >
@@ -3001,7 +3012,7 @@ example2.com
< warning - message > 由于已经在当前 < a : href = "vGroupSettingUrl + '#request'" > 服务分组 < / a > 中 进 行 了 对 应 的 配 置 , 在 这 里 的 配 置 将 不 会 生 效 。 < / w a r n i n g - m e s s a g e >
< / d i v >
< div : class = "{'opacity-mask': vHasGroupRequestConfig}" >
< h3 > 设置请求Header < a href = "" @ click . prevent = "addSettingHeader(vRequestHeaderPolicy.id)" > [ 添加新Header ] < / a > < / h 3 >
< h4 > 设置请求Header < a href = "" @ click . prevent = "addSettingHeader(vRequestHeaderPolicy.id)" > [ 添加新Header ] < / a > < / h 4 >
< p class = "comment" v - if = "requestSettingHeaders.length == 0" > 暂时还没有Header 。 < / p >
< table class = "ui table selectable celled" v - if = "requestSettingHeaders.length > 0" >
< thead >
@@ -3011,35 +3022,39 @@ example2.com
< th class = "two op" > 操作 < / t h >
< / t r >
< / t h e a d >
< tr v - for = "header in requestSettingHeaders" >
< td class = "five wide" >
{ { header . name } }
< div >
< span v - if = "header.status != null && header.status.codes != null && !header.status.always" > < grey - label v - for = "code in header.status.codes" : key = "code" > { { code } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.method s != null && header.methods.length > 0 " > < grey - label v - for = "meth od in header.meth ods" : key = "meth od" > { { method } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.domain s != null && header.domain s.length > 0" > < grey - label v - for = "domain in header.domain s" : key = "domain " > { { domain } } < / g r e y - l a b e l > < / s p a n >
< grey - label v - if = "header.shouldAppend" > 附加 < / g r e y - l a b e l >
< grey - label v - if = "header.disableRedirect " > 跳转禁用 < / g r e y - l a b e l >
< grey - label v - if = "header.shouldReplace && header.replaceValues != null && header.replaceValues.length > 0 " > 替换 < / g r e y - l a b e l >
< / d i v >
< / t d >
< td > { { header . value } } < / t d >
< td > < a href = "" @ click . prevent = "updateSettingPopup(vRequestHeaderPolicy.id, header.id)" > 修改 < / a > & n b s p ; < a h r e f = " " @ c l i c k . p r e v e n t = " d e l e t e H e a d e r ( v R e q u e s t H e a d e r P o l i c y . i d , ' s e t H e a d e r ' , h e a d e r . i d ) " > 删 除 < / a > < / t d >
< / t r >
< tbody v - for = "header in requestSettingHeaders" >
< tr >
< td class = "five wide" >
{ { header . name } }
< div >
< span v - if = "header.statu s != null && header.status.codes != null && !header.status.always " > < grey - label v - for = "c ode in header.status.c ode s" : key = "c ode " > { { code } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.method s != null && header.method s.length > 0" > < grey - label v - for = "method in header.method s" : key = "method " > { { method } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.domains != null && header.domains.length > 0" > < grey - label v - for = "domain in header.domains" : key = "domain" > { { domain } } < / g r e y - l a b e l > < / s p a n >
< grey - label v - if = "header.shouldAppend " > 附加 < / g r e y - l a b e l >
< grey - label v - if = "header.disableRedirect " > 跳转禁用 < / g r e y - l a b e l >
< grey - label v - if = "header.shouldReplace && header.replaceValues != null && header.replaceValues.length > 0" > 替换 < / g r e y - l a b e l >
< / d i v >
< / t d >
< td > { { header . value } } < / t d >
< td > < a href = "" @ click . prevent = "updateSettingPopup(vRequestHeaderPolicy.id, header.id)" > 修改 < / a > & n b s p ; < a h r e f = " " @ c l i c k . p r e v e n t = " d e l e t e H e a d e r ( v R e q u e s t H e a d e r P o l i c y . i d , ' s e t H e a d e r ' , h e a d e r . i d ) " > 删 除 < / a > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< h3 > 删除请求Header < / h 3 >
< h4 > 删除请求Header < / h 4 >
< p class = "comment" > 这里可以设置需要从请求中删除的Header 。 < / p >
< table class = "ui table definition selectable" >
< td class = "title" > 需要删除的Header < / t d >
< td >
< div v - if = "requestDeletingHeaders.length > 0" >
< div class = "ui label small basic" v - for = "headerName in requestDeletingHeaders" > { { headerName } } < a href = "" > < i class = "icon remove" title = "删除" @ click . prevent = "deleteDeletingHeader(vRequestHeaderPolicy.id, headerName)" > < / i > < / a > < / d i v >
< div class = "ui divider " > < / d i v >
< / d i v >
< button class = "ui button small" type = "button" @ click . prevent = "addDeletingHeader(vRequestHeaderPolicy.id, 'request')" > + < / b u t t o n >
< / t d >
< tr >
< td class = "title" > 需要删除的Header < / t d >
< td >
< div v - if = "requestDeletingHeaders.length > 0 " >
< div class = "ui label small basic" v - for = "headerName in requestDeletingHeaders" > { { headerName } } < a href = "" > < i class = "icon remove" title = "删除" @ click . prevent = "deleteDeletingHeader(vRequestHeaderPolicy.id, headerName) "> < / i > < / a > < / d i v >
< div class = "ui divider" > < / d i v >
< / d i v >
< button class = "ui button small" type = "button" @ click . prevent = "addDeletingHeader(vRequestHeaderPolicy.id, 'request')" > + < / b u t t o n >
< / t d >
< / t r >
< / t a b l e >
< / d i v >
< / d i v >
@@ -3059,7 +3074,7 @@ example2.com
< warning - message > 由于已经在当前 < a : href = "vGroupSettingUrl + '#response'" > 服务分组 < / a > 中 进 行 了 对 应 的 配 置 , 在 这 里 的 配 置 将 不 会 生 效 。 < / w a r n i n g - m e s s a g e >
< / d i v >
< div : class = "{'opacity-mask': vHasGroupResponseConfig}" >
< h3 > 设置响应Header < a href = "" @ click . prevent = "addSettingHeader(vResponseHeaderPolicy.id)" > [ 添加新Header ] < / a > < / h 3 >
< h4 > 设置响应Header < a href = "" @ click . prevent = "addSettingHeader(vResponseHeaderPolicy.id)" > [ 添加新Header ] < / a > < / h 4 >
< p class = "comment" style = "margin-top: 0; padding-top: 0" > 将会覆盖已有的同名Header 。 < / p >
< p class = "comment" v - if = "responseSettingHeaders.length == 0" > 暂时还没有Header 。 < / p >
< table class = "ui table selectable celled" v - if = "responseSettingHeaders.length > 0" >
@@ -3070,37 +3085,52 @@ example2.com
< th class = "two op" > 操作 < / t h >
< / t r >
< / t h e a d >
< tr v - for = "header in responseSettingHeaders" >
< td class = "five wide" >
{ { header . name } }
< div >
< span v - if = "header.status != null && header.status.codes != null && !header.status.always" > < grey - label v - for = "code in header.status.codes" : key = "code" > { { code } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.method s != null && header.methods.length > 0 " > < grey - label v - for = "meth od in header.meth ods" : key = "meth od" > { { method } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.domain s != null && header.domain s.length > 0" > < grey - label v - for = "domain in header.domain s" : key = "domain " > { { domain } } < / g r e y - l a b e l > < / s p a n >
< grey - label v - if = "header.shouldAppend" > 附加 < / g r e y - l a b e l >
< grey - label v - if = "header.disableRedirect " > 跳转禁用 < / g r e y - l a b e l >
< grey - label v - if = "header.shouldReplace && header.replaceValues != null && header.replaceValues.length > 0 " > 替换 < / g r e y - l a b e l >
< / d i v >
< / t d >
< td > { { header . value } } < / t d >
< td > < a href = "" @ click . prevent = "updateSettingPopup(vResponseHeaderPolicy.id, header.id)" > 修改 < / a > & n b s p ; < a h r e f = " " @ c l i c k . p r e v e n t = " d e l e t e H e a d e r ( v R e s p o n s e H e a d e r P o l i c y . i d , ' s e t H e a d e r ' , h e a d e r . i d ) " > 删 除 < / a > < / t d >
< / t r >
< tbody v - for = "header in responseSettingHeaders" >
< tr >
< td class = "five wide" >
{ { header . name } }
< div >
< span v - if = "header.statu s != null && header.status.codes != null && !header.status.always " > < grey - label v - for = "c ode in header.status.c ode s" : key = "c ode " > { { code } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.method s != null && header.method s.length > 0" > < grey - label v - for = "method in header.method s" : key = "method " > { { method } } < / g r e y - l a b e l > < / s p a n >
< span v - if = "header.domains != null && header.domains.length > 0" > < grey - label v - for = "domain in header.domains" : key = "domain" > { { domain } } < / g r e y - l a b e l > < / s p a n >
< grey - label v - if = "header.shouldAppend " > 附加 < / g r e y - l a b e l >
< grey - label v - if = "header.disableRedirect " > 跳转禁用 < / g r e y - l a b e l >
< grey - label v - if = "header.shouldReplace && header.replaceValues != null && header.replaceValues.length > 0" > 替换 < / g r e y - l a b e l >
< / d i v >
< / t d >
< td > { { header . value } } < / t d >
< td > < a href = "" @ click . prevent = "updateSettingPopup(vResponseHeaderPolicy.id, header.id)" > 修改 < / a > & n b s p ; < a h r e f = " " @ c l i c k . p r e v e n t = " d e l e t e H e a d e r ( v R e s p o n s e H e a d e r P o l i c y . i d , ' s e t H e a d e r ' , h e a d e r . i d ) " > 删 除 < / a > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< h3 > 删除响应Header < / h 3 >
< h4 > 删除响应Header < / h 4 >
< p class = "comment" > 这里可以设置需要从响应中删除的Header 。 < / p >
< table class = "ui table definition selectable" >
< td class = "title" > 需要删除的Header < / t d >
< td >
< div v - if = "responseDeletingHeaders.length > 0" >
< div class = "ui label small basic" v - for = "headerName in responseDeletingHeaders" > { { headerName } } < a href = "" > < i class = "icon remove" title = "删除" @ click . prevent = "deleteDeletingHeader(vResponseHeaderPolicy.id, headerName)" > < / i > < / a > < / d i v >
< div class = "ui divider " > < / d i v >
< / d i v >
< button class = "ui button small" type = "button" @ click . prevent = "addDeletingHeader(vResponseHeaderPolicy.id, 'response')" > + < / b u t t o n >
< / t d >
< tr >
< td class = "title" > 需要删除的Header < / t d >
< td >
< div v - if = "responseDeletingHeaders.length > 0 " >
< div class = "ui label small basic" v - for = "headerName in responseDeletingHeaders" > { { headerName } } < a href = "" > < i class = "icon remove" title = "删除" @ click . prevent = "deleteDeletingHeader(vResponseHeaderPolicy.id, headerName) "> < / i > < / a > < / d i v >
< div class = "ui divider" > < / d i v >
< / d i v >
< button class = "ui button small" type = "button" @ click . prevent = "addDeletingHeader(vResponseHeaderPolicy.id, 'response')" > + < / b u t t o n >
< / t d >
< / t r >
< / t a b l e >
< / d i v >
< h4 > 其他设置 < / h 4 >
< table class = "ui table definition selectable" >
< tr >
< td class = "title" > CORS自适应跨域 < / t d >
< td >
< span v - if = "responseCORS.isOn" class = "green" > 已启用 < / s p a n > < s p a n c l a s s = " d i s a b l e d " v - e l s e = " " > 未 启 用 < / s p a n > & n b s p ; < a h r e f = " " @ c l i c k . p r e v e n t = " u p d a t e C O R S ( v R e s p o n s e H e a d e r P o l i c y . i d ) " > [ 修 改 ] < / a >
< / t d >
< / t r >
< / t a b l e >
< / d i v >
< / d i v >
< div class = "margin" > < / d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o m m o n - c o n f i g - b o x " , { p r o p s : [ " v - c o m m o n - c o n f i g " ] , d a t a : f u n c t i o n ( ) { l e t e = t h i s . v C o m m o n C o n f i g ; r e t u r n { c o n f i g : e = n u l l = = e ? { m e r g e S l a s h e s : ! 1 } : e } } , t e m p l a t e : ` < d i v >
@@ -3211,7 +3241,7 @@ example2.com
< / t r >
< / t a b l e >
< div class = "ui margin" > < / d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o m p r e s s i o n - c o n f i g - b o x " , { p r o p s : [ " v - c o m p r e s s i o n - c o n f i g " , " v - i s - l o c a t i o n " , " v - i s - g r o u p " ] , m o u n t e d : f u n c t i o n ( ) { l e t e = t h i s ; s o r t L o a d ( f u n c t i o n ( ) { e . i n i t S o r t a b l e T y p e s ( ) } ) } , d a t a : f u n c t i o n ( ) { l e t t = t h i s . v C o m p r e s s i o n C o n f i g , e = ( n u l l = = ( t = n u l l = = t ? { i s P r i o r : ! 1 , i s O n : ! 1 , u s e D e f a u l t T y p e s : ! 0 , t y p e s : [ " b r o t l i " , " g z i p " , " z s t d " , " d e f l a t e " ] , l e v e l : 5 , d e c o m p r e s s D a t a : ! 1 , g z i p R e f : n u l l , d e f l a t e R e f : n u l l , b r o t l i R e f : n u l l , m i n L e n g t h : { c o u n t : 0 , u n i t : " k b " } , m a x L e n g t h : { c o u n t : 0 , u n i t : " k b " } , m i m e T y p e s : [ " t e x t / * " , " a p p l i c a t i o n / j a v a s c r i p t " , " a p p l i c a t i o n / j s o n " , " a p p l i c a t i o n / a t o m + x m l " , " a p p l i c a t i o n / r s s + x m l " , " a p p l i c a t i o n / x h t m l + x m l " , " f o n t / * " , " i m a g e / s v g + x m l " ] , e x t e n s i o n s : [ " . j s " , " . j s o n " , " . h t m l " , " . h t m " , " . x m l " , " . c s s " , " . w o f f 2 " , " . t x t " ] , c o n d s : n u l l } : t ) . t y p e s & & ( t . t y p e s = [ ] ) , n u l l = = t . m i m e T y p e s & & ( t . m i m e T y p e s = [ ] ) , n u l l = = t . e x t e n s i o n s & & ( t . e x t e n s i o n s = [ ] ) , [ { n a m e : " G z i p " , c o d e : " g z i p " , i s O n : ! 0 } , { n a m e : " D e f l a t e " , c o d e : " d e f l a t e " , i s O n : ! 0 } , { n a m e : " B r o t l i " , c o d e : " b r o t l i " , i s O n : ! 0 } , { n a m e : " Z S T D " , c o d e : " z s t d " , i s O n : ! 0 } ] ) , i = [ ] ; r e t u r n t . t y p e s . f o r E a c h ( f u n c t i o n ( t ) { e . f o r E a c h ( f u n c t i o n ( e ) { t = = e . c o d e & & ( e . i s O n = ! 0 , i . p u s h ( e ) ) } ) } ) , e . f o r E a c h ( f u n c t i o n ( e ) { t . t y p e s . $ c o n t a i n s ( e . c o d e ) | | ( e . i s O n = ! 1 , i . p u s h ( e ) ) } ) , { c o n f i g : t , m o r e O p t i o n s V i s i b l e : ! 1 , a l l T y p e s : i } } , w a t c h : { " c o n f i g . l e v e l " : f u n c t i o n ( e ) { l e t t = p a r s e I n t ( e ) ; i s N a N ( t ) | | t < 1 ? t = 1 : 1 0 < t & & ( t = 1 0 ) , t h i s . c o n f i g . l e v e l = t } } , m e t h o d s : { i s O n : f u n c t i o n ( ) { r e t u r n ( ! t h i s . v I s L o c a t i o n & & ! t h i s . v I s G r o u p | | t h i s . c o n f i g . i s P r i o r ) & & t h i s . c o n f i g . i s O n } , c h a n g e E x t e n s i o n s : f u n c t i o n ( i ) { i . f o r E a c h ( f u n c t i o n ( e , t ) { 0 < e . l e n g t h & & " . " ! = e [ 0 ] & & ( i [ t ] = " . " + e ) } ) , t h i s . c o n f i g . e x t e n s i o n s = i } , c h a n g e M i m e T y p e s : f u n c t i o n ( e ) { t h i s . c o n f i g . m i m e T y p e s = e } , c h a n g e A d v a n c e d V i s i b l e : f u n c t i o n ( ) { t h i s . m o r e O p t i o n s V i s i b l e = ! t h i s . m o r e O p t i o n s V i s i b l e } , c h a n g e C o n d s : f u n c t i o n ( e ) { t h i s . c o n f i g . c o n d s = e } , c h a n g e T y p e : f u n c t i o n ( ) { t h i s . c o n f i g . t y p e s = [ ] ; l e t t = t h i s ; t h i s . a l l T y p e s . f o r E a c h ( f u n c t i o n ( e ) { e . i s O n & & t . c o n f i g . t y p e s . p u s h ( e . c o d e ) } ) } , i n i t S o r t a b l e T y p e s : f u n c t i o n ( ) { l e t n = d o c u m e n t . q u e r y S e l e c t o r ( " # c o m p r e s s i o n - t y p e s - b o x " ) , s = t h i s ; S o r t a b l e . c r e a t e ( n , { d r a g g a b l e : " . c h e c k b o x " , h a n d l e : " . i c o n . h a n d l e " , o n S t a r t : f u n c t i o n ( ) { } , o n U p d a t e : f u n c t i o n ( e ) { l e t t = n . q u e r y S e l e c t o r A l l ( " . c h e c k b o x " ) , i = [ ] ; t . f o r E a c h ( f u n c t i o n ( e ) { e = e . g e t A t t r i b u t e ( " d a t a - c o d e " ) ; i . p u s h ( e ) } ) , s . c o n f i g . t y p e s = i } } ) } } , t e m p l a t e : ` < d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o m p r e s s i o n - c o n f i g - b o x " , { p r o p s : [ " v - c o m p r e s s i o n - c o n f i g " , " v - i s - l o c a t i o n " , " v - i s - g r o u p " ] , m o u n t e d : f u n c t i o n ( ) { l e t e = t h i s ; s o r t L o a d ( f u n c t i o n ( ) { e . i n i t S o r t a b l e T y p e s ( ) } ) } , d a t a : f u n c t i o n ( ) { l e t t = t h i s . v C o m p r e s s i o n C o n f i g , e = ( n u l l = = ( t = n u l l = = t ? { i s P r i o r : ! 1 , i s O n : ! 1 , u s e D e f a u l t T y p e s : ! 0 , t y p e s : [ " b r o t l i " , " g z i p " , " z s t d " , " d e f l a t e " ] , l e v e l : 5 , d e c o m p r e s s D a t a : ! 1 , g z i p R e f : n u l l , d e f l a t e R e f : n u l l , b r o t l i R e f : n u l l , m i n L e n g t h : { c o u n t : 1 , u n i t : " k b " } , m a x L e n g t h : { c o u n t : 3 2 , u n i t : " m b " } , m i m e T y p e s : [ " t e x t / * " , " a p p l i c a t i o n / j a v a s c r i p t " , " a p p l i c a t i o n / j s o n " , " a p p l i c a t i o n / a t o m + x m l " , " a p p l i c a t i o n / r s s + x m l " , " a p p l i c a t i o n / x h t m l + x m l " , " f o n t / * " , " i m a g e / s v g + x m l " ] , e x t e n s i o n s : [ " . j s " , " . j s o n " , " . h t m l " , " . h t m " , " . x m l " , " . c s s " , " . w o f f 2 " , " . t x t " ] , e x c e p t E x t e n s i o n s : [ " . a p k " , " . i p a " ] , c o n d s : n u l l , e n a b l e P a r t i a l C o n t e n t : ! 1 } : t ) . t y p e s & & ( t . t y p e s = [ ] ) , n u l l = = t . m i m e T y p e s & & ( t . m i m e T y p e s = [ ] ) , n u l l = = t . e x t e n s i o n s & & ( t . e x t e n s i o n s = [ ] ) , [ { n a m e : " G z i p " , c o d e : " g z i p " , i s O n : ! 0 } , { n a m e : " D e f l a t e " , c o d e : " d e f l a t e " , i s O n : ! 0 } , { n a m e : " B r o t l i " , c o d e : " b r o t l i " , i s O n : ! 0 } , { n a m e : " Z S T D " , c o d e : " z s t d " , i s O n : ! 0 } ] ) , i = [ ] ; r e t u r n t . t y p e s . f o r E a c h ( f u n c t i o n ( t ) { e . f o r E a c h ( f u n c t i o n ( e ) { t = = e . c o d e & & ( e . i s O n = ! 0 , i . p u s h ( e ) ) } ) } ) , e . f o r E a c h ( f u n c t i o n ( e ) { t . t y p e s . $ c o n t a i n s ( e . c o d e ) | | ( e . i s O n = ! 1 , i . p u s h ( e ) ) } ) , { c o n f i g : t , m o r e O p t i o n s V i s i b l e : ! 1 , a l l T y p e s : i } } , w a t c h : { " c o n f i g . l e v e l " : f u n c t i o n ( e ) { l e t t = p a r s e I n t ( e ) ; i s N a N ( t ) | | t < 1 ? t = 1 : 1 0 < t & & ( t = 1 0 ) , t h i s . c o n f i g . l e v e l = t } } , m e t h o d s : { i s O n : f u n c t i o n ( ) { r e t u r n ( ! t h i s . v I s L o c a t i o n & & ! t h i s . v I s G r o u p | | t h i s . c o n f i g . i s P r i o r ) & & t h i s . c o n f i g . i s O n } , c h a n g e E x t e n s i o n s : f u n c t i o n ( i ) { i . f o r E a c h ( f u n c t i o n ( e , t ) { 0 < e . l e n g t h & & " . " ! = e [ 0 ] & & ( i [ t ] = " . " + e ) } ) , t h i s . c o n f i g . e x t e n s i o n s = i } , c h a n g e E x c e p t E x t e n s i o n s : f u n c t i o n ( i ) { i . f o r E a c h ( f u n c t i o n ( e , t ) { 0 < e . l e n g t h & & " . " ! = e [ 0 ] & & ( i [ t ] = " . " + e ) } ) , t h i s . c o n f i g . e x c e p t E x t e n s i o n s = i } , c h a n g e M i m e T y p e s : f u n c t i o n ( e ) { t h i s . c o n f i g . m i m e T y p e s = e } , c h a n g e A d v a n c e d V i s i b l e : f u n c t i o n ( ) { t h i s . m o r e O p t i o n s V i s i b l e = ! t h i s . m o r e O p t i o n s V i s i b l e } , c h a n g e C o n d s : f u n c t i o n ( e ) { t h i s . c o n f i g . c o n d s = e } , c h a n g e T y p e : f u n c t i o n ( ) { t h i s . c o n f i g . t y p e s = [ ] ; l e t t = t h i s ; t h i s . a l l T y p e s . f o r E a c h ( f u n c t i o n ( e ) { e . i s O n & & t . c o n f i g . t y p e s . p u s h ( e . c o d e ) } ) } , i n i t S o r t a b l e T y p e s : f u n c t i o n ( ) { l e t n = d o c u m e n t . q u e r y S e l e c t o r ( " # c o m p r e s s i o n - t y p e s - b o x " ) , s = t h i s ; S o r t a b l e . c r e a t e ( n , { d r a g g a b l e : " . c h e c k b o x " , h a n d l e : " . i c o n . h a n d l e " , o n S t a r t : f u n c t i o n ( ) { } , o n U p d a t e : f u n c t i o n ( e ) { l e t t = n . q u e r y S e l e c t o r A l l ( " . c h e c k b o x " ) , i = [ ] ; t . f o r E a c h ( f u n c t i o n ( e ) { e = e . g e t A t t r i b u t e ( " d a t a - c o d e " ) ; i . p u s h ( e ) } ) , s . c o n f i g . t y p e s = i } } ) } } , t e m p l a t e : ` < d i v >
< input type = "hidden" name = "compressionJSON" : value = "JSON.stringify(config)" / >
< table class = "ui table definition selectable" >
< prior - checkbox : v - config = "config" v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x >
@@ -3243,6 +3273,13 @@ example2.com
< p class = "comment" > 含有这些扩展名的URL将会被压缩 , 不区分大小写 。 < / p >
< / t d >
< / t r >
< tr >
< td > 例外扩展名 < / t d >
< td >
< values - box : values = "config.exceptExtensions" @ change = "changeExceptExtensions" placeholder = "比如 .html" > < / v a l u e s - b o x >
< p class = "comment" > 含有这些扩展名的URL将 < strong > 不会 < / s t r o n g > 被 压 缩 , 不 区 分 大 小 写 。 < / p >
< / t d >
< / t r >
< tr >
< td > 支持的MimeType < / t d >
< td >
@@ -3295,6 +3332,13 @@ example2.com
< p class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p >
< / t d >
< / t r >
< tr >
< td > 支持Partial < br / > Content < / t d >
< td >
< checkbox v - model = "config.enablePartialContent" > < / c h e c k b o x >
< p class = "comment" > 支持对分区内容 ( PartialContent ) 的压缩 ; 除非客户端有特殊要求 , 一般不需要启用 。 < / p >
< / t d >
< / t r >
< tr >
< td > 匹配条件 < / t d >
< td >
@@ -4191,8 +4235,8 @@ example2.com
{ { cond . value } }
< sup v - if = "cond.isCaseInsensitive" title = "不区分大小写" > < i class = "icon info small" > < / i > < / s u p >
< / s p a n >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - h e a d e r - a s s i s t a n t " , { p r o p s : [ " v - t y p e " , " v - v a l u e " ] , m o u n t e d : f u n c t i o n ( ) { l e t t = t h i s ; T e a . a c t i o n ( " / s e r v e r s / h e a d e r s / o p t i o n s ? t y p e = " + t h i s . v T y p e ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . a l l H e a d e r s = e . d a t a . h e a d e r s } ) } , d a t a : f u n c t i o n ( ) { r e t u r n { a l l H e a d e r s : [ ] , m a t c h e d H e a d e r s : [ ] , s e l e c t e d H e a d e r N a m e : " " } } , w a t c h : { v V a l u e : f u n c t i o n ( t ) { t ! = t h i s . s e l e c t e d H e a d e r N a m e & & ( t h i s . s e l e c t e d H e a d e r N a m e = " " ) , 0 = = t . l e n g t h ? t h i s . m a t c h e d H e a d e r s = [ ] : t h i s . m a t c h e d H e a d e r s = t h i s . a l l H e a d e r s . f i l t e r ( f u n c t i o n ( e ) { r e t u r n t e a w e b . m a t c h ( e , t ) } ) . s l i c e ( 0 , 5 ) } } , m e t h o d s : { s e l e c t : f u n c t i o n ( e ) { t h i s . $ e m i t ( " s e l e c t " , e ) , t h i s . s e l e c t e d H e a d e r N a m e = e } } , t e m p l a t e : ` < s p a n v - i f = " s e l e c t e d H e a d e r N a m e . l e n g t h = = 0 " >
< a href = "" v - for = "header in matchedHeaders" class = "ui label basic tiny blue" style = "font-weight: normal" @ click . prevent = "select(header)" > { { header } } < / a >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - h e a d e r - a s s i s t a n t " , { p r o p s : [ " v - t y p e " , " v - v a l u e " ] , m o u n t e d : f u n c t i o n ( ) { l e t t = t h i s ; T e a . a c t i o n ( " / s e r v e r s / h e a d e r s / o p t i o n s ? t y p e = " + t h i s . v T y p e ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . a l l H e a d e r s = e . d a t a . h e a d e r s } ) } , d a t a : f u n c t i o n ( ) { r e t u r n { a l l H e a d e r s : [ ] , m a t c h e d H e a d e r s : [ ] , s e l e c t e d H e a d e r N a m e : " " } } , w a t c h : { v V a l u e : f u n c t i o n ( t ) { t ! = t h i s . s e l e c t e d H e a d e r N a m e & & ( t h i s . s e l e c t e d H e a d e r N a m e = " " ) , 0 = = t . l e n g t h ? t h i s . m a t c h e d H e a d e r s = [ ] : t h i s . m a t c h e d H e a d e r s = t h i s . a l l H e a d e r s . f i l t e r ( f u n c t i o n ( e ) { r e t u r n t e a w e b . m a t c h ( e , t ) } ) . s l i c e ( 0 , 1 0 ) } } , m e t h o d s : { s e l e c t : f u n c t i o n ( e ) { t h i s . $ e m i t ( " s e l e c t " , e ) , t h i s . s e l e c t e d H e a d e r N a m e = e } } , t e m p l a t e : ` < s p a n v - i f = " s e l e c t e d H e a d e r N a m e . l e n g t h = = 0 " >
< a href = "" v - for = "header in matchedHeaders" class = "ui label basic tiny blue" style = "font-weight: normal; margin-bottom: 0.3em " @ click . prevent = "select(header)" > { { header } } < / a >
< span v - if = "matchedHeaders.length > 0" > & nbsp ; & nbsp ; < / s p a n >
< / s p a n > ` } ) , V u e . c o m p o n e n t ( " h t t p - f i r e w a l l - r u l e s - b o x " , { p r o p s : [ " v - r u l e s " , " v - t y p e " ] , d a t a : f u n c t i o n ( ) { l e t e = t h i s . v R u l e s ; r e t u r n { r u l e s : e = n u l l = = e ? [ ] : e } } , m e t h o d s : { a d d R u l e : f u n c t i o n ( ) { w i n d o w . U P D A T I N G _ R U L E = n u l l ; l e t t = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / c o m p o n e n t s / w a f / c r e a t e R u l e P o p u p ? t y p e = " + t h i s . v T y p e , { h e i g h t : " 3 0 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . r u l e s . p u s h ( e . d a t a . r u l e ) } } ) } , u p d a t e R u l e : f u n c t i o n ( t , e ) { w i n d o w . U P D A T I N G _ R U L E = t e a w e b . c l o n e ( e ) ; l e t i = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / c o m p o n e n t s / w a f / c r e a t e R u l e P o p u p ? t y p e = " + t h i s . v T y p e , { h e i g h t : " 3 0 e m " , c a l l b a c k : f u n c t i o n ( e ) { V u e . s e t ( i . r u l e s , t , e . d a t a . r u l e ) } } ) } , r e m o v e R u l e : f u n c t i o n ( e ) { l e t t = t h i s ; t e a w e b . c o n f i r m ( " 确 定 要 删 除 此 规 则 吗 ? " , f u n c t i o n ( ) { t . r u l e s . $ r e m o v e ( e ) } ) } } , t e m p l a t e : ` < d i v >
< input type = "hidden" name = "rulesJSON" : value = "JSON.stringify(rules)" / >
@@ -4713,7 +4757,80 @@ example2.com
< / t a b l e >
< / d i v >
< / d i v >
` }),Vue.component("firewall-syn-flood -config-box",{props:["v-syn-flood-config"],data:function(){let e=this.vSynFloodConfig;return{config:e=null==e?{isOn:!1,minAttempts:10,timeoutSeconds:600,ignoreLocal:!0}:e,isEditing:!1,minAttempts:e.minAttempts,timeoutSeconds:e.timeoutSeconds }},methods:{edit :function(){this.isEditing=!this.isEditing}},watch:{minAttempts:function(e){let t=parseInt(e);(t=isNaN(t)?10:t)<5&&(t=5),this.config.minAttempts=t},timeoutSeconds:function(e){let t=parseInt(e);(t=isNaN(t)?10:t)<60&&(t=60),this.config.timeoutSecon ds=t }},template: ` < div >
` }),Vue.component("user-agent -config-box",{props:["v-is-location","v-is-group","value"],data:function(){let e=this.value;return null==(e=null==e?{isPrior:!1,isOn:!1,filters:[]}:e).filters&&(e.filters=[]),{config:e,isAdding:!1,addingFilter:{keywords:[],action:"deny"} }},methods:{isOn :function(){return(!this.vIsLocation&&!this.vIsGroup||this.config.isPrior)&&this.config.isOn},remove:function(e){let t=this;teaweb.confirm("确定要删除此名单吗?",function(){t.config.filters. $ remove(e)})},add:function(){this.isAdding=!0},confirm:function(){if("deny"==this.addingFilter.action)this.config.filters.push(this.addingFilter);else{let i=-1;this.config.filters.forEach(function(e,t){"allow"==e.action&&(i=t)}),i<0?this.config.filters.unshift(this.addingFilter):this.config.filters. $ insert(i+1,this.addingFilter)}this.cancel()},cancel:function(){this.isAdding=!1,this.addingFilter={keywords:[],action:"deny"}},changeKeywords:function(e){this.addingFilter.keywor ds=e }},template:` < div >
< input type = "hidden" name = "userAgentJSON" : value = "JSON.stringify(config)" / >
< table class = "ui table definition selectable" >
< prior - checkbox : v - config = "config" v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x >
< tbody v - show = "(!vIsLocation && !vIsGroup) || config.isPrior" >
< tr >
< td class = "title" > 启用UA名单 < / t d >
< td >
< div class = "ui checkbox" >
< input type = "checkbox" value = "1" v - model = "config.isOn" / >
< label > < / l a b e l >
< / d i v >
< p class = "comment" > 选中后表示开启UserAgent名单 。 < / p >
< / t d >
< / t r >
< / t b o d y >
< tbody v - show = "isOn()" >
< tr >
< td > UA名单 < / t d >
< td >
< div v - if = "config.filters.length > 0" >
< table class = "ui table celled" >
< thead class = "full-width" >
< tr >
< th > UA关键词 < / t h >
< th class = "two wide" > 动作 < / t h >
< th class = "one op" > 操作 < / t h >
< / t r >
< / t h e a d >
< tbody v - for = "(filter, index) in config.filters" >
< tr >
< td style = "background: white" >
< span v - for = "keyword in filter.keywords" class = "ui label basic tiny" >
< span v - if = "keyword.length > 0" > { { keyword } } < / s p a n >
< span v - if = "keyword.length == 0" class = "disabled" > [ 空 ] < / s p a n >
< / s p a n >
< / t d >
< td >
< span v - if = "filter.action == 'allow'" class = "green" > 允许 < / s p a n > < s p a n v - i f = " f i l t e r . a c t i o n = = ' d e n y ' " c l a s s = " r e d " > 不 允 许 < / s p a n >
< / t d >
< td > < a href = "" @ click . prevent = "remove(index)" > 删除 < / a > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< / d i v >
< div v - if = "isAdding" style = "margin-top: 0.5em" >
< table class = "ui table definition" >
< tr >
< td class = "title" > UA关键词 < / t d >
< td >
< values - box : v - values = "addingFilter.keywords" : v - allow - empty = "true" @ change = "changeKeywords" > < / v a l u e s - b o x >
< p class = "comment" > 不区分大小写 , 比如 < code - label > Chrome < / c o d e - l a b e l > ; 支 持 < c o d e - l a b e l > * < / c o d e - l a b e l > 通 配 符 , 比 如 < c o d e - l a b e l > * F i r e f o x * < / c o d e - l a b e l > ; 也 支 持 空 的 关 键 词 , 表 示 空 U s e r A g e n t 。 < / p >
< / t d >
< / t r >
< tr >
< td > 动作 < / t d >
< td > < select class = "ui dropdown auto-width" v - model = "addingFilter.action" >
< option value = "deny" > 不允许 < / o p t i o n >
< option value = "allow" > 允许 < / o p t i o n >
< / s e l e c t >
< / t d >
< / t r >
< / t a b l e >
< button type = "button" class = "ui button tiny" @ click . prevent = "confirm" > 保存 < /button> <a href="" @click.prevent="cancel" title="取消"><i class="icon remove small"></i > < / a >
< / d i v >
< div v - show = "!isAdding" style = "margin-top: 0.5em" >
< button class = "ui button tiny" type = "button" @ click . prevent = "add" > + < / b u t t o n >
< / d i v >
< / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< div class = "margin" > < / d i v >
< / d i v > ` } ) , V u e . c o m p o n e n t ( " f i r e w a l l - s y n - f l o o d - c o n f i g - b o x " , { p r o p s : [ " v - s y n - f l o o d - c o n f i g " ] , d a t a : f u n c t i o n ( ) { l e t e = t h i s . v S y n F l o o d C o n f i g ; r e t u r n { c o n f i g : e = n u l l = = e ? { i s O n : ! 1 , m i n A t t e m p t s : 1 0 , t i m e o u t S e c o n d s : 6 0 0 , i g n o r e L o c a l : ! 0 } : e , i s E d i t i n g : ! 1 , m i n A t t e m p t s : e . m i n A t t e m p t s , t i m e o u t S e c o n d s : e . t i m e o u t S e c o n d s } } , m e t h o d s : { e d i t : f u n c t i o n ( ) { t h i s . i s E d i t i n g = ! t h i s . i s E d i t i n g } } , w a t c h : { m i n A t t e m p t s : f u n c t i o n ( e ) { l e t t = p a r s e I n t ( e ) ; ( t = i s N a N ( t ) ? 1 0 : t ) < 5 & & ( t = 5 ) , t h i s . c o n f i g . m i n A t t e m p t s = t } , t i m e o u t S e c o n d s : f u n c t i o n ( e ) { l e t t = p a r s e I n t ( e ) ; ( t = i s N a N ( t ) ? 1 0 : t ) < 6 0 & & ( t = 6 0 ) , t h i s . c o n f i g . t i m e o u t S e c o n d s = t } } , t e m p l a t e : ` < d i v >
< input type = "hidden" name = "synFloodJSON" : value = "JSON.stringify(config)" / >
< a href = "" @ click . prevent = "edit" >
< span v - if = "config.isOn" >
@@ -4981,14 +5098,19 @@ example2.com
< tr >
< td colspan = "2" > < a href = "" @ click . prevent = "show()" > < span v - if = "!isVisible" > 更多选项 < / s p a n > < s p a n v - i f = " i s V i s i b l e " > 收 起 选 项 < / s p a n > < i c l a s s = " i c o n a n g l e " : c l a s s = " { d o w n : ! i s V i s i b l e , u p : i s V i s i b l e } " > < / i > < / a > < / t d >
< / t r >
< /tbody>`}),Vue.component("download-link",{props:["v-element","v-file","v-value"],created:function(){let e=this;setTimeout(function(){e.url=e.composeURL()},1e3)},data:function(){let e=this.vFile;return{file:e=null!=e&&0!=e.length?e:"unknown-file",url:this.composeURL()}},methods:{composeURL:function(){let e="";if(null!=this.vValue)e=this.vValue;else{var t=document.getElementById(this.vElement);if(null==t)return;null==(e=t.innerText)&&(e=t.textContent)}return Tea.url("/ui / download ",{file:this.file,text:e})}},template:'<a :href=" url " target=" _blank " style=" font - weight : normal "><slot></slot></a>'}),Vue.component(" values - box ",{props:[" values "," v - values "," size "," maxlength "," name "," placeholder "],data:function(){let e=this.values;return null==e&&(e=[]),{realValues:e=null!=this.vValues&&" object "==typeof this.vValues?this.vValues:e,isUpdating:!1,isAdding:!1,index:0,value:" ",isEditing:!1}},methods:{create:function(){this.isAdding=!0;var e=this;setTimeout(function(){e.$refs.value.focus()},200)},update:function(e){this.cancel(),this.isUpdating=!0,this.index=e,this.value=this.realValues[e];var t=this;setTimeout(function(){t.$refs.value.focus()},200)},confirm:function(){0!=this.value.length&&(this.isUpdating?Vue.set(this.realValues,this.index,this.value):this.realValues.push(this.value),this.cancel(),this.$emit(" change ",this.realValues))},remove:function(e){this.realValues.$remove(e),this.$emit(" change ",this.realValues)},cancel:function(){this.isUpdating=!1,this.isAdding=!1,this.value=" " } , updateAll : function ( e ) { this . realValues = e } , addValue : function ( e ) { this . realValues . push ( e ) } , startEditing : function ( ) { this . isEditing = ! this . isEditing } , allValues : function ( ) { return this . realValues } } , template : ` <div>
< /tbody>`}),Vue.component("download-link",{props:["v-element","v-file","v-value"],created:function(){let e=this;setTimeout(function(){e.url=e.composeURL()},1e3)},data:function(){let e=this.vFile;return{file:e=null!=e&&0!=e.length?e:"unknown-file",url:this.composeURL()}},methods:{composeURL:function(){let e="";if(null!=this.vValue)e=this.vValue;else{var t=document.getElementById(this.vElement);if(null==t)return;null==(e=t.innerText)&&(e=t.textContent)}return Tea.url("/ui / download ",{file:this.file,text:e})}},template:'<a :href=" url " target=" _blank " style=" font - weight : normal "><slot></slot></a>'}),Vue.component(" values - box ",{props:[" values "," v - values "," size "," maxlength "," name "," placeholder "," v - allow - empty " ],data:function(){let e=this.values;return null==e&&(e=[]),{realValues:e=null!=this.vValues&&"object "==typeof this.vValues?this.vValues:e,isUpdating:!1,isAdding:!1,index:0,value:" ",isEditing:!1}},methods:{create:function(){this.isAdding=!0;var e=this;setTimeout(function(){e.$refs.value.focus()},200)},update:function(e){this.cancel(),this.isUpdating=!0,this.index=e,this.value=this.realValues[e];var t=this;setTimeout(function(){t.$refs.value.focus()},200)},confirm:function(){( 0!=this.value.length||" boolean "==typeof this.vAllowEmpty&&this.vAllowEmpty) &&(this.isUpdating?Vue.set(this.realValues,this.index,this.value):this.realValues.push(this.value),this.cancel(),this.$emit("change ",this.realValues))},remove:function(e){this.realValues.$remove(e),this.$emit(" change ",this.realValues)},cancel:function(){this.isUpdating=!1,this.isAdding=!1,this.value=" " } , updateAll : function ( e ) { this . realValues = e } , addValue : function ( e ) { this . realValues . push ( e ) } , startEditing : function ( ) { this . isEditing = ! this . isEditing } , allValues : function ( ) { return this . realValues } } , template : ` <div>
< div v - show = "!isEditing && realValues.length > 0" >
< div class = "ui label tiny basic" v - for = "(value, index) in realValues" style = "margin-top:0.4em;margin-bottom:0.4em" > { { value } } < / d i v >
< div class = "ui label tiny basic" v - for = "(value, index) in realValues" style = "margin-top:0.4em;margin-bottom:0.4em" >
< span v - if = "value.length > 0" > { { value } } < / s p a n >
< span v - if = "value.length == 0" class = "disabled" > [ 空 ] < / s p a n >
< / d i v >
< a href = "" @ click . prevent = "startEditing" style = "font-size: 0.8em; margin-left: 0.2em" > [ 修改 ] < / a >
< / d i v >
< div v - show = "isEditing || realValues.length == 0" >
< div style = "margin-bottom: 1em" v - if = "realValues.length > 0" >
< div class = "ui label tiny basic" v - for = "(value, index) in realValues" style = "margin-top:0.4em;margin-bottom:0.4em" > { { value } }
< div class = "ui label tiny basic" v - for = "(value, index) in realValues" style = "margin-top:0.4em;margin-bottom:0.4em" >
< span v - if = "value.length > 0" > { { value } } < / s p a n >
< span v - if = "value.length == 0" class = "disabled" > [ 空 ] < / s p a n >
< input type = "hidden" : name = "name" : value = "value" / >
& nbsp ; < a href = "" @ click . prevent = "update(index)" title = "修改" > < i class = "icon pencil small" > < / i > < / a >
< a href = "" @ click . prevent = "remove(index)" title = "删除" > < i class = "icon remove" > < / i > < / a >