2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								Vue . component ( "traffic-map-box" , { props : [ "v-stats" , "v-is-attack" ] , mounted : function ( ) { this . render ( ) } , data : function ( ) { let  i = 0 ; var  e = this . vIsAttack , t = ( this . vStats . forEach ( function ( e ) { var  t = parseFloat ( e . percent ) ; t > i && ( i = t ) , e . formattedCountRequests = teaweb . formatCount ( e . countRequests ) + "次" , e . formattedCountAttackRequests = teaweb . formatCount ( e . countAttackRequests ) + "次" } ) , i < 100 && ( i *= 1.2 ) , window . innerWidth < 512 ) ; return { isAttack : e , stats : this . vStats , chart : null , minOpacity : . 2 , maxPercent : i , selectedCountryName : "" , screenIsNarrow : t } } , methods : { render : function ( ) { this . chart = teaweb . initChart ( document . getElementById ( "traffic-map-box" ) ) ; let  n = this ; this . chart . setOption ( { backgroundColor : "white" , grid : { top : 0 , bottom : 0 , left : 0 , right : 0 } , roam : ! 1 , tooltip : { trigger : "item" } , series : [ { type : "map" , map : "world" , zoom : 1.3 , selectedMode : ! 1 , itemStyle : { areaColor : "#E9F0F9" , borderColor : "#DDD" } , label : { show : ! 1 , fontSize : "10px" , color : "#fff" , backgroundColor : "#8B9BD3" , padding : [ 2 , 2 , 2 , 2 ] } , emphasis : { itemStyle : { areaColor : "#8B9BD3" , opacity : 1 } , label : { show : ! 0 , fontSize : "10px" , color : "#fff" , backgroundColor : "#8B9BD3" , padding : [ 2 , 2 , 2 , 2 ] } } , tooltip : { formatter : function ( e ) { let  t = e . name , i = null ; return  n . stats . forEach ( function ( e ) { e . name == t && ( i = e ) } ) , null != i ? t + "<br/>流量:" + i . formattedBytes + "<br/>流量占比:" + i . percent + "%<br/>请求数:" + i . formattedCountRequests + "<br/>攻击数:" + i . formattedCountAttackRequests : t } } , data : this . stats . map ( function ( e ) { let  t = parseFloat ( e . percent ) / n . maxPercent , i = 3 * ( t = t < n . minOpacity ? n . minOpacity : t ) ; 1 < i && ( i = 1 ) ; let  s = n . vIsAttack ? "#B03A5B" : "#276AC6" ; return { name : e . name , value : e . bytes , percent : parseFloat ( e . percent ) , itemStyle : { areaColor : s , opacity : t } , emphasis : { itemStyle : { areaColor : s , opacity : i } , label : { show : ! 0 , formatter : function ( e ) { return  e . name } } } , label : { show : ! 1 , formatter : function ( e ) { return  e . name == n . selectedCountryName ? e . name : "" } , fontSize : "10px" , color : "#fff" , backgroundColor : "#8B9BD3" , padding : [ 2 , 2 , 2 , 2 ] } } } ) , nameMap : window . WorldCountriesMap } ] } ) , this . chart . resize ( ) } , selectCountry : function ( s ) { if ( null != this . chart ) { let  e = this . chart . getOption ( ) , i = this ; e . series [ 0 ] . data . forEach ( function ( e ) { let  t = e . percent / i . maxPercent ; if ( t < i . minOpacity && ( t = i . minOpacity ) , e . name == s ) { if ( e . isSelected ) return  e . itemStyle . opacity = t , e . isSelected = ! 1 , e . label . show = ! 1 , void ( i . selectedCountryName = "" ) ; e . isSelected = ! 0 , i . selectedCountryName = s , ( t = 1 < ( t *= 3 ) ? 1 : t ) < . 5 && ( t = . 5 ) , e . itemStyle . opacity = t , e . label . show = ! 0 } else  e . itemStyle . opacity = t , e . isSelected = ! 1 , e . label . show = ! 1 } ) , this . chart . setOption ( e ) } } , select : function ( e ) { this . selectCountry ( e . countryName ) } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 08:55:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  style = "width: 100%; border: 0; padding: 0; margin: 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								       	< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								           < td > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 08:55:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								               < div  class = "traffic-map-box"  id = "traffic-map-box" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								           < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 08:55:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								           < td  style = "width: 14em"  v - if = "!screenIsNarrow" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								           		< traffic - map - box - table  : v - stats = "stats"  : v - is - attack = "isAttack"  @ select = "select" > < / t r a f f i c - m a p - b o x - t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								           < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								       < / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 08:55:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								       < / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								       < tbody  v - if = "screenIsNarrow" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										   < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  colspan = "2" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< traffic - map - box - table  : v - stats = "stats"  : v - is - attack = "isAttack"  : v - screen - is - narrow = "true"  @ select = "select" > < / t r a f f i c - m a p - b o x - t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 08:55:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								   < / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " t r a f f i c - m a p - b o x - t a b l e " , { p r o p s : [ " v - s t a t s " , " v - i s - a t t a c k " , " v - s c r e e n - i s - n a r r o w " ] , d a t a : f u n c t i o n ( ) { r e t u r n { s t a t s : t h i s . v S t a t s , i s A t t a c k : t h i s . v I s A t t a c k } } , 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 " , { c o u n t r y N a m e : e } ) } } , t e m p l a t e : ` < d i v   s t y l e = " o v e r f l o w - y :   a u t o "   : s t y l e = " { ' m a x - h e i g h t ' : v S c r e e n I s N a r r o w   ?   ' a u t o '   :   ' 1 6 e m ' } "   c l a s s = " n a r r o w - s c r o l l b a r " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 08:55:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									   < table  class = "ui table selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										  < thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  colspan = "2" > 国家 / 地区排行 & nbsp ;  < tip - icon  content = "只有开启了统计的服务才会有记录。" > < / t i p - i c o n > < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										  < / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										   < tbody  v - if = "stats.length == 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											   < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												   < td  colspan = "2" > 暂无数据 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											   < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										   < / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										   < tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											   < tr  v - for = "(stat, index) in stats.slice(0, 10)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												   < td  @ click . prevent = "select(stat.name)"  style = "cursor: pointer"  colspan = "2" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													   < div  class = "ui progress bar"  : class = "{red: vIsAttack, blue:!vIsAttack}"  style = "margin-bottom: 0.3em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														   < div  class = "bar"  style = "min-width: 0; height: 4px;"  : style = "{width: stat.percent + '%'}" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													  < div > { { stat . name } } < / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													   < div > < span  class = "grey" > { { stat . percent } } %  < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													   < span  class = "small grey"  v - if = "isAttack" > { { stat . formattedCountAttackRequests } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													   < span  class = "small grey"  v - if = "!isAttack" > ( { { stat . formattedBytes } } ) < / s p a n > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												   < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											   < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										   < / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									   < / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								   < / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - c l u s t e r s - l a b e l s " , { p r o p s : [ " v - p r i m a r y - c l u s t e r " , " v - s e c o n d a r y - c l u s t e r s " , " s i z e " ] , d a t a : f u n c t i o n ( ) { v a r   e = t h i s . v P r i m a r y C l u s t e r ; l e t   t = t h i s . v S e c o n d a r y C l u s t e r s , i = ( n u l l = = t & & ( t = [ ] ) , t h i s . s i z e ) ; r e t u r n   n u l l = = i & & ( i = " s m a l l " ) , { c l u s t e r : e , s e c o n d a r y C l u s t e r s : t , l a b e l S i z e : i } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< a  v - if = "cluster != null"  : href = "'/clusters/cluster?clusterId=' + cluster.id"  title = "主集群"  style = "margin-bottom: 0.3em;" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label basic grey"  : class = "labelSize"  v - if = "labelSize != 'tiny'" > { { cluster . name } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< grey - label  v - if = "labelSize == 'tiny'" > { { cluster . name } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< a  v - for = "c in secondaryClusters"  : href = "'/clusters/cluster?clusterId=' + c.id"  : class = "labelSize"  title = "从集群" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label basic grey"  : class = "labelSize"  v - if = "labelSize != 'tiny'" > { { c . name } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< grey - label  v - if = "labelSize == 'tiny'" > { { c . name } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " c l u s t e r - s e l e c t o r " , { p r o p s : [ " v - c l u s t e r - i d " ] , 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 ( " / c l u s t e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . c l u s t e r s = e . d a t a . c l u s t e r s } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C l u s t e r I d ; r e t u r n { c l u s t e r s : [ ] , c l u s t e r I d : e = n u l l = = e ? 0 : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown"  style = "max-width: 10em"  name = "clusterId"  v - model = "clusterId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  value = "0" > [ 选择集群 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  v - for = "cluster in clusters"  : value = "cluster.id" > { { cluster . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - c l u s t e r - c o m b o - b o x " , { p r o p s : [ " v - c l u s t e r - i d " ] , d a t a : f u n c t i o n ( ) { l e t   t = t h i s ; r e t u r n   T e a . a c t i o n ( " / c l u s t e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . c l u s t e r s = e . d a t a . c l u s t e r s } ) , { c l u s t e r s : [ ] } } , m e t h o d s : { c h a n g e : f u n c t i o n ( e ) { n u l l = = e ? t h i s . $ e m i t ( " c h a n g e " , 0 ) : t h i s . $ e m i t ( " c h a n g e " , e . v a l u e ) } } , t e m p l a t e : ` < d i v   v - i f = " c l u s t e r s . l e n g t h   >   0 "   s t y l e = " m i n - w i d t h :   1 0 . 4 e m " > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 15:28:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< combo - box  title = "集群"  placeholder = "集群名称"  : v - items = "clusters"  name = "clusterId"  : v - value = "vClusterId"  @ change = "change" > < / c o m b o - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - c l u s t e r s - s e l e c t o r " , { p r o p s : [ " v - p r i m a r y - c l u s t e r " , " v - s e c o n d a r y - c l u s t e r s " ] , d a t a : f u n c t i o n ( ) { v a r   e = t h i s . v P r i m a r y C l u s t e r ; l e t   t = t h i s . v S e c o n d a r y C l u s t e r s ; r e t u r n   n u l l = = t & & ( t = [ ] ) , { p r i m a r y C l u s t e r I d : n u l l = = e ? 0 : e . i d , s e c o n d a r y C l u s t e r I d s : t . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i d } ) , p r i m a r y C l u s t e r : e , s e c o n d a r y C l u s t e r s : t } } , m e t h o d s : { a d d P r i m a r y : f u n c t i o n ( ) { l e t   t = t h i s , e = [ t h i s . p r i m a r y C l u s t e r I d ] . c o n c a t ( t h i s . s e c o n d a r y C l u s t e r I d s ) ; t e a w e b . p o p u p ( " / c l u s t e r s / s e l e c t P o p u p ? s e l e c t e d C l u s t e r I d s = " + e . j o i n ( " , " ) + " & m o d e = s i n g l e " , { h e i g h t : " 3 0 e m " , w i d t h : " 5 0 e m " , c a l l b a c k : f u n c t i o n ( e ) { n u l l ! = e . d a t a . c l u s t e r & & ( t . p r i m a r y C l u s t e r = e . d a t a . c l u s t e r , t . p r i m a r y C l u s t e r I d = t . p r i m a r y C l u s t e r . i d , t . n o t i f y C h a n g e ( ) ) } } ) } , r e m o v e P r i m a r y : f u n c t i o n ( ) { t h i s . p r i m a r y C l u s t e r I d = 0 , t h i s . p r i m a r y C l u s t e r = n u l l , t h i s . n o t i f y C h a n g e ( ) } , a d d S e c o n d a r y : f u n c t i o n ( ) { l e t   t = t h i s , e = [ t h i s . p r i m a r y C l u s t e r I d ] . c o n c a t ( t h i s . s e c o n d a r y C l u s t e r I d s ) ; t e a w e b . p o p u p ( " / c l u s t e r s / s e l e c t P o p u p ? s e l e c t e d C l u s t e r I d s = " + e . j o i n ( " , " ) + " & m o d e = m u l t i p l e " , { h e i g h t : " 3 0 e m " , w i d t h : " 5 0 e m " , c a l l b a c k : f u n c t i o n ( e ) { n u l l ! = e . d a t a . c l u s t e r & & ( t . s e c o n d a r y C l u s t e r I d s . p u s h ( e . d a t a . c l u s t e r . i d ) , t . s e c o n d a r y C l u s t e r s . p u s h ( e . d a t a . c l u s t e r ) , t . n o t i f y C h a n g e ( ) ) } } ) } , r e m o v e S e c o n d a r y : f u n c t i o n ( e ) { t h i s . s e c o n d a r y C l u s t e r I d s . $ r e m o v e ( e ) , t h i s . s e c o n d a r y C l u s t e r s . $ r e m o v e ( e ) , t h i s . n o t i f y C h a n g e ( ) } , n o t i f y C h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , { c l u s t e r I d : t h i s . p r i m a r y C l u s t e r I d } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "primaryClusterId"  : value = "primaryClusterId" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "secondaryClusterIds"  : value = "JSON.stringify(secondaryClusterIds)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 主集群 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  v - if = "primaryCluster != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui label basic small" > { { primaryCluster . name } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "removePrimary" > < i  class = "icon remove small" > < / i > < / a >   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  style = "margin-top: 0.6em"  v - if = "primaryClusterId == 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addPrimary" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 多个集群配置有冲突时 , 优先使用主集群配置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 从集群 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  v - if = "secondaryClusters.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui label basic small"  v - for = "(cluster, index) in secondaryClusters" > < span  class = "grey" > { { cluster . name } } < /span>   <a href="" title="删除" @click.prevent="removeSecondary(index)"><i class="icon remove small"></i > < / a >   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  style = "margin-top: 0.6em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addSecondary" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e s s a g e - m e d i a - s e l e c t o r " , { p r o p s : [ " v - m e d i a - t y p e " ] , m o u n t e d : f u n c t i o n ( ) { l e t   i = t h i s ; T e a . a c t i o n ( " / a d m i n s / r e c i p i e n t s / m e d i a O p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { i . m e d i a s = e . d a t a . m e d i a s , 0 < i . m e d i a T y p e . l e n g t h & & ( n u l l ! = ( e = i . m e d i a s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . t y p e = = i . m e d i a T y p e } ) ) & & ( i . d e s c r i p t i o n = e . d e s c r i p t i o n ) ) } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v M e d i a T y p e ; r e t u r n { m e d i a s : [ ] , d e s c r i p t i o n : " " , m e d i a T y p e : e = n u l l = = e ? " " : e } } , w a t c h : { m e d i a T y p e : f u n c t i o n ( i ) { v a r   e = t h i s . m e d i a s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . t y p e = = i } ) ; t h i s . d e s c r i p t i o n = n u l l = = e ? " " : e . d e s c r i p t i o n , t h i s . $ e m i t ( " c h a n g e " , e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < select  class = "ui dropdown auto-width"  name = "mediaType"  v - model = "mediaType" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < option  value = "" > [ 选择媒介类型 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < option  v - for = "media in medias"  : value = "media.type" > { { media . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < p  class = "comment"  v - html = "description" > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e s s a g e - r e c e i v e r s - b o x " , { p r o p s : [ " v - n o d e - c l u s t e r - i d " ] , 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 ( " / c l u s t e r s / c l u s t e r / s e t t i n g s / m e s s a g e / s e l e c t e d R e c e i v e r s " ) . p a r a m s ( { c l u s t e r I d : t h i s . c l u s t e r I d } ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . r e c e i v e r s = e . d a t a . r e c e i v e r s } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v N o d e C l u s t e r I d ; r e t u r n { c l u s t e r I d : e = n u l l = = e ? 0 : e , r e c e i v e r s : [ ] } } , m e t h o d s : { a d d R e c e i v e r : f u n c t i o n ( ) { l e t   t = t h i s , i = [ ] , s = [ ] ; t h i s . r e c e i v e r s . f o r E a c h ( f u n c t i o n ( e ) { " r e c i p i e n t " = = e . t y p e ? i . p u s h ( e . i d . t o S t r i n g ( ) ) : " g r o u p " = = e . t y p e & & s . p u s h ( e . i d . t o S t r i n g ( ) ) } ) , t e a w e b . p o p u p ( " / c l u s t e r s / c l u s t e r / s e t t i n g s / m e s s a g e / s e l e c t R e c e i v e r P o p u p ? r e c i p i e n t I d s = " + i . j o i n ( " , " ) + " & g r o u p I d s = " + s . j o i n ( " , " ) , { c a l l b a c k : f u n c t i o n ( e ) { t . r e c e i v e r s . p u s h ( e . d a t a ) } } ) } , r e m o v e R e c e i v e r : f u n c t i o n ( e ) { t h i s . r e c e i v e r s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < input  type = "hidden"  name = "receiversJSON"  : value = "JSON.stringify(receivers)" / >            
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < div  v - if = "receivers.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < div  v - for = "(receiver, index) in receivers"  class = "ui label basic small" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								               < span  v - if = "receiver.type == 'group'" > 分组 : < / s p a n > { { r e c e i v e r . n a m e } }   < s p a n   c l a s s = " g r e y   s m a l l "   v - i f = " r e c e i v e r . s u b N a m e   ! =   n u l l   & &   r e c e i v e r . s u b N a m e . l e n g t h   >   0 " > ( { { r e c e i v e r . s u b N a m e } } ) < / s p a n >   & n b s p ;   < a   h r e f = " "   t i t l e = " 删 除 "   @ c l i c k . p r e v e n t = " r e m o v e R e c e i v e r ( i n d e x ) " > < i   c l a s s = " i c o n   r e m o v e " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								             < div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								      < button  type = "button"  class = "ui button tiny"  @ click . prevent = "addReceiver" > + < / b u t t o n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e s s a g e - r e c i p i e n t - g r o u p - s e l e c t o r " , { p r o p s : [ " v - g r o u p s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v G r o u p s , t = [ ] ; r e t u r n   0 < ( e = n u l l = = e ? [ ] : e ) . l e n g t h & & ( t = e . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i d . t o S t r i n g ( ) } ) . j o i n ( " , " ) ) , { g r o u p s : e , g r o u p I d s : t } } , m e t h o d s : { a d d G r o u p : 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 ( " / a d m i n s / r e c i p i e n t s / g r o u p s / s e l e c t P o p u p ? g r o u p I d s = " + t h i s . g r o u p I d s , { c a l l b a c k : f u n c t i o n ( e ) { t . g r o u p s . p u s h ( e . d a t a . g r o u p ) , t . u p d a t e ( ) } } ) } , r e m o v e G r o u p : f u n c t i o n ( e ) { t h i s . g r o u p s . $ r e m o v e ( e ) , t h i s . u p d a t e ( ) } , u p d a t e : f u n c t i o n ( ) { l e t   t = [ ] ; 0 < t h i s . g r o u p s . l e n g t h & & t h i s . g r o u p s . f o r E a c h ( f u n c t i o n ( e ) { t . p u s h ( e . i d ) } ) , t h i s . g r o u p I d s = t . j o i n ( " , " ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < input  type = "hidden"  name = "groupIds"  : value = "groupIds" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < div  v - if = "groups.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < div  v - for = "(group, index) in groups"  class = "ui label small basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                { { group . name } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "removeGroup(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / d i v >       
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < button  class = "ui button tiny"  type = "button"  @ click . prevent = "addGroup()" > + < / b u t t o n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e s s a g e - m e d i a - i n s t a n c e - s e l e c t o r " , { p r o p s : [ " v - i n s t a n c e - i d " ] , m o u n t e d : f u n c t i o n ( ) { l e t   i = t h i s ; T e a . a c t i o n ( " / a d m i n s / r e c i p i e n t s / i n s t a n c e s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { i . i n s t a n c e s = e . d a t a . i n s t a n c e s , 0 < i . i n s t a n c e I d & & ( n u l l ! = ( e = i . i n s t a n c e s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . i d = = i . i n s t a n c e I d } ) ) & & ( i . d e s c r i p t i o n = e . d e s c r i p t i o n , i . u p d a t e ( e . i d ) ) ) } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v I n s t a n c e I d ; r e t u r n { i n s t a n c e s : [ ] , d e s c r i p t i o n : " " , i n s t a n c e I d : e = n u l l = = e ? 0 : e } } , w a t c h : { i n s t a n c e I d : f u n c t i o n ( e ) { t h i s . u p d a t e ( e ) } } , m e t h o d s : { u p d a t e : f u n c t i o n ( i ) { v a r   e = t h i s . i n s t a n c e s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . i d = = i } ) ; t h i s . d e s c r i p t i o n = n u l l = = e ? " " : e . d e s c r i p t i o n , t h i s . $ e m i t ( " c h a n g e " , e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < select  class = "ui dropdown auto-width"  name = "instanceId"  v - model = "instanceId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < option  value = "0" > [ 选择媒介 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < option  v - for = "instance in instances"  : value = "instance.id" > { { instance . name } }  ( { { instance . media . name } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < p  class = "comment"  v - html = "description" > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e s s a g e - r o w " , { p r o p s : [ " v - m e s s a g e " , " v - c a n - c l o s e " ] , d a t a : f u n c t i o n ( ) { v a r   e = t h i s . v M e s s a g e . p a r a m s ; l e t   t = n u l l ; r e t u r n   n u l l ! = e & & 0 < e . l e n g t h & & ( t = J S O N . p a r s e ( e ) ) , { m e s s a g e : t h i s . v M e s s a g e , p a r a m s : t , i s C l o s i n g : ! 1 } } , m e t h o d s : { v i e w C e r t : 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 / c e r t s / c e r t P o p u p ? c e r t I d = " + e , { h e i g h t : " 2 8 e m " , w i d t h : " 4 8 e m " } ) } , r e a d M e s s a g e : f u n c t i o n ( e ) { l e t   t = t h i s ; T e a . a c t i o n ( " / m e s s a g e s / r e a d P a g e " ) . p a r a m s ( { m e s s a g e I d s : [ e ] } ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( ) { n u l l ! = w i n d o w . p a r e n t . T e a & & n u l l ! = w i n d o w . p a r e n t . T e a . V u e & & w i n d o w . p a r e n t . T e a . V u e . c h e c k M e s s a g e s O n c e ( ) , t . v C a n C l o s e & & " u n d e f i n e d " ! = t y p e o f   N o t i f y P o p u p ? ( t . i s C l o s i n g = ! 0 , s e t T i m e o u t ( f u n c t i o n ( ) { N o t i f y P o p u p ( { } ) } , 1 e 3 ) ) : t e a w e b . r e l o a d ( ) } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table selectable"  v - if = "!isClosing" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  : class = "{error: message.level == 'error', positive: message.level == 'success', warning: message.level == 'warning'}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  style = "position: relative" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< strong > { { message . datetime } } < / s t r o n g > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "message.cluster != null && message.cluster.id != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span >  |  < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< a  : href = "'/clusters/cluster?clusterId=' + message.cluster.id"  target = "_top"  v - if = "message.role == 'node'" > 集群 : { { message . cluster . name } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< a  : href = "'/ns/clusters/cluster?clusterId=' + message.cluster.id"  target = "_top"  v - if = "message.role == 'dns'" > DNS集群 : { { message . cluster . name } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "message.node != null && message.node.id != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span >  |  < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< a  : href = "'/clusters/cluster/node?clusterId=' + message.cluster.id + '&nodeId=' + message.node.id"  target = "_top"  v - if = "message.role == 'node'" > 节点 : { { message . node . name } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< a  : href = "'/ns/clusters/cluster/node?clusterId=' + message.cluster.id + '&nodeId=' + message.node.id"  target = "_top"  v - if = "message.role == 'dns'" > DNS节点 : { { message . node . name } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""   style = "position: absolute; right: 1em"  @ click . prevent = "readMessage(message.id)"  title = "标为已读" > < i  class = "icon check" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  : class = "{error: message.level == 'error', positive: message.level == 'success', warning: message.level == 'warning'}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { message . body } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  健康检查  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "message.type == 'HealthCheckFailed'"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  : href = "'/clusters/cluster/node?clusterId=' + message.cluster.id + '&nodeId=' + param.node.id"  v - for = "param in params"  class = "ui label small basic"  style = "margin-bottom: 0.5em"  target = "_top" > { { param . node . name } } :  { { param . error } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  集群DNS设置  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "message.type == 'ClusterDNSSyncFailed'"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  : href = "'/dns/clusters/cluster?clusterId=' + message.cluster.id"  target = "_top" > 查看问题  & raquo ; < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  证书即将过期  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "message.type == 'SSLCertExpiring'"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  @ click . prevent = "viewCert(params.certId)"  target = "_top" > 查看证书 < / a >   & n b s p ; | & n b s p ;   < a   : h r e f = " ' / s e r v e r s / c e r t s / a c m e ' "   v - i f = " p a r a m s   ! =   n u l l   & &   p a r a m s . a c m e T a s k I d   >   0 "   t a r g e t = " _ t o p " > 查 看 任 务 & r a q u o ; < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  证书续期成功  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "message.type == 'SSLCertACMETaskSuccess'"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  @ click . prevent = "viewCert(params.certId)"  target = "_top" > 查看证书 < / a >   & n b s p ; | & n b s p ;   < a   : h r e f = " ' / s e r v e r s / c e r t s / a c m e ' "   v - i f = " p a r a m s   ! =   n u l l   & &   p a r a m s . a c m e T a s k I d   >   0 "   t a r g e t = " _ t o p " > 查 看 任 务 & r a q u o ; < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  证书续期失败  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "message.type == 'SSLCertACMETaskFailed'"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  @ click . prevent = "viewCert(params.certId)"  target = "_top" > 查看证书 < / a >   & n b s p ; | & n b s p ;   < a   : h r e f = " ' / s e r v e r s / c e r t s / a c m e ' "   v - i f = " p a r a m s   ! =   n u l l   & &   p a r a m s . a c m e T a s k I d   >   0 "   t a r g e t = " _ t o p " > 查 看 任 务 & r a q u o ; < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 17:19:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  网站域名审核  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "message.type == 'serverNamesRequireAuditing'"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  : href = "'/servers/server/settings/serverNames?serverId=' + params.serverId"  target = "_top" > 去审核 < / a > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - r o u t e s - s e l e c t o r " , { p r o p s : [ " v - r o u t e s " ] , 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 ( " / n s / r o u t e s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . r o u t e s = e . d a t a . r o u t e s } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R o u t e s ; r e t u r n { r o u t e C o d e : " d e f a u l t " , r o u t e s : [ ] , i s A d d i n g : ! 1 , r o u t e T y p e : " d e f a u l t " , s e l e c t e d R o u t e s : e = n u l l = = e ? [ ] : e } } , w a t c h : { r o u t e T y p e : f u n c t i o n ( t ) { t h i s . r o u t e C o d e = " " ; l e t   i = t h i s ; t h i s . r o u t e s . f o r E a c h ( f u n c t i o n ( e ) { e . t y p e = = t & & 0 = = i . r o u t e C o d e . l e n g t h & & ( i . r o u t e C o d e = e . c o d e ) } ) } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 0 , t h i s . r o u t e T y p e = " d e f a u l t " , t h i s . r o u t e C o d e = " d e f a u l t " } , c a n c e l : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 } , c o n f i r m : f u n c t i o n ( ) { i f ( 0 ! = t h i s . r o u t e C o d e . l e n g t h ) { l e t   t = t h i s ; t h i s . r o u t e s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t . r o u t e C o d e & & t . s e l e c t e d R o u t e s . p u s h ( e ) } ) , t h i s . c a n c e l ( ) } } , r e m o v e : f u n c t i o n ( e ) { t h i s . s e l e c t e d R o u t e s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label basic text small"  v - for = "(route, index) in selectedRoutes"  style = "margin-bottom: 0.3em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "hidden"  name = "routeCodes"  : value = "route.code" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { route . name } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding"  style = "margin-bottom: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< select  class = "ui dropdown"  v - model = "routeType" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "default" > [ 默认线路 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "user" > 自定义线路 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "isp" > 运营商 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "china" > 中国省市 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "world" > 全球国家地区 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< select  class = "ui dropdown"  v - model = "routeCode"  style = "width: 10em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  v - for = "route in routes"  : value = "route.code"  v - if = "route.type == routeType" > { { route . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  type = "button"  class = "ui button tiny"  @ click . prevent = "confirm" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												& nbsp ;  < a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - r e c u r s i o n - c o n f i g - b o x " , { p r o p s : [ " v - r e c u r s i 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 R e c u r s i o n C o n f i g ; r e t u r n   n u l l = = ( e = n u l l = = e ? { i s O n : ! 1 , h o s t s : [ ] , a l l o w D o m a i n s : [ ] , d e n y D o m a i n s : [ ] , u s e L o c a l H o s t s : ! 1 } : e ) . h o s t s & & ( e . h o s t s = [ ] ) , n u l l = = e . a l l o w D o m a i n s & & ( e . a l l o w D o m a i n s = [ ] ) , n u l l = = e . d e n y D o m a i n s & & ( e . d e n y D o m a i n s = [ ] ) , { c o n f i g : e , h o s t I s A d d i n g : ! 1 , h o s t : " " , u p d a t i n g H o s t : n u l l } } , m e t h o d s : { c h a n g e H o s t s : f u n c t i o n ( e ) { t h i s . c o n f i g . h o s t s = e } , c h a n g e A l l o w D o m a i n s : f u n c t i o n ( e ) { t h i s . c o n f i g . a l l o w D o m a i n s = e } , c h a n g e D e n y D o m a i n s : f u n c t i o n ( e ) { t h i s . c o n f i g . d e n y D o m a i n s = e } , r e m o v e H o s t : f u n c t i o n ( e ) { t h i s . c o n f i g . h o s t s . $ r e m o v e ( e ) } , a d d H o s t : f u n c t i o n ( ) { v a r   t ; t h i s . u p d a t i n g H o s t = n u l l , t h i s . h o s t = " " , t h i s . h o s t I s A d d i n g = ! t h i s . h o s t I s A d d i n g , t h i s . h o s t I s A d d i n g & & ( t = t h i s , s e t T i m e o u t ( f u n c t i o n ( ) { l e t   e = t . $ r e f s . h o s t R e f ; n u l l ! = e & & e . f o c u s ( ) } , 2 0 0 ) ) } , u p d a t e H o s t : f u n c t i o n ( e ) { v a r   t ; t h i s . u p d a t i n g H o s t = e , t h i s . h o s t = e . h o s t , t h i s . h o s t I s A d d i n g = ! t h i s . h o s t I s A d d i n g , t h i s . h o s t I s A d d i n g & & ( t = t h i s , s e t T i m e o u t ( f u n c t i o n ( ) { l e t   e = t . $ r e f s . h o s t R e f ; n u l l ! = e & & e . f o c u s ( ) } , 2 0 0 ) ) } , c o n f i r m H o s t : f u n c t i o n ( ) { 0 = = t h i s . h o s t . l e n g t h ? t e a w e b . w a r n ( " 请 输 入 D N S 地 址 " ) : ( t h i s . h o s t I s A d d i n g = ! 1 , n u l l = = t h i s . u p d a t i n g H o s t ? t h i s . c o n f i g . h o s t s . p u s h ( { h o s t : t h i s . h o s t } ) : t h i s . u p d a t i n g H o s t . h o s t = t h i s . h o s t ) } , c a n c e l H o s t : f u n c t i o n ( ) { t h i s . h o s t I s A d d i n g = ! 1 } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "recursionJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  name = "isOn"  value = "1"  v - model = "config.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 启用后 , 如果找不到某个域名的解析记录 , 则向上一级DNS查找 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 从节点本机读取 < br / > 上级DNS主机 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  name = "useLocalHosts"  value = "1"  v - model = "config.useLocalHosts" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 选中后 , 节点会试图从 < code - label > / e t c / r e s o l v . c o n f < / c o d e - l a b e l > 文 件 中 读 取 D N S 配 置 。   < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "!config.useLocalHosts" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 上级DNS主机地址  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "config.hosts.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  v - for = "(host, index) in config.hosts"  class = "ui label tiny basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { host . host } }  & nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  title = "修改"  @ click . prevent = "updateHost(host)" > < i  class = "icon pencil tiny" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  title = "删除"  @ click . prevent = "removeHost(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "hostIsAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "text"  placeholder = "DNS主机地址"  v - model = "host"  ref = "hostRef"  @ keyup . enter = "confirmHost"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmHost" > 确认 < /button>   <a href="" title="取消" @click.prevent="cancelHost"><i class="icon remove small"></i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  style = "margin-top: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< button  type = "button"  class = "ui button tiny"  @ click . prevent = "addHost" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 允许的域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < values - box  name = "allowDomains"  : values = "config.allowDomains"  @ change = "changeAllowDomains" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 支持星号通配符 , 比如 < code - label > * . example . org < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 不允许的域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  name = "denyDomains"  : values = "config.denyDomains"  @ change = "changeDenyDomains" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 支持星号通配符 , 比如 < code - label > * . example . org < / c o d e - l a b e l > 。 优 先 级 比 允 许 的 域 名 高 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - a c c e s s - l o g - r e f - b o x " , { p r o p s : [ " v - a c c e s s - l o g - r e f " , " v - i s - p a r e n t " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v A c c e s s L o g R e f ; r e t u r n   v o i d   0 = = = ( e = n u l l = = e ? { i s O n : ! 1 , i s P r i o r : ! 1 , l o g M i s s i n g D o m a i n s : ! 1 } : e ) . l o g M i s s i n g D o m a i n s & & ( e . l o g M i s s i n g D o m a i n s = ! 1 ) , { c o n f i g : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "accessLogJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "config"  v - if = "!vIsParent" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "vIsParent || config.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  name = "isOn"  value = "1"  v - model = "config.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 记录所有访问 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  name = "logMissingDomains"  value = "1"  v - model = "config.logMissingDomains" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 包括对没有在系统里创建的域名访问 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("ns-route-ranges-box",{props:["v-ranges"],data:function(){let e=this.vRanges;return{ranges:e=null==e?[]:e,isAdding:!1,ipRangeFrom:"",ipRangeTo:""}},methods:{add:function(){this.isAdding=!0;let e=this;setTimeout(function(){e.$refs.ipRangeFrom.focus()},100)},remove:function(e){this.ranges.$remove(e)},cancelIPRange:function(){this.isAdding=!1,this.ipRangeFrom="",this.ipRangeTo=""},confirmIPRange:function(){let e=this;this.ipRangeFrom=this.ipRangeFrom.trim(),this.validateIP(this.ipRangeFrom)?(this.ipRangeTo=this.ipRangeTo.trim(),this.validateIP(this.ipRangeTo)?(this.ranges.push({type:"ipRange",params:{ipFrom:this.ipRangeFrom,ipTo:this.ipRangeTo}}),this.cancelIPRange()):teaweb.warn("结束IP填写错误",function(){e.$refs.ipRangeTo.focus()})):teaweb.warn("开始IP填写错误",function(){e.$refs.ipRangeFrom.focus()})},validateIP:function(e){if(!e.match(/ ^ ( \ d { 1 , 3 } ) \ . ( \ d { 1 , 3 } ) \ . ( \ d { 1 , 3 } ) \ . ( \ d { 1 , 3 } ) $ / ) ) return ! 1 ; let  t = e . split ( "." ) , i = ! 0 ; return  t . forEach ( function ( e ) { 255 < parseInt ( e ) && ( i = ! 1 ) } ) , i } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "rangesJSON"  : value = "JSON.stringify(ranges)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "ranges.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label tiny basic"  v - for = "(range, index) in ranges" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "range.type == 'ipRange'" > IP范围 : < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { range . params . ipFrom } }  -  { { range . params . ipTo } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  IP  范围  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-bottom: 1em"  v - show = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  placeholder = "开始IP"  maxlength = "15"  size = "15"  v - model = "ipRangeFrom"  ref = "ipRangeFrom"   @ keyup . enter = "confirmIPRange"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > - < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  placeholder = "结束IP"  maxlength = "15"  size = "15"  v - model = "ipRangeTo"  ref = "ipRangeTo"  @ keyup . enter = "confirmIPRange"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmIPRange" > 确定 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  @ click . prevent = "cancelIPRange"  title = "取消" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - r o u t e - s e l e c t o r " , { p r o p s : [ " v - r o u t e - c o d 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 ( " / n s / r o u t e s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . r o u t e s = e . d a t a . r o u t e s } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R o u t e C o d e ; r e t u r n { r o u t e C o d e : e = n u l l = = e ? " " : e , r o u t e s : [ ] } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "routes.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< select  class = "ui dropdown"  name = "routeCode"  v - model = "routeCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "" > [ 线路 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  v - for = "route in routes"  : value = "route.code" > { { route . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - u s e r - s e l e c t o r " , { 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 ( " / n s / u s e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . u s e r s = e . d a t a . u s e r s } ) } , p r o p s : [ " v - u s e r - i d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v U s e r I d ; r e t u r n { u s e r s : [ ] , u s e r I d : e = n u l l = = e ? 0 : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown auto-width"  name = "userId"  v - model = "userId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  value = "0" > [ 选择用户 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  v - for = "user in users"  : value = "user.id" > { { user . fullname } }  ( { { user . username } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - a c c e s s - l o g - b o x " , { p r o p s : [ " v - a c c e s s - l o g " , " v - k e y w o r d " ] , d a t a : f u n c t i o n ( ) { r e t u r n { a c c e s s L o g : t h i s . v A c c e s s L o g } } , m e t h o d s : { s h o w L o g : f u n c t i o n ( ) { l e t   e = t h i s ; v a r   t = t h i s . a c c e s s L o g . r e q u e s t I d ; t h i s . $ p a r e n t . $ c h i l d r e n . f o r E a c h ( f u n c t i o n ( e ) { n u l l ! = e . d e s e l e c t & & e . d e s e l e c t ( ) } ) , t h i s . s e l e c t ( ) , t e a w e b . p o p u p ( " / n s / c l u s t e r s / a c c e s s L o g s / v i e w P o p u p ? r e q u e s t I d = " + t , { w i d t h : " 5 0 e m " , h e i g h t : " 2 4 e m " , o n C l o s e : f u n c t i o n ( ) { e . d e s e l e c t ( ) } } ) } , s e l e c t : f u n c t i o n ( ) { t h i s . $ r e f s . b o x . p a r e n t N o d e . s t y l e . c s s T e x t = " b a c k g r o u n d :   r g b a ( 0 ,   0 ,   0 ,   0 . 1 ) " } , d e s e l e c t : f u n c t i o n ( ) { t h i s . $ r e f s . b o x . p a r e n t N o d e . s t y l e . c s s T e x t = " " } } , t e m p l a t e : ` < d i v   c l a s s = " a c c e s s - l o g - r o w "   : s t y l e = " { ' c o l o r ' :   ( ! a c c e s s L o g . i s R e c u r s i v e   & &   ( a c c e s s L o g . n s R e c o r d I d   = =   n u l l   | |   a c c e s s L o g . n s R e c o r d I d   = =   0 )   | |   ( a c c e s s L o g . i s R e c u r s i v e   & &   a c c e s s L o g . r e c o r d V a l u e   ! =   n u l l   & &   a c c e s s L o g . r e c o r d V a l u e . l e n g t h   = =   0 ) )   ?   ' # d c 1 4 3 c '   :   ' ' } "   r e f = " b o x " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "accessLog.region != null && accessLog.region.length > 0"  class = "grey" > [ { { accessLog . region } } ] < / s p a n >   < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . r e m o t e A d d r } } < / k e y w o r d >   [ { { a c c e s s L o g . t i m e L o c a l } } ]   [ { { a c c e s s L o g . n e t w o r k i n g } } ]   < e m > { { a c c e s s L o g . q u e s t i o n T y p e } }   < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . q u e s t i o n N a m e } } < / k e y w o r d > < / e m >   - & g t ;   < e m > { { a c c e s s L o g . r e c o r d T y p e } }   < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . r e c o r d V a l u e } } < / k e y w o r d > < / e m > < ! - -   & n b s p ;   < a   h r e f = " "   @ c l i c k . p r e v e n t = " s h o w L o g "   t i t l e = " 查 看 详 情 " > < i   c l a s s = " i c o n   e x p a n d " > < / i > < / a > - - > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "(accessLog.nsRoutes != null && accessLog.nsRoutes.length > 0) || accessLog.isRecursive"  style = "margin-top: 0.3em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label tiny basic grey"  v - for = "route in accessLog.nsRoutes" > 线路 :  { { route . name } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label tiny basic grey"  v - if = "accessLog.isRecursive" > 递归DNS < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "accessLog.error != null && accessLog.error.length > 0"  style = "color:#dc143c" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< i  class = "icon warning circle" > < / i > 错 误 : [ { { a c c e s s L o g . e r r o r } } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n s - c l u s t e r - s e l e c t o r " , { p r o p s : [ " v - c l u s t e r - i d " ] , 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 ( " / n s / c l u s t e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . c l u s t e r s = e . d a t a . c l u s t e r s } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C l u s t e r I d ; r e t u r n { c l u s t e r s : [ ] , c l u s t e r I d : e = n u l l = = e ? 0 : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown auto-width"  name = "clusterId"  v - model = "clusterId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  value = "0" > [ 选择集群 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  v - for = "cluster in clusters"  : value = "cluster.id" > { { cluster . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " p l a n - u s e r - s e l e c t o r " , { 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 ( " / p l a n s / u s e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . u s e r s = e . d a t a . u s e r s } ) } , p r o p s : [ " v - u s e r - i d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v U s e r I d ; r e t u r n { u s e r s : [ ] , u s e r I d : e = n u l l = = e ? 0 : e } } , w a t c h : { u s e r I d : f u n c t i o n ( e ) { t h i s . $ e m i t ( " c h a n g e " , e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown auto-width"  name = "userId"  v - model = "userId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  value = "0" > [ 选择用户 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  v - for = "user in users"  : value = "user.id" > { { user . fullname } }  ( { { user . username } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " p l a n - p r i c e - v i e w " , { p r o p s : [ " v - p l a n " ] , d a t a : f u n c t i o n ( ) { r e t u r n { p l a n : t h i s . v P l a n } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									 < span  v - if = "plan.priceType == 'period'" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									 	按时间周期计费 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									 	< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									 		< span  class = "grey small" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  v - if = "plan.monthlyPrice > 0" > 月度 : ¥ { { plan . monthlyPrice } } 元 < br / > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  v - if = "plan.seasonallyPrice > 0" > 季度 : ¥ { { plan . seasonallyPrice } } 元 < br / > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  v - if = "plan.yearlyPrice > 0" > 年度 : ¥ { { plan . yearlyPrice } } 元 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "plan.priceType == 'traffic'" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										按流量计费 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  class = "grey small" > 基础价格 : ¥ { { plan . trafficPrice . base } } 元 / GB < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "plan.priceType == 'bandwidth' && plan.bandwidthPrice != null && plan.bandwidthPrice.percentile > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										按 { { plan . bandwidthPrice . percentile } } th带宽计费  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "range in plan.bandwidthPrice.ranges" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  class = "small grey" > { { range . minMB } }  -  < span  v - if = "range.maxMB > 0" > { { range . maxMB } } MB < / s p a n > < s p a n   v - e l s e > & i n f i n ; < / s p a n > :   { { r a n g e . p r i c e P e r M B } } 元 / M B < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " p l a n - b a n d w i d t h - r a n g e s " , { p r o p s : [ " v - r a n g e s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R a n g e s ; r e t u r n { r a n g e s : e = n u l l = = e ? [ ] : e , i s A d d i n g : ! 1 , m i n M B : " " , m a x M B : " " , p r i c e P e r M B : " " , a d d i n g R a n g e : { m i n M B : 0 , m a x M B : 0 , p r i c e P e r M B : 0 , t o t a l P r i c e : 0 } } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! t h i s . i s A d d i n g ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . m i n M B . f o c u s ( ) } ) } , c a n c e l A d d i n g : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 } , c o n f i r m : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 , t h i s . m i n M B = " " , t h i s . m a x M B = " " , t h i s . p r i c e P e r M B = " " , t h i s . r a n g e s . p u s h ( t h i s . a d d i n g R a n g e ) , t h i s . r a n g e s . $ s o r t ( f u n c t i o n ( e , t ) { r e t u r n   e . m i n M B < t . m i n M B ? - 1 : e . m i n M B = = t . m i n M B ? 0 : 1 } ) , t h i s . c h a n g e ( ) , t h i s . a d d i n g R a n g e = { m i n M B : 0 , m a x M B : 0 , p r i c e P e r M B : 0 , t o t a l P r i c e : 0 } } , r e m o v e : f u n c t i o n ( e ) { t h i s . r a n g e s . $ r e m o v e ( e ) , t h i s . c h a n g e ( ) } , c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . r a n g e s ) } } , w a t c h : { m i n M B : f u n c t i o n ( e ) { l e t   t = p a r s e I n t ( e . t o S t r i n g ( ) ) ; ( i s N a N ( t ) | | t < 0 ) & & ( t = 0 ) , t h i s . a d d i n g R a n g e . m i n M B = t } , m a x M B : f u n c t i o n ( e ) { l e t   t = p a r s e I n t ( e . t o S t r i n g ( ) ) ; ( i s N a N ( t ) | | t < 0 ) & & ( t = 0 ) , t h i s . a d d i n g R a n g e . m a x M B = t } , p r i c e P e r M B : f u n c t i o n ( e ) { l e t   t = p a r s e F l o a t ( e . t o S t r i n g ( ) ) ; ( i s N a N ( t ) | | t < 0 ) & & ( t = 0 ) , t h i s . a d d i n g R a n g e . p r i c e P e r M B = t } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  已有价格  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "ranges.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label basic small"  v - for = "(range, index) in ranges"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											{ { range . minMB } } MB  -  < span  v - if = "range.maxMB > 0" > { { range . maxMB } } MB < / s p a n > < s p a n   v - e l s e > & i n f i n ; < / s p a n >   & n b s p ;     价 格 : { { r a n g e . p r i c e P e r M B } } 元 / M B 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											& nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  添加  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 带宽下限 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  placeholder = "最小带宽"  style = "width: 7em"  maxlength = "10"  ref = "minMB"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  v - model = "minMB" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > MB < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 带宽上限 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  placeholder = "最大带宽"  style = "width: 7em"  maxlength = "10"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  v - model = "maxMB" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > MB < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 如果填0 , 表示上不封顶 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 单位价格 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  placeholder = "单位价格"  style = "width: 7em"  maxlength = "10"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  v - model = "pricePerMB" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 元 / MB < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button small"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  title = "取消"  @ click . prevent = "cancelAdding" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  按钮  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button small"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " p l a n - p r i c e - c o n f i g - b o x " , { p r o p s : [ " v - p r i c e - t y p e " , " v - m o n t h l y - p r i c e " , " v - s e a s o n a l l y - p r i c e " , " v - y e a r l y - p r i c e " , " v - t r a f f i c - p r i c e " , " v - b a n d w i d t h - p r i c e " , " v - d i s a b l e - p e r i o d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v P r i c e T y p e , t = ( n u l l = = e & & ( e = " b a n d w i d t h " ) , 0 ) , i = t h i s . v M o n t h l y P r i c e , s = ( n u l l = = i | | i < = 0 ? i = " " : ( i = i . t o S t r i n g ( ) , t = p a r s e F l o a t ( i ) , i s N a N ( t ) & & ( t = 0 ) ) , 0 ) , n = t h i s . v S e a s o n a l l y P r i c e , o = ( n u l l = = n | | n < = 0 ? n = " " : ( n = n . t o S t r i n g ( ) , s = p a r s e F l o a t ( n ) , i s N a N ( s ) & & ( s = 0 ) ) , 0 ) , a = t h i s . v Y e a r l y P r i c e , l = ( n u l l = = a | | a < = 0 ? a = " " : ( a = a . t o S t r i n g ( ) , o = p a r s e F l o a t ( a ) , i s N a N ( o ) & & ( o = 0 ) ) , t h i s . v T r a f f i c P r i c e ) , r = 0 , c = ( n u l l ! = l ? r = l . b a s e : l = { b a s e : 0 } , " " ) , d = ( 0 < r & & ( c = r . t o S t r i n g ( ) ) , t h i s . v B a n d w i d t h P r i c e ) ; r e t u r n   n u l l = = d ? d = { p e r c e n t i l e : 9 5 , r a n g e s : [ ] } : n u l l = = d . r a n g e s & & ( d . r a n g e s = [ ] ) , { p r i c e T y p e : e , m o n t h l y P r i c e : i , s e a s o n a l l y P r i c e : n , y e a r l y P r i c e : a , m o n t h l y P r i c e N u m b e r : t , s e a s o n a l l y P r i c e N u m b e r : s , y e a r l y P r i c e N u m b e r : o , t r a f f i c P r i c e B a s e : c , t r a f f i c P r i c e : l , b a n d w i d t h P r i c e : d , b a n d w i d t h P e r c e n t i l e : d . p e r c e n t i l e } } , m e t h o d s : { c h a n g e B a n d w i d t h P r i c e R a n g e s : f u n c t i o n ( e ) { t h i s . b a n d w i d t h P r i c e . r a n g e s = e } } , w a t c h : { m o n t h l y P r i c e : f u n c t i o n ( e ) { l e t   t = p a r s e F l o a t ( e ) ; i s N a N ( t ) & & ( t = 0 ) , t h i s . m o n t h l y P r i c e N u m b e r = t } , s e a s o n a l l y P r i c e : f u n c t i o n ( e ) { l e t   t = p a r s e F l o a t ( e ) ; i s N a N ( t ) & & ( t = 0 ) , t h i s . s e a s o n a l l y P r i c e N u m b e r = t } , y e a r l y P r i c e : f u n c t i o n ( e ) { l e t   t = p a r s e F l o a t ( e ) ; i s N a N ( t ) & & ( t = 0 ) , t h i s . y e a r l y P r i c e N u m b e r = t } , t r a f f i c P r i c e B a s e : f u n c t i o n ( e ) { l e t   t = p a r s e F l o a t ( e ) ; i s N a N ( t ) & & ( t = 0 ) , t h i s . t r a f f i c P r i c e . b a s e = t } , b a n d w i d t h P e r c e n t i l e : 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 < = 0 ? t = 9 5 : 1 0 0 < t & & ( t = 1 0 0 ) , t h i s . b a n d w i d t h P r i c e . p e r c e n t i l e = t } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "priceType"  : value = "priceType" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "monthlyPrice"  : value = "monthlyPriceNumber" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "seasonallyPrice"  : value = "seasonallyPriceNumber" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "yearlyPrice"  : value = "yearlyPriceNumber" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "trafficPriceJSON"  : value = "JSON.stringify(trafficPrice)" / > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "bandwidthPriceJSON"  : value = "JSON.stringify(bandwidthPrice)" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< radio  : v - value = "'bandwidth'"  : value = "priceType"  v - model = "priceType" > & nbsp ; 按带宽 < / r a d i o >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< radio  : v - value = "'traffic'"  : value = "priceType"  v - model = "priceType" > & nbsp ; 按流量 < / r a d i o >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< radio  : v - value = "'period'"  : value = "priceType"  v - model = "priceType"  v - show = "typeof(vDisablePeriod) != 'boolean' || !vDisablePeriod" > & nbsp ; 按时间周期 < / r a d i o > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  按时间周期  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "priceType == 'period'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 月度价格 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 7em"  maxlength = "10"  v - model = "monthlyPrice" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 元 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 季度价格 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 7em"  maxlength = "10"  v - model = "seasonallyPrice" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 元 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 年度价格 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 7em"  maxlength = "10"  v - model = "yearlyPrice" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 元 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  按流量  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "priceType =='traffic'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 基础流量费用  * < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  v - model = "trafficPriceBase"  maxlength = "10"  style = "width: 7em" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 元 / GB < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  按带宽  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "priceType == 'bandwidth'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 带宽百分位  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 4em"  maxlength = "3"  v - model = "bandwidthPercentile" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > th < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 带宽价格 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< plan - bandwidth - ranges  : v - ranges = "bandwidthPrice.ranges"  @ change = "changeBandwidthPriceRanges" > < / p l a n - b a n d w i d t h - r a n g e s > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - s t a t - c o n f i g - b o x " , { p r o p s : [ " v - s t a t - 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 " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v S t a t C o n f i g ; r e t u r n { s t a t : e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 } : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "statJSON"  : value = "JSON.stringify(stat)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "stat"  v - if = "vIsLocation || vIsGroup"  > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || stat.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否开启统计 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "stat.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e q u e s t - c o n d s - b o x " , { p r o p s : [ " v - c o n d s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C o n d s ; r e t u r n { c o n d s : e = n u l l = = e ? { i s O n : ! 0 , c o n n e c t o r : " o r " , g r o u p s : [ ] } : e , c o m p o n e n t s : w i n d o w . R E Q U E S T _ C O N D _ C O M P O N E N T S } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . c o n d s ) } , a d d G r o u p : f u n c t i o n ( ) { w i n d o w . U P D A T I N G _ C O N D _ G R O U P = 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 / s e r v e r / s e t t i n g s / c o n d s / a d d G r o u p P o p u p " , { 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 . c o n d s . g r o u p s . p u s h ( e . d a t a . g r o u p ) , t . c h a n g e ( ) } } ) } , u p d a t e G r o u p : f u n c t i o n ( t , e ) { w i n d o w . U P D A T I N G _ C O N D _ G R O U P = 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 / s e r v e r / s e t t i n g s / c o n d s / a d d G r o u p P o p u p " , { 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 . c o n d s . g r o u p s , t , e . d a t a . g r o u p ) , i . c h a n g e ( ) } } ) } , r e m o v e G r o u p : 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 . c o n d s . g r o u p s . $ r e m o v e ( e ) , t . c h a n g e ( ) } ) } , t y p e N a m e : f u n c t i o n ( i ) { v a r   e = t h i s . c o m p o n e n t s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . t y p e = = i . t y p e } ) ; r e t u r n   n u l l ! = e ? e . n a m e : i . p a r a m + "   " + i . o p e r a t o r } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "condsJSON"  : value = "JSON.stringify(conds)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "conds.groups.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr  v - for = "(group, groupIndex) in conds.groups" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  class = "title"  : class = "{'color-border':conds.connector == 'and'}"  : style = "{'border-bottom':(groupIndex < conds.groups.length-1) ? '1px solid rgba(34,36,38,.15)':''}" > 分组 { { groupIndex + 1 } } < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 17:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  style = "background: white; word-break: break-all"  : style = "{'border-bottom':(groupIndex < conds.groups.length-1) ? '1px solid rgba(34,36,38,.15)':''}" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< var  v - for = "(cond, index) in group.conds"  style = "font-style: normal;display: inline-block; margin-bottom:0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  class = "ui label tiny" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< var  v - if = "cond.type.length == 0 || cond.type == 'params'"  style = "font-style: normal" > { { cond . param } }  < var > { { cond . operator } } < / v a r > < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< var  v - if = "cond.type.length > 0 && cond.type != 'params'"  style = "font-style: normal" > { { typeName ( cond ) } } :  < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																{ { cond . value } } 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
																< sup  v - if = "cond.isCaseInsensitive"  title = "不区分大小写" > < i  class = "icon info small" > < / i > < / s u p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< var  v - if = "index < group.conds.length - 1" >  { { group . connector } }  & nbsp ; < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  style = "width: 5em; background: white"  : style = "{'border-bottom':(groupIndex < conds.groups.length-1) ? '1px solid rgba(34,36,38,.15)':''}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  title = "修改分组"  @ click . prevent = "updateGroup(groupIndex, group)" > < i  class = "icon pencil small" > < / i > < / a >   < a   h r e f = " "   t i t l e = " 删 除 分 组 "   @ c l i c k . p r e v e n t = " r e m o v e G r o u p ( g r o u p I n d e x ) " > < i   c l a s s = " i c o n   r e m o v e " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  分组之间关系  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table"  v - if = "conds.groups.length > 1" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 分组之间关系 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "conds.connector" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "and" > 和 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "or" > 或 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "conds.connector == 'or'" > 只要满足其中一个条件分组即可 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "conds.connector == 'and'" > 需要满足所有条件分组 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / p > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addGroup()" > + 添加分组 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 	 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s s l - c o n f i g - b o x " , { p r o p s : [ " v - s s l - p o l i c y " , " v - p r o t o c o l " , " v - s e r v e r - i d " ] , c r e a t e d : f u n c t i o n ( ) { l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . s o r t a b l e C i p h e r S u i t e s ( ) } , 1 0 0 ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v S s l P o l i c y , t = ( n u l l = = e ? e = { i d : 0 , i s O n : ! 0 , c e r t R e f s : [ ] , c e r t s : [ ] , c l i e n t C A R e f s : [ ] , c l i e n t C A C e r t s : [ ] , c l i e n t A u t h T y p e : 0 , m i n V e r s i o n : " T L S   1 . 1 " , h s t s : n u l l , c i p h e r S u i t e s I s O n : ! 1 , c i p h e r S u i t e s : [ ] , h t t p 2 E n a b l e d : ! 0 , o c s p I s O n : ! 1 } : ( n u l l = = e . c e r t R e f s & & ( e . c e r t R e f s = [ ] ) , n u l l = = e . c e r t s & & ( e . c e r t s = [ ] ) , n u l l = = e . c l i e n t C A R e f s & & ( e . c l i e n t C A R e f s = [ ] ) , n u l l = = e . c l i e n t C A C e r t s & & ( e . c l i e n t C A C e r t s = [ ] ) , n u l l = = e . c i p h e r S u i t e s & & ( e . c i p h e r S u i t e s = [ ] ) ) , e . h s t s ) ; r e t u r n   n u l l = = t & & ( t = { i s O n : ! 1 , m a x A g e : 3 1 5 3 6 e 3 , i n c l u d e S u b D o m a i n s : ! 1 , p r e l o a d : ! 1 , d o m a i n s : [ ] } ) , { p o l i c y : e , h s t s : t , h s t s O p t i o n s V i s i b l e : ! 1 , h s t s D o m a i n A d d i n g : ! 1 , a d d i n g H s t s D o m a i n : " " , h s t s D o m a i n E d i t i n g I n d e x : - 1 , a l l V e r s i o n s : w i n d o w . S S L _ A L L _ V E R S I O N S , a l l C i p h e r S u i t e s : w i n d o w . S S L _ A L L _ C I P H E R _ S U I T E S . $ c o p y ( ) , m o d e r n C i p h e r S u i t e s : w i n d o w . S S L _ M O D E R N _ C I P H E R _ S U I T E S , i n t e r m e d i a t e C i p h e r S u i t e s : w i n d o w . S S L _ I N T E R M E D I A T E _ C I P H E R _ S U I T E S , a l l C l i e n t A u t h T y p e s : w i n d o w . S S L _ A L L _ C L I E N T _ A U T H _ T Y P E S , c i p h e r S u i t e s V i s i b l e : ! 1 , m o r e O p t i o n s V i s i b l e : ! 1 } } , w a t c h : { h s t s : { d e e p : ! 0 , h a n d l e r : f u n c t i o n ( ) { t h i s . p o l i c y . h s t s = t h i s . h s t s } } } , m e t h o d s : { r e m o v e C e r t : 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 . p o l i c y . c e r t R e f s . $ r e m o v e ( e ) , t . p o l i c y . c e r t s . $ r e m o v e ( e ) } ) } , s e l e c t C e r t : f u n c t i o n ( ) { l e t   t = t h i s , i = [ ] ; n u l l ! = t h i s . p o l i c y & & 0 < t h i s . p o l i c y . c e r t s . l e n g t h & & t h i s . p o l i c y . c e r t s . f o r E a c h ( f u n c t i o n ( e ) { i . p u s h ( e . i d . t o S t r i n g ( ) ) } ) , t e a w e b . p o p u p ( " / s e r v e r s / c e r t s / s e l e c t P o p u p ? s e l e c t e d C e r t I d s = " + i , { w i d t h : " 5 0 e m " , 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 . p o l i c y . c e r t R e f s . p u s h ( e . d a t a . c e r t R e f ) , t . p o l i c y . c e r t s . p u s h ( e . d a t a . c e r t ) } } ) } , u p l o a d C e r 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 e r t s / u p l o a d P o p u p " , { h e i g h t : " 2 8 e m " , c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 上 传 成 功 " , f u n c t i o n ( ) { t . p o l i c y . c e r t R e f s . p u s h ( e . d a t a . c e r t R e f ) , t . p o l i c y . c e r t s . p u s h ( e . d a t a . c e r t ) } ) } } ) } , r e q u e s t C e r t : f u n c t i o n ( ) { l e t   t = [ ] , e = ( n u l l ! = t h i s . p o l i c y & & 0 < t h i s . p o l i c y . c e r t s . l e n g t h & & t h i s . p o l i c y . c e r t s . f o r E a c h ( f u n c t i o n ( e ) { t . $ p u s h A l l ( e . d n s N a m e s ) } ) , t h i s ) ; 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 t t p s / r e q u e s t C e r t P o p u p ? s e r v e r I d = " + t h i s . v S e r v e r I d + " & e x c l u d e S e r v e r N a m e s = " + t . j o i n ( " , " ) , { c a l l b a c k : f u n c t i o n ( ) { e . p o l i c y . c e r t R e f s . p u s h ( r e s p . d a t a . c e r t R e f ) , e . p o l i c y . c e r t s . p u s h ( r e s p . d a t a . c e r t ) } } ) } , c h a n g e O p t i o n s 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 } , f o r m a t T i m e : f u n c t i o n ( e ) { r e t u r n   n e w   D a t e ( 1 e 3 * e ) . f o r m a t ( " Y - m - d " ) } , f o r m a t C i p h e r S u i t e : f u n c t i o n ( e ) { r e t u r n   e . r e p l a c e ( / ( A E S | 3 D E S ) / , ' < v a r   s t y l e = " f o n t - w e i g h t :   b o l d " > $ 1 < / v a r > ' ) } , a d d C i p h e r S u i t e : f u n c t i o n ( e ) { t h i s . p o l i c y . c i p h e r S u i t e s . $ c o n t a i n s ( e ) | | t h i s . p o l i c y . c i p h e r S u i t e s . p u s h ( e ) , t h i s . a l l C i p h e r S u i t e s . $ r e m o v e V a l u e ( e ) } , r e m o v e C i p h e r S u i t e : f u n c t i o n ( e ) { l e t   i = 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 ( ) { i . p o l i c y . c i p h e r S u i t e s . $ r e m o v e V a l u e ( e ) , i . a l l C i p h e r S u i t e s = w i n d o w . S S L _ A L L _ C I P H E R _ S U I T E S . $ f i n d A l l ( f u n c t i o n ( e , t ) { r e t u r n ! i . p o l i c y . c i p h e r S u i t e s . $ c o n t a i n s ( t ) } ) } ) } , c l e a r C i p h e r S u i t e s : f u n c t i o n ( ) { l e t   e = 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 ( ) { e . p o l i c y . c i p h e r S u i t e s = [ ] , e . a l l C i p h e r S u i t e s = w i n d o w . S S L _ A L L _ C I P H E R _ S U I T E S . $ c o p y ( ) } ) } , a d d B a t c h C i p h e r S u i t e s : f u n c t i o n ( e ) { v a r   i = 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 ( ) { e . $ e a c h ( f u n c t i o n ( e , t ) { i . p o l i c y . c i p h e r S u i t e s . $ c o n t a i n s ( t ) | | i . p o l i c y . c i p h e r S u i t e s . p u s h ( t ) } ) } ) } , s o r t a b l e C i p h e r S u i t e s : f u n c t i o n ( ) { v a r   e = d o c u m e n t . q u e r y S e l e c t o r ( " . c i p h e r - s u i t e s - b o x " ) ; S o r t a b l e . c r e a t e ( e , { d r a g g a b l e : " . l a b e l " , 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 ) { } } ) } , s h o w A l l C i p h e r S u i t e s : f u n c t i o n ( ) { t h i s . c i p h e r S u i t e s V i s i b l e = ! t h i s . c i p h e r S u i t e s V i s i b l e } , s h o w M o r e H S T S : f u n c t i o n ( ) { t h i s . h s t s O p t i o n s V i s i b l e = ! t h i s . h s t s O p t i o n s V i s i b l e , t h i s . h s t s O p t i o n s V i s i b l e & & t h i s . c h a n g e H S T S M a x A g e ( ) } , c h a n g e H S T S M a x A g e : f u n c t i o n ( ) { v a r   e = t h i s . h s t s . m a x A g e ; i s N a N ( e ) ? t h i s . h s t s . d a y s = " - " : ( t h i s . h s t s . d a y s = p a r s e I n t ( e / 8 6 4 0 0 ) , ( i s N a N ( t h i s . h s t s . d a y s ) | | t h i s . h s t s . d a y s < 0 ) & & ( t h i s . h s t s . d a y s = " - " ) ) } , s e t H S T S M a x A g e : f u n c t i o n ( e ) { t h i s . h s t s . m a x A g e = e , t h i s . c h a n g e H S T S M a x A g e ( ) } , a d d H s t s D o m a i n : f u n c t i o n ( ) { t h i s . h s t s D o m a i n A d d i n g = ! 0 , t h i s . h s t s D o m a i n E d i t i n g I n d e x = - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< h4 > SSL / TLS相关配置 < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "sslPolicyJSON"  : value = "JSON.stringify(policy)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "vProtocol == 'https'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 启用HTTP / 2 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  value = "1"  v - model = "policy.http2Enabled" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 选择证书 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "policy.certs != null && policy.certs.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui label small"  v - for = "(cert, index) in policy.certs" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { cert . name } }  /  { { cert . dnsNames } }  /  有效至 { { formatTime ( cert . timeEndAt ) } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "removeCert(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "red" > 选择或上传证书后 < span  v - if = "vProtocol == 'https'" > HTTPS < / s p a n > < s p a n   v - i f = " v P r o t o c o l   = =   ' t l s ' " > T L S < / s p a n > 服 务 才 能 生 效 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "selectCert()" > 选择已有证书 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "uploadCert()" > 上传新证书 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "requestCert()"  v - if = "vServerId != null && vServerId > 0" > 申请免费证书 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > TLS最低版本 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  v - model = "policy.minVersion"  class = "ui dropdown auto-width" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "version in allVersions"  : value = "version" > { { version } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeOptionsVisible" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "moreOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  加密套件  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td > 加密算法套件 < em > ( CipherSuites ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  value = "1"  v - model = "policy.cipherSuitesIsOn"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > 是否要自定义 < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - show = "policy.cipherSuitesIsOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "cipher-suites-box" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
															已添加套件 ( { { policy . cipherSuites . length } } ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< div  v - for = "cipherSuite in policy.cipherSuites"  class = "ui label tiny basic"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "hidden"  name = "cipherSuites"  : value = "cipherSuite" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< span  v - html = "formatCipherSuite(cipherSuite)" > < /span>   <a href="" title="删除套件" @click.prevent="removeCipherSuite(cipherSuite)"><i class="icon remove"></i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< a  href = ""  title = "拖动改变顺序" > < i  class = "icon bars handle" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "policy.cipherSuites.length > 0" > < a  href = ""  @ click . prevent = "clearCipherSuites()" > [ 清除所有已选套件 ] < / a >   & n b s p ;   < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  @ click . prevent = "addBatchCipherSuites(modernCipherSuites)" > [ 添加推荐套件 ] < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  @ click . prevent = "addBatchCipherSuites(intermediateCipherSuites)" > [ 添加兼容套件 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "cipher-all-suites-box" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  @ click . prevent = "showAllCipherSuites()" > < span  v - if = "policy.cipherSuites.length == 0" > 所有 < /span>可选套件({{allCipherSuites.length}}) <i class="icon angle" :class="{down:!cipherSuitesVisible, up:cipherSuitesVisible}"></i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  v - if = "cipherSuitesVisible"  v - for = "cipherSuite in allCipherSuites"  class = "ui label tiny"  title = "点击添加到自定义套件中"  @ click . prevent = "addCipherSuite(cipherSuite)"  v - html = "formatCipherSuite(cipherSuite)"  style = "margin-bottom:0.5em" > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< p  class = "comment"  v - if = "cipherSuitesVisible" > 点击可选套件添加 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  HSTS  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "vProtocol == 'https'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  : class = "{'color-border':hsts.isOn}" > 是否开启HSTS < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  name = "hstsOn"  v - model = "hsts.isOn"  value = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														 开启后 , 会自动在响应Header中加入 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														 < span  class = "ui label small" > Strict - Transport - Security : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															 < var  v - if = "!hsts.isOn" > ... < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															 < var  v - if = "hsts.isOn" > < span > max - age = < / s p a n > { { h s t s . m a x A g e } } < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															 < var  v - if = "hsts.isOn && hsts.includeSubDomains" > ;  includeSubDomains < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															 < var  v - if = "hsts.isOn && hsts.preload" > ;  preload < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														  < span  v - if = "hsts.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  @ click . prevent = "showMoreHSTS()" > 修改 < i  class = "icon angle"  : class = "{down:!hstsOptionsVisible, up:hstsOptionsVisible}" > < / i >   < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-18 17:23:55 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "hsts.isOn && hstsOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td  class = "color-border" > HSTS有效时间 < em > ( max - age ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< input  type = "text"  name = "hstsMaxAge"  v - model = "hsts.maxAge"  maxlength = "10"  size = "10"  @ input = "changeHSTSMaxAge()" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															秒 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > { { hsts . days } } 天 < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "setHSTSMaxAge(31536000)"  : class = "{active:hsts.maxAge == 31536000}" > [ 1 年 / 365 天 ] < / a >   & n b s p ;   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "setHSTSMaxAge(15768000)"  : class = "{active:hsts.maxAge == 15768000}" > [ 6 个月 / 182.5 天 ] < / a >   & n b s p ;     & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "setHSTSMaxAge(2592000)"   : class = "{active:hsts.maxAge == 2592000}" > [ 1 个月 / 30 天 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "hsts.isOn && hstsOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td  class = "color-border" > HSTS包含子域名 < em > ( includeSubDomains ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  name = "hstsIncludeSubDomains"  value = "1"  v - model = "hsts.includeSubDomains" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "hsts.isOn && hstsOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td  class = "color-border" > HSTS预加载 < em > ( preload ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  name = "hstsPreload"  value = "1"  v - model = "hsts.preload" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "hsts.isOn && hstsOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "color-border" > HSTS生效的域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  colspan = "2" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "names-box" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label tiny basic"  v - for = "(domain, arrayIndex) in hsts.domains"  : class = "{blue:hstsDomainEditingIndex == arrayIndex}" > { { domain } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "hidden"  name = "hstsDomains"  : value = "domain" / >  & nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "editHstsDomain(arrayIndex)"  title = "修改" > < i  class = "icon pencil" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "removeHstsDomain(arrayIndex)"  title = "删除" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui fields inline"  v - if = "hstsDomainAdding"  style = "margin-top:0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
															< input  type = "text"  name = "addingHstsDomain"  ref = "addingHstsDomain"  style = "width:16em"  maxlength = "100"  placeholder = "域名,  比如example.com"  @ keyup . enter = "confirmAddHstsDomain()"  @ keypress . enter . prevent = "1"  v - model = "addingHstsDomain"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< button  class = "ui button tiny"  type = "button"  @ click = "confirmAddHstsDomain()" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															& nbsp ;  < a  href = ""  @ click . prevent = "cancelHstsDomainAdding()" > 取消 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field"  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< button  class = "ui button tiny"  type = "button"  @ click = "addHstsDomain()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 如果没有设置域名的话 , 则默认支持所有的域名 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 21:32:56 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  OCSP  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > OCSP  Stapling < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < checkbox  name = "ocspIsOn"  v - model = "policy.ocspIsOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中表示启用OCSP  Stapling 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  客户端认证  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 客户端认证方式 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  name = "clientAuthType"  v - model = "policy.clientAuthType"  class = "ui dropdown auto-width" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "authType in allClientAuthTypes"  : value = "authType.type" > { { authType . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 客户端认证CA证书 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "policy.clientCACerts != null && policy.clientCACerts.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui label small"  v - for = "(cert, index) in policy.clientCACerts" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { cert . name } }  /  { { cert . dnsNames } }  /  有效至 { { formatTime ( cert . timeEndAt ) } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "removeClientCACert()" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "selectClientCACert()" > 选择已有证书 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "uploadClientCACert()" > 上传新证书 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 用来校验客户端证书以增强安全性 , 通常不需要设置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - a c t i o n s - v i e w " , { p r o p s : [ " v - a c t i o n s " ] , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "action in vActions"  style = "margin-bottom: 0.3em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  : class = "{red: action.category == 'block', orange: action.category == 'verify', green: action.category == 'allow'}" > { { action . name } }  ( { { action . code . toUpperCase ( ) } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v >                           
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e q u e s t - s c r i p t s - c o n f i g - b o x " , { p r o p s : [ " v R e q u e s t S c r i p t s C o n f i g " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e q u e s t S c r i p t s C o n f i g ; r e t u r n { c o n f i g : e = n u l l = = e ? { } : e } } , m e t h o d s : { c h a n g e I n i t G r o u p : f u n c t i o n ( e ) { t h i s . c o n f i g . i n i t G r o u p = e , t h i s . $ f o r c e U p d a t e ( ) } , c h a n g e R e q u e s t G r o u p : f u n c t i o n ( e ) { t h i s . c o n f i g . r e q u e s t G r o u p = e , t h i s . $ f o r c e U p d a t e ( ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "requestScriptsJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< h4  style = "margin-bottom: 0" > 请求初始化 < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 在请求刚初始化时调用 , 此时自定义Header等尚未生效 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 22:10:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< script - group - config - box  : v - group = "config.initGroup"  @ change = "changeInitGroup"  : v - is - location = "vIsLocation" > < / s c r i p t - g r o u p - c o n f i g - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< h4  style = "margin-bottom: 0" > 准备发送请求 < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 在准备执行请求或者转发请求之前调用 , 此时自定义Header 、 源站等已准备好 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 22:10:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< script - group - config - box  : v - group = "config.requestGroup"  @ change = "changeRequestGroup"  : v - is - location = "vIsLocation" > < / s c r i p t - g r o u p - c o n f i g - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / 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 - r u l e - l a b e l " , { p r o p s : [ " v - r u l e " ] , d a t a : f u n c t i o n ( ) { r e t u r n { r u l e : t h i s . v R u l e } } , m e t h o d s : { s h o w E r r : f u n c t i o n ( e ) { t e a w e b . p o p u p T i p ( ' 规 则 校 验 错 误 , 请 修 正 : < s p a n   c l a s s = " r e d " > ' + t e a w e b . e n c o d e H T M L ( e ) + " < / s p a n > " ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui label tiny basic"  style = "line-height: 1.5" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										{ { rule . name } } [ { { rule . param } } ]  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  cc2  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "rule.param == '\${cc2}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { rule . checkpointOptions . period } } 秒 / { { rule . checkpointOptions . threshold } } 请求 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  refererBlock  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "rule.param == '\${refererBlock}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { rule . checkpointOptions . allowDomains } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "rule.paramFilters != null && rule.paramFilters.length > 0"  v - for = "paramFilter in rule.paramFilters" >  |  { { paramFilter . code } } < / s p a n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< var  : class = "{dash:rule.isCaseInsensitive}"  : title = "rule.isCaseInsensitive ? '大小写不敏感':''"  v - if = "!rule.isComposed" > { { rule . operator } } < / v a r >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										{ { rule . value } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  description  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< span  v - if = "rule.description != null && rule.description.length > 0"  class = "grey small" > ( { { rule . description } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  v - if = "rule.err != null && rule.err.length > 0"  @ click . prevent = "showErr(rule.err)"  style = "color: #db2828; opacity: 1; border-bottom: 1px #db2828 dashed; margin-left: 0.5em" > 规则错误 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c a c h e - r e f s - b o x " , { p r o p s : [ " v - c a c h e - r e f s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C a c h e R e f s ; r e t u r n { r e f s : e = n u l l = = e ? [ ] : e } } , m e t h o d s : { t i m e U n i t N a m e : f u n c t i o n ( e ) { s w i t c h ( e ) { c a s e " m s " : r e t u r n " 毫 秒 " ; c a s e " s e c o n d " : r e t u r n " 秒 " ; c a s e " m i n u t e " : r e t u r n " 分 钟 " ; c a s e " h o u r " : r e t u r n " 小 时 " ; c a s e " d a y " : r e t u r n " 天 " ; c a s e " w e e k " : r e t u r n " 周   " } r e t u r n   e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "refsJSON"  : value = "JSON.stringify(refs)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment"  v - if = "refs.length == 0" > 暂时还没有缓存条件 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "refs.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table selectable celled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > 缓存条件 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "two wide" > 分组关系 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "width10" > 缓存时间 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr  v - for = "(cacheRef, index) in refs" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  : class = "{'color-border': cacheRef.conds.connector == 'and', disabled: !cacheRef.isOn}"  : style = "{'border-left':cacheRef.isReverse ? '1px #db2828 solid' : ''}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< http - request - conds - view  : v - conds = "cacheRef.conds"  : class = "{disabled: !cacheRef.isOn}" > < / h t t p - r e q u e s t - c o n d s - v i e w > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.minSize != null && cacheRef.minSize.count > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { cacheRef . minSize . count } } { { cacheRef . minSize . unit } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "cacheRef.maxSize != null && cacheRef.maxSize.count > 0" > -  { { cacheRef . maxSize . count } } { { cacheRef . maxSize . unit } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / g r e y - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - else - if = "cacheRef.maxSize != null && cacheRef.maxSize.count > 0" > 0  -  { { cacheRef . maxSize . count } } { { cacheRef . maxSize . unit } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.methods != null && cacheRef.methods.length > 0" > { { cacheRef . methods . join ( ", " ) } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.expiresTime != null && cacheRef.expiresTime.isPrior && cacheRef.expiresTime.isOn" > Expires < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														< grey - label  v - if = "cacheRef.status != null && cacheRef.status.length > 0 && (cacheRef.status.length > 1 || cacheRef.status[0] != 200)" > 状态码 : { { cacheRef . status . map ( function ( v )  { return  v . toString ( ) } ) . join ( ", " ) } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-04 17:00:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.allowPartialContent" > 区间缓存 < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  : class = "{disabled: !cacheRef.isOn}" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "cacheRef.conds.connector == 'and'" > 和 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "cacheRef.conds.connector == 'or'" > 或 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  : class = "{disabled: !cacheRef.isOn}" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "!cacheRef.isReverse" > { { cacheRef . life . count } }  { { timeUnitName ( cacheRef . life . unit ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - else  class = "red" > 不缓存 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s s l - c e r t s - b o x " , { p r o p s : [ " v - c e r t s " , " v - c e r t " , " v - p r o t o c o l " , " v - v i e w - s i z e " , " v - s i n g l e - m o d e " , " v - d e s c r i p t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C e r t s , t = ( n u l l = = e & & ( e = [ ] ) , n u l l ! = t h i s . v C e r t & & e . p u s h ( t h i s . v C e r t ) , t h i s . v D e s c r i p t i o n ) ; r e t u r n   n u l l ! = t & & " s t r i n g " = = t y p e o f   t | | ( t = " " ) , { c e r t s : e , d e s c r i p t i o n : t } } , m e t h o d s : { c e r t I d s : f u n c t i o n ( ) { r e t u r n   t h i s . c e r t s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i d } ) } , r e m o v e C e r t : 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 . c e r t s . $ r e m o v e ( e ) } ) } , s e l e c t C e r t : f u n c t i o n ( ) { l e t   t = t h i s , e = " 5 0 e m " , i = " 3 0 e m " , s = t h i s . v V i e w S i z e ; " m i n i " = = ( s = n u l l = = s ? " n o r m a l " : s ) & & ( e = " 3 5 e m " , i = " 2 0 e m " ) , t e a w e b . p o p u p ( " / s e r v e r s / c e r t s / s e l e c t P o p u p ? v i e w S i z e = " + s , { w i d t h : e , h e i g h t : i , c a l l b a c k : f u n c t i o n ( e ) { t . c e r t s . p u s h ( e . d a t a . c e r t ) } } ) } , u p l o a d C e r 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 e r t s / u p l o a d P o p u p " , { h e i g h t : " 2 8 e m " , c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 上 传 成 功 " , f u n c t i o n ( ) { t . c e r t s . p u s h ( e . d a t a . c e r t ) } ) } } ) } , f o r m a t T i m e : f u n c t i o n ( e ) { r e t u r n   n e w   D a t e ( 1 e 3 * e ) . f o r m a t ( " Y - m - d " ) } , b u t t o n s V i s i b l e : f u n c t i o n ( ) { r e t u r n   n u l l = = t h i s . v S i n g l e M o d e | | ! t h i s . v S i n g l e M o d e | | n u l l = = t h i s . c e r t s | | 0 = = t h i s . c e r t s . l e n g t h } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "certIdsJSON"  : value = "JSON.stringify(certIds())" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "certs != null && certs.length > 0" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 20:04:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small basic"  v - for = "(cert, index) in certs" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { cert . name } }  /  { { cert . dnsNames } }  /  有效至 { { formatTime ( cert . timeEndAt ) } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "removeCert(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider"  v - if = "buttonsVisible()" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - else > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 20:04:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "red"  v - if = "description.length == 0" > 选择或上传证书后 < span  v - if = "vProtocol == 'https'" > HTTPS < / s p a n > < s p a n   v - i f = " v P r o t o c o l   = =   ' t l s ' " > T L S < / s p a n > 服 务 才 能 生 效 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "grey"  v - if = "description.length > 0" > { { description } } < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider"  v - if = "buttonsVisible()" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "buttonsVisible()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "selectCert()" > 选择已有证书 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "uploadCert()" > 上传新证书 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - h o s t - r e d i r e c t - b o x " , { p r o p s : [ " v - r e d i r e c t s " ] , m o u n t e d : f u n c t i o n ( ) { l e t   s = t h i s ; s o r t T a b l e ( f u n c t i o n ( e ) { l e t   i = [ ] ; e . f o r E a c h ( f u n c t i o n ( t ) { s . r e d i r e c t s . f o r E a c h ( f u n c t i o n ( e ) { e . i d = = t & & i . p u s h ( e ) } ) } ) , s . u p d a t e R e d i r e c t s ( i ) } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e d i r e c t s , t = ( n u l l = = e & & ( e = [ ] ) , 0 ) ; r e t u r n   e . f o r E a c h ( f u n c t i o n ( e ) { t + + , e . i d = t } ) , { r e d i r e c t s : e , s t a t u s O p t i o n s : [ { c o d e : 3 0 1 , t e x t : " M o v e d   P e r m a n e n t l y " } , { c o d e : 3 0 8 , t e x t : " P e r m a n e n t   R e d i r e c t " } , { c o d e : 3 0 2 , t e x t : " F o u n d " } , { c o d e : 3 0 3 , t e x t : " S e e   O t h e r " } , { c o d e : 3 0 7 , t e x t : " T e m p o r a r y   R e d i r e c t " } ] , i d : t } } , m e t h o d s : { a d d : f u n c t i o n ( ) { l e t   t = t h i s ; w i n d o w . U P D A T I N G _ R E D I R E C T = n u l l , 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 / r e d i r e c t s / c r e a t e P o p u p " , { w i d t h : " 5 0 e m " , 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 . i d + + , e . d a t a . r e d i r e c t . i d = t . i d , t . r e d i r e c t s . p u s h ( e . d a t a . r e d i r e c t ) , t . c h a n g e ( ) } } ) } , u p d a t e : f u n c t i o n ( t , i ) { l e t   s = t h i s ; w i n d o w . U P D A T I N G _ R E D I R E C T = i , 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 / r e d i r e c t s / c r e a t e P o p u p " , { w i d t h : " 5 0 e m " , 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 ) { e . d a t a . r e d i r e c t . i d = i . i d , V u e . s e t ( s . r e d i r e c t s , t , e . d a t a . r e d i r e c t ) , s . c h a n g e ( ) } } ) } , r e m o v 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 e d i r e c t s . $ r e m o v e ( e ) , t . c h a n g e ( ) } ) } , c h a n g e : f u n c t i o n ( ) { l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ e m i t ( " c h a n g e " , e . r e d i r e c t s ) } , 1 0 0 ) } , u p d a t e R e d i r e c t s : f u n c t i o n ( e ) { t h i s . r e d i r e c t s = e , t h i s . c h a n g e ( ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "hostRedirectsJSON"  : value = "JSON.stringify(redirects)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< first - menu > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< menu - item  @ click . prevent = "add" > [ 创建 ] < / m e n u - i t e m > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / f i r s t - m e n u > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment"  v - if = "redirects.length == 0" > 暂时还没有URL跳转规则 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "redirects.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table celled selectable"  id = "sortable-table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  style = "width: 1em" > < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > 跳转前URL < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  style = "width: 1em" > < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > 跳转后URL < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > 匹配模式 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > HTTP状态码 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "two wide" > 状态 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "two op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tbody  v - for = "(redirect, index) in redirects"  : key = "redirect.id"  : v - id = "redirect.id" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  style = "text-align: center;" > < i  class = "icon bars handle grey" > < / i >   < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														{ { redirect . beforeURL } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  style = "margin-top: 0.5em"  v - if = "redirect.conds != null && redirect.conds.groups != null && redirect.conds.groups.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  class = "ui label text basic tiny" > 匹配条件 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  nowrap = "" > - & gt ; < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > { { redirect . afterURL } } < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "redirect.matchPrefix" > 匹配前缀 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "redirect.matchRegexp" > 正则匹配 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "!redirect.matchPrefix && !redirect.matchRegexp" > 精准匹配 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "redirect.status > 0" > { { redirect . status } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - else  class = "disabled" > 默认 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > < label - on  : v - is - on = "redirect.isOn" > < / l a b e l - o n > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "update(index, redirect)" > 修改 < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "remove(index)" > 删除 < / a > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< p  class = "comment"  v - if = "redirects.length > 1" > 所有规则匹配顺序为从上到下 , 可以拖动左侧的 < i  class = "icon bars" > < / i > 排 序 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("http-cache-ref-box",{props:["v-cache-ref","v-is-reverse"],mounted:function(){this.$refs.variablesDescriber.update(this.ref.key)},data:function(){let e=this.vCacheRef;return null==(e=null==e?{isOn:!0,cachePolicyId:0,key:"${scheme}:/ / $ { host } $ { requestPath } $ { isArgs } $ { args } ",life:{count:2,unit:" hour "},status:[200],maxSize:{count:32,unit:" mb "},minSize:{count:0,unit:" kb "},skipCacheControlValues:[" private "," no - cache "," no - store "],skipSetCookie:!0,enableRequestCachePragma:!1,conds:null,allowChunkedEncoding:!0,allowPartialContent:!1,isReverse:this.vIsReverse,methods:[],expiresTime:{isPrior:!1,isOn:!1,overwrite:!0,autoCalculate:!0,duration:{count:-1,unit:" hour "}}}:e).key&&(e.key=" "),null==e.methods&&(e.methods=[]),null==e.life&&(e.life={count:2,unit:" hour "}),null==e.maxSize&&(e.maxSize={count:32,unit:" mb "}),null==e.minSize&&(e.minSize={count:0,unit:" kb " } ) , { ref : e , moreOptionsVisible : ! 1 } } , methods : { changeOptionsVisible : function ( e ) { this . moreOptionsVisible = e } , changeLife : function ( e ) { this . ref . life = e } , changeMaxSize : function ( e ) { this . ref . maxSize = e } , changeMinSize : function ( e ) { this . ref . minSize = e } , changeConds : function ( e ) { this . ref . conds = e } , changeStatusList : function ( e ) { let  t = [ ] ; e . forEach ( function ( e ) { e = parseInt ( e ) ; isNaN ( e ) || e < 100 || 999 < e || t . push ( e ) } ) , this . ref . status = t } , changeMethods : function ( e ) { this . ref . methods = e . map ( function ( e ) { return  e . toUpperCase ( ) } ) } , changeKey : function ( e ) { this . $refs . variablesDescriber . update ( e ) } , changeExpiresTime : function ( e ) { this . ref . expiresTime = e } } , template : ` <tbody>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  class = "title" > 匹配条件分组  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< http - request - conds - box  : v - conds = "ref.conds"  @ change = "changeConds" > < / h t t p - r e q u e s t - c o n d s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "hidden"  name = "cacheRefJSON"  : value = "JSON.stringify(ref)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "!vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 缓存有效期  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< time - duration - box  : v - value = "ref.life"  @ change = "changeLife" > < / t i m e - d u r a t i o n - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "!vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 缓存Key  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "text"  v - model = "ref.key"  @ input = "changeKey(ref.key)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment" > 用来区分不同缓存内容的唯一Key 。 < request - variables - describer  ref = "variablesDescriber" > < / r e q u e s t - v a r i a b l e s - d e s c r i b e r > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "!vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  colspan = "2" > < more - options - indicator  @ change = "changeOptionsVisible" > < / m o r e - o p t i o n s - i n d i c a t o r > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 请求方法限制 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< values - box  size = "5"  maxlength = "10"  : values = "ref.methods"  @ change = "changeMethods" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 允许请求的缓存方法 , 默认支持所有的请求方法 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< td > 客户端过期时间 < em > ( Expires ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< http - expires - time - config - box  : v - expires - time = "ref.expiresTime"  @ change = "changeExpiresTime" > < / h t t p - e x p i r e s - t i m e - c o n f i g - b o x > 	 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 可缓存的最大内容尺寸 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< size - capacity - box  : v - value = "ref.maxSize"  @ change = "changeMaxSize" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment" > 内容尺寸如果高于此值则不缓存 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 可缓存的最小内容尺寸 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< size - capacity - box  : v - value = "ref.minSize"  @ change = "changeMinSize" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment" > 内容尺寸如果低于此值则不缓存 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 支持分片内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< checkbox  name = "allowChunkedEncoding"  value = "1"  v - model = "ref.allowChunkedEncoding" > < / c h e c k b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-03 19:32:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 选中后 , Gzip等压缩后的Chunked内容可以直接缓存 , 无需检查内容长度 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 支持缓存区间内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< checkbox  name = "allowPartialContent"  value = "1"  v - model = "ref.allowPartialContent" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 选中后 , 支持缓存源站返回的某个区间的内容 , 该内容通过 < code - label > 206  Partial  Content < / 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 > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 状态码列表 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< values - box  name = "statusList"  size = "3"  maxlength = "3"  : values = "ref.status"  @ change = "changeStatusList" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment" > 允许缓存的HTTP状态码列表 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 跳过的Cache - Control值 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< values - box  name = "skipResponseCacheControlValues"  size = "10"  maxlength = "100"  : values = "ref.skipCacheControlValues" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 当响应的Cache - Control为这些值时不缓存响应内容 , 而且不区分大小写 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 跳过Set - Cookie < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "checkbox"  value = "1"  v - model = "ref.skipSetCookie" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 选中后 , 当响应的Header中有Set - Cookie时不缓存响应内容 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "moreOptionsVisible && !vIsReverse" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 支持请求no - cache刷新 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "checkbox"  name = "enableRequestCachePragma"  value = "1"  v - model = "ref.enableRequestCachePragma" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 选中后 , 当请求的Header中含有Pragma :  no - cache或Cache - Control :  no - cache时 , 会跳过缓存直接读取源内容 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 	 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t b o d y > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e q u e s t - l i m i t - c o n f i g - b o x " , { p r o p s : [ " v - r e q u e s t - l i m i t - c o n f i g " , " v - i s - g r o u p " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e q u e s t L i m i t 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 P r i o r : ! 1 , i s O n : ! 1 , m a x C o n n s : 0 , m a x C o n n s P e r I P : 0 , m a x B o d y S i z e : { c o u n t : - 1 , u n i t : " k b " } , o u t B a n d w i d t h P e r C o n n : { c o u n t : - 1 , u n i t : " k b " } } : e , m a x C o n n s : e . m a x C o n n s , m a x C o n n s P e r I P : e . m a x C o n n s P e r I P } } , w a t c h : { m a x C o n n s : f u n c t i o n ( e ) { e = p a r s e I n t ( e , 1 0 ) ; i s N a N ( e ) ? t h i s . c o n f i g . m a x C o n n s = 0 : t h i s . c o n f i g . m a x C o n n s = e < 0 ? 0 : e } , m a x C o n n s P e r I P : f u n c t i o n ( e ) { e = p a r s e I n t ( e , 1 0 ) ; i s N a N ( e ) ? t h i s . c o n f i g . m a x C o n n s P e r I P = 0 : t h i s . c o n f i g . m a x C o n n s P e r I P = e < 0 ? 0 : e } } , 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 } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "requestLimitJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< 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" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "config.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 最大并发连接数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  maxlength = "6"  v - model = "maxConns" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-19 18:56:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 当前服务最大并发连接数 。 为0表示不限制 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 单IP最大并发连接数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  maxlength = "6"  v - model = "maxConnsPerIP" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-19 18:56:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 单IP最大连接数 , 统计单个IP总连接数时不区分服务 。 为0表示不限制 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 单连接带宽限制 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - value = "config.outBandwidthPerConn"  : v - supported - units = "['byte', 'kb', 'mb']" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 客户端单个请求每秒可以读取的下行流量 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 单请求最大尺寸 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - value = "config.maxBodySize"  : v - supported - units = "['byte', 'kb', 'mb', 'gb']" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 单个请求能发送的最大内容尺寸 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - r e p l a c e - v a l u e s " , { p r o p s : [ " v - r e p l a c e - v a l u e s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e p l a c e V a l u e s ; r e t u r n { v a l u e s : e = n u l l = = e ? [ ] : e , i s A d d i n g : ! 1 , a d d i n g V a l u e : { p a t t e r n : " " , r e p l a c e m e n t : " " , i s C a s e I n s e n s i t i v e : ! 1 , i s R e g e x p : ! 1 } } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 0 ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . p a t t e r n . f o c u s ( ) } ) } , r e m o v e : f u n c t i o n ( e ) { t h i s . v a l u e s . $ r e m o v e ( e ) } , c o n f i r m : f u n c t i o n ( ) { l e t   e = t h i s ; 0 = = t h i s . a d d i n g V a l u e . p a t t e r n . l e n g t h ? t e a w e b . w a r n ( " 替 换 前 内 容 不 能 为 空 " , f u n c t i o n ( ) { e . $ r e f s . p a t t e r n . f o c u s ( ) } ) : ( t h i s . v a l u e s . p u s h ( t h i s . a d d i n g V a l u e ) , t h i s . c a n c e l ( ) ) } , c a n c e l : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 , t h i s . a d d i n g V a l u e = { p a t t e r n : " " , r e p l a c e m e n t : " " , i s C a s e I n s e n s i t i v e : ! 1 , i s R e g e x p : ! 1 } } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-15 09:56:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "replaceValuesJSON"  : value = "JSON.stringify(values)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "(value, index) in values"  class = "ui label small"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< var > { { value . pattern } } < /var><sup v-if="value.isCaseInsensitive" title="不区分大小写"><i class="icon info tiny"></i > < / s u p >   = & g t ;   < v a r   v - i f = " v a l u e . r e p l a c e m e n t . l e n g t h   >   0 " > { { v a l u e . r e p l a c e m e n t } } < / v a r > < v a r   v - e l s e > < s p a n   c l a s s = " s m a l l   g r e y " > [ 空 ] < / s p a n > < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "remove(index)"  title = "删除" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 替换前内容  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < input  type = "text"  v - model = "addingValue.pattern"  placeholder = "替换前内容"  ref = "pattern"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 替换后内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < input  type = "text"  v - model = "addingValue.replacement"  placeholder = "替换后内容"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 是否忽略大小写 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "addingValue.isCaseInsensitive" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  type = "button"  class = "ui button tiny"  @ click . prevent = "confirm" > 确定 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  type = "button"  class = "ui button tiny"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e q u e s t - c o n d s - v i e w " , { p r o p s : [ " v - c o n d s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C o n d s , t = ( n u l l = = e & & ( e = { i s O n : ! 0 , c o n n e c t o r : " o r " , g r o u p s : [ ] } ) , t h i s ) ; r e t u r n   e . g r o u p s . f o r E a c h ( f u n c t i o n ( e ) { e . c o n d s . f o r E a c h ( f u n c t i o n ( e ) { e . t y p e N a m e = t . t y p e N a m e ( e ) } ) } ) , { i n i t C o n d s : e , v e r s i o n : 0 } } , c o m p u t e d : { c o n d s : f u n c t i o n ( ) { r e t u r n   t h i s . i n i t C o n d s } } , m e t h o d s : { t y p e N a m e : f u n c t i o n ( i ) { v a r   e = w i n d o w . R E Q U E S T _ C O N D _ C O M P O N E N T S . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . t y p e = = i . t y p e } ) ; r e t u r n   n u l l ! = e ? e . n a m e : i . p a r a m + "   " + i . o p e r a t o r } , n o t i f y C h a n g e : f u n c t i o n ( ) { t h i s . v e r s i o n + + ; l e t   t = t h i s ; t h i s . i n i t C o n d s . g r o u p s . f o r E a c h ( f u n c t i o n ( e ) { e . c o n d s . f o r E a c h ( f u n c t i o n ( e ) { e . t y p e N a m e = t . t y p e N a m e ( e ) } ) } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "version < 0" > { { version } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "conds.groups.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "(group, groupIndex) in conds.groups" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< var  v - for = "(cond, index) in group.conds"  style = "font-style: normal;display: inline-block; margin-bottom:0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label small basic"  style = "line-height: 1.5" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< var  v - if = "cond.type.length == 0 || cond.type == 'params'"  style = "font-style: normal" > { { cond . param } }  < var > { { cond . operator } } < / v a r > < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< var  v - if = "cond.type.length > 0 && cond.type != 'params'"  style = "font-style: normal" > { { cond . typeName } } :  < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														{ { cond . value } } 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< sup  v - if = "cond.isCaseInsensitive"  title = "不区分大小写" > < i  class = "icon info small" > < / i > < / s u p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< var  v - if = "index < group.conds.length - 1" >  { { group . connector } }  & nbsp ; < / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / v a r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui divider"  v - if = "groupIndex != conds.groups.length - 1"  style = "margin-top:0.3em;margin-bottom:0.5em" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label tiny olive"  v - if = "group.description != null && group.description.length > 0" > { { group . description } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 	 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - c o n f i g - b o x " , { p r o p s : [ " v - f i r e w a l l - 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 " , " v - f i r e w a l l - p o l i c y " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v F i r e w a l l C o n f i g ; r e t u r n { f i r e w a l l : e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , f i r e w a l l P o l i c y I d : 0 } : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "firewallJSON"  : value = "JSON.stringify(firewall)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "firewall"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || firewall.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "!vIsGroup" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > WAF策略 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "vFirewallPolicy != null" > { { vFirewallPolicy . name } }  < span  v - if = "vFirewallPolicy.modeInfo != null" > & nbsp ;  < span  : class = "{green: vFirewallPolicy.modeInfo.code == 'defend', blue: vFirewallPolicy.modeInfo.code == 'observe', grey: vFirewallPolicy.modeInfo.code == 'bypass'}" > [ { { vFirewallPolicy . modeInfo . name } } ] < / s p a n > & n b s p ; < / s p a n >   < l i n k - i c o n   : h r e f = " ' / s e r v e r s / c o m p o n e n t s / w a f / p o l i c y ? f i r e w a l l P o l i c y I d = '   +   v F i r e w a l l P o l i c y . i d " > < / l i n k - i c o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< p  class = "comment" > 使用当前服务所在集群的设置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< span  v - else  class = "red" > 当前集群没有设置WAF策略 , 当前配置无法生效 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-16 22:48:04 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 启用WAF < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "firewall.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 启用WAF之后 , 各项WAF设置才会生效 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e t r i c - c h a r t " , { p r o p s : [ " v - c h a r t " , " v - s t a t s " , " v - i t e m " ] , m o u n t e d : f u n c t i o n ( ) { t h i s . l o a d ( ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v S t a t s ; v a r   t ; 0 < ( e = n u l l = = e ? [ ] : e ) . l e n g t h & & ( ( t = e . $ s u m ( f u n c t i o n ( e , t ) { r e t u r n   t . v a l u e } ) ) < e [ 0 ] . t o t a l & & " p i e " = = t h i s . v C h a r t . t y p e & & e . p u s h ( { k e y s : [ " 其 他 " ] , v a l u e : e [ 0 ] . t o t a l - t , t o t a l : e [ 0 ] . t o t a l , t i m e : e [ 0 ] . t i m e } ) ) , ( e = 0 < t h i s . v C h a r t . m a x I t e m s ? e . s l i c e ( 0 , t h i s . v C h a r t . m a x I t e m s ) : e . s l i c e ( 0 , 1 0 ) ) . $ r s o r t ( f u n c t i o n ( e , t ) { r e t u r n   e . v a l u e - t . v a l u e } ) ; l e t   i = 1 0 0 ; r e t u r n   0 < t h i s . v C h a r t . w i d t h D i v & & ( i = 1 0 0 / t h i s . v C h a r t . w i d t h D i v ) , { c h a r t : t h i s . v C h a r t , s t a t s : e , i t e m : t h i s . v I t e m , w i d t h : i + " % " , c h a r t I d : " m e t r i c - c h a r t - " + t h i s . v C h a r t . i d , v a l u e T y p e N a m e : n u l l ! = t h i s . v I t e m & & n u l l ! = t h i s . v I t e m . v a l u e T y p e N a m e & & 0 < t h i s . v I t e m . v a l u e T y p e N a m e . l e n g t h ? t h i s . v I t e m . v a l u e T y p e N a m e : " " } } , m e t h o d s : { l o a d : f u n c t i o n ( ) { v a r   e = d o c u m e n t . g e t E l e m e n t B y I d ( t h i s . c h a r t I d ) ; n u l l = = e | | 0 = = e . o f f s e t W i d t h | | 0 = = e . o f f s e t H e i g h t ? s e t T i m e o u t ( t h i s . l o a d , 1 0 0 ) : t h i s . r e n d e r ( e ) } , r e n d e r : f u n c t i o n ( e ) { l e t   t = e c h a r t s . i n i t ( e ) ; s w i t c h ( w i n d o w . a d d E v e n t L i s t e n e r ( " r e s i z e " , f u n c t i o n ( ) { t . r e s i z e ( ) } ) , t h i s . c h a r t . t y p e ) { c a s e " p i e " : t h i s . r e n d e r P i e ( t ) ; b r e a k ; c a s e " b a r " : t h i s . r e n d e r B a r ( t ) ; b r e a k ; c a s e " t i m e B a r " : t h i s . r e n d e r T i m e B a r ( t ) ; b r e a k ; c a s e " t i m e L i n e " : t h i s . r e n d e r T i m e L i n e ( t ) ; b r e a k ; c a s e " t a b l e " : t h i s . r e n d e r T a b l e ( t ) } } , r e n d e r P i e : f u n c t i o n ( e ) { v a r   t = t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n { n a m e : e . k e y s [ 0 ] , v a l u e : e . v a l u e } } ) ; l e t   s = t h i s ; e . s e t O p t i o n ( { t o o l t i p : { s h o w : ! 0 , t r i g g e r : " i t e m " , f o r m a t t e r : f u n c t i o n ( e ) { e = s . s t a t s [ e . d a t a I n d e x ] ; l e t   t = 0 , i = ( 0 < e . t o t a l & & ( t = M a t h . r o u n d ( 1 0 0 * e . v a l u e / e . t o t a l * 1 0 0 ) / 1 0 0 ) , e . v a l u e ) ; s w i t c h ( s . i t e m . v a l u e T y p e ) { c a s e " b y t e " : i = t e a w e b . f o r m a t B y t e s ( i ) ; b r e a k ; c a s e " c o u n t " : i = t e a w e b . f o r m a t N u m b e r ( i ) } r e t u r n   e . k e y s [ 0 ] + " < b r / > " + s . v a l u e T y p e N a m e + " :   " + i + " < b r / > 占 比 : " + t + " % " } } , s e r i e s : [ { n a m e : n a m e , t y p e : " p i e " , d a t a : t , a r e a S t y l e : { } , c o l o r : [ " # 9 D D 3 E 8 " , " # B 2 D B 9 E " , " # F 3 9 4 9 4 " , " # F B D 8 8 A " , " # 8 7 9 B D 7 " ] } ] } ) } , r e n d e r T i m e B a r : f u n c t i o n ( e ) { t h i s . s t a t s . $ s o r t ( f u n c t i o n ( e , t ) { r e t u r n   e . t i m e < t . t i m e ? - 1 : 1 } ) ; l e t   t = t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . v a l u e } ) , i = { u n i t : " " , d i v i d e r : 1 } ; s w i t c h ( t h i s . i t e m . v a l u e T y p e ) { c a s e " c o u n t " : i = t e a w e b . c o u n t A x i s ( t , f u n c t i o n ( e ) { r e t u r n   e } ) ; b r e a k ; c a s e " b y t e " : i = t e a w e b . b y t e s A x i s ( t , f u n c t i o n ( e ) { r e t u r n   e } ) } l e t   s = t h i s ; e . s e t O p t i o n ( { x A x i s : { d a t a : t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   s . f o r m a t T i m e ( e . t i m e ) } ) } , y A x i s : { a x i s L a b e l : { f o r m a t t e r : f u n c t i o n ( e ) { r e t u r n   e + i . u n i t } } } , t o o l t i p : { s h o w : ! 0 , t r i g g e r : " i t e m " , f o r m a t t e r : f u n c t i o n ( e ) { e = s . s t a t s [ e . d a t a I n d e x ] ; l e t   t = e . v a l u e ; r e t u r n " b y t e " = = = s . i t e m . v a l u e T y p e & & ( t = t e a w e b . f o r m a t B y t e s ( t ) ) , s . f o r m a t T i m e ( e . t i m e ) + " :   " + t } } , g r i d : { l e f t : 5 0 , t o p : 1 0 , r i g h t : 2 0 , b o t t o m : 2 5 } , s e r i e s : [ { n a m e : n a m e , t y p e : " b a r " , d a t a : t . m a p ( f u n c t i o n ( e ) { r e t u r n   e / i . d i v i d e r } ) , i t e m S t y l e : { c o l o r : " # 9 D D 3 E 8 " } , a r e a S t y l e : { } , b a r W i d t h : " 2 0 e m " } ] } ) } , r e n d e r T i m e L i n e : f u n c t i o n ( e ) { t h i s . s t a t s . $ s o r t ( f u n c t i o n ( e , t ) { r e t u r n   e . t i m e < t . t i m e ? - 1 : 1 } ) ; l e t   t = t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . v a l u e } ) , i = { u n i t : " " , d i v i d e r : 1 } ; s w i t c h ( t h i s . i t e m . v a l u e T y p e ) { c a s e " c o u n t " : i = t e a w e b . c o u n t A x i s ( t , f u n c t i o n ( e ) { r e t u r n   e } ) ; b r e a k ; c a s e " b y t e " : i = t e a w e b . b y t e s A x i s ( t , f u n c t i o n ( e ) { r e t u r n   e } ) } l e t   s = t h i s ; e . s e t O p t i o n ( { x A x i s : { d a t a : t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   s . f o r m a t T i m e ( e . t i m e ) } ) } , y A x i s : { a x i s L a b e l : { f o r m a t t e r : f u n c t i o n ( e ) { r e t u r n   e + i . u n i t } } } , t o o l t i p : { s h o w : ! 0 , t r i g g e r : " i t e m " , f o r m a t t e r : f u n c t i o n ( e ) { e = s . s t a t s [ e . d a t a I n d e x ] ; l e t   t = e . v a l u e ; r e t u r n " b y t e " = = = s . i t e m . v a l u e T y p e & & ( t = t e a w e b . f o r m a t B y t e s ( t ) ) , s . f o r m a t T i m e ( e . t i m e ) + " :   " + t } } , g r i d : { l e f t : 5 0 , t o p : 1 0 , r i g h t : 2 0 , b o t t o m : 2 5 } , s e r i e s : [ { n a m e : n a m e , t y p e : " l i n e " , d a t a : t . m a p ( f u n c t i o n ( e ) { r e t u r n   e / i . d i v i d e r } ) , i t e m S t y l e : { c o l o r : " # 9 D D 3 E 8 " } , a r e a S t y l e : { } } ] } ) } , r e n d e r B a r : f u n c t i o n ( e ) { l e t   t = t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . v a l u e } ) , i = { u n i t : " " , d i v i d e r : 1 } ; s w i t c h ( t h i s . i t e m . v a l u e T y p e ) { c a s e " c o u n t " : i = t e a w e b . c o u n t A x i s ( t , f u n c t i o n ( e ) { r e t u r n   e } ) ; b r e a k ; c a s e " b y t e " : i = t e a w e b . b y t e s A x i s ( t , f u n c t i o n ( e ) { r e t u r n   e } ) } l e t   s = 2 4 , n = 0 ; v a r   o = t e a w e b . x R o t a t i o n ( e , t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . k e y s [ 0 ] } ) ) ; n u l l ! = o & & ( s = o [ 0 ] , n = o [ 1 ] ) ; l e t   a = t h i s ; i f ( e . s e t O p t i o n ( { x A x i s : { d a t a : t h i s . s t a t s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . k e y s [ 0 ] } ) , a x i s L a b e l : { i n t e r v a l : 0 , r o t a t e : n } } , t o o l t i p : { s h o w : ! 0 , t r i g g e r : " i t e m " , f o r m a t t e r : f u n c t i o n ( e ) { e = a . s t a t s [ e . d a t a I n d e x ] ; l e t   t = 0 , i = ( 0 < e . t o t a l & & ( t = M a t h . r o u n d ( 1 0 0 * e . v a l u e / e . t o t a l * 1 0 0 ) / 1 0 0 ) , e . v a l u e ) ; s w i t c h ( a . i t e m . v a l u e T y p e ) { c a s e " b y t e " : i = t e a w e b . f o r m a t B y t e s ( i ) ; b r e a k ; c a s e " c o u n t " : i = t e a w e b . f o r m a t N u m 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th > 对象 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th > 数值 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th > 占比 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t h e a d > ` , n = t h i s ; t h i s . s t a t s . f o r E a c h ( f u n c t i o n ( e ) { l e t   t = e . v a l u e , i = ( " b y t e " = = = n . i t e m . v a l u e T y p e & & ( t = t e a w e b . f o r m a t B y t e s ( t ) ) , s + = " < t r > < t d > " + e . k e y s [ 0 ] + " < / t d > < t d > " + t + " < / t d > " , 0 ) ; 0 < e . t o t a l & & ( i = M a t h . r o u n d ( 1 0 0 * e . v a l u e / e . t o t a l * 1 0 0 ) / 1 0 0 ) , s = s + ( ' < t d > < d i v   c l a s s = " u i   p r o g r e s s   b l u e " > < d i v   c l a s s = " b a r "   s t y l e = " m i n - w i d t h :   0 ;   h e i g h t :   4 p x ;   w i d t h :   ' + i + ' % " > < / d i v > < / d i v > ' + i ) + " % < / t d > < / t r > " } ) , s + = " < / t a b l e > " , d o c u m e n t . g e t E l e m e n t B y I d ( t h i s . c h a r t I d ) . i n n e r H T M L = s } , f o r m a t T i m e : f u n c t i o n ( e ) { i f ( n u l l = = e ) r e t u r n " " ; s w i t c h ( t h i s . i t e m . p e r i o d U n i t ) { c a s e " m o n t h " : c a s e " w e e k " : r e t u r n   e . s u b s t r i n g ( 0 , 4 ) + " - " + e . s u b s t r i n g ( 4 , 6 ) ; c a s e " d a y " : r e t u r n   e . s u b s t r i n g ( 0 , 4 ) + " - " + e . s u b s t r i n g ( 4 , 6 ) + " - " + e . s u b s t r i n g ( 6 , 8 ) ; c a s e " h o u r " : r e t u r n   e . s u b s t r i n g ( 0 , 4 ) + " - " + e . s u b s t r i n g ( 4 , 6 ) + " - " + e . s u b s t r i n g ( 6 , 8 ) + "   " + e . s u b s t r i n g ( 8 , 1 0 ) ; c a s e " m i n u t e " : r e t u r n   e . s u b s t r i n g ( 0 , 4 ) + " - " + e . s u b s t r i n g ( 4 , 6 ) + " - " + e . s u b s t r i n g ( 6 , 8 ) + "   " + e . s u b s t r i n g ( 8 , 1 0 ) + " : " + e . s u b s t r i n g ( 1 0 , 1 2 ) } r e t u r n   e } } , t e m p l a t e : ` < d i v   s t y l e = " f l o a t :   l e f t "   : s t y l e = " { ' w i d t h ' :   w i d t h } " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< h4 > { { chart . name } }  < span > ( { { valueTypeName } } ) < / s p a n > < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "height: 14em; padding-bottom: 1em; "  : id = "chartId"  : class = "{'scroll-box': chart.type == 'table'}" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e t r i c - b o a r d " , { t e m p l a t e : " < d i v > < s l o t > < / s l o t > < / d i v > " } ) , V u e . c o m p o n e n t ( " h t t p - c a c h e - c o n f i g - b o x " , { p r o p s : [ " v - c a c h e - 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 " , " v - c a c h e - p o l i c y " , " v - w e b - i d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C a c h e C o n f i g ; r e t u r n   n u l l = = ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , a d d S t a t u s H e a d e r : ! 0 , a d d A g e H e a d e r : ! 1 , e n a b l e C a c h e C o n t r o l M a x A g e : ! 1 , c a c h e R e f s : [ ] , p u r g e I s O n : ! 1 , p u r g e K e y : " " , d i s a b l e P o l i c y R e f s : ! 1 } : e ) . c a c h e R e f s & & ( e . c a c h e R e f s = [ ] ) , { c a c h e C o n f i g : e , m o r e O p t i o n s V i s i b l e : ! 1 , e n a b l e P o l i c y R e f s : ! e . d i s a b l e P o l i c y R e f s } } , w a t c h : { e n a b l e P o l i c y R e f s : f u n c t i o n ( e ) { t h i s . c a c h e C o n f i g . d i s a b l e P o l i c y R e f s = ! e } } , 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 a c h e C o n f i g . i s P r i o r ) & & t h i s . c a c h e C o n f i g . i s O n } , i s P l u s : f u n c t i o n ( ) { r e t u r n   T e a . V u e . t e a I s P l u s } , g e n e r a t e P u r g e K e y : f u n c t i o n ( ) { l e t   e = M a t h . r a n d o m ( ) . t o S t r i n g ( ) + M a t h . r a n d o m ( ) . t o S t r i n g ( ) , t = e . r e p l a c e ( / 0 \ . / g , " " ) . r e p l a c e ( / \ . / g , " " ) , i = " " ; f o r ( l e t   e = 0 ; e < t . l e n g t h ; e + + ) i + = S t r i n g . f r o m C h a r C o d e ( p a r s e I n t ( t . s u b s t r i n g ( e , e + 1 ) ) + ( M a t h . r a n d o m ( ) < . 5 ? " a " : " A " ) . c h a r C o d e A t ( 0 ) ) ; t h i s . c a c h e C o n f i g . p u r g e K e y = i } , s h o w M o r e O p t i o n s : 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 S t a l e : f u n c t i o n ( e ) { t h i s . c a c h e C o n f i g . s t a l e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "cacheJSON"  : value = "JSON.stringify(cacheConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "cacheConfig"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || cacheConfig.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "!vIsGroup" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 缓存策略 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "vCachePolicy != null" > { { vCachePolicy . name } }  < link - icon  : href = "'/servers/components/cache/policy?cachePolicyId=' + vCachePolicy.id" > < / l i n k - i c o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< p  class = "comment" > 使用当前服务所在集群的设置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< span  v - else  class = "red" > 当前集群没有设置缓存策略 , 当前配置无法生效 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-16 22:48:04 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 启用缓存 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "cacheConfig.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  colspan = "2" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "showMoreOptions" > < span  v - if = "moreOptionsVisible" > 收起选项 < / s p a n > < s p a n   v - e l s 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 = " { u p :   m o r e O p t i o n s V i s i b l e ,   d o w n : ! m o r e O p t i o n s V i s i b l e } " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && moreOptionsVisible" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-03 19:32:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 使用默认缓存条件 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "enablePolicyRefs" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中后使用系统中已经定义的默认缓存条件 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 09:54:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 添加X - Cache  Header < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "cacheConfig.addStatusHeader" > < / c h e c k b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 09:54:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中后自动在响应Header中增加 < code - label > X - Cache :  BYPASS | MISS | HIT | PURGE < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 添加Age  Header < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "cacheConfig.addAgeHeader" > < / c h e c k b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 08:23:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中后自动在响应Header中增加 < code - label > Age :  [ 存活时间秒数 ] < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 10:18:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 支持源站控制有效时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "cacheConfig.enableCacheControlMaxAge" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中后表示支持源站在Header中设置的 < code - label > Cache - Control :  max - age = [ 有效时间秒数 ] < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-17 14:17:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "color-border" > 允许PURGE < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "cacheConfig.purgeIsOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 允许使用PURGE方法清除某个URL缓存 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "cacheConfig.purgeIsOn" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-17 14:17:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "color-border" > PURGE  Key  * < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  maxlength = "200"  v - model = "cacheConfig.purgeKey" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > < a  href = ""  @ click . prevent = "generatePurgeKey" > [ 随机生成 ] < / a > 。 需 要 在 P U R G E 方 法 调 用 时 加 入 < c o d e - l a b e l > E d g e - P u r g e - K e y :   { { c a c h e C o n f i g . p u r g e K e y } } < / c o d e - l a b e l >   H e a d e r 。 只 能 包 含 字 符 、 数 字 、 下 划 线 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2021-12-17 14:17:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isOn() && moreOptionsVisible && isPlus()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< h4 > 过时缓存策略 < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< http - cache - stale - config  : v - cache - stale - config = "cacheConfig.stale"  @ change = "changeStale" > < / h t t p - c a c h e - s t a l e - c o n f i g > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "isOn()"  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< h4 > 缓存条件 < / h 4 > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< http - cache - refs - config - box  : v - cache - config = "cacheConfig"  : v - cache - refs = "cacheConfig.cacheRefs"  : v - web - id = "vWebId" > < / h t t p - c a c h e - r e f s - c o n f i g - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) ; l e t   d e f a u l t G e n e r a l H e a d e r s = [ " C a c h e - C o n t r o l " , " C o n n e c t i o n " , " D a t e " , " P r a g m a " , " T r a i l e r " , " T r a n s f e r - E n c o d i n g " , " U p g r a d e " , " V i a " , " W a r n i n g " ] ; f u n c t i o n   s o r t T a b l e ( n ) { l e t   e = d o c u m e n t . c r e a t e E l e m e n t ( " s c r i p t " ) ; e . s e t A t t r i b u t e ( " s r c " , " / j s / s o r t a b l e . m i n . j s " ) , e . a d d E v e n t L i s t e n e r ( " l o a d " , f u n c t i o n ( ) { l e t   s = d o c u m e n t . q u e r y S e l e c t o r ( " # s o r t a b l e - t a b l e " ) ; n u l l ! = s & & S o r t a b l e . c r e a t e ( s , { d r a g g a b l e : " t b o d y " , 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 = s . q u e r y S e l e c t o r A l l ( " t b o d y " ) , i = [ ] ; t . f o r E a c h ( f u n c t i o n ( e ) { i . p u s h ( p a r s e I n t ( e . g e t A t t r i b u t e ( " v - i d " ) ) ) } ) , n ( i ) } } ) } ) , d o c u m e n t . h e a d . a p p e n d C h i l d ( e ) } f u n c t i o n   s o r t L o a d ( e ) { l e t   t = d o c u m e n t . c r e a t e E l e m e n t ( " s c r i p t " ) ; t . s e t A t t r i b u t e ( " s r c " , " / j s / s o r t a b l e . m i n . j s " ) , t . a d d E v e n t L i s t e n e r ( " l o a d " , f u n c t i o n ( ) { " f u n c t i o n " = = t y p e o f   e & & e ( ) } ) , d o c u m e n t . h e a d . a p p e n d C h i l d ( t ) } f u n c t i o n   e m i t C l i c k ( e , a r g u m e n t s ) { l e t   t = [ " c l i c k " ] ; f o r ( l e t   e = 0 ; e < a r g u m e n t s . l e n g t h ; e + + ) t . p u s h ( a r g u m e n t s [ e ] ) ; e . $ e m i t . a p p l y ( e , t ) } V u e . c o m p o n e n t ( " h t t p - c o n d - g e n e r a l - h e a d e r - l e n g t h " , { p r o p s : [ " v - c h e c k p o i n t " ] , d a t a : f u n c t i o n ( ) { l e t   e = n u l l , t = n u l l ; v a r   i ; n u l l ! = w i n d o w . p a r e n t . U P D A T I N G _ R U L E & & ( n u l l ! = ( i = w i n d o w . p a r e n t . U P D A T I N G _ R U L E . c h e c k p o i n t O p t i o n s ) . h e a d e r s & & A r r a y . $ i s A r r a y ( i . h e a d e r s ) & & ( e = i . h e a d e r s ) , n u l l ! = i . l e n g t h & & ( t = i . l e n g t h ) ) , n u l l = = e & & ( e = d e f a u l t G e n e r a l H e a d e r s ) , n u l l = = t & & ( t = 1 2 8 ) ; l e t   s = t h i s ; r e t u r n   s e t T i m e o u t ( f u n c t i o n ( ) { s . c h a n g e ( ) } , 1 0 0 ) , { h e a d e r s : e , l e n g t h : t } } , w a t c h : { l e n g t h : 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 ) ? 0 : t ) < 0 & & ( t = 0 ) , t h i s . l e n g t h = t , t h i s . c h a n g e ( ) } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . v C h e c k p o i n t . o p t i o n s = [ { c o d e : " h e a d e r s " , v a l u e : t h i s . h e a d e r s } , { c o d e : " l e n g t h " , v a l u e : t h i s . l e n g t h } ] } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 通用Header列表 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< values - box  : values = "headers"  : placeholder = "'Header'"  @ change = "change" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > 需要检查的Header列表 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > Header值超出长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  name = ""  style = "width: 5em"  v - model = "length"  maxlength = "6" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label" > 字节 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 超出此长度认为匹配成功 , 0 表示不限制 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - c h e c k p o i n t - c c " , { p r o p s : [ " v - c h e c k p o i n t " ] , d a t a : f u n c t i o n ( ) { l e t   e = [ ] , t = 6 0 , i = 1 e 3 , s = { } , n = ( n u l l = = ( s = n u l l ! = w i n d o w . p a r e n t . U P D A T I N G _ R U L E ? w i n d o w . p a r e n t . U P D A T I N G _ R U L E . c h e c k p o i n t O p t i o n s : s ) & & ( s = { } ) , 0 = = ( e = n u l l ! = s . k e y s ? s . k e y s : e ) . l e n g t h & & ( e = [ " $ { r e m o t e A d d r } " , " $ { r e q u e s t P a t h } " ] ) , n u l l ! = s . p e r i o d & & ( t = s . p e r i o d ) , n u l l ! = s . t h r e s h o l d & & ( i = s . t h r e s h o l d ) , t h i s ) ; r e t u r n   s e t T i m e o u t ( f u n c t i o n ( ) { n . c h a n g e ( ) } , 1 0 0 ) , { k e y s : e , p e r i o d : t , t h r e s h o l d : i , o p t i o n s : { } , v a l u e : i } } , w a t c h : { p e r i o d : f u n c t i o n ( ) { t h i s . c h a n g e ( ) } , t h r e s h o l d : f u n c t i o n ( ) { t h i s . c h a n g e ( ) } } , m e t h o d s : { c h a n g e K e y s : f u n c t i o n ( e ) { t h i s . k e y s = e , t h i s . c h a n g e ( ) } , c h a n g e : f u n c t i o n ( ) { l e t   e = p a r s e I n t ( t h i s . p e r i o d . t o S t r i n g ( ) ) , t = ( ( i s N a N ( e ) | | e < = 0 ) & & ( e = 6 0 ) , p a r s e I n t ( t h i s . t h r e s h o l d . t o S t r i n g ( ) ) ) ; ( i s N a N ( t ) | | t < = 0 ) & & ( t = 1 e 3 ) , t h i s . v a l u e = t , t h i s . v C h e c k p o i n t . o p t i o n s = [ { c o d e : " k e y s " , v a l u e : t h i s . k e y s } , { c o d e : " p e r i o d " , v a l u e : e } , { c o d e : " t h r e s h o l d " , v a l u e : t } ] } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "operator"  value = "gt" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "value"  : value = "value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 统计对象组合  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< metric - keys - config - box  : v - keys = "keys"  @ change = "changeKeys" > < / m e t r i c - k e y s - c o n f i g - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 统计周期  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "period"  style = "width: 6em"  maxlength = "8" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 阈值  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "threshold"  style = "width: 6em"  maxlength = "8" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - c h e c k p o i n t - r e f e r e r - b l o c k " , { p r o p s : [ " v - c h e c k p o i n t " ] , d a t a : f u n c t i o n ( ) { l e t   e = ! 0 , t = ! 0 , i = [ ] , s = { } , n = ( " b o o l e a n " = = t y p e o f ( s = n u l l = = ( s = n u l l ! = w i n d o w . p a r e n t . U P D A T I N G _ R U L E ? w i n d o w . p a r e n t . U P D A T I N G _ R U L E . c h e c k p o i n t O p t i o n s : s ) ? { } : s ) . a l l o w E m p t y & & ( e = s . a l l o w E m p t y ) , " b o o l e a n " = = t y p e o f   s . a l l o w S a m e D o m a i n & & ( t = s . a l l o w S a m e D o m a i n ) , n u l l ! = s . a l l o w D o m a i n s & & " o b j e c t " = = t y p e o f   s . a l l o w D o m a i n s & & ( i = s . a l l o w D o m a i n s ) , t h i s ) ; r e t u r n   s e t T i m e o u t ( f u n c t i o n ( ) { n . c h a n g e ( ) } , 1 0 0 ) , { a l l o w E m p t y : e , a l l o w S a m e D o m a i n : t , a l l o w D o m a i n s : i , o p t i o n s : { } , v a l u e : 0 } } , w a t c h : { a l l o w E m p t y : f u n c t i o n ( ) { t h i s . c h a n g e ( ) } , a l l o w S a m e D o m a i n : f u n c t i o n ( ) { t h i s . c h a n g e ( ) } } , m e t h o d s : { c h a n g e A l l o w D o m a i n s : f u n c t i o n ( e ) { t h i s . a l l o w D o m a i n s = e , t h i s . c h a n g e ( ) } , c h a n g e : f u n c t i o n ( ) { t h i s . v C h e c k p o i n t . o p t i o n s = [ { c o d e : " a l l o w E m p t y " , v a l u e : t h i s . a l l o w E m p t y } , { c o d e : " a l l o w S a m e D o m a i n " , v a l u e : t h i s . a l l o w S a m e D o m a i n } , { c o d e : " a l l o w D o m a i n s " , v a l u e : t h i s . a l l o w D o m a i n s } ] } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "operator"  value = "eq" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "value"  : value = "value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 来源域名允许为空 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "allowEmpty" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > 允许不带来源的访问 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 来源域名允许一致 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "allowSameDomain" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 允许来源域名和当前访问的域名一致 , 相当于在站内访问 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 允许的来源域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< values - box  : values = "allowDomains"  @ change = "changeAllowDomains" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 允许的来源域名列表 , 比如 < code - label > example . com < / c o d e - l a b e l > 、 < c o d e - l a b e l > * . e x a m p l e . c o m < / 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 > 表 示 允 许 所 有 域 名 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-18 14:32:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - a c c e s s - l o g - p a r t i t i o n s - b o x " , { p r o p s : [ " v - p a r t i t i o n " , " v - d a 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 / l o g s / p a r t i t i o n D a t a " ) . p a r a m s ( { d a y : t h i s . v D a y } ) . s u c c e s s ( f u n c t i o n ( e ) { t . p a r t i t i o n s = [ ] , e . d a t a . p a r t i t i o n s . r e v e r s e ( ) . f o r E a c h ( f u n c t i o n ( e ) { t . p a r t i t i o n s . p u s h ( { c o d e : e , i s D i s a b l e d : ! 1 } ) } ) , 0 < t . p a r t i t i o n s . l e n g t h & & ( n u l l = = t . v P a r t i t i o n | | t . v P a r t i t i o n < 0 ) & & ( t . s e l e c t e d P a r t i t i o n = t . p a r t i t i o n s [ 0 ] . c o d e ) } ) . p o s t ( ) } , d a t a : f u n c t i o n ( ) { r e t u r n { p a r t i t i o n s : [ ] , s e l e c t e d P a r t i t i o n : t h i s . v P a r t i t i o n } } , m e t h o d s : { u r l : f u n c t i o n ( e ) { l e t   t = w i n d o w . l o c a t i o n . t o S t r i n g ( ) ; r e t u r n   0 < ( t = ( t = ( t = ( t = t . r e p l a c e ( / \ ? p a r t i t i o n = - ? \ d + / , " ? " ) ) . r e p l a c e ( / \ ? r e q u e s t I d = - ? \ d + / , " ? " ) ) . r e p l a c e ( / & p a r t i t i o n = - ? \ d + / , " " ) ) . r e p l a c e ( / & r e q u e s t I d = - ? \ d + / , " " ) ) . i n d e x O f ( " ? " ) ? t + = " & p a r t i t i o n = " + e : t + = " ? p a r t i t i o n = " + e , t } , d i s a b l e : f u n c t i o n ( t ) { t h i s . p a r t i t i o n s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( e . i s D i s a b l e d = ! 0 ) } ) } } , t e m p l a t e : ` < d i v   v - i f = " p a r t i t i o n s . l e n g t h   >   1 " > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 16:40:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui divider"  style = "margin-bottom: 0" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui menu text small blue"  style = "margin-bottom: 0; margin-top: 0" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-18 14:32:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  v - for = "(p, index) in partitions"  : href = "url(p.code)"  class = "item"  : class = "{active: selectedPartition == p.code, disabled: p.isDisabled}" > 分表 { { p . code + 1 } }  & nbsp ;  & nbsp ;  < span  class = "disabled"  v - if = "index != partitions.length - 1" > | < / s p a n > < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 16:40:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui divider"  style = "margin-top: 0" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c a c h e - r e f s - c o n f i g - b o x " , { p r o p s : [ " v - c a c h e - r e f s " , " v - c a c h e - c o n f i g " , " v - c a c h e - p o l i c y - i d " , " v - w e b - i d " ] , m o u n t e d : f u n c t i o n ( ) { l e t   s = t h i s ; s o r t T a b l e ( f u n c t i o n ( e ) { l e t   i = [ ] ; e . f o r E a c h ( f u n c t i o n ( t ) { s . r e f s . f o r E a c h ( f u n c t i o n ( e ) { e . i d = = t & & i . p u s h ( e ) } ) } ) , s . u p d a t e R e f s ( i ) , s . c h a n g e ( ) } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C a c h e R e f s , t = ( n u l l = = e & & ( e = [ ] ) , 0 ) ; r e t u r n   e . f o r E a c h ( f u n c t i o n ( e ) { t + + , e . i d = t } ) , { r e f s : e , i d : t } } , m e t h o d s : { a d d R e f : f u n c t i o n ( e ) { w i n d o w . U P D A T I N G _ C A C H E _ R E F = n u l l ; l e t   t = w i n d o w . i n n e r W i d t h , i = ( 1 0 2 4 < t & & ( t = 1 0 2 4 ) , w i n d o w . i n n e r H e i g h t ) , n = ( 5 0 0 < i & & ( i = 5 0 0 ) , t h i s ) ; 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 / c a c h e / c r e a t e P o p u p ? i s R e v e r s e = " + ( e ? 1 : 0 ) , { w i d t h : t + " p x " , h e i g h t : i + " p x " , c a l l b a c k : f u n c t i o n ( e ) { l e t   s = e . d a t a . c a c h e R e f ; i f ( n u l l ! = s . c o n d s ) { i f ( n . i d + + , s . i d = n . i d , s . i s R e v e r s e ) { l e t   t = [ ] , i = ! 1 ; n . r e f s . f o r E a c h ( f u n c t i o n ( e ) { e . i s R e v e r s e | | i | | ( t . p u s h ( s ) , i = ! 0 ) , t . p u s h ( e ) } ) , i | | t . p u s h ( s ) , n . u p d a t e R e f s ( t ) } e l s e   n . r e f s . p u s h ( s ) ; n . c h a n g e ( ) } } } ) } , u p d a t e R e f : f u n c t i o n ( t , e ) { w i n d o w . U P D A T I N G _ C A C H E _ R E F = e ; l e t   i = w i n d o w . i n n e r W i d t h , s = ( 1 0 2 4 < i & & ( i = 1 0 2 4 ) , w i n d o w . i n n e r H e i g h t ) , n = ( 5 0 0 < s & & ( s = 5 0 0 ) , t h i s ) ; 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 / c a c h e / c r e a t e P o p u p " , { w i d t h : i + " p x " , h e i g h t : s + " p x " , c a l l b a c k : f u n c t i o n ( e ) { e . d a t a . c a c h e R e f . i d = n . r e f s [ t ] . i d , V u e . s e t ( n . r e f s , t , e . d a t a . c a c h e R e f ) , n . c h a n g e ( ) } } ) } , d i s a b l e R e f : f u n c t i o n ( e ) { e . i s O n = ! 1 , t h i s . c h a n g e ( ) } , e n a b l e R e f : f u n c t i o n ( e ) { e . i s O n = ! 0 , t h i s . c h a n g e ( ) } , r e m o v e R e f : 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 e f s . $ r e m o v e ( e ) , t . c h a n g e ( ) } ) } , u p d a t e R e f s : f u n c t i o n ( e ) { t h i s . r e f s = e , n u l l ! = t h i s . v C a c h e C o n f i g & & ( t h i s . v C a c h e C o n f i g . c a c h e R e f s = e ) } , t i m e U n i t N a m e : f u n c t i o n ( e ) { s w i t c h ( e ) { c a s e " m s " : r e t u r n " 毫 秒 " ; c a s e " s e c o n d " : r e t u r n " 秒 " ; c a s e " m i n u t e " : r e t u r n " 分 钟 " ; c a s e " h o u r " : r e t u r n " 小 时 " ; c a s e " d a y " : r e t u r n " 天 " ; c a s e " w e e k " : r e t u r n " 周   " } r e t u r n   e } , c h a n g e : f u n c t i o n ( ) { n u l l ! = t h i s . v C a c h e P o l i c y I d & & 0 < t h i s . v C a c h e P o l i c y I d ? 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 / c a c h e / u p d a t e R e f s " ) . p a r a m s ( { c a c h e P o l i c y I d : t h i s . v C a c h e P o l i c y I d , r e f s J S O N : J S O N . s t r i n g i f y ( t h i s . r e f s ) } ) . p o s t ( ) : n u l l ! = t h i s . v W e b I d & & 0 < t h i s . v W e b I d & & 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 / c a c h e / u p d a t e R e f s " ) . p a r a m s ( { w e b I d : t h i s . v W e b I d , r e f s J S O N : J S O N . s t r i n g i f y ( t h i s . r e f s ) } ) . s u c c e s s ( f u n c t i o n ( e ) { e . d a t a . i s U p d a t e d & & t e a w e b . s u c c e s s T o a s t ( " 保 存 成 功 " ) } ) . p o s t ( ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "refsJSON"  : value = "JSON.stringify(refs)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< p  class = "comment"  v - if = "refs.length == 0" > 暂时还没有缓存条件 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table selectable celled"  v - show = "refs.length > 0"  id = "sortable-table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  style = "width:1em" > < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > 缓存条件 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "two wide" > 分组关系 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "width10" > 缓存时间 < / t h > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th  class = "three op" > 操作 < / t h > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t h e a d > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tbody  v - for = "(cacheRef, index) in refs"  : key = "cacheRef.id"  : v - id = "cacheRef.id" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  style = "text-align: center;" > < i  class = "icon bars handle grey" > < / i >   < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  : class = "{'color-border': cacheRef.conds.connector == 'and', disabled: !cacheRef.isOn}"  : style = "{'border-left':cacheRef.isReverse ? '1px #db2828 solid' : ''}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< http - request - conds - view  : v - conds = "cacheRef.conds"  ref = "cacheRef"  : class = "{disabled: !cacheRef.isOn}" > < / h t t p - r e q u e s t - c o n d s - v i e w > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.minSize != null && cacheRef.minSize.count > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { cacheRef . minSize . count } } { { cacheRef . minSize . unit } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "cacheRef.maxSize != null && cacheRef.maxSize.count > 0" > -  { { cacheRef . maxSize . count } } { { cacheRef . maxSize . unit } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / g r e y - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - else - if = "cacheRef.maxSize != null && cacheRef.maxSize.count > 0" > 0  -  { { cacheRef . maxSize . count } } { { cacheRef . maxSize . unit } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.methods != null && cacheRef.methods.length > 0" > { { cacheRef . methods . join ( ", " ) } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.expiresTime != null && cacheRef.expiresTime.isPrior && cacheRef.expiresTime.isOn" > Expires < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														< grey - label  v - if = "cacheRef.status != null && cacheRef.status.length > 0 && (cacheRef.status.length > 1 || cacheRef.status[0] != 200)" > 状态码 : { { cacheRef . status . map ( function ( v )  { return  v . toString ( ) } ) . join ( ", " ) } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-04 17:00:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< grey - label  v - if = "cacheRef.allowPartialContent" > 区间缓存 < / g r e y - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  : class = "{disabled: !cacheRef.isOn}" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "cacheRef.conds.connector == 'and'" > 和 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "cacheRef.conds.connector == 'or'" > 或 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  : class = "{disabled: !cacheRef.isOn}" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "!cacheRef.isReverse" > { { cacheRef . life . count } }  { { timeUnitName ( cacheRef . life . unit ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - else  class = "red" > 不缓存 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "updateRef(index, cacheRef)" > 修改 < / a >   & n b s p ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 20:49:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  v - if = "cacheRef.isOn"  @ click . prevent = "disableRef(cacheRef)" > 暂停 < / a > < a   h r e f = " "   v - i f = " ! c a c h e R e f . i s O n "   @ c l i c k . p r e v e n t = " e n a b l e R e f ( c a c h e R e f ) " > < s p a n   c l a s s = " r e d " > 恢 复 < / s p a n > < / a >   & n b s p ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  href = ""  @ click . prevent = "removeRef(index)" > 删除 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< p  class = "comment"  v - if = "refs.length > 1" > 所有条件匹配顺序为从上到下 , 可以拖动左侧的 < i  class = "icon bars" > < / i > 排 序 。 服 务 设 置 的 优 先 级 比 全 局 缓 存 策 略 设 置 的 优 先 级 要 高 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 10:46:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  @ click . prevent = "addRef(false)"  type = "button" > + 添加缓存设置 < / b u t t o n >   & n b s p ;   & n b s p ;   < a   h r e f = " "   @ c l i c k . p r e v e n t = " a d d R e f ( t r u e ) " > + 添 加 不 缓 存 设 置 < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " o r i g i n - l i s t - b o x " , { p r o p s : [ " v - p r i m a r y - o r i g i n s " , " v - b a c k u p - o r i g i n s " , " v - s e r v e r - t y p e " , " v - p a r a m s " ] , d a t a : f u n c t i o n ( ) { r e t u r n { p r i m a r y O r i g i n s : t h i s . v P r i m a r y O r i g i n s , b a c k u p O r i g i n s : t h i s . v B a c k u p O r i g i n s } } , m e t h o d s : { c r e a t e P r i m a r y O r i g i n : f u n c t i o n ( ) { 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 / o r i g i n s / a d d P o p u p ? o r i g i n T y p e = p r i m a r y & " + t h i s . v P a r a m s , { h e i g h t : " 2 7 e m " , c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 保 存 成 功 " , f u n c t i o n ( ) { w i n d o w . l o c a t i o n . r e l o a d ( ) } ) } } ) } , c r e a t e B a c k u p O r i g i n : f u n c t i o n ( ) { 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 / o r i g i n s / a d d P o p u p ? o r i g i n T y p e = b a c k u p & " + t h i s . v P a r a m s , { h e i g h t : " 2 7 e m " , c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 保 存 成 功 " , f u n c t i o n ( ) { w i n d o w . l o c a t i o n . r e l o a d ( ) } ) } } ) } , u p d a t e O r i g i n : 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 / o r i g i n s / u p d a t e P o p u p ? o r i g i n T y p e = " + t + " & " + t h i s . v P a r a m s + " & o r i g i n I d = " + e , { h e i g h t : " 2 7 e m " , c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 保 存 成 功 " , f u n c t i o n ( ) { w i n d o w . l o c a t i o n . r e l o a d ( ) } ) } } ) } , d e l e t e O r i g i n : f u n c t i o n ( e , t ) { l e t   i = 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 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 / o r i g i n s / d e l e t e ? " + i . v P a r a m s + " & o r i g i n I d = " + e + " & o r i g i n T y p e = " + t ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( ) { t e a w e b . s u c c e s s ( " 删 除 成 功 " , f u n c t i o n ( ) { w i n d o w . l o c a t i o n . r e l o a d ( ) } ) } ) } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< h3 > 主要源站  < a  href = ""  @ click . prevent = "createPrimaryOrigin()" > [ 添加主要源站 ] < / a >   < / h 3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment"  v - if = "primaryOrigins.length == 0" > 暂时还没有主要源站 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< origin - list - table  v - if = "primaryOrigins.length > 0"  : v - origins = "vPrimaryOrigins"  : v - origin - type = "'primary'"  @ deleteOrigin = "deleteOrigin"  @ updateOrigin = "updateOrigin" > < / o r i g i n - l i s t - t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< h3 > 备用源站  < a  href = ""  @ click . prevent = "createBackupOrigin()" > [ 添加备用源站 ] < / a > < / h 3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment"  v - if = "backupOrigins.length == 0"  : v - origins = "primaryOrigins" > 暂时还没有备用源站 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< origin - list - table  v - if = "backupOrigins.length > 0"  : v - origins = "backupOrigins"  : v - origin - type = "'backup'"  @ deleteOrigin = "deleteOrigin"  @ updateOrigin = "updateOrigin" > < / o r i g i n - l i s t - t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " o r i g i n - l i s t - t a b l e " , { p r o p s : [ " v - o r i g i n s " , " v - o r i g i n - t y p e " ] , d a t a : f u n c t i o n ( ) { r e t u r n { } } , m e t h o d s : { d e l e t e O r i g i n : f u n c t i o n ( e ) { t h i s . $ e m i t ( " d e l e t e O r i g i n " , e , t h i s . v O r i g i n T y p e ) } , u p d a t e O r i g i n : f u n c t i o n ( e ) { t h i s . $ e m i t ( " u p d a t e O r i g i n " , e , t h i s . v O r i g i n T y p e ) } } , t e m p l a t e : ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th > 源站地址 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th > 权重 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th  class = "width10" > 状态 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< th  class = "two op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - for = "origin in vOrigins" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-05 15:23:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  : class = "{disabled:!origin.isOn}" > < a  href = ""  @ click . prevent = "updateOrigin(origin.id)" > { { origin . addr } }  & nbsp ; < i  class = "icon expand small" > < / i > < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-17 19:59:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  style = "margin-top: 0.3em"  v - if = "origin.name.length > 0 || origin.hasCert || (origin.host != null && origin.host.length > 0) || (origin.domains != null && origin.domains.length > 0)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tiny - basic - label  v - if = "origin.name.length > 0" > { { origin . name } } < / t i n y - b a s i c - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tiny - basic - label  v - if = "origin.hasCert" > 证书 < / t i n y - b a s i c - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tiny - basic - label  v - if = "origin.host != null && origin.host.length > 0" > 主机名 :  { { origin . host } } < / t i n y - b a s i c - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "origin.domains != null && origin.domains.length > 0" > < tiny - basic - label  v - for = "domain in origin.domains" > 匹配 :  { { domain } } < / t i n y - b a s i c - l a b e l > < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 20:04:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  : class = "{disabled:!origin.isOn}" > { { origin . weight } } < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< label - on  : v - is - on = "origin.isOn" > < / l a b e l - o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "updateOrigin(origin.id)" > 修改 < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "deleteOrigin(origin.id)" > 删除 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "firewallPolicy == null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "count > 0" > < a  href = ""  @ click . prevent = "select" > [ 选择已有策略 ] < / a >   & n b s p ;   & n b s p ;   < / s p a n > < a   h r e f = " "   @ c l i c k . p r e v e n t = " c r e a t e " > [ 创 建 新 策 略 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - w e b s o c k e t - b o x " , { p r o p s : [ " v - w e b s o c k e t - r e f " , " v - w e b s o c k e t - 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 " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v W e b s o c k e t R e f , t = ( n u l l = = e & & ( e = { i s P r i o r : ! 1 , i s O n : ! 1 , w e b s o c k e t I d : 0 } ) , t h i s . v W e b s o c k e t C o n f i g ) ; r e t u r n   n u l l = = t ? t = { i d : 0 , i s O n : ! 1 , h a n d s h a k e T i m e o u t : { c o u n t : 3 0 , u n i t : " s e c o n d " } , a l l o w A l l O r i g i n s : ! 0 , a l l o w e d O r i g i n s : [ ] , r e q u e s t S a m e O r i g i n : ! 0 , r e q u e s t O r i g i n : " " } : ( n u l l = = t . h a n d s h a k e T i m e o u t & & ( t . h a n d s h a k e T i m e o u t = { c o u n t : 3 0 , u n i t : " s e c o n d " } ) , n u l l = = t . a l l o w e d O r i g i n s & & ( t . a l l o w e d O r i g i n s = [ ] ) ) , { w e b s o c k e t R e f : e , w e b s o c k e t C o n f i g : t , h a n d s h a k e T i m e o u t C o u n t S t r i n g : t . h a n d s h a k e T i m e o u t . c o u n t . t o S t r i n g ( ) , a d v a n c e d V i s i b l e : ! 1 } } , w a t c h : { h a n d s h a k e T i m e o u t C o u n t S t r i n g : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; ! i s N a N ( e ) & & 0 < = e ? t h i s . w e b s o c k e t C o n f i g . h a n d s h a k e T i m e o u t . c o u n t = e : t h i s . w e b s o c k e t C o n f i g . h a n d s h a k e T i m e o u t . c o u n t = 0 } } , 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 . w e b s o c k e t R e f . i s P r i o r ) & & t h i s . w e b s o c k e t R e f . i s O n } , 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 ( e ) { t h i s . a d v a n c e d V i s i b l e = e } , c r e a t e O r i g i n : 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 / s e r v e r / s e t t i n g s / w e b s o c k e t / c r e a t e O r i g i n " , { h e i g h t : " 1 2 . 5 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . w e b s o c k e t C o n f i g . a l l o w e d O r i g i n s . p u s h ( e . d a t a . o r i g i n ) } } ) } , r e m o v e O r i g i n : f u n c t i o n ( e ) { t h i s . w e b s o c k e t C o n f i g . a l l o w e d O r i g i n s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "websocketRefJSON"  : value = "JSON.stringify(websocketRef)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "websocketJSON"  : value = "JSON.stringify(websocketConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "websocketRef"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "((!vIsLocation && !vIsGroup) || websocketRef.isPrior)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用配置 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "websocketRef.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td  class = "color-border" > 允许所有来源域 < em > ( Origin ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "websocketConfig.allowAllOrigins" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中表示允许所有的来源域 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && !websocketConfig.allowAllOrigins" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td  class = "color-border" > 允许的来源域列表 < em > ( Origin ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "websocketConfig.allowedOrigins.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui label tiny"  v - for = "(origin, index) in websocketConfig.allowedOrigins" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { origin } }  < a  href = ""  title = "删除"  @ click . prevent = "removeOrigin(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "createOrigin()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 只允许在列表中的来源域名访问Websocket服务 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeAdvancedVisible"  v - show = "isOn()" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && advancedVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "color-border" > 是否传递请求来源域 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "websocketConfig.requestSameOrigin" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 选中表示把接收到的请求中的 < span  class = "ui label tiny" > Origin < / s p a n > 字 段 传 递 到 源 站 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && advancedVisible && !websocketConfig.requestSameOrigin" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "color-border" > 指定传递的来源域 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "websocketConfig.requestOrigin"  maxlength = "200" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 指定向源站传递的 < span  class = "ui label tiny" > Origin < / s p a n > 字 段 值 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  TODO  这个选项暂时保留  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && false" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td > 握手超时时间 < em > ( Handshake ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< input  type = "text"  maxlength = "10"  v - model = "handshakeTimeoutCountString"  style = "width:6em" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															秒 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 0 表示使用默认的时间设置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e w r i t e - r u l e - l i s t " , { p r o p s : [ " v - w e b - i d " , " v - r e w r i t e - r u l e s " ] , m o u n t e d : f u n c t i o n ( ) { s e t T i m e o u t ( t h i s . s o r t , 1 e 3 ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e w r i t e R u l e s ; r e t u r n { r e w r i t e R u l e s : e = n u l l = = e ? [ ] : e } } , m e t h o d s : { u p d a t e R e w r i t e R u l e : 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 / r e w r i t e / u p d a t e P o p u p ? w e b I d = " + t h i s . v W e b I d + " & r e w r i t e R u l e I d = " + e , { 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 ( ) { w i n d o w . l o c a t i o n . r e l o a d ( ) } } ) } , d e l e t e R e w r i t 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 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 / r e w r i t e / d e l e t e " ) . p a r a m s ( { w e b I d : t . v W e b I d , r e w r i t e R u l e I d : e } ) . p o s t ( ) . r e f r e s h ( ) } ) } , s o r t : f u n c t i o n ( ) { i f ( 0 ! = t h i s . r e w r i t e R u l e s . l e n g t h ) { l e t   t = t h i s ; s o r t T a b l e ( f u n c t i o n ( e ) { 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 / r e w r i t e / s o r t " ) . p o s t ( ) . p a r a m s ( { w e b I d : t . v W e b I d , r e w r i t e R u l e I d s : e } ) . s u c c e s s ( f u n c t i o n ( ) { t e a w e b . s u c c e s s ( " 保 存 成 功 " ) } ) } ) } } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment"  v - if = "rewriteRules.length == 0" > 暂时还没有重写规则 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable"  v - if = "rewriteRules.length > 0"  id = "sortable-table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  style = "width:1em" > < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th > 匹配规则 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th > 转发目标 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th > 转发方式 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  class = "two wide" > 状态 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  class = "two op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - for = "rule in rewriteRules"  : v - id = "rule.id" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < i  class = "icon bars grey handle" > < / i > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > { { rule . pattern } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< br / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< http - rewrite - labels - label  class = "ui label tiny"  v - if = "rule.isBreak" > BREAK < / h t t p - r e w r i t e - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< http - rewrite - labels - label  class = "ui label tiny"  v - if = "rule.mode == 'redirect' && rule.redirectStatus != 307" > { { rule . redirectStatus } } < / h t t p - r e w r i t e - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< http - rewrite - labels - label  class = "ui label tiny"  v - if = "rule.proxyHost.length > 0" > Host :  { { rule . proxyHost } } < / h t t p - r e w r i t e - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > { { rule . replace } } < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "rule.mode == 'proxy'" > 隐式 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "rule.mode == 'redirect'" > 显示 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label - on  : v - is - on = "rule.isOn" > < / l a b e l - o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "updateRewriteRule(rule.id)" > 修改 < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "deleteRewriteRule(rule.id)" > 删除 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment"  v - if = "rewriteRules.length > 0" > 拖动左侧的 < i  class = "icon bars grey" > < / i > 图 标 可 以 对 重 写 规 则 进 行 排 序 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e w r i t e - l a b e l s - l a b e l " , { p r o p s : [ " v - c l a s s " ] , t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   t i n y "   : c l a s s = " v C l a s s "   s t y l e = " f o n t - s i z e : 0 . 7 e m ; p a d d i n g : 4 p x ; m a r g i n - t o p : 0 . 3 e m ; m a r g i n - b o t t o m : 0 . 3 e m " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " s e r v e r - n a m e - b o x " , { p r o p s : [ " v - s e r v e r - n a m e s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v S e r v e r N a m e s ; r e t u r n { s e r v e r N a m e s : e = n u l l = = e ? [ ] : e , i s S e a r c h i n g : ! 1 , k e y w o r d : " " } } , m e t h o d s : { a d d S e r v e r N a m e : f u n c t i o n ( ) { w i n d o w . U P D A T I N G _ S E R V E R _ N A M 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 / a d d S e r v e r N a m e P o p u p " , { c a l l b a c k : f u n c t i o n ( e ) { e = e . d a t a . s e r v e r N a m e ; t . s e r v e r N a m e s . p u s h ( e ) } } ) } , r e m o v e S e r v e r N a m e : f u n c t i o n ( e ) { t h i s . s e r v e r N a m e s . $ r e m o v e ( e ) } , u p d a t e S e r v e r N a m 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 _ S E R V E R _ N A M 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 / a d d S e r v e r N a m e P o p u p " , { c a l l b a c k : f u n c t i o n ( e ) { e = e . d a t a . s e r v e r N a m e ; V u e . s e t ( i . s e r v e r N a m e s , t , e ) } } ) } , s h o w S e a r c h B o x : f u n c t i o n ( ) { i f ( t h i s . i s S e a r c h i n g = ! t h i s . i s S e a r c h i n g , t h i s . i s S e a r c h i n g ) { l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . k e y w o r d R e f . f o c u s ( ) } , 2 0 0 ) } e l s e   t h i s . k e y w o r d = " " } } , w a t c h : { k e y w o r d : f u n c t i o n ( i ) { t h i s . s e r v e r N a m e s . f o r E a c h ( f u n c t i o n ( e ) { i f ( 0 = = i . l e n g t h ) e . i s S h o w i n g = ! 0 ; e l s e   i f ( n u l l = = e . s u b N a m e s | | 0 = = e . s u b N a m e s . l e n g t h ) t e a w e b . m a t c h ( e . n a m e , i ) | | ( e . i s S h o w i n g = ! 1 ) ; e l s e { l e t   t = ! 1 ; e . s u b N a m e s . f o r E a c h ( f u n c t i o n ( e ) { t e a w e b . m a t c h ( e , i ) & & ( t = ! 0 ) } ) , e . i s S h o w i n g = t } } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "serverNames"  : value = "JSON.stringify(serverNames)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "serverNames.length > 0" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-14 16:58:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "(serverName, index) in serverNames"  class = "ui label small basic"  : class = "{hidden: serverName.isShowing === false}" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< em  v - if = "serverName.type != 'full'" > { { serverName . type } } < / e m >     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "serverName.subNames == null || serverName.subNames.length == 0"  : class = "{disabled: serverName.isShowing === false}" > { { serverName . name } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - else  : class = "{disabled: serverName.isShowing === false}" > { { serverName . subNames [ 0 ] } } 等 { { serverName . subNames . length } } 个域名 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "修改"  @ click . prevent = "updateServerName(index, serverName)" > < i  class = "icon pencil small" > < / i > < / a >   < a   h r e f = " "   t i t l e = " 删 除 "   @ c l i c k . p r e v e n t = " r e m o v e S e r v e r N a m e ( i n d e x ) " > < i   c l a s s = " i c o n   r e m o v e " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									    < div  class = "ui field" > < a  href = ""  @ click . prevent = "addServerName()" > [ 添加域名绑定 ] < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									    < div  class = "ui field"  v - if = "serverNames.length > 0" > < span  class = "grey" > | < / s p a n >   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									    < div  class = "ui field"  v - if = "serverNames.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									        < a  href = ""  @ click . prevent = "showSearchBox()"  v - if = "!isSearching" > < i  class = "icon search small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									        < a  href = ""  @ click . prevent = "showSearchBox()"  v - if = "isSearching" > < i  class = "icon close small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < div  class = "ui field"  v - if = "isSearching" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < input  type = "text"  placeholder = "搜索域名"  ref = "keywordRef"  class = "ui input tiny"  v - model = "keyword" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c a c h e - s t a l e - c o n f i g " , { p r o p s : [ " v - c a c h e - s t a l e - 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 a c h e S t a l e 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 P r i o r : ! 1 , i s O n : ! 1 , s t a t u s : [ ] , s u p p o r t S t a l e I f E r r o r H e a d e r : ! 0 , l i f e : { c o u n t : 1 , u n i t : " d a y " } } : e } } , w a t c h : { c o n f i g : { d e e p : ! 0 , h a n d l e r : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . c o n f i g ) } } } , m e t h o d s : { } , t e m p l a t e : ` < t a b l e   c l a s s = " u i   t a b l e   d e f i n i t i o n   s e l e c t a b l e " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-17 14:17:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 启用过时缓存 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "config.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > < plus - label > < / p l u s - l a b e l > 选 中 后 , 在 更 新 缓 存 失 败 后 会 尝 试 读 取 过 时 的 缓 存 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-17 14:17:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr  v - show = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 有效期 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< time - duration - box  : v - value = "config.life" > < / t i m e - d u r a t i o n - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 缓存在过期之后 , 仍然保留的时间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr  v - show = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > < http - status - box  : v - status - list = "config.status" > < / h t t p - s t a t u s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 在这些状态码出现时使用过时缓存 , 默认支持 < code - label > 50 x < / c o d e - l a b e l > 状 态 码 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr  v - show = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 支持stale - if - error < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "config.supportStaleIfErrorHeader" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 选中后 , 支持在Cache - Control中通过 < code - label > stale - if - error < / c o d e - l a b e l > 指 定 过 时 缓 存 有 效 期 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /table>`}),Vue.component("domains-box",{props:["v-domains"],data:function(){let e=this.vDomains;return{domains:e=null==e?[]:e,isAdding:!1,addingDomain:""}},methods:{add:function(){this.isAdding=!0;let e=this;setTimeout(function(){e.$refs.addingDomain.focus()},100)},confirm:function(){let t=this;if(this.addingDomain=this.addingDomain.replace(/ \ s / g , "" ) , 0 == this . addingDomain . length ) teaweb . warn ( "请输入要添加的域名" , function ( ) { t . $refs . addingDomain . focus ( ) } ) ; else { if ( "~" == this . addingDomain [ 0 ] ) { var  e = this . addingDomain . substring ( 1 ) ; try { new  RegExp ( e ) } catch ( e ) { return  void  teaweb . warn ( "正则表达式错误:" + e . message , function ( ) { t . $refs . addingDomain . focus ( ) } ) } } this . domains . push ( this . addingDomain ) , this . cancel ( ) } } , remove : function ( e ) { this . domains . $remove ( e ) } , cancel : function ( ) { this . isAdding = ! 1 , this . addingDomain = "" } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "domainsJSON"  : value = "JSON.stringify(domains)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "domains.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label small basic"  v - for = "(domain, index) in domains" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "domain.length > 0 && domain[0] == '~'"  class = "grey"  style = "font-style: normal" > [ 正则 ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "domain.length > 0 && domain[0] == '.'"  class = "grey"  style = "font-style: normal" > [ 后缀 ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "domain.length > 0 && domain[0] == '*'"  class = "grey"  style = "font-style: normal" > [ 泛域名 ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { domain } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											& nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "addingDomain"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  ref = "addingDomain"  placeholder = "*.xxx.com"  size = "30" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												& nbsp ;  < a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< p  class = "comment" > 支持普通域名 ( < code - label > example . com < / c o d e - l a b e l > ) 、 泛 域 名 ( < c o d e - l a b e l > * . e x a m p l e . c o m < / c o d e - l a b e l > ) 、 域 名 后 缀 ( 以 点 号 开 头 , 如 < c o d e - l a b e l > . e x a m p l e . c o m < / c o d e - l a b e l > ) 和 正 则 表 达 式 ( 以 波 浪 号 开 头 , 如 < c o d e - l a b e l > ~ . * . e x a m p l e . c o m < / c o d e - l a b e l > ) 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 0.5em"  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e d i r e c t - t o - h t t p s - b o x " , { p r o p s : [ " v - r e d i r e c t - t o - h t t p s - c o n f i g " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e d i r e c t T o H t t p s C o n f i g ; r e t u r n   n u l l = = e ? e = { i s P r i o r : ! 1 , i s O n : ! 1 , h o s t : " " , p o r t : 0 , s t a t u s : 0 , o n l y D o m a i n s : [ ] , e x c e p t D o m a i n s : [ ] } : ( n u l l = = e . o n l y D o m a i n s & & ( e . o n l y D o m a i n s = [ ] ) , n u l l = = e . e x c e p t D o m a i n s & & ( e . e x c e p t D o m a i n s = [ ] ) ) , { r e d i r e c t T o H t t p s C o n f i g : e , p o r t S t r i n g : 0 < e . p o r t ? e . p o r t . t o S t r i n g ( ) : " " , m o r e O p t i o n s V i s i b l e : ! 1 , s t a t u s O p t i o n s : [ { c o d e : 3 0 1 , t e x t : " M o v e d   P e r m a n e n t l y " } , { c o d e : 3 0 8 , t e x t : " P e r m a n e n t   R e d i r e c t " } , { c o d e : 3 0 2 , t e x t : " F o u n d " } , { c o d e : 3 0 3 , t e x t : " S e e   O t h e r " } , { c o d e : 3 0 7 , t e x t : " T e m p o r a r y   R e d i r e c t " } ] } } , w a t c h : { " r e d i r e c t T o H t t p s C o n f i g . s t a t u s " : f u n c t i o n ( ) { t h i s . r e d i r e c t T o H t t p s C o n f i g . s t a t u s = p a r s e I n t ( t h i s . r e d i r e c t T o H t t p s C o n f i g . s t a t u s ) } , p o r t S t r i n g : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; i s N a N ( e ) ? t h i s . r e d i r e c t T o H t t p s C o n f i g . p o r t = 0 : t h i s . r e d i r e c t T o H t t p s C o n f i g . p o r t = e } } , m e t h o d s : { c h a n g e M o r e O p t i o n s : f u n c t i o n ( e ) { t h i s . m o r e O p t i o n s V i s i b l e = e } , c h a n g e O n l y D o m a i n s : f u n c t i o n ( e ) { t h i s . r e d i r e c t T o H t t p s C o n f i g . o n l y D o m a i n s = e , t h i s . $ f o r c e U p d a t e ( ) } , c h a n g e E x c e p t D o m a i n s : f u n c t i o n ( e ) { t h i s . r e d i r e c t T o H t t p s C o n f i g . e x c e p t D o m a i n s = e , t h i s . $ f o r c e U p d a t e ( ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "redirectToHTTPSJSON"  : value = "JSON.stringify(redirectToHttpsConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  Location  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition"  v - if = "vIsLocation" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "redirectToHttpsConfig" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "redirectToHttpsConfig.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 自动跳转到HTTPS < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "redirectToHttpsConfig.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 开启后 , 所有HTTP的请求都会自动跳转到对应的HTTPS  URL上 , < more - options - angle  @ change = "changeMoreOptions" > < / m o r e - o p t i o n s - a n g l e > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													<!--   TODO  如果已经设置了特殊设置 , 需要在界面上显示  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< table  class = "ui table"  v - show = "moreOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td  class = "title" > 状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< select  class = "ui dropdown auto-width"  v - model = "redirectToHttpsConfig.status" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< option  value = "0" > [ 使用默认 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< option  v - for = "option in statusOptions"  : value = "option.code" > { { option . code } }  { { option . text } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 域名或IP地址 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "text"  name = "host"  v - model = "redirectToHttpsConfig.host" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< p  class = "comment" > 默认和用户正在访问的域名或IP地址一致 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 端口 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "text"  name = "port"  v - model = "portString"  maxlength = "5"  style = "width:6em" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< p  class = "comment" > 默认端口为443 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  非Location  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "!vIsLocation" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "checkbox"  v - model = "redirectToHttpsConfig.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< p  class = "comment" > 开启后 , 所有HTTP的请求都会自动跳转到对应的HTTPS  URL上 , < more - options - angle  @ change = "changeMoreOptions" > < / m o r e - o p t i o n s - a n g l e > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										<!--   TODO  如果已经设置了特殊设置 , 需要在界面上显示  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table"  v - show = "moreOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "redirectToHttpsConfig.status" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "0" > [ 使用默认 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "option in statusOptions"  : value = "option.code" > { { option . code } }  { { option . text } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 跳转后域名或IP地址 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  name = "host"  v - model = "redirectToHttpsConfig.host" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 默认和用户正在访问的域名或IP地址一致 , 不填写就表示使用当前的域名 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 端口 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  name = "port"  v - model = "portString"  maxlength = "5"  style = "width:6em" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 默认端口为443 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 允许的域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  : values = "redirectToHttpsConfig.onlyDomains"  @ change = "changeOnlyDomains" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 如果填写了允许的域名 , 那么只有这些域名可以自动跳转 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 排除的域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  : values = "redirectToHttpsConfig.exceptDomains"  @ change = "changeExceptDomains" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 如果填写了排除的域名 , 那么这些域名将不跳转 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - a c t i o n s - b o x " , { p r o p s : [ " v - a c t i o n s " , " v - f i r e w a l l - p o l i c y " , " v - a c t i o n - c o n f i g s " ] , m o u n t e d : f u n c t i o n ( ) { l e t   o = t h i s ; T e a . a c t i o n ( " / s e r v e r s / i p l i s t s / l e v e l O p t i o n s " ) . s u c c e s s ( f u n c t i o n ( e ) { o . i p L i s t L e v e l s = e . d a t a . l e v e l s } ) . p o s t ( ) , t h i s . l o a d J S ( f u n c t i o n ( ) { l e t   n = d o c u m e n t . g e t E l e m e n t B y I d ( " a c t i o n s - b o x " ) ; S o r t a b l e . c r e a t e ( n , { d r a g g a b l e : " . l a b e l " , 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 . c a n c e l ( ) } , o n U p d a t e : f u n c t i o n ( e ) { l e t   t = n . g e t E l e m e n t s B y C l a s s N a m e ( " l a b e l " ) , i = [ ] ; f o r ( l e t   e = 0 ; e < t . l e n g t h ; e + + ) { v a r   s = p a r s e I n t ( t [ e ] . g e t A t t r i b u t e ( " d a t a - i n d e x " ) ) ; i . p u s h ( o . c o n f i g s [ s ] ) } o . c o n f i g s = i } } ) } ) } , d a t a : f u n c t i o n ( ) { n u l l = = t h i s . v F i r e w a l l P o l i c y . i n b o u n d & & ( t h i s . v F i r e w a l l P o l i c y . i n b o u n d = { } ) , n u l l = = t h i s . v F i r e w a l l P o l i c y . i n b o u n d . g r o u p s & & ( t h i s . v F i r e w a l l P o l i c y . i n b o u n d . g r o u p s = [ ] ) ; l e t   t = 0 , e = [ ] ; n u l l ! = t h i s . v A c t i o n C o n f i g s & & ( e = t h i s . v A c t i o n C o n f i g s ) . f o r E a c h ( f u n c t i o n ( e ) { e . i d = t + + } ) ; v a r   i = ` < ! D O C T Y P E   h t m l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< html > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< title > 403  Forbidden < / t i t l e > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< body > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< h1 > 403  Forbidden < / h 1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< address > Request  ID :  \ $ { requestId } . < / a d d r e s s > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / h t m l > ` ; r e t u r n { i d : t , a c t i o n s : t h i s . v A c t i o n s , c o n f i g s : e , i s A d d i n g : ! 1 , e d i t i n g I n d e x : - 1 , a c t i o n : n u l l , a c t i o n C o d e : " " , a c t i o n O p t i o n s : { } , i p L i s t L e v e l s : [ ] , b l o c k T i m e o u t : " " , b l o c k S c o p e : " g l o b a l " , c a p t c h a L i f e : " " , c a p t c h a M a x F a i l s : " " , c a p t c h a F a i l B l o c k T i m e o u t : " " , g e t 3 0 2 L i f e : " " , p o s t 3 0 7 L i f e : " " , r e c o r d I P T y p e : " b l a c k " , r e c o r d I P L e v e l : " c r i t i c a l " , r e c o r d I P T i m e o u t : " " , r e c o r d I P L i s t I d : 0 , r e c o r d I P L i s t N a m e : " " , t a g T a g s : [ ] , p a g e S t a t u s : 4 0 3 , p a g e B o d y : i , d e f a u l t P a g e B o d y : i , g o G r o u p N a m e : " " , g o G r o u p I d : 0 , g o G r o u p : n u l l , g o S e t I d : 0 , g o S e t N a m e : " " } } , w a t c h : { a c t i o n C o d e : f u n c t i o n ( i ) { t h i s . a c t i o n = t h i s . a c t i o n s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e = = i } ) , t h i s . a c t i o n O p t i o n s = { } } , b l o c k T i m e o u t : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . t i m e o u t = 0 : t h i s . a c t i o n O p t i o n s . t i m e o u t = e } , b l o c k S c o p e : f u n c t i o n ( e ) { t h i s . a c t i o n O p t i o n s . s c o p e = e } , c a p t c h a L i f e : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . l i f e = 0 : t h i s . a c t i o n O p t i o n s . l i f e = e } , c a p t c h a M a x F a i l s : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . m a x F a i l s = 0 : t h i s . a c t i o n O p t i o n s . m a x F a i l s = e } , c a p t c h a F a i l B l o c k T i m e o u t : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . f a i l B l o c k T i m e o u t = 0 : t h i s . a c t i o n O p t i o n s . f a i l B l o c k T i m e o u t = e } , g e t 3 0 2 L i f e : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . l i f e = 0 : t h i s . a c t i o n O p t i o n s . l i f e = e } , p o s t 3 0 7 L i f e : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . l i f e = 0 : t h i s . a c t i o n O p t i o n s . l i f e = e } , r e c o r d I P T y p e : f u n c t i o n ( e ) { t h i s . r e c o r d I P L i s t I d = 0 } , r e c o r d I P T i m e o u t : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , i s N a N ( e ) ? t h i s . a c t i o n O p t i o n s . t i m e o u t = 0 : t h i s . a c t i o n O p t i o n s . t i m e o u t = e } , g o G r o u p I d : f u n c t i o n ( i ) { v a r   e = t h i s . v F i r e w a l l P o l i c y . i n b o u n d . g r o u p s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . i d = = i } ) ; t h i s . g o G r o u p = e , t h i s . g o G r o u p N a m e = n u l l = = e ? " " : e . n a m e , t h i s . g o S e t I d = 0 , t h i s . g o S e t N a m e = " " } , g o S e t I d : f u n c t i o n ( i ) { v a r   e ; n u l l ! = t h i s . g o G r o u p & & ( n u l l = = ( e = t h i s . g o G r o u p . s e t s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . i d = = i } ) ) ? ( t h i s . g o S e t I d = 0 , t h i s . g o S e t N a m e = " " ) : t h i s . g o S e t N a m e = e . n a m e ) } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . a c t i o n = n u l l , t h i s . a c t i o n C o d e = " b l o c k " , t h i s . i s A d d i n g = ! 0 , t h i s . a c t i o n O p t i o n s = { } , t h i s . b l o c k T i m e o u t = " " , t h i s . b l o c k S c o p e = " g l o b a l " , t h i s . c a p t c h a L i f e = " " , t h i s . c a p t c h a M a x F a i l s = " " , t h i s . c a p t c h a F a i l B l o c k T i m e o u t = " " , t h i s . g e t 3 0 2 L i f e = " " , t h i s . p o s t 3 0 7 L i f e = " " , t h i s . r e c o r d I P L e v e l = " c r i t i c a l " , t h i s . r e c o r d I P T y p e = " b l a c k " , t h i s . r e c o r d I P T i m e o u t = " " , t h i s . r e c o r d I P L i s t I d = 0 , t h i s . r e c o r d I P L i s t N a m e = " " , t h i s . t a g T a g s = [ ] , t h i s . p a g e S t a t u s = 4 0 3 , t h i s . p a g e B o d y = t h i s . d e f a u l t P a g e B o d y , t h i s . g o G r o u p N a m e = " " , t h i s . g o G r o u p I d = 0 , t h i s . g o G r o u p = n u l l , t h i s . g o S e t I d = 0 , t h i s . g o S e t N a m e = " " ; l e t   i = t h i s ; t h i s . a c t i o n = t h i s . v A c t i o n s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e = = i . a c t i o n C o d e } ) , t h i s . s c r o l l ( ) } , r e m o v e : f u n c t i o n ( e ) { t h i s . i s A d d i n g = ! 1 , t h i s . e d i t i n g I n d e x = - 1 , t h i s . c o n f i g s . $ r e m o v e ( e ) } , u p d a t e : f u n c t i o n ( e , i ) { i f ( t h i s . i s A d d i n g & & t h i s . e d i t i n g I n d e x = = e ) t h i s . c a n c e l ( ) ; e l s e { s w i t c h ( t h i s . a d d ( ) , t h i s . i s A d d i n g = ! 0 , t h i s . e d i t i n g I n d e x = e , t h i s . a c t i o n C o d e = i . c o d e , i . c o d e ) { c a s e " b l o c k " : t h i s . b l o c k T i m e o u t = " " , ( n u l l ! = i . o p t i o n s . t i m e o u t | | 0 < i . o p t i o n s . t i m e o u t ) & & ( t h i s . b l o c k T i m e o u t = i . o p t i o n s . t i m e o u t . t o S t r i n g ( ) ) , n u l l ! = i . o p t i o n s . s c o p e & & 0 < i . o p t i o n s . s c o p e . l e n g t h ? t h i s . b l o c k S c o p e = i . o p t i o n s . s c o p e : t h i s . b l o c k S c o p e = " g l o b a l " ; b r e a k ; c a s e " a l l o w " : c a s e " l o g " : b r e a k ; c a s e " c a p t c h a " : t h i s . c a p t c h a L i f e = " " , ( n u l l ! = i . o p t i o n s . l i f e | | 0 < i . o p t i o n s . l i f e ) & & ( t h i s . c a p t c h a L i f e = i . o p t i o n s . l i f e . t o S t r i n g ( ) ) , t h i s . c a p t c h a M a x F a i l s = " " , ( n u l l ! = i . o p t i o n s . m a x F a i l s | | 0 < i . o p t i o n s . m a x F a i l s ) & & ( t h i s . c a p t c h a M a x F a i l s = i . o p t i o n s . m a x F a i l s . t o S t r i n g ( ) ) , t h i s . c a p t c h a F a i l B l o c k T i m e o u t = " " , ( n u l l ! = i . o p t i o n s . f a i l B l o c k T i m e o u t | | 0 < i . o p t i o n s . f a i l B l o c k T i m e o u t ) & & ( t h i s . c a p t c h a F a i l B l o c k T i m e o u t = i . o p t i o n s . f a i l B l o c k T i m e o u t . t o S t r i n g ( ) ) ; b r e a k ; c a s e " n o t i f y " : b r e a k ; c a s e " g e t _ 3 0 2 " : t h i s . g e t 3 0 2 L i f e = " " , ( n u l l ! = i . o p t i o n s . l i f e | | 0 < i . o p t i o n s . l i f e ) & & ( t h i s . g e t 3 0 2 L i f e = i . o p t i o n s . l i f e . t o S t r i n g ( ) ) ; b r e a k ; c a s e " p o s t _ 3 0 7 " : t h i s . p o s t 3 0 7 L i f e = " " , ( n u l l ! = i . o p t i o n s . l i f e | | 0 < i . o p t i o n s . l i f e ) & & ( t h i s . p o s t 3 0 7 L i f e = i . o p t i o n s . l i f e . t o S t r i n g ( ) ) ; b r e a k ; c a s e " r e c o r d _ i p " : i f ( n u l l ! = i . o p t i o n s ) { t h i s . r e c o r d I P L e v e l = i . o p t i o n s . l e v e l , t h i s . r e c o r d I P T y p e = i . o p t i o n s . t y p e , 0 < i . o p t i o n s . t i m e o u t & & ( t h i s . r e c o r d I P T i m e o u t = i . o p t i o n s . t i m e o u t . t o S t r i n g ( ) ) ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . r e c o r d I P L i s t I d = i . o p t i o n s . i p L i s t I d , e . r e c o r d I P L i s t N a m e = i . o p t i o n s . i p L i s t N a m e } ) } b r e a k ; c a s e " t a g " : t h i s . t a g T a g s = [ ] , n u l l ! = i . o p t i o n s . t a g s & & ( t h i s . t a g T a g s = i . o p t i o n s . t a g s ) ; b r e a k ; c a s e " p a g e " : t h i s . p a g e S t a t u s = 4 0 3 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "actionsJSON"  : value = "JSON.stringify(configs)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "configs.length > 0"  style = "margin-bottom: 0.5em"  id = "actions-box" >  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "(config, index) in configs"  : data - index = "index"  : key = "config.id"  class = "ui label small basic"  : class = "{blue: index == editingIndex}"  style = "margin-bottom: 0.4em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { config . name } }  < span  class = "small" > ( { { config . code . toUpperCase ( ) } } ) < / s p a n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  block  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'block' && config.options.timeout > 0" > : 有效期 { { config . options . timeout } } 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  captcha  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'captcha' && config.options.life > 0" > : 有效期 { { config . options . life } } 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  get  302  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'get_302' && config.options.life > 0" > : 有效期 { { config . options . life } } 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  post  307  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'post_307' && config.options.life > 0" > : 有效期 { { config . options . life } } 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  record _ip  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'record_ip'" > : { { config . options . ipListName } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  tag  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'tag'" > : { { config . options . tags . join ( ", " ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  page  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'page'" > : [ { { config . options . status } } ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  go _group  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'go_group'" > : { { config . options . groupName } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  go _set  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< span  v - if = "config.code == 'go_set'" > : { { config . options . groupName } }  /  { { config . options . setName } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  范围  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "config.options.scope != null && config.options.scope.length > 0"  class = "small grey" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												& nbsp ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "config.options.scope == 'global'" > [ 所有服务 ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "config.options.scope == 'service'" > [ 当前服务 ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  操作按钮  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											 & nbsp ;  < a  href = ""  title = "修改"  @ click . prevent = "update(index, config)" > < i  class = "icon pencil small" > < / i > < / a >   & n b s p ;   < a   h r e f = " "   t i t l e = " 删 除 "   @ c l i c k . p r e v e n t = " r e m o v e ( i n d e x ) " > < i   c l a s s = " i c o n   r e m o v e   s m a l l " > < / i > < / a >   & n b s p ;   < a   h r e f = " "   t i t l e = " 拖 动 改 变 顺 序 " > < i   c l a s s = " i c o n   b a r s   h a n d l e " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-bottom: 0.5em"  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table"  : class = "{blue: editingIndex > -1}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 动作类型  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "actionCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "action in actions"  : value = "action.code" > { { action . name } }  ( { { action . code . toUpperCase ( ) } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment"  v - if = "action != null && action.description.length > 0" > { { action . description } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  block  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'block'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 封锁时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 5em"  maxlength = "9"  v - model = "blockTimeout"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'block'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 封锁范围 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "blockScope" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "service" > 当前服务 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "global" > 所有服务 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-14 16:24:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment"  v - if = "blockScope == 'service'" > 只封锁用户对当前网站服务的访问 , 其他服务不受影响 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment"  v - if = "blockScope =='global'" > 封锁用户对所有网站服务的访问 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  captcha  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'captcha'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 有效时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 5em"  maxlength = "9"  v - model = "captchaLife"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 验证通过后在这个时间内不再验证 , 默认600秒 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-16 16:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'captcha'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 最多失败次数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 5em"  maxlength = "9"  v - model = "captchaMaxFails"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 次 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 如果为空或者为0 , 表示不限制 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'captcha'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 失败拦截时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 5em"  maxlength = "9"  v - model = "captchaFailBlockTimeout"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 在达到最多失败次数 ( 大于0 ) 时 , 自动拦截的时间 ; 如果为0表示不自动拦截 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  get _302  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'get_302'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 有效时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 5em"  maxlength = "9"  v - model = "get302Life"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 验证通过后在这个时间内不再验证 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  post _307  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'post_307'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 有效时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 5em"  maxlength = "9"  v - model = "post307Life"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 验证通过后在这个时间内不再验证 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  record _ip  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'record_ip'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > IP名单类型  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "recordIPType" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "black" > 黑名单 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "white" > 白名单 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'record_ip'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 选择IP名单  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "recordIPListId > 0"  class = "ui label basic small" > { { recordIPListName } }  < a  href = ""  @ click . prevent = "removeRecordIPList" > < i  class = "icon remove small" > < / i > < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  type = "button"  class = "ui button tiny"  @ click . prevent = "selectRecordIPList" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 如不选择 , 则自动添加到当前策略的IP名单中 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'record_ip'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 级别 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "recordIPLevel" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "level in ipListLevels"  : value = "level.code" > { { level . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'record_ip'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 超时时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-05 15:54:22 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  style = "width: 6em"  maxlength = "9"  v - model = "recordIPTimeout"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 0 表示不超时 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  tag  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'tag'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 标签  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  @ change = "changeTags"  : values = "tagTags" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  page  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'page'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 状态码  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < input  type = "text"  style = "width: 4em"  maxlength = "3"  v - model = "pageStatus" / > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'page'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 网页内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< textarea  v - model = "pageBody" > < / t e x t a r e a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  规则分组  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'go_group'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 下一个分组  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "goGroupId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "0" > [ 选择分组 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "group in vFirewallPolicy.inbound.groups"  : value = "group.id" > { { group . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  规则集  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'go_set'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 下一个分组  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "goGroupId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "0" > [ 选择分组 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "group in vFirewallPolicy.inbound.groups"  : value = "group.id" > { { group . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "actionCode == 'go_set' && goGroup != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 下一个规则集  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "goSetId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "0" > [ 选择规则集 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "set in goGroup.sets"  : value = "set.id" > { { set . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  @ click . prevent = "cancel"  title = "取消" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 系统总是会先执行记录日志 、 标签等不会修改请求的动作 , 再执行阻止 、 验证码等可能改变请求的动作 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - a u t h - c o n f i g - b o x " , { p r o p s : [ " v - a u t h - c o n f i g " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v A u t h C o n f i g ; r e t u r n   n u l l = = ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 } : e ) . p o l i c y R e f s & & ( e . p o l i c y R e f s = [ ] ) , { a u t h C o n f i g : e } } , 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 . a u t h C o n f i g . i s P r i o r ) & & t h i s . a u t h C o n f i g . i s O n } , a d d : 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 / s e r v e r / s e t t i n g s / a c c e s s / c r e a t e P o p u p " , { c a l l b a c k : f u n c t i o n ( e ) { t . a u t h C o n f i g . p o l i c y R e f s . p u s h ( e . d a t a . p o l i c y R e f ) } , h e i g h t : " 2 8 e m " } ) } , u p d a t e : 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 / a c c e s s / u p d a t e P o p u p ? p o l i c y I d = " + t , { c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 保 存 成 功 " , f u n c t i o n ( ) { t e a w e b . r e l o a d ( ) } ) } , h e i g h t : " 2 8 e m " } ) } , r e m o v e : f u n c t i o n ( e ) { t h i s . a u t h C o n f i g . p o l i c y R e f s . $ r e m o v e ( e ) } , m e t h o d N a m e : f u n c t i o n ( e ) { s w i t c h ( e ) { c a s e " b a s i c A u t h " : r e t u r n " B a s i c A u t h " ; c a s e " s u b R e q u e s t " : r e t u r n " 子 请 求 " } r e t u r n " " } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< input  type = "hidden"  name = "authJSON"  : value = "JSON.stringify(authConfig)" / >  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< prior - checkbox  : v - config = "authConfig"  v - if = "vIsLocation" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "!vIsLocation || authConfig.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 启用认证 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "checkbox"  v - model = "authConfig.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								<!--  认证方式  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< h4 > 认证方式 < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable celled"  v - show = "authConfig.policyRefs.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  class = "three wide" > 名称 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  class = "three wide" > 认证方法 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th > 参数 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  class = "two wide" > 状态 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< th  class = "two op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - for = "(ref, index) in authConfig.policyRefs"  : key = "ref.authPolicyId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > { { ref . authPolicy . name } } < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													{ { methodName ( ref . authPolicy . type ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "ref.authPolicy.type == 'basicAuth'" > { { ref . authPolicy . params . users . length } } 个用户 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "ref.authPolicy.type == 'subRequest'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "ref.authPolicy.params.method.length > 0"  class = "grey" > [ { { ref . authPolicy . params . method } } ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														{ { ref . authPolicy . params . url } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label - on  : v - is - on = "ref.authPolicy.isOn" > < / l a b e l - o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "update(index, ref.authPolicyId)" > 修改 < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "remove(index)" > 删除 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< button  class = "ui button small"  type = "button"  @ click . prevent = "add" > + 添加认证方式 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " u s e r - s e l e c t o r " , { 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 / u s e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . u s e r s = e . d a t a . u s e r s } ) } , p r o p s : [ " v - u s e r - i d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v U s e r I d ; r e t u r n { u s e r s : [ ] , u s e r I d : e = n u l l = = e ? 0 : e } } , w a t c h : { u s e r I d : f u n c t i o n ( e ) { t h i s . $ e m i t ( " c h a n g e " , e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown auto-width"  name = "userId"  v - model = "userId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  value = "0" > [ 选择用户 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  v - for = "user in users"  : value = "user.id" > { { user . fullname } }  ( { { user . username } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " u a m - c o n f i g - b o x " , { p r o p s : [ " v - u a m - 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 U a m 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 } : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 21:25:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< input  type = "hidden"  name = "uamJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 11:37:55 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  class = "title" > 启用5秒盾 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 21:25:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< checkbox  v - model = "config.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:47:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > < plus - label > < / p l u s - l a b e l > 启 用 后 , 访 问 网 站 时 , 自 动 检 查 浏 览 器 环 境 , 阻 止 非 正 常 访 问 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 21:25:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / 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 ) , s = ( 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 } ) , [ ] ) , n = [ ] ; 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 & & ( s = 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 & & ( n = 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 : s , r e q u e s t D e l e t i n g H e a d e r s : n , 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-15 09:56:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "type"  : value = "type" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  请求  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "(vIsLocation || vIsGroup) && type == 'request'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "requestHeaderJSON"  : value = "JSON.stringify(requestHeaderRef)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< prior - checkbox  : v - config = "requestHeaderRef" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< submit - btn > < / s u b m i t - b t n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "((!vIsLocation && !vIsGroup) || requestHeaderRef.isPrior) && type == 'request'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "vHasGroupRequestConfig" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        	< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								        	< 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment"  v - if = "requestSettingHeaders.length == 0" > 暂时还没有Header 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< table  class = "ui table selectable celled"  v - if = "requestSettingHeaders.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< th > 名称 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< th > 值 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< th  class = "two op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr  v - for = "header in requestSettingHeaders" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-15 09:56:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< 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.methods != null && header.methods.length > 0" > < grey - label  v - for = "method in header.methods"  : 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< 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 a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< h3 > 删除请求Header < / h 3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 	 	 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  响应  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "(vIsLocation || vIsGroup) && type == 'response'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "responseHeaderJSON"  : value = "JSON.stringify(responseHeaderRef)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< prior - checkbox  : v - config = "responseHeaderRef" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< submit - btn > < / s u b m i t - b t n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "((!vIsLocation && !vIsGroup) || responseHeaderRef.isPrior) && type == 'response'" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "vHasGroupResponseConfig" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        	< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								        	< 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< 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" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< th > 名称 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< th > 值 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< th  class = "two op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr  v - for = "header in responseSettingHeaders" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-15 09:56:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< 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.methods != null && header.methods.length > 0" > < grey - label  v - for = "method in header.methods"  : 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< 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 a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< h3 > 删除响应Header < / h 3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 	 	 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-27 17:06:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 合并重复的路径分隔符 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "checkbox"  name = "mergeSlashes"  value = "1"  v - model = "config.mergeSlashes" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 合并URL中重复的路径分隔符为一个 , 比如 < code - label > //hello/world</code-label>中的<code-label>//</code-label>。</p>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c a c h e - p o l i c y - s e l e c t o r " , { p r o p s : [ " v - c a c h e - 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 / c a c h e / 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 , c a c h e P o l i c y : t h i s . v C a c h e 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 . c a c h e 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 / c a c h e / 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 . c a c h e P o l i c y = e . d a t a . c a c h e 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 / c a c h e / 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 . c a c h e P o l i c y = e . d a t a . c a c h e P o l i c y } } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "cachePolicy != null"  class = "ui label basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "cachePolicyId"  : value = "cachePolicy.id" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										{ { cachePolicy . name } }  & nbsp ;  < a  : href = "'/servers/components/cache/policy?cachePolicyId=' + cachePolicy.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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "cachePolicy == null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "count > 0" > < a  href = ""  @ click . prevent = "select" > [ 选择已有策略 ] < / a >   & n b s p ;   & n b s p ;   < / s p a n > < a   h r e f = " "   @ c l i c k . p r e v e n t = " c r e a t e " > [ 创 建 新 策 略 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - p a g e s - a n d - s h u t d o w n - b o x " , { p r o p s : [ " v - p a g e s " , " v - s h u t d o w n - c o n f i g " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = [ ] , t = ( n u l l ! = t h i s . v P a g e s & & ( e = t h i s . v P a g e s ) , { i s P r i o r : ! 1 , i s O n : ! 1 , b o d y T y p e : " u r l " , u r l : " " , b o d y : " " , s t a t u s : 0 } ) , i = ( n u l l ! = t h i s . v S h u t d o w n C o n f i g & & ( n u l l = = t h i s . v S h u t d o w n C o n f i g . b o d y & & ( t h i s . v S h u t d o w n C o n f i g . b o d y = " " ) , n u l l = = t h i s . v S h u t d o w n C o n f i g . b o d y T y p e & & ( t h i s . v S h u t d o w n C o n f i g . b o d y T y p e = " u r l " ) , t = t h i s . v S h u t d o w n C o n f i g ) , " " ) ; r e t u r n   0 < t . s t a t u s & & ( i = t . s t a t u s . t o S t r i n g ( ) ) , { p a g e s : e , s h u t d o w n C o n f i g : t , s h u t d o w n S t a t u s : i } } , w a t c h : { s h u t d o w n S t a t u s : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; ! i s N a N ( e ) & & 0 < e & & e < 1 e 3 ? t h i s . s h u t d o w n C o n f i g . s t a t u s = e : t h i s . s h u t d o w n C o n f i g . s t a t u s = 0 } } , m e t h o d s : { a d d P a g 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 / s e r v e r / s e t t i n g s / p a g e s / 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 . p a g e s . p u s h ( e . d a t a . p a g e ) } } ) } , u p d a t e P a g e : f u n c t i o n ( t , 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 / s e r v e r / s e t t i n g s / p a g e s / u p d a t e P o p u p ? p a g e I d = " + e , { 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 ) { V u e . s e t ( i . p a g e s , t , e . d a t a . p a g e ) } } ) } , r e m o v e P a g 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 . p a g e s . $ r e m o v e ( e ) } ) } , a d d S h u t d o w n H T M L T e m p l a t e : f u n c t i o n ( ) { t h i s . s h u t d o w n C o n f i g . b o d y = ` < ! D O C T Y P E   h t m l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< html > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< head > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< title > 升级中 < / t i t l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< meta  http - equiv = "Content-Type"  content = "text/html; charset=utf-8" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< h1 > 网站升级中 < / h 1 > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< p > 为了给您提供更好的服务 , 我们正在升级网站 , 请稍后重新访问 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-09 20:13:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< address > Request  ID :  \ $ { requestId } . < / a d d r e s s > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / h t m l > ` } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< input  type = "hidden"  name = "pagesJSON"  : value = "JSON.stringify(pages)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< input  type = "hidden"  name = "shutdownJSON"  : value = "JSON.stringify(shutdownConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  class = "title" > 自定义页面 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "pages.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui label small basic"  v - for = "(page,index) in pages" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													{ { page . status } }  - & gt ;  < span  v - if = "page.bodyType == 'url'" > { { page . url } } < / s p a n > < s p a n   v - i f = " p a g e . b o d y T y p e   = =   ' h t m l ' " > [ H T M L 内 容 ] < / s p a n >   < a   h r e f = " "   t i t l e = " 修 改 "   @ c l i c k . p r e v e n t = " u p d a t e P a g e ( i n d e x ,   p a g e . i d ) " > < i   c l a s s = " i c o n   p e n c i l   s m a l l " > < / i > < / a >   < a   h r e f = " "   t i t l e = " 删 除 "   @ c l i c k . p r e v e n t = " r e m o v e P a g e ( i n d e x ) " > < i   c l a s s = " i c o n   r e m o v e " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button small"  type = "button"  @ click . prevent = "addPage()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 根据响应状态码返回一些自定义页面 , 比如404 , 500 等错误页面 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 临时关闭页面 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< prior - checkbox  : v - config = "shutdownConfig"  v - if = "vIsLocation" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< tbody  v - show = "!vIsLocation || shutdownConfig.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td  class = "title" > 是否开启 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< input  type = "checkbox"  value = "1"  v - model = "shutdownConfig.isOn"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< tbody  v - show = "(!vIsLocation || shutdownConfig.isPrior) && shutdownConfig.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 内容类型  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< select  class = "ui dropdown auto-width"  v - model = "shutdownConfig.bodyType" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< option  value = "url" > 读取URL < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< option  value = "html" > HTML < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr  v - show = "shutdownConfig.bodyType == 'url'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td  class = "title" > 页面URL  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "text"  v - model = "shutdownConfig.url"  placeholder = "页面文件路径或一个完整URL" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																< p  class = "comment" > 页面文件是相对于节点安装目录的页面文件比如pages / 40 x . html , 或者一个完整的URL 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr  v - show = "shutdownConfig.bodyType == 'html'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > HTML  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< textarea  name = "body"  ref = "shutdownHTMLBody"  v - model = "shutdownConfig.body" > < / t e x t a r e a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																< p  class = "comment" > < a  href = ""  @ click . prevent = "addShutdownHTMLTemplate" > [ 使用模板 ] < / a > 。 填 写 页 面 的 H T M L 内 容 , 支 持 请 求 变 量 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > < input  type = "text"  size = "3"  maxlength = "3"  name = "shutdownStatus"  style = "width:5.2em"  placeholder = "状态码"  v - model = "shutdownStatus" / > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 开启临时关闭页面时 , 所有请求都会直接显示此页面 。 可用于临时升级网站或者禁止用户访问某个网页 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "ui margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 " , " 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 / * " , " f o n t / * " ] , 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 } ] ) , 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   s = 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 " ) , n = t h i s ; S o r t a b l e . c r e a t e ( s , { 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 = s . 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 ) } ) , n . c o n f i g . t y p e s = i } } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || config.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / 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 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 压缩级别 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "config.level" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "i in 10"  : value = "i" > { { i } } < / o p t i o n > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 级别越高 , 压缩比例越大 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 支持的扩展名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  : values = "config.extensions"  @ change = "changeExtensions"  placeholder = "比如 .html" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 含有这些扩展名的URL将会被压缩 , 不区分大小写 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 支持的MimeType < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  : values = "config.mimeTypes"  @ change = "changeMimeTypes"  placeholder = "比如 text/*" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 响应的Content - Type里包含这些MimeType的内容将会被压缩 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeAdvancedVisible"  v - if = "isOn()" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && moreOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 压缩算法 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "config.useDefaultTypes"  id = "compression-use-default" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														< label  v - if = "config.useDefaultTypes"  for = "compression-use-default" > 使用默认顺序 < span  class = "grey small" > ( brotli 、 gzip 、 deflate ) < / s p a n > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label  v - if = "!config.useDefaultTypes"  for = "compression-use-default" > 使用默认顺序 < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - show = "!config.useDefaultTypes" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  id = "compression-types-box" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< div  class = "ui checkbox"  v - for = "t in allTypes"  style = "margin-right: 2em"  : data - code = "t.code" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "checkbox"  v - model = "t.isOn"  : id = "'compression-type-' + t.code"  @ change = "changeType" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< label  : for = "'compression-type-' + t.code" > { { t . name } }  & nbsp ;  < i  class = "icon list small grey handle" > < / i > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
									
										
										
										
											2022-03-25 14:10:40 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment"  v - show = "!config.useDefaultTypes" > 选择支持的压缩算法和优先顺序 , 拖动 < i  class = "icon list small grey" > < / i > 图 表 排 序 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 支持已压缩内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "config.decompressData" > < / c h e c k b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-25 14:10:40 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 支持对已压缩内容尝试重新使用新的算法压缩 ; 不选中表示保留当前的压缩格式 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 内容最小长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - name = "'minLength'"  : v - value = "config.minLength"  : v - unit = "'kb'" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 内容最大长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - name = "'maxLength'"  : v - value = "config.maxLength"  : v - unit = "'mb'" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 匹配条件 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< http - request - conds - box  : v - conds = "config.conds"  @ change = "changeConds" > < / h t t p - r e q u e s t - c o n d s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("firewall-event-level-options",{props:["v-value"],mounted:function(){let t=this;Tea.action("/ui / eventLevelOptions ").post().success(function(e){t.levels=e.data.eventLevels,t.change()})},data:function(){let e=this.vValue;return{levels:[],description:" ",level:e=null!=e&&0!=e.length?e:" "}},methods:{change:function(){this.$emit(" change ");let i=this;var e=this.levels.$find(function(e,t){return t.code==i.level});this.description=null!=e?e.description:" " } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < select  class = "ui dropdown auto-width"  name = "eventLevel"  v - model = "level"  @ change = "change" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < option  v - for = "level in levels"  : value = "level.code" > { { level . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < p  class = "comment" > { { description } } < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " p r i o r - c h e c k b o x " , { p r o p s : [ " v - c o n f i g " ] , d a t a : f u n c t i o n ( ) { r e t u r n { i s P r i o r : t h i s . v C o n f i g . i s P r i o r } } , w a t c h : { i s P r i o r : f u n c t i o n ( e ) { t h i s . v C o n f i g . i s P r i o r = e } } , t e m p l a t e : ` < t b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  : class = "{active:isPrior}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  class = "title" > 打开独立配置 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui toggle checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "checkbox"  v - model = "isPrior" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< label  class = "red" > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment" > < strong  v - if = "isPrior" > [ 已打开 ] < / s t r o n g >   打 开 后 可 以 覆 盖 父 级 或 子 级 配 置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t b o d y > ` } ) , V u e . c o m p o n e n t ( " h t t p - c h a r s e t s - b o x " , { p r o p s : [ " v - u s u a l - c h a r s e t s " , " v - a l l - c h a r s e t s " , " v - c h a r s e t - 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 " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C h a r s e t C o n f i g ; r e t u r n { c h a r s e t C o n f i g : e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , c h a r s e t : " " , i s U p p e r : ! 1 } : e , a d v a n c e d V i s i b l e : ! 1 } } , m e t h o d s : { 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 ( e ) { t h i s . a d v a n c e d V i s i b l e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "charsetJSON"  : value = "JSON.stringify(charsetConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "charsetConfig"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || charsetConfig.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "charsetConfig.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "((!vIsLocation && !vIsGroup) || charsetConfig.isPrior) && charsetConfig.isOn" > 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 选择字符编码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < select  class = "ui dropdown"  style = "width:20em"  name = "charset"  v - model = "charsetConfig.charset" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "" > [ 未选择 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< optgroup  label = "常用字符编码" > < / o p t g r o u p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														< option  v - for = "charset in vUsualCharsets"  : value = "charset.charset" > { { charset . charset } } ( { { charset . name } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< optgroup  label = "全部字符编码" > < / o p t g r o u p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														< option  v - for = "charset in vAllCharsets"  : value = "charset.charset" > { { charset . charset } } ( { { charset . name } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeAdvancedVisible"  v - if = "((!vIsLocation && !vIsGroup) || charsetConfig.isPrior) && charsetConfig.isOn" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "((!vIsLocation && !vIsGroup) || charsetConfig.isPrior) && charsetConfig.isOn && advancedVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 字符编码是否大写 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "charsetConfig.isUpper" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 选中后将指定的字符编码转换为大写 , 比如默认为 < span  class = "ui label tiny" > utf - 8 < / s p a n > , 选 中 后 将 改 为 < s p a n   c l a s s = " u i   l a b e l   t i n y " > U T F - 8 < / s p a n > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - e x p i r e s - t i m e - c o n f i g - b o x " , { p r o p s : [ " v - e x p i r e s - t i m e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v E x p i r e s T i m e ; r e t u r n { e x p i r e s T i m e : e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , o v e r w r i t e : ! 0 , a u t o C a l c u l a t e : ! 0 , d u r a t i o n : { c o u n t : - 1 , u n i t : " h o u r " } } : e } } , w a t c h : { " e x p i r e s T i m e . i s P r i o r " : f u n c t i o n ( ) { t h i s . n o t i f y C h a n g e ( ) } , " e x p i r e s T i m e . i s O n " : f u n c t i o n ( ) { t h i s . n o t i f y C h a n g e ( ) } , " e x p i r e s T i m e . o v e r w r i t e " : f u n c t i o n ( ) { t h i s . n o t i f y C h a n g e ( ) } , " e x p i r e s T i m e . a u t o C a l c u l a t e " : f u n c t i o n ( ) { t h i s . n o t i f y C h a n g e ( ) } } , m e t h o d s : { n o t i f y C h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . e x p i r e s T i m e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "expiresTime" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "expiresTime.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < checkbox  v - model = "expiresTime.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 启用后 , 将会在响应的Header中添加 < code - label > Expires < / c o d e - l a b e l > 字 段 , 浏 览 器 据 此 会 将 内 容 缓 存 在 客 户 端 ; 同 时 , 在 管 理 后 台 执 行 清 理 缓 存 时 , 也 将 无 法 清 理 客 户 端 已 有 的 缓 存 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "expiresTime.isPrior && expiresTime.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 覆盖源站设置 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "expiresTime.overwrite" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 选中后 , 会覆盖源站Header中已有的 < code - label > Expires < / c o d e - l a b e l > 字 段 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "expiresTime.isPrior && expiresTime.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 自动计算时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < checkbox  v - model = "expiresTime.autoCalculate" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 根据已设置的缓存有效期进行计算 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "expiresTime.isPrior && expiresTime.isOn && !expiresTime.autoCalculate" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 强制缓存时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< time - duration - box  : v - value = "expiresTime.duration"  @ change = "notifyChange" > < / t i m e - d u r a t i o n - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 从客户端访问的时间开始要缓存的时长 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-21 18:38:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - a c c e s s - l o g - b o x " , { p r o p s : [ " v - a c c e s s - l o g " , " v - k e y w o r d " , " v - s h o w - s e r v e r - l i n k " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v A c c e s s L o g ; r e t u r n   n u l l ! = e . h e a d e r & & n u l l ! = e . h e a d e r . U p g r a d e & & n u l l ! = e . h e a d e r . U p g r a d e . v a l u e s & & e . h e a d e r . U p g r a d e . v a l u e s . $ c o n t a i n s ( " w e b s o c k e t " ) & & ( " h t t p " = = e . s c h e m e ? e . s c h e m e = " w s " : " h t t p s " = = e . s c h e m e & & ( e . s c h e m e = " w s s " ) ) , { a c c e s s L o g : e } } , m e t h o d s : { f o r m a t C o s t : f u n c t i o n ( e ) { i f ( n u l l = = e ) r e t u r n " 0 " ; l e t   t = ( 1 e 3 * e ) . t o S t r i n g ( ) , i = t . s p l i t ( " . " ) ; r e t u r n   i . l e n g t h < 2 ? t : i [ 0 ] + " . " + i [ 1 ] . s u b s t r i n g ( 0 , 3 ) } , s h o w L o g : f u n c t i o n ( ) { l e t   e = t h i s ; v a r   t = t h i s . a c c e s s L o g . r e q u e s t I d ; t h i s . $ p a r e n t . $ c h i l d r e n . f o r E a c h ( f u n c t i o n ( e ) { n u l l ! = e . d e s e l e c t & & e . d e s e l e c t ( ) } ) , t h i s . s e l e c 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 / l o g / v i e w P o p u p ? r e q u e s t I d = " + t , { w i d t h : " 5 0 e m " , h e i g h t : " 2 8 e m " , o n C l o s e : f u n c t i o n ( ) { e . d e s e l e c t ( ) } } ) } , s e l e c t : f u n c t i o n ( ) { t h i s . $ r e f s . b o x . p a r e n t N o d e . s t y l e . c s s T e x t = " b a c k g r o u n d :   r g b a ( 0 ,   0 ,   0 ,   0 . 1 ) " } , d e s e l e c t : f u n c t i o n ( ) { t h i s . $ r e f s . b o x . p a r e n t N o d e . s t y l e . c s s T e x t = " " } } , t e m p l a t e : ` < d i v   s t y l e = " w o r d - b r e a k :   b r e a k - a l l "   : s t y l e = " { ' c o l o r ' :   ( a c c e s s L o g . s t a t u s   > =   4 0 0 )   ?   ' # d c 1 4 3 c '   :   ' ' } "   r e f = " b o x " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  v - if = "accessLog.node != null && accessLog.node.nodeCluster != null"  : href = "'/clusters/cluster/node?nodeId=' + accessLog.node.id + '&clusterId=' + accessLog.node.nodeCluster.id"  title = "点击查看节点详情"  target = "_top" > < span  class = "grey" > [ { { accessLog . node . name } } < span  v - if = "!accessLog.node.name.endsWith('节点')" > 节点 < / s p a n > ] < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  : href = "'/servers/server/log?serverId=' + accessLog.serverId"  title = "点击到网站服务"  v - if = "vShowServerLink" > < span  class = "grey" > [ 服务 ] < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "accessLog.region != null && accessLog.region.length > 0"  class = "grey" > < ip - box  : v - ip = "accessLog.remoteAddr" > [ { { accessLog . region } } ] < / i p - b o x > < / s p a n >   < i p - b o x > < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . r e m o t e A d d r } } < / k e y w o r d > < / i p - b o x >   [ { { a c c e s s L o g . t i m e L o c a l } } ]   < e m > & q u o t ; < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . r e q u e s t M e t h o d } } < / k e y w o r d >   { { a c c e s s L o g . s c h e m e } } : / / < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . h o s t } } < / k e y w o r d > < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . r e q u e s t U R I } } < / k e y w o r d >   < a   : h r e f = " a c c e s s L o g . s c h e m e   +   ' : / / '   +   a c c e s s L o g . h o s t   +   a c c e s s L o g . r e q u e s t U R I "   t a r g e t = " _ b l a n k "   t i t l e = " 新 窗 口 打 开 "   c l a s s = " d i s a b l e d " > < i   c l a s s = " e x t e r n a l   i c o n   t i n y " > < / i >   < / a >   { { a c c e s s L o g . p r o t o } } & q u o t ;   < / e m >   < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { a c c e s s L o g . s t a t u s } } < / k e y w o r d >   < c o d e - l a b e l   v - i f = " a c c e s s L o g . a t t r s   ! =   n u l l   & &   ( a c c e s s L o g . a t t r s [ ' c a c h e . s t a t u s ' ]   = =   ' H I T '   | |   a c c e s s L o g . a t t r s [ ' c a c h e . s t a t u s ' ]   = =   ' S T A L E ' ) " > c a c h e   { { a c c e s s L o g . a t t r s [ ' c a c h e . s t a t u s ' ] . t o L o w e r C a s e ( ) } } < / c o d e - l a b e l >   < c o d e - l a b e l   v - i f = " a c c e s s L o g . f i r e w a l l A c t i o n s   ! =   n u l l   & &   a c c e s s L o g . f i r e w a l l A c t i o n s . l e n g t h   >   0 " > w a f   { { a c c e s s L o g . f i r e w a l l A c t i o n s } } < / c o d e - l a b e l >   < s p a n   v - i f = " a c c e s s L o g . t a g s   ! =   n u l l   & &   a c c e s s L o g . t a g s . l e n g t h   >   0 " > -   < c o d e - l a b e l   v - f o r = " t a g   i n   a c c e s s L o g . t a g s "   : k e y = " t a g " > { { t a g } } < / c o d e - l a b e l > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span   v - if = "accessLog.wafInfo != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  : href = "(accessLog.wafInfo.policy.serverId == 0) ? '/servers/components/waf/group?firewallPolicyId=' +  accessLog.firewallPolicyId + '&type=inbound&groupId=' + accessLog.firewallRuleGroupId+ '#set' + accessLog.firewallRuleSetId : '/servers/server/settings/waf/group?serverId=' + accessLog.serverId + '&firewallPolicyId=' + accessLog.firewallPolicyId + '&type=inbound&groupId=' + accessLog.firewallRuleGroupId + '#set' + accessLog.firewallRuleSetId"  target = "_blank" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< code - label - plain > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "red" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														WAF  -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "accessLog.wafInfo.group != null" > { { accessLog . wafInfo . group . name } }  -- < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "accessLog.wafInfo.set != null" > { { accessLog . wafInfo . set . name } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / c o d e - l a b e l - p l a i n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "accessLog.requestTime != null" >  -  耗时 : { { formatCost ( accessLog . requestTime ) } }  ms  < / s p a n > < s p a n   v - i f = " a c c e s s L o g . h u m a n T i m e   ! =   n u l l   & &   a c c e s s L o g . h u m a n T i m e . l e n g t h   >   0 "   c l a s s = " g r e y   s m a l l " > & n b s p ;   ( { { a c c e s s L o g . h u m a n T i m e } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										& nbsp ;  < a  href = ""  @ click . prevent = "showLog"  title = "查看详情" > < i  class = "icon expand" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - a c c e s s - l o g - c o n f i g - b o x " , { p r o p s : [ " v - a c c e s s - l o g - c o n f i g " , " v - f i e l d s " , " v - d e f a u l t - f i e l d - c o d e s " , " v - i s - l o c a t i o n " , " v - i s - g r o u p " ] , d a t a : f u n c t i o n ( ) { l e t   t = t h i s , i = ( s e t T i m e o u t ( f u n c t i o n ( ) { t . c h a n g e F i e l d s ( ) } , 1 0 0 ) , { i s P r i o r : ! 1 , i s O n : ! 1 , f i e l d s : [ 1 , 2 , 6 , 7 ] , s t a t u s 1 : ! 0 , s t a t u s 2 : ! 0 , s t a t u s 3 : ! 0 , s t a t u s 4 : ! 0 , s t a t u s 5 : ! 0 , f i r e w a l l O n l y : ! 1 , e n a b l e C l i e n t C l o s e d : ! 1 } ) ; r e t u r n   n u l l ! = t h i s . v A c c e s s L o g C o n f i g & & ( i = t h i s . v A c c e s s L o g C o n f i g ) , t h i s . v F i e l d s . f o r E a c h ( f u n c t i o n ( e ) { n u l l = = t . v A c c e s s L o g C o n f i g ? e . i s C h e c k e d = t . v D e f a u l t F i e l d C o d e s . $ c o n t a i n s ( e . c o d e ) : e . i s C h e c k e d = i . f i e l d s . $ c o n t a i n s ( e . c o d e ) } ) , { a c c e s s L o g : i , h a s R e q u e s t B o d y F i e l d : t h i s . v F i e l d s . $ c o n t a i n s ( 8 ) } } , m e t h o d s : { c h a n g e F i e l d s : f u n c t i o n ( ) { t h i s . a c c e s s L o g . f i e l d s = t h i s . v F i e l d s . f i l t e r ( f u n c t i o n ( e ) { r e t u r n   e . i s C h e c k e d } ) . m a p ( f u n c t i o n ( e ) { r e t u r n   e . c o d e } ) , t h i s . h a s R e q u e s t B o d y F i e l d = t h i s . a c c e s s L o g . f i e l d s . $ c o n t a i n s ( 8 ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "accessLogJSON"  : value = "JSON.stringify(accessLog)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable"  : class = "{'opacity-mask': this.accessLog.firewallOnly}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "accessLog"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || accessLog.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-21 18:38:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 开启访问日志 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody   v - show = "((!vIsLocation && !vIsGroup) || accessLog.isPrior) && accessLog.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 基础信息 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < p  class = "comment"  style = "padding-top: 0" > 默认记录客户端IP 、 请求URL等基础信息 。 < / p > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 高级信息 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox"  v - for = "(field, index) in vFields"  style = "width:10em;margin-bottom:0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "field.isChecked"  @ change = "changeFields"  : id = "'access-log-field-' + index" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label  : for = "'access-log-field-' + index" > { { field . name } } < / l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 在基础信息之外要存储的信息 。 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
														< span  class = "red"  v - if = "hasRequestBodyField" > 记录 "请求Body" 将会显著消耗更多的系统资源 , 建议仅在调试时启用 , 最大记录尺寸为2MB 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 要存储的访问日志状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox"  style = "width:3.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.status1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > 1 xx < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox"  style = "width:3.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.status2" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > 2 xx < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox"  style = "width:3.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.status3" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > 3 xx < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox"  style = "width:3.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.status4" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > 4 xx < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox"  style = "width:3.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.status5" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > 5 xx < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 09:54:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 记录客户端中断日志 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "accessLog.enableClientClosed" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 以 < code - label > 499 < / c o d e - l a b e l > 的 状 态 码 记 录 客 户 端 主 动 中 断 日 志 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "((!vIsLocation && !vIsGroup) || accessLog.isPrior) && accessLog.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < h4 > WAF相关 < / h 4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-21 18:38:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td  class = "title" > 只记录WAF相关日志 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < checkbox  v - model = "accessLog.firewallOnly" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 选中后只记录WAF相关的日志 。 通过此选项可有效减少访问日志数量 , 降低网络带宽和存储压力 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " t r a f f i c - l i m i t - v i e w " , { p r o p s : [ " v - t r a f f i c - l i m i t " ] , d a t a : f u n c t i o n ( ) { r e t u r n { c o n f i g : t h i s . v T r a f f i c L i m i t } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< span  v - if = "config.dailySize != null && config.dailySize.count > 0" > 日流量限制 : { { config . dailySize . count } } { { config . dailySize . unit . toUpperCase ( ) } } < br / > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< span  v - if = "config.monthlySize != null && config.monthlySize.count > 0" > 月流量限制 : { { config . monthlySize . count } } { { config . monthlySize . unit . toUpperCase ( ) } } < br / > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - else  class = "disabled" > 没有限制 。 < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - a u t h - b a s i c - a u t h - u s e r - b o x " , { p r o p s : [ " v - u s e r s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v U s e r s ; r e t u r n { u s e r s : e = n u l l = = e ? [ ] : e , i s A d d i n g : ! 1 , u p d a t i n g I n d e x : - 1 , u s e r n a m e : " " , p a s s w o r d : " " } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 0 , t h i s . u s e r n a m e = " " , t h i s . p a s s w o r d = " " ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . u s e r n a m e . f o c u s ( ) } , 1 0 0 ) } , c a n c e l : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 , t h i s . u p d a t i n g I n d e x = - 1 } , c o n f i r m : f u n c t i o n ( ) { l e t   e = t h i s ; 0 = = t h i s . u s e r n a m e . l e n g t h ? t e a w e b . w a r n ( " 请 输 入 用 户 名 " , f u n c t i o n ( ) { e . $ r e f s . u s e r n a m e . f o c u s ( ) } ) : 0 = = t h i s . p a s s w o r d . l e n g t h ? t e a w e b . w a r n ( " 请 输 入 密 码 " , f u n c t i o n ( ) { e . $ r e f s . p a s s w o r d . f o c u s ( ) } ) : ( t h i s . u p d a t i n g I n d e x < 0 ? t h i s . u s e r s . p u s h ( { u s e r n a m e : t h i s . u s e r n a m e , p a s s w o r d : t h i s . p a s s w o r d } ) : ( t h i s . u s e r s [ t h i s . u p d a t i n g I n d e x ] . u s e r n a m e = t h i s . u s e r n a m e , t h i s . u s e r s [ t h i s . u p d a t i n g I n d e x ] . p a s s w o r d = t h i s . p a s s w o r d ) , t h i s . c a n c e l ( ) ) } , u p d a t e : f u n c t i o n ( e , t ) { t h i s . u p d a t i n g I n d e x = e , t h i s . i s A d d i n g = ! 0 , t h i s . u s e r n a m e = t . u s e r n a m e , t h i s . p a s s w o r d = t . p a s s w o r d ; l e t   i = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { i . $ r e f s . u s e r n a m e . f o c u s ( ) } , 1 0 0 ) } , r e m o v e : f u n c t i o n ( e ) { t h i s . u s e r s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "httpAuthBasicAuthUsersJSON"  : value = "JSON.stringify(users)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "users.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small basic"  v - for = "(user, index) in users" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { user . username } }  < a  href = ""  title = "修改"  @ click . prevent = "update(index, user)" > < i  class = "icon pencil tiny" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  placeholder = "用户名"  v - model = "username"  size = "15"  ref = "username" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "password"  placeholder = "密码"  v - model = "password"  size = "15"  ref = "password" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n > & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "!isAdding"  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - l o c a t i o n - l a b e l s " , { p r o p s : [ " v - l o c a t i o n - c o n f i g " , " v - s e r v e r - i d " ] , d a t a : f u n c t i o n ( ) { r e t u r n { l o c a t i o n : t h i s . v L o c a t i o n C o n f i g } } , m e t h o d s : { c o n f i g I s O n : f u n c t i o n ( e ) { r e t u r n   n u l l ! = e & & e . i s P r i o r & & e . i s O n } , r e f I s O n : f u n c t i o n ( e , t ) { r e t u r n   t h i s . c o n f i g I s O n ( e ) & & n u l l ! = t & & t . i s O n } , l e n : f u n c t i o n ( e ) { r e t u r n   n u l l = = e ? 0 : e . l e n g t h } , u r l : f u n c t i o n ( e ) { r e t u r n " / s e r v e r s / s e r v e r / s e t t i n g s / l o c a t i o n s " + e + " ? s e r v e r I d = " + t h i s . v S e r v e r I d + " & l o c a t i o n I d = " + t h i s . l o c a t i o n . i d } } , t e m p l a t e : ` 	 < d i v   c l a s s = " l a b e l s - b o x " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  基本信息  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.name != null && location.name.length > 0"  : class = "'olive'"  : href = "url('/location')" > { { location . name } } < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  domains  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "location.domains != null && location.domains.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< grey - label  v - for = "domain in location.domains" > { { domain } } < / g r e y - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  break  -- > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.isBreak"  : href = "url('/location')" > BREAK < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  redirectToHTTPS  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && configIsOn(location.web.redirectToHTTPS)"  : href = "url('/http')" > 自动跳转HTTPS < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  Web  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && configIsOn(location.web.root)"  : href = "url('/web')" > 文档根目录 < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  反向代理  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "refIsOn(location.reverseProxyRef, location.reverseProxy)"  : v - href = "url('/reverseProxy')" > 反向代理 < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  WAF  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  TODO  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  Cache  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && configIsOn(location.web.cache)"  : v - href = "url('/cache')" > CACHE < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  Charset  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && configIsOn(location.web.charset) && location.web.charset.charset.length > 0"  : href = "url('/charset')" > { { location . web . charset . charset } } < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  访问日志  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  TODO  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  统计  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  TODO  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  Gzip  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && refIsOn(location.web.gzipRef, location.web.gzip) && location.web.gzip.level > 0"  : href = "url('/gzip')" > Gzip : { { location . web . gzip . level } } < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  HTTP  Header  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && refIsOn(location.web.requestHeaderPolicyRef, location.web.requestHeaderPolicy) && (len(location.web.requestHeaderPolicy.addHeaders) > 0 || len(location.web.requestHeaderPolicy.setHeaders) > 0 || len(location.web.requestHeaderPolicy.replaceHeaders) > 0 || len(location.web.requestHeaderPolicy.deleteHeaders) > 0)"  : href = "url('/headers')" > 请求Header < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && refIsOn(location.web.responseHeaderPolicyRef, location.web.responseHeaderPolicy) && (len(location.web.responseHeaderPolicy.addHeaders) > 0 || len(location.web.responseHeaderPolicy.setHeaders) > 0 || len(location.web.responseHeaderPolicy.replaceHeaders) > 0 || len(location.web.responseHeaderPolicy.deleteHeaders) > 0)"  : href = "url('/headers')" > 响应Header < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  Websocket  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && refIsOn(location.web.websocketRef, location.web.websocket)"  : href = "url('/websocket')" > Websocket < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 22:10:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  请求脚本  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< http - location - labels - label  v - if = "location.web != null && location.web.requestScripts != null && ((location.web.requestScripts.initGroup != null && location.web.requestScripts.initGroup.isPrior) || (location.web.requestScripts.requestGroup != null && location.web.requestScripts.requestGroup.isPrior))"  : href = "url('/requestScripts')" > 请求脚本 < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  自定义页面  -- > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "location.web != null && location.web.pages != null && location.web.pages.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "page in location.web.pages"  : key = "page.id" > < http - location - labels - label  : href = "url('/pages')" > PAGE  [ 状态码 { { page . status [ 0 ] } } ]  - & gt ;  { { page . url } } < / h t t p - l o c a t i o n - l a b e l s - l a b e l > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "location.web != null && configIsOn(location.web.shutdown)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< http - location - labels - label  : v - class = "'red'"  : href = "url('/pages')" > 临时关闭 < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  重写规则  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "location.web != null && location.web.rewriteRules != null && location.web.rewriteRules.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "rewriteRule in location.web.rewriteRules" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< http - location - labels - label  : href = "url('/rewrite')" > REWRITE  { { rewriteRule . pattern } }  - & gt ;  { { rewriteRule . replace } } < / h t t p - l o c a t i o n - l a b e l s - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - l o c a t i o n - l a b e l s - l a b e l " , { p r o p s : [ " v - c l a s s " , " v - h r e f " ] , t e m p l a t e : ' < a   : h r e f = " v H r e f "   c l a s s = " u i   l a b e l   t i n y   b a s i c "   : c l a s s = " v C l a s s "   s t y l e = " f o n t - s i z e : 0 . 7 e m ; p a d d i n g : 4 p x ; m a r g i n - t o p : 0 . 3 e m ; m a r g i n - b o t t o m : 0 . 3 e m " > < s l o t > < / s l o t > < / a > ' } ) , V u e . c o m p o n e n t ( " h t t p - g z i p - b o x " , { p r o p s : [ " v - g z i p - c o n f i g " , " v - g z i p - r e f " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v G z i p C o n f i g ; r e t u r n { g z i p : e = n u l l = = e ? { i s O n : ! 0 , l e v e l : 0 , m i n L e n g t h : n u l l , m a x L e n g t h : n u l l , c o n d s : n u l l } : e , a d v a n c e d V i s i b l e : ! 1 } } , 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 G z i p R e f . i s P r i o r ) & & t h i s . v G z i p R e f . i s O n } , 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 ( e ) { t h i s . a d v a n c e d V i s i b l e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< input  type = "hidden"  name = "gzipRefJSON"  : value = "JSON.stringify(vGzipRef)" / >  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< prior - checkbox  : v - config = "vGzipRef"  v - if = "vIsLocation" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "!vIsLocation || vGzipRef.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 启用Gzip压缩 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "checkbox"  v - model = "vGzipRef.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 压缩级别 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< select  class = "dropdown auto-width"  name = "level"  v - model = "gzip.level" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "0" > 不压缩 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  v - for = "i in 9"  : value = "i" > { { i } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 级别越高 , 压缩比例越大 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< more - options - tbody  @ change = "changeAdvancedVisible"  v - if = "isOn()" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "isOn() && advancedVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > Gzip内容最小长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< size - capacity - box  : v - name = "'minLength'"  : v - value = "gzip.minLength"  : v - unit = "'kb'" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > Gzip内容最大长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< size - capacity - box  : v - name = "'maxLength'"  : v - value = "gzip.maxLength"  : v - unit = "'mb'" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 匹配条件 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< http - request - conds - box  : v - conds = "gzip.conds" > < / h t t p - r e q u e s t - c o n d s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s c r i p t - c o n f i g - b o x " , { p r o p s : [ " i d " , " v - s c r i p t - c o n f i g " , " c o m m e n t " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v S c r i p t C o n f i g ; r e t u r n   0 = = ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , c o d e : " " } : e ) . c o d e . l e n g t h & & ( e . c o d e = " \ n \ n \ n \ n " ) , { c o n f i g : e } } , w a t c h : { " c o n f i g . i s O n " : f u n c t i o n ( ) { t h i s . c h a n g e ( ) } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . c o n f i g ) } , c h a n g e C o d e : f u n c t i o n ( e ) { t h i s . c o n f i g . c o d e = e , t h i s . c h a n g e ( ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-31 15:20:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < checkbox  v - model = "config.isOn" > < / c h e c k b o x > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  : style = "{opacity: !config.isOn ? 0.5 : 1}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 脚本代码 < / t d > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > < source - code - box  : id = "id"  type = "text/javascript"  : read - only = "false"  @ change = "changeCode" > { { config . code } } < / s o u r c e - c o d e - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > { { comment } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s s l - c e r t s - v i e w " , { p r o p s : [ " v - c e r t s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C e r t s ; r e t u r n { c e r t s : e = n u l l = = e ? [ ] : e } } , m e t h o d s : { f o r m a t T i m e : f u n c t i o n ( e ) { r e t u r n   n e w   D a t e ( 1 e 3 * e ) . f o r m a t ( " Y - m - d " ) } , v i e w C e r t : 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 / c e r t s / c e r t P o p u p ? c e r t I d = " + e , { h e i g h t : " 2 8 e m " , w i d t h : " 4 8 e m " } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "certs != null && certs.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small"  v - for = "(cert, index) in certs" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { cert . name } }  /  { { cert . dnsNames } }  /  有效至 { { formatTime ( cert . timeEndAt ) } }  & nbsp ; < a  href = ""  title = "查看"  @ click . prevent = "viewCert(cert.id)" > < i  class = "icon external alternate" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " r e v e r s e - p r o x y - b o x " , { p r o p s : [ " v - r e v e r s e - p r o x y - r e f " , " v - r e v e r s e - p r o x y - 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 " , " v - f a m i l y " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e v e r s e P r o x y R e f , t = ( n u l l = = e & & ( e = { i s P r i o r : ! 1 , i s O n : ! 1 , r e v e r s e P r o x y I d : 0 } ) , t h i s . v R e v e r s e P r o x y C o n f i g ) , i = ( n u l l = = ( t = n u l l = = t ? { r e q u e s t P a t h : " " , s t r i p P r e f i x : " " , r e q u e s t U R I : " " , r e q u e s t H o s t : " " , r e q u e s t H o s t T y p e : 0 , a d d H e a d e r s : [ ] , c o n n T i m e o u t : { c o u n t : 0 , u n i t : " s e c o n d " } , r e a d T i m e o u t : { c o u n t : 0 , u n i t : " s e c o n d " } , i d l e T i m e o u t : { c o u n t : 0 , u n i t : " s e c o n d " } , m a x C o n n s : 0 , m a x I d l e C o n n s : 0 , f o l l o w R e d i r e c t s : ! 1 } : t ) . a d d H e a d e r s & & ( t . a d d H e a d e r s = [ ] ) , n u l l = = t . c o n n T i m e o u t & & ( t . c o n n T i m e o u t = { c o u n t : 0 , u n i t : " s e c o n d " } ) , n u l l = = t . r e a d T i m e o u t & & ( t . r e a d T i m e o u t = { c o u n t : 0 , u n i t : " s e c o n d " } ) , n u l l = = t . i d l e T i m e o u t & & ( t . i d l e T i m e o u t = { c o u n t : 0 , u n i t : " s e c o n d " } ) , n u l l = = t . p r o x y P r o t o c o l & & V u e . s e t ( t , " p r o x y P r o t o c o l " , { i s O n : ! 1 , v e r s i o n : 1 } ) , [ { n a m e : " X - R e a l - I P " , i s C h e c k e d : ! 1 } , { n a m e : " X - F o r w a r d e d - F o r " , i s C h e c k e d : ! 1 } , { n a m e : " X - F o r w a r d e d - B y " , i s C h e c k e d : ! 1 } , { n a m e : " X - F o r w a r d e d - H o s t " , i s C h e c k e d : ! 1 } , { n a m e : " X - F o r w a r d e d - P r o t o " , i s C h e c k e d : ! 1 } ] ) ; r e t u r n   i . f o r E a c h ( f u n c t i o n ( e ) { e . i s C h e c k e d = t . a d d H e a d e r s . $ c o n t a i n s ( e . n a m e ) } ) , { r e v e r s e P r o x y R e f : e , r e v e r s e P r o x y C o n f i g : t , a d v a n c e d V i s i b l e : ! 1 , f a m i l y : t h i s . v F a m i l y , f o r w a r d H e a d e r s : i } } , w a t c h : { " r e v e r s e P r o x y C o n f i g . r e q u e s t H o s t T y p e " : 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 = 0 ) , t h i s . r e v e r s e P r o x y C o n f i g . r e q u e s t H o s t T y p e = t } , " r e v e r s e P r o x y C o n f i g . c o n n T i m e o u t . c o u n t " : 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 < 0 ) & & ( t = 0 ) , t h i s . r e v e r s e P r o x y C o n f i g . c o n n T i m e o u t . c o u n t = t } , " r e v e r s e P r o x y C o n f i g . r e a d T i m e o u t . c o u n t " : 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 < 0 ) & & ( t = 0 ) , t h i s . r e v e r s e P r o x y C o n f i g . r e a d T i m e o u t . c o u n t = t } , " r e v e r s e P r o x y C o n f i g . i d l e T i m e o u t . c o u n t " : 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 < 0 ) & & ( t = 0 ) , t h i s . r e v e r s e P r o x y C o n f i g . i d l e T i m e o u t . c o u n t = t } , " r e v e r s e P r o x y C o n f i g . m a x C o n n s " : 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 < 0 ) & & ( t = 0 ) , t h i s . r e v e r s e P r o x y C o n f i g . m a x C o n n s = t } , " r e v e r s e P r o x y C o n f i g . m a x I d l e C o n n s " : 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 < 0 ) & & ( t = 0 ) , t h i s . r e v e r s e P r o x y C o n f i g . m a x I d l e C o n n s = t } , " r e v e r s e P r o x y C o n f i g . p r o x y P r o t o c o l . v e r s i o n " : 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 h i s . r e v e r s e P r o x y C o n f i g . p r o x y P r o t o c o l . v e r s i o n = 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 . r e v e r s e P r o x y R e f . i s P r i o r ) & & t h i s . r e v e r s e P r o x y R e f . i s O n } , 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 ( e ) { t h i s . a d v a n c e d V i s i b l e = e } , c h a n g e A d d H e a d e r : f u n c t i o n ( ) { t h i s . r e v e r s e P r o x y C o n f i g . a d d H e a d e r s = t h i s . f o r w a r d 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   e . i s C h e c k e d } ) . m a p ( f u n c t i o n ( e ) { r e t u r n   e . n a m e } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "reverseProxyRefJSON"  : value = "JSON.stringify(reverseProxyRef)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "reverseProxyJSON"  : value = "JSON.stringify(reverseProxyConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "reverseProxyRef"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || reverseProxyRef.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用反向代理 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "reverseProxyRef.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td > 回源主机名 < em > ( Host ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< radio  : v - value = "0"  v - model = "reverseProxyConfig.requestHostType" > 跟随代理服务 < / r a d i o >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< radio  : v - value = "1"  v - model = "reverseProxyConfig.requestHostType" > 跟随源站 < / r a d i o >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< radio  : v - value = "2"  v - model = "reverseProxyConfig.requestHostType" > 自定义 < / r a d i o > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - show = "reverseProxyConfig.requestHostType == 2"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  placeholder = "比如example.com"  v - model = "reverseProxyConfig.requestHost" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 请求源站时的Host , 用于修改源站接收到的域名 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< span  v - if = "reverseProxyConfig.requestHostType == 0" > , "跟随代理服务" 是指源站接收到的域名和当前代理服务保持一致 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< span  v - if = "reverseProxyConfig.requestHostType == 1" > , "跟随源站" 是指源站接收到的域名仍然是填写的源站地址中的信息 , 不随代理服务域名改变而改变 < / s p a n > 	 	 	 	 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< span  v - if = "reverseProxyConfig.requestHostType == 2" > , 自定义Host内容中支持请求变量 < / s p a n > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeAdvancedVisible"  v - if = "isOn()" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && advancedVisible" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-14 16:24:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 回源跟随 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "reverseProxyConfig.followRedirects" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 选中后 , 自动读取源站跳转后的网页内容 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										    < tr  v - show = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										        < td > 自动添加的Header < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										        < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										            < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										                < div  style = "width: 14em; float: left; margin-bottom: 1em"  v - for = "header in forwardHeaders"  : key = "header.name" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										                    < checkbox  v - model = "header.isChecked"  @ input = "changeAddHeader" > { { header . name } } < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  style = "clear: both" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 选中后 , 会自动向源站请求添加这些Header 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td > 请求URI < em > ( RequestURI ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  placeholder = "\${requestURI}"  v - model = "reverseProxyConfig.requestURI" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > \ $ { requestURI } 为完整的请求URI , 可以使用类似于 "\${requestURI}?arg1=value1&arg2=value2" 的形式添加你的参数 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td > 去除URL前缀 < em > ( StripPrefix ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "reverseProxyConfig.stripPrefix"  placeholder = "/PREFIX" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 可以把请求的路径部分前缀去除后再查找文件 , 比如把  < span  class = "ui label tiny" > / w e b / a p p / i n d e x . h t m l < / s p a n >   去 除 前 缀   < s p a n   c l a s s = " u i   l a b e l   t i n y " > / w e b < / s p a n >   后 就 变 成   < s p a n   c l a s s = " u i   l a b e l   t i n y " > / a p p / i n d e x . h t m l < / s p a n > 。   < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< td > 是否自动刷新缓存区 < em > ( AutoFlush ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "reverseProxyConfig.autoFlush" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 开启后将自动刷新缓冲区数据到客户端 , 在类似于SSE ( server - sent  events ) 等场景下很有用 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - if = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td  class = "color-border" > 源站连接失败超时时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            < input  type = "text"  name = "connTimeout"  value = "10"  size = "6"  v - model = "reverseProxyConfig.connTimeout.count" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            秒 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 连接源站失败的最大超时时间 , 0 表示不限制 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr  v - if = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td  class = "color-border" > 源站读取超时时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            < input  type = "text"  name = "readTimeout"  value = "0"  size = "6"  v - model = "reverseProxyConfig.readTimeout.count" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            秒 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 读取内容时的最大超时时间 , 0 表示不限制 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr  v - if = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td  class = "color-border" > 源站最大并发连接数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            < input  type = "text"  name = "maxConns"  value = "0"  size = "6"  maxlength = "10"  v - model = "reverseProxyConfig.maxConns" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 源站可以接受到的最大并发连接数 , 0 表示使用系统默认 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr  v - if = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td  class = "color-border" > 源站最大空闲连接数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            < input  type = "text"  name = "maxIdleConns"  value = "0"  size = "6"  maxlength = "10"  v - model = "reverseProxyConfig.maxIdleConns" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 当没有请求时 , 源站保持等待的最大空闲连接数量 , 0 表示使用系统默认 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr  v - if = "family == null || family == 'http'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td  class = "color-border" > 源站最大空闲超时时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            < input  type = "text"  name = "idleTimeout"  value = "0"  size = "6"  v - model = "reverseProxyConfig.idleTimeout.count" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                            秒 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                        < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                    < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								                    < p  class = "comment" > 源站保持等待的空闲超时时间 , 0 表示使用默认时间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr  v - show = "family != 'unix'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            	< td > PROXY  Protocol < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            	< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            		< checkbox  name = "proxyProtocolIsOn"  v - model = "reverseProxyConfig.proxyProtocol.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								            		< p  class = "comment" > 选中后表示启用PROXY  Protocol , 每次连接源站时都会在头部写入客户端地址信息 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "family != 'unix' && reverseProxyConfig.proxyProtocol.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > PROXY  Protocol版本 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  name = "proxyProtocolVersion"  v - model = "reverseProxyConfig.proxyProtocol.version" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "1" > 1 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "2" > 2 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment"  v - if = "reverseProxyConfig.proxyProtocol.version == 1" > 发送类似于 < code - label > PROXY  TCP4  192.168 . 1.1  192.168 . 1.10  32567  443 < / c o d e - l a b e l > 的 头 部 信 息 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment"  v - if = "reverseProxyConfig.proxyProtocol.version == 2" > 发送二进制格式的头部信息 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 a r a m - f i l t e r s - b o x " , { p r o p s : [ " v - f i l t e r s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v F i l t e r s ; r e t u r n { f i l t e r s : e = n u l l = = e ? [ ] : e , i s A d d i n g : ! 1 , o p t i o n s : [ { n a m e : " M D 5 " , c o d e : " m d 5 " } , { n a m e : " U R L E n c o d e " , c o d e : " u r l E n c o d e " } , { n a m e : " U R L D e c o d e " , c o d e : " u r l D e c o d e " } , { n a m e : " B A S E 6 4 E n c o d e " , c o d e : " b a s e 6 4 E n c o d e " } , { n a m e : " B A S E 6 4 D e c o d e " , c o d e : " b a s e 6 4 D e c o d e " } , { n a m e : " U N I C O D E 编 码 " , c o d e : " u n i c o d e E n c o d e " } , { n a m e : " U N I C O D E 解 码 " , c o d e : " u n i c o d e D e c o d e " } , { n a m e : " H T M L 实 体 编 码 " , c o d e : " h t m l E s c a p e " } , { n a m e : " H T M L 实 体 解 码 " , c o d e : " h t m l U n e s c a p e " } , { n a m e : " 计 算 长 度 " , c o d e : " l e n g t h " } , { n a m e : " 十 六 进 制 - > 十 进 制 " , c o d e : " h e x 2 d e c " } , { n a m e : " 十 进 制 - > 十 六 进 制 " , c o d e : " d e c 2 h e x " } , { n a m e : " S H A 1 " , c o d e : " s h a 1 " } , { n a m e : " S H A 2 5 6 " , c o d e : " s h a 2 5 6 " } ] , a d d i n g C o d e : " " } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 0 , t h i s . a d d i n g C o d e = " " } , c o n f i r m : f u n c t i o n ( ) { i f ( 0 ! = t h i s . a d d i n g C o d e . l e n g t h ) { l e t   i = t h i s ; t h i s . f i l t e r s . p u s h ( t h i s . o p t i o n s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e = = i . a d d i n g C o d e } ) ) , t h i s . i s A d d i n g = ! 1 } } , c a n c e l : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 } , r e m o v e : f u n c t i o n ( e ) { t h i s . f i l t e r s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "paramFiltersJSON"  : value = "JSON.stringify(filters)"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "filters.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "(filter, index) in filters"  class = "ui label small basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												{ { filter . name } }  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "addingCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  value = "" > [ 请选择 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "option in options"  : value = "option.code" > { { option . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm()" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													& nbsp ;  < a  href = ""  @ click . prevent = "cancel()"  title = "取消" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< p  class = "comment" > 可以对参数值进行特定的编解码处理 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - r e m o t e - a d d r - c o n f i g - b o x " , { p r o p s : [ " v - r e m o t e - a d d r - 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 " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R e m o t e A d d r C o n f i g , t = " " ; r e t u r n ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , v a l u e : " $ { r a w R e m o t e A d d r } " , i s C u s t o m i z e d : ! 1 } : e ) . i s C u s t o m i z e d | | " $ { r e m o t e A d d r } " ! = e . v a l u e & & " $ { r a w R e m o t e A d d r } " ! = e . v a l u e | | ( t = e . v a l u e ) , { c o n f i g : e , o p t i o n s : [ { n a m e : " 直 接 获 取 " , d e s c r i p t i o n : ' 用 户 直 接 访 问 边 缘 节 点 , 即   " 用 户   - - \ x 3 e   边 缘 节 点 "   模 式 , 这 时 候 可 以 直 接 从 连 接 中 读 取 到 真 实 的 I P 地 址 。 ' , v a l u e : " $ { r a w R e m o t e A d d r } " } , { n a m e : " 从 上 级 代 理 中 获 取 " , d e s c r i p t i o n : ' 用 户 和 边 缘 节 点 之 间 有 别 的 代 理 服 务 转 发 , 即   " 用 户   - - \ x 3 e   [ 第 三 方 代 理 服 务 ]   - - \ x 3 e   边 缘 节 点 " , 这 时 候 只 能 从 上 级 代 理 中 获 取 传 递 的 I P 地 址 。 ' , v a l u e : " $ { r e m o t e A d d r } " } , { n a m e : " [ 自 定 义 ] " , d e s c r i p t i o n : " 通 过 自 定 义 变 量 来 获 取 客 户 端 真 实 的 I P 地 址 。 " , v a l u e : " " } ] , o p t i o n V a l u e : 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 O p t i o n V a l u e : f u n c t i o n ( ) { 0 < t h i s . o p t i o n V a l u e . l e n g t h ? ( t h i s . c o n f i g . v a l u e = t h i s . o p t i o n V a l u e , t h i s . c o n f i g . i s C u s t o m i z e d = ! 1 ) : t h i s . c o n f i g . i s C u s t o m i z e d = ! 0 } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "remoteAddrJSON"  : 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" > 是否启用 < / 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" > 选中后表示使用自定义的请求变量获取客户端IP 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 获取IP方式  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< select  class = "ui dropdown auto-width"  v - model = "optionValue"  @ change = "changeOptionValue" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< option  v - for = "option in options"  : value = "option.value" > { { option . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment"  v - for = "option in options"  v - if = "option.value == optionValue && option.description.length > 0" > { { option . description } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr  v - show = "optionValue.length == 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 读取IP变量值  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "hidden"  v - model = "config.value"  maxlength = "100" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "optionValue == ''"  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  v - model = "config.value"  maxlength = "100" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< p  class = "comment" > 通过此变量获取用户的IP地址 。 具体可用的请求变量列表可参考官方网站文档 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 	 	 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - a c c e s s - l o g - s e a r c h - b o x " , { p r o p s : [ " v - i p " , " v - d o m a i n " , " v - k e y w o r d " , " v - c l u s t e r - i d " , " v - n o d e - i d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v I p , t = ( n u l l = = e & & ( e = " " ) , t h i s . v D o m a i n ) , i = ( n u l l = = t & & ( t = " " ) , t h i s . v K e y w o r d ) ; r e t u r n   n u l l = = i & & ( i = " " ) , { i p : e , d o m a i n : t , k e y w o r d : i , c l u s t e r I d : t h i s . v C l u s t e r I d } } , m e t h o d s : { c l e a n I P : f u n c t i o n ( ) { t h i s . i p = " " , t h i s . s u b m i t ( ) } , c l e a n D o m a i n : f u n c t i o n ( ) { t h i s . d o m a i n = " " , t h i s . s u b m i t ( ) } , c l e a n K e y w o r d : f u n c t i o n ( ) { t h i s . k e y w o r d = " " , t h i s . s u b m i t ( ) } , s u b m i t : f u n c t i o n ( ) { l e t   e = t h i s . $ e l . p a r e n t N o d e ; f o r ( ; ; ) { i f ( n u l l = = e ) b r e a k ; i f ( " F O R M " = = e . t a g N a m e ) b r e a k ; e = e . p a r e n t N o d e } n u l l ! = e & & s e t T i m e o u t ( f u n c t i o n ( ) { e . s u b m i t ( ) } , 5 0 0 ) } , c h a n g e C l u s t e r : f u n c t i o n ( e ) { t h i s . c l u s t e r I d = e } } , t e m p l a t e : ` < d i v   s t y l e = " z - i n d e x :   1 0 " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui input left right labeled small" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  class = "ui label basic"  style = "font-weight: normal" > IP < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  name = "ip"  placeholder = "x.x.x.x"  size = "15"  v - model = "ip" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  class = "ui label basic"  : class = "{disabled: ip.length == 0}"  @ click . prevent = "cleanIP" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui input left right labeled small"  > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  class = "ui label basic"  style = "font-weight: normal" > 域名 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  name = "domain"  placeholder = "xxx.com"  size = "15"  v - model = "domain" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  class = "ui label basic"  : class = "{disabled: domain.length == 0}"  @ click . prevent = "cleanDomain" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui input left right labeled small" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  class = "ui label basic"  style = "font-weight: normal" > 关键词 < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 21:32:56 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  name = "keyword"  v - model = "keyword"  placeholder = "路径、UserAgent等..."  size = "30" / > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  class = "ui label basic"  : class = "{disabled: keyword.length == 0}"  @ click . prevent = "cleanKeyword" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-05 15:23:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< div  class = "ui field" > < tip - icon  content = "一些特殊的关键词:<br/>单个状态码:  status:200<br/>状态码范围:  status:500-504<br/>查询IP:  ip:192.168.1.100<br/>查询URL:  http://goedge.cn/docs" > < / t i p - i c o n > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline"  style = "margin-top: 0.5em" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 15:28:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< node - cluster - combo - box  : v - cluster - id = "clusterId"  @ change = "changeCluster" > < / n o d e - c l u s t e r - c o m b o - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 15:28:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field"  v - if = "clusterId > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< node - combo - box  : v - cluster - id = "clusterId"  : v - node - id = "vNodeId" > < / n o d e - c o m b o - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 21:32:56 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< slot > < / s l o t > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button small"  type = "submit" > 搜索日志 < / b u t t o n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e t r i c - k e y - l a b e l " , { p r o p s : [ " v - k e y " ] , d a t a : f u n c t i o n ( ) { r e t u r n { k e y D e f s : w i n d o w . M E T R I C _ H T T P _ K E Y S } } , m e t h o d s : { k e y N a m e : f u n c t i o n ( i ) { l e t   s = t h i s , n = " " ; v a r   e = t h i s . k e y D e f s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e = = i | | ( i . s t a r t s W i t h ( " $ { a r g . " ) & & t . c o d e . s t a r t s W i t h ( " $ { a r g . " ) ? ( n = s . g e t S u b K e y ( " a r g . " , i ) , ! 0 ) : i . s t a r t s W i t h ( " $ { h e a d e r . " ) & & t . c o d e . s t a r t s W i t h ( " $ { h e a d e r . " ) ? ( n = s . g e t S u b K e y ( " h e a d e r . " , i ) , ! 0 ) : ! ( ! i . s t a r t s W i t h ( " $ { c o o k i e . " ) | | ! t . c o d e . s t a r t s W i t h ( " $ { c o o k i e . " ) ) & & ( n = s . g e t S u b K e y ( " c o o k i e . " , i ) , ! 0 ) ) } ) ; r e t u r n   n u l l ! = e ? 0 < n . l e n g t h ? e . n a m e + " :   " + n : e . n a m e : i } , g e t S u b K e y : f u n c t i o n ( e , t ) { v a r   i = t . i n d e x O f ( e = " $ { " + e ) ; r e t u r n   0 < = i ? ( t = t . s u b s t r i n g ( i + e . l e n g t h ) ) . s u b s t r i n g ( 0 , t . l e n g t h - 1 ) : " " } } , t e m p l a t e : ` < d i v   c l a s s = " u i   l a b e l   b a s i c   s m a l l " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									{ { keyName ( this . vKey ) } } 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e t r i c - k e y s - c o n f i g - b o x " , { p r o p s : [ " v - k e y s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v K e y s ; r e t u r n { k e y s : e = n u l l = = e ? [ ] : e , i s A d d i n g : ! 1 , k e y : " " , s u b K e y : " " , k e y D e s c r i p t i o n : " " , k e y D e f s : w i n d o w . M E T R I C _ H T T P _ K E Y S } } , w a t c h : { k e y s : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . k e y s ) } } , m e t h o d s : { c a n c e l : f u n c t i o n ( ) { t h i s . k e y = " " , t h i s . s u b K e y = " " , t h i s . k e y D e s c r i p t i o n = " " , t h i s . i s A d d i n g = ! 1 } , c o n f i r m : f u n c t i o n ( ) { i f ( 0 ! = t h i s . k e y . l e n g t h ) { i f ( 0 < t h i s . k e y . i n d e x O f ( " . N A M E " ) ) { i f ( 0 = = t h i s . s u b K e y . l e n g t h ) r e t u r n   v o i d   t e a w e b . w a r n ( " 请 输 入 参 数 值 " ) ; t h i s . k e y = t h i s . k e y . r e p l a c e ( " . N A M E " , " . " + t h i s . s u b K e y ) } t h i s . k e y s . p u s h ( t h i s . k e y ) , t h i s . c a n c e l ( ) } } , a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 0 ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { n u l l ! = e . $ r e f s . k e y & & e . $ r e f s . k e y . f o c u s ( ) } , 1 0 0 ) } , r e m o v e : f u n c t i o n ( e ) { t h i s . k e y s . $ r e m o v e ( e ) } , c h a n g e K e y : f u n c t i o n ( ) { i f ( 0 ! = t h i s . k e y . l e n g t h ) { l e t   i = t h i s ; v a r   e = t h i s . k e y D e f s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e = = i . k e y } ) ; n u l l ! = e & & ( t h i s . k e y D e s c r i p t i o n = e . d e s c r i p t i o n ) } } , k e y N a m e : f u n c t i o n ( i ) { l e t   s = t h i s , n = " " ; v a r   e = t h i s . k e y D e f s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e = = i | | ( i . s t a r t s W i t h ( " $ { a r g . " ) & & t . c o d e . s t a r t s W i t h ( " $ { a r g . " ) ? ( n = s . g e t S u b K e y ( " a r g . " , i ) , ! 0 ) : i . s t a r t s W i t h ( " $ { h e a d e r . " ) & & t . c o d e . s t a r t s W i t h ( " $ { h e a d e r . " ) ? ( n = s . g e t S u b K e y ( " h e a d e r . " , i ) , ! 0 ) : ! ( ! i . s t a r t s W i t h ( " $ { c o o k i e . " ) | | ! t . c o d e . s t a r t s W i t h ( " $ { c o o k i e . " ) ) & & ( n = s . g e t S u b K e y ( " c o o k i e . " , i ) , ! 0 ) ) } ) ; r e t u r n   n u l l ! = e ? 0 < n . l e n g t h ? e . n a m e + " :   " + n : e . n a m e : i } , g e t S u b K e y : f u n c t i o n ( e , t ) { v a r   i = t . i n d e x O f ( e = " $ { " + e ) ; r e t u r n   0 < = i ? ( t = t . s u b s t r i n g ( i + e . l e n g t h ) ) . s u b s t r i n g ( 0 , t . l e n g t h - 1 ) : " " } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "keysJSON"  : value = "JSON.stringify(keys)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "(key, index) in keys"  class = "ui label small basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { keyName ( key ) } }  & nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding"  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< select  class = "ui dropdown"  v - model = "key"  @ change = "changeKey" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = "" > [ 选择对象 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  v - for = "def in keyDefs"  : value = "def.code" > { { def . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field"  v - if = "key == '\${arg.NAME}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "subKey"  placeholder = "参数名"  size = "15" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field"  v - if = "key == '\${header.NAME}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "subKey"  placeholder = "Header名"  size = "15" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field"  v - if = "key == '\${cookie.NAME}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "subKey"  placeholder = "Cookie名"  size = "15" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  type = "button"  class = "ui button tiny"  @ click . prevent = "confirm" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< p  class = "comment"  v - if = "keyDescription.length > 0" > { { keyDescription } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 1em"  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  type = "button"  class = "ui button tiny"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - w e b - r o o t - b o x " , { p r o p s : [ " v - r o o t - 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 " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R o o t C o n f i g ; r e t u r n   n u l l = = ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 0 , d i r : " " , i n d e x e s : [ ] , s t r i p P r e f i x : " " , d e c o d e P a t h : ! 1 , i s B r e a k : ! 1 } : e ) . i n d e x e s & & ( e . i n d e x e s = [ ] ) , { r o o t C o n f i g : e , a d v a n c e d V i s i b l e : ! 1 } } , m e t h o d s : { 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 ( e ) { t h i s . a d v a n c e d V i s i b l e = e } , a d d I n d e x : 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 / s e r v e r / s e t t i n g s / w e b / c r e a t e I n d e x " , { h e i g h t : " 1 0 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . r o o t C o n f i g . i n d e x e s . p u s h ( e . d a t a . i n d e x ) } } ) } , r e m o v e I n d e x : f u n c t i o n ( e ) { t h i s . r o o t C o n f i g . i n d e x e s . $ r e m o v e ( e ) } , 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 . r o o t C o n f i g . i s P r i o r ) & & t h i s . r o o t C o n f i g . i s O n } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "rootJSON"  : value = "JSON.stringify(rootConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "rootConfig"  v - if = "vIsLocation || vIsGroup" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!vIsLocation && !vIsGroup) || rootConfig.isPrior" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否开启静态资源分发 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "rootConfig.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 静态资源根目录 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  name = "root"  v - model = "rootConfig.dir"  ref = "focus"  placeholder = "类似于 /home/www" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 可以访问此根目录下的静态资源 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeAdvancedVisible"  v - if = "isOn()" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && advancedVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 首页文件 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  TODO  支持排序  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "rootConfig.indexes.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  v - for = "(index, i) in rootConfig.indexes"  class = "ui label tiny" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { index } }  < a  href = ""  title = "删除"  @ click . prevent = "removeIndex(i)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addIndex()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 在URL中只有目录没有文件名时默认查找的首页文件 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 去除URL前缀 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "rootConfig.stripPrefix"  placeholder = "/PREFIX" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 可以把请求的路径部分前缀去除后再查找文件 , 比如把  < span  class = "ui label tiny" > / w e b / a p p / i n d e x . h t m l < / s p a n >   去 除 前 缀   < s p a n   c l a s s = " u i   l a b e l   t i n y " > / w e b < / s p a n >   后 就 变 成   < s p a n   c l a s s = " u i   l a b e l   t i n y " > / a p p / i n d e x . h t m l < / s p a n > 。   < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 路径解码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "rootConfig.decodePath" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 是否对请求路径进行URL解码 , 比如把  < span  class = "ui label tiny" > / W e b + A p p + B r o w s e r . h t m l < / s p a n >   解 码 成   < s p a n   c l a s s = " u i   l a b e l   t i n y " > / W e b   A p p   B r o w s e r . h t m l < / s p a n >   再 查 找 文 件 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 是否终止请求 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "rootConfig.isBreak" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 在找不到要访问的文件的情况下是否终止请求并返回404 , 如果选择终止请求 , 则不再尝试反向代理等设置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - w e b p - c o n f i g - b o x " , { p r o p s : [ " v - w e b p - 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 " , " v - r e q u i r e - c a c h e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v W e b p C o n f i g ; r e t u r n   n u l l = = ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 1 , q u a l i t y : 5 0 , 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 : [ " i m a g e / p n g " , " i m a g e / j p e g " , " i m a g e / b m p " , " i m a g e / x - i c o " , " i m a g e / g i f " ] , e x t e n s i o n s : [ " . p n g " , " . j p e g " , " . j p g " , " . b m p " , " . i c o " ] , c o n d s : n u l l } : e ) . m i m e T y p e s & & ( e . m i m e T y p e s = [ ] ) , n u l l = = e . e x t e n s i o n s & & ( e . e x t e n s i o n s = [ ] ) , { c o n f i g : e , m o r e O p t i o n s V i s i b l e : ! 1 , q u a l i t y : e . q u a l i t y } } , w a t c h : { q u a l i t y : 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 = 9 0 : t < 1 ? t = 1 : 1 0 0 < t & & ( t = 1 0 0 ) , t h i s . c o n f i g . q u a l i t y = 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 } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "webpJSON"  : 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 启用 < / t d > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  value = "1"  v - model = "config.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 选中后表示开启自动WebP压缩 < span  v - if = "vRequireCache" > ; 只有满足缓存条件的图片内容才会被转换 < / s p a n > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 图片质量 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  v - model = "quality"  style = "width: 5em"  maxlength = "4" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "ui label" > % < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 取值在0到100之间 , 数值越大生成的图像越清晰 , 同时文件尺寸也会越大 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 支持的扩展名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  : values = "config.extensions"  @ change = "changeExtensions"  placeholder = "比如 .html" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 含有这些扩展名的URL将会被转成WebP , 不区分大小写 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 支持的MimeType < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< values - box  : values = "config.mimeTypes"  @ change = "changeMimeTypes"  placeholder = "比如 text/*" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > 响应的Content - Type里包含这些MimeType的内容将会被转成WebP 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< more - options - tbody  @ change = "changeAdvancedVisible"  v - if = "isOn()" > < / m o r e - o p t i o n s - t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "isOn() && moreOptionsVisible" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td > 内容最小长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - name = "'minLength'"  : v - value = "config.minLength"  : v - unit = "'kb'" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 内容最大长度 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - name = "'maxLength'"  : v - value = "config.maxLength"  : v - unit = "'mb'" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 0 表示不限制 , 内容长度从文件尺寸或Content - Length中获取 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 匹配条件 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< http - request - conds - box  : v - conds = "config.conds"  @ change = "changeConds" > < / h t t p - r e q u e s t - c o n d s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 	 	 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " o r i g i n - s c h e d u l i n g - v i e w - b o x " , { p r o p s : [ " v - s c h e d u l i n g " , " v - p a r a m s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v S c h e d u l i n g ; r e t u r n { s c h e d u l i n g : e = n u l l = = e ? { } : e } } , m e t h o d s : { u p d a t e : f u n c t i o n ( ) { 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 / r e v e r s e P r o x y / u p d a t e S c h e d u l i n g P o p u p ? " + t h i s . v P a r a m s , { h e i g h t : " 2 1 e m " , c a l l b a c k : f u n c t i o n ( ) { w i n d o w . l o c a t i o n . r e l o a d ( ) } } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 当前正在使用的算法 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												{ { scheduling . name } }  & nbsp ;  < a  href = ""  @ click . prevent = "update()" > < span > [ 修改 ] < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > { { scheduling . description } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 - b l o c k - o p t i o n s " , { p r o p s : [ " v - b l o c k - o p t i o n s " ] , d a t a : f u n c t i o n ( ) { r e t u r n { b l o c k O p t i o n s : t h i s . v B l o c k O p t i o n s , s t a t u s C o d e : t h i s . v B l o c k O p t i o n s . s t a t u s C o d e , t i m e o u t : t h i s . v B l o c k O p t i o n s . t i m e o u t , i s E d i t i n g : ! 1 } } , w a t c h : { s t a t u s C o d e : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; i s N a N ( e ) ? t h i s . b l o c k O p t i o n s . s t a t u s C o d e = 4 0 3 : t h i s . b l o c k O p t i o n s . s t a t u s C o d e = e } , t i m e o u t : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; i s N a N ( e ) ? t h i s . b l o c k O p t i o n s . t i m e o u t = 0 : t h i s . b l o c k O p t i o n s . t i m e o u t = e } } , 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 } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "blockOptionsJSON"  : value = "JSON.stringify(blockOptions)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< a  href = ""  @ click . prevent = "edit" > 状态码 : { { statusCode } }  /  提示内容 : < span  v - if = "blockOptions.body != null && blockOptions.body.length > 0" > [ { { blockOptions . body . length } } 字符 ] < / s p a n > < s p a n   v - e l s e   c l a s s = " d i s a b l e d " > [ 无 ] < / s p a n >     /   超 时 时 间 : { { t i m e o u t } } 秒   < i   c l a s s = " i c o n   a n g l e "   : c l a s s = " { u p :   i s E d i t i n g ,   d o w n :   ! i s E d i t i n g } " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table"  v - show = "isEditing" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "statusCode"  style = "width:4.5em"  maxlength = "3" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 提示内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< textarea  rows = "3"  v - model = "blockOptions.body" > < / t e x t a r e a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 超时时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "timeout"  style = "width: 5em"  maxlength = "6" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 触发阻止动作时 , 封锁客户端IP的时间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > 	 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								` }),Vue.component("http-firewall-rules-box",{props:["v-rules","v-type"],data:function(){let e=this.vRules;return{rules:e=null==e?[]:e}},methods:{addRule:function(){window.UPDATING_RULE=null;let t=this;teaweb.popup("/servers/components/waf/createRulePopup?type="+this.vType,{callback:function(e){t.rules.push(e.data.rule)}})},updateRule:function(t,e){window.UPDATING_RULE=e;let i=this;teaweb.popup("/servers/components/waf/createRulePopup?type="+this.vType,{callback:function(e){Vue.set(i.rules,t,e.data.rule)}})},removeRule:function(e){let t=this;teaweb.confirm("确定要删除此规则吗?",function(){t.rules. $ remove(e)})}},template: ` < div > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "rulesJSON"  : value = "JSON.stringify(rules)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "rules.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "(rule, index) in rules"  class = "ui label small basic"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												{ { rule . name } } [ { { rule . param } } ]  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												<!--  cc2  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "rule.param == '\${cc2}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													{ { rule . checkpointOptions . period } } 秒 / { { rule . checkpointOptions . threshold } } 请求 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s p a n > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												<!--  refererBlock  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "rule.param == '\${refererBlock}'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													{ { rule . checkpointOptions . allowDomains } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "rule.paramFilters != null && rule.paramFilters.length > 0"  v - for = "paramFilter in rule.paramFilters" >  |  { { paramFilter . code } } < / s p a n >   < v a r > { { r u l e . o p e r a t o r } } < / v a r >   { { r u l e . v a l u e } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
												<!--  description  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  v - if = "rule.description != null && rule.description.length > 0"  class = "grey small" > ( { { rule . description } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "修改"  @ click . prevent = "updateRule(index, rule)" > < i  class = "icon pencil small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "删除"  @ click . prevent = "removeRule(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addRule()" > + < / b u t t o n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - f a s t c g i - b o x " , { p r o p s : [ " v - f a s t c g i - r e f " , " v - f a s t c g i - c o n f i g s " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v F a s t c g i R e f , t = ( n u l l = = e & & ( e = { i s P r i o r : ! 1 , i s O n : ! 1 , f a s t c g i I d s : [ ] } ) , t h i s . v F a s t c g i C o n f i g s ) ; r e t u r n   n u l l = = t ? t = [ ] : e . f a s t c g i I d s = t . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i d } ) , { f a s t c g i R e f : e , f a s t c g i C o n f i g s : t , a d v a n c e d V i s i b l e : ! 1 } } , 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 . f a s t c g i R e f . i s P r i o r ) & & t h i s . f a s t c g i R e f . i s O n } , c r e a t e F a s t c g i : 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 / s e r v e r / s e t t i n g s / f a s t c g i / 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 e a w e b . s u c c e s s ( " 添 加 成 功 " , f u n c t i o n ( ) { t . f a s t c g i C o n f i g s . p u s h ( e . d a t a . f a s t c g i ) , t . f a s t c g i R e f . f a s t c g i I d s . p u s h ( e . d a t a . f a s t c g i . i d ) } ) } } ) } , u p d a t e F a s t c g i : f u n c t i o n ( e , t ) { 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 / s e r v e r / s e t t i n g s / f a s t c g i / u p d a t e P o p u p ? f a s t c g i I d = " + e , { c a l l b a c k : f u n c t i o n ( e ) { t e a w e b . s u c c e s s ( " 修 改 成 功 " , f u n c t i o n ( ) { V u e . s e t ( i . f a s t c g i C o n f i g s , t , e . d a t a . f a s t c g i ) } ) } } ) } , r e m o v e F a s t c g i : f u n c t i o n ( e ) { t h i s . f a s t c g i R e f . f a s t c g i I d s . $ r e m o v e ( e ) , t h i s . f a s t c g i C o n f i g s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "fastcgiRefJSON"  : value = "JSON.stringify(fastcgiRef)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< prior - checkbox  : v - config = "fastcgiRef"  v - if = "vIsLocation" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "(!this.vIsLocation || this.fastcgiRef.isPrior)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用配置 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "fastcgiRef.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - if = "isOn()" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > Fastcgi服务 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - show = "fastcgiConfigs.length > 0"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui label basic small"  : class = "{disabled: !fastcgi.isOn}"  v - for = "(fastcgi, index) in fastcgiConfigs" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { fastcgi . address } }  & nbsp ;  < a  href = ""  title = "修改"  @ click . prevent = "updateFastcgi(fastcgi.id, index)" > < i  class = "ui icon pencil small" > < / i > < / a >   & n b s p ;   < a   h r e f = " "   t i t l e = " 删 除 "   @ c l i c k . p r e v e n t = " r e m o v e F a s t c g i ( i n d e x ) " > < i   c l a s s = " u i   i c o n   r e m o v e " > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  class = "ui divided" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  type = "button"  class = "ui button tiny"  @ click . prevent = "createFastcgi()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("http-methods-box",{props:["v-methods"],data:function(){let e=this.vMethods;return{methods:e=null==e?[]:e,isAdding:!1,addingMethod:""}},methods:{add:function(){this.isAdding=!0;let e=this;setTimeout(function(){e.$refs.addingMethod.focus()},100)},confirm:function(){let e=this;this.addingMethod=this.addingMethod.replace(/ \ s / g , "" ) . toUpperCase ( ) , 0 == this . addingMethod . length ? teaweb . warn ( "请输入要添加的请求方法" , function ( ) { e . $refs . addingMethod . focus ( ) } ) : this . methods . $contains ( this . addingMethod ) ? teaweb . warn ( "此请求方法已经存在,无需重复添加" , function ( ) { e . $refs . addingMethod . focus ( ) } ) : ( this . methods . push ( this . addingMethod ) , this . cancel ( ) ) } , remove : function ( e ) { this . methods . $remove ( e ) } , cancel : function ( ) { this . isAdding = ! 1 , this . addingMethod = "" } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-15 09:56:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "methodsJSON"  : value = "JSON.stringify(methods)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "methods.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label small basic"  v - for = "(method, index) in methods" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { method } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											& nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "addingMethod"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  ref = "addingMethod"  placeholder = "如GET"  size = "10" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												& nbsp ;  < a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< p  class = "comment" > 格式为大写 , 比如 < code - label > GET < / c o d e - l a b e l > 、 < c o d e - l a b e l > P O S T < / c o d e - l a b e l > 等 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 0.5em"  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("http-cond-url-extension",{props:["v-cond"],data:function(){let e={isRequest:!0,param:"${requestPathExtension}",operator:"in",value:"[]"},t=(null!=this.vCond&&this.vCond.param==e.param&&(e.value=this.vCond.value),[]);try{t=JSON.parse(e.value)}catch(e){}return{cond:e,extensions:t,isAdding:!1,addingExt:""}},watch:{extensions:function(){this.cond.value=JSON.stringify(this.extensions)}},methods:{addExt:function(){if(this.isAdding=!this.isAdding,this.isAdding){let e=this;setTimeout(function(){e.$refs.addingExt.focus()},100)}},cancelAdding:function(){this.isAdding=!1,this.addingExt=""},confirmAdding:function(){0!=this.addingExt.length&&("."!=this.addingExt[0]&&(this.addingExt="."+this.addingExt),this.addingExt=this.addingExt.replace(/ \ s + / g , " " ) . t o L o w e r C a s e ( ) , t h i s . e x t e n s i o n s . p u s h ( t h i s . a d d i n g E x t ) , t h i s . c a n c e l A d d i n g ( ) ) } , r e m o v e E x t : f u n c t i o n ( e ) { t h i s . e x t e n s i o n s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "extensions.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small"  v - for = "(ext, index) in extensions" > { { ext } }  < a  href = ""  title = "删除"  @ click . prevent = "removeExt(index)" > < i  class = "icon remove" > < / i > < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline"  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "text"  size = "6"  maxlength = "100"  v - model = "addingExt"  ref = "addingExt"  placeholder = ".xxx"  @ keyup . enter = "confirmAdding"  @ keypress . enter . prevent = "1"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmAdding" > 确认 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "取消"  @ click . prevent = "cancelAdding" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addExt()" > + 添加扩展名 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 扩展名需要包含点 ( . ) 符号 , 例如 < span  class = "ui label tiny" > . jpg < / s p a n > 、 < s p a n   c l a s s = " u i   l a b e l   t i n y " > . p n g < / s p a n > 之 类 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("http-cond-url-not-extension",{props:["v-cond"],data:function(){let e={isRequest:!0,param:"${requestPathExtension}",operator:"not in",value:"[]"},t=(null!=this.vCond&&this.vCond.param==e.param&&(e.value=this.vCond.value),[]);try{t=JSON.parse(e.value)}catch(e){}return{cond:e,extensions:t,isAdding:!1,addingExt:""}},watch:{extensions:function(){this.cond.value=JSON.stringify(this.extensions)}},methods:{addExt:function(){if(this.isAdding=!this.isAdding,this.isAdding){let e=this;setTimeout(function(){e.$refs.addingExt.focus()},100)}},cancelAdding:function(){this.isAdding=!1,this.addingExt=""},confirmAdding:function(){0!=this.addingExt.length&&("."!=this.addingExt[0]&&(this.addingExt="."+this.addingExt),this.addingExt=this.addingExt.replace(/ \ s + / g , " " ) . t o L o w e r C a s e ( ) , t h i s . e x t e n s i o n s . p u s h ( t h i s . a d d i n g E x t ) , t h i s . c a n c e l A d d i n g ( ) ) } , r e m o v e E x t : f u n c t i o n ( e ) { t h i s . e x t e n s i o n s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "extensions.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small"  v - for = "(ext, index) in extensions" > { { ext } }  < a  href = ""  title = "删除"  @ click . prevent = "removeExt(index)" > < i  class = "icon remove" > < / i > < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline"  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "text"  size = "6"  maxlength = "100"  v - model = "addingExt"  ref = "addingExt"  placeholder = ".xxx"  @ keyup . enter = "confirmAdding"  @ keypress . enter . prevent = "1"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmAdding" > 确认 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "取消"  @ click . prevent = "cancelAdding" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addExt()" > + 添加扩展名 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 扩展名需要包含点 ( . ) 符号 , 例如 < span  class = "ui label tiny" > . jpg < / s p a n > 、 < s p a n   c l a s s = " u i   l a b e l   t i n y " > . p n g < / s p a n > 之 类 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u r l - p r e f i x " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { r e q u e s t P a t h } " , o p e r a t o r : " p r e f i x " , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > URL前缀 , 有此前缀的URL都将会被匹配 , 通常以 < code - label > / < / c o d e - l a b e l > 开 头 , 比 如 < c o d e - l a b e l > / s t a t i c < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u r l - n o t - p r e f i x " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { r e q u e s t P a t h } " , o p e r a t o r : " p r e f i x " , v a l u e : " " , i s R e v e r s e : ! 0 , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 要排除的URL前缀 , 有此前缀的URL都将会被匹配 , 通常以 < code - label > / < / c o d e - l a b e l > 开 头 , 比 如 < c o d e - l a b e l > / s t a t i c < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u r l - e q " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { r e q u e s t P a t h } " , o p e r a t o r : " e q " , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 完整的URL路径 , 通常以 < code - label > / < / c o d e - l a b e l > 开 头 , 比 如 < c o d e - l a b e l > / s t a t i c / u i . j s < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u r l - n o t - e q " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { r e q u e s t P a t h } " , o p e r a t o r : " e q " , v a l u e : " " , i s R e v e r s e : ! 0 , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 要排除的完整的URL路径 , 通常以 < code - label > / < / c o d e - l a b e l > 开 头 , 比 如 < c o d e - l a b e l > / s t a t i c / u i . j s < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u r l - r e g e x p " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { r e q u e s t P a t h } " , o p e r a t o r : " r e g e x p " , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 匹配URL的正则表达式 , 比如 < code - label > ^ /static/ ( . * ) . js$ < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u r l - n o t - r e g e x p " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { r e q u e s t P a t h } " , o p e r a t o r : " n o t   r e g e x p " , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > < strong > 不要 < / s t r o n g > 匹 配 U R L 的 正 则 表 达 式 , 意 即 只 要 匹 配 成 功 则 排 除 此 条 件 , 比 如 < c o d e - l a b e l > ^ / s t a t i c / ( . * ) . j s $ < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u s e r - a g e n t - r e g e x p " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { u s e r A g e n t } " , o p e r a t o r : " r e g e x p " , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 匹配User - Agent的正则表达式 , 比如 < code - label > Android | iPhone < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - u s e r - a g e n t - n o t - r e g e x p " , { p r o p s : [ " v - c o n d " ] , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " $ { u s e r A g e n t } " , o p e r a t o r : " n o t   r e g e x p " , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n   n u l l ! = t h i s . v C o n d & & " s t r i n g " = = t y p e o f   t h i s . v C o n d . v a l u e & & ( e . v a l u e = t h i s . v C o n d . v a l u e ) , { c o n d : e } } , m e t h o d s : { c h a n g e C a s e I n s e n s i t i v e : f u n c t i o n ( e ) { t h i s . c o n d . i s C a s e I n s e n s i t i v e = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  v - model = "cond.value" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 匹配User - Agent的正则表达式 , 比如 < code - label > Android | iPhone < / c o d e - l a b e l > , 如 果 匹 配 , 则 排 除 此 条 件 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("http-cond-mime-type",{props:["v-cond"],data:function(){let e={isRequest:!1,param:"${response.contentType}",operator:"mime type",value:"[]"};return null!=this.vCond&&this.vCond.param==e.param&&(e.value=this.vCond.value),{cond:e,mimeTypes:JSON.parse(e.value),isAdding:!1,addingMimeType:""}},watch:{mimeTypes:function(){this.cond.value=JSON.stringify(this.mimeTypes)}},methods:{addMimeType:function(){if(this.isAdding=!this.isAdding,this.isAdding){let e=this;setTimeout(function(){e.$refs.addingMimeType.focus()},100)}},cancelAdding:function(){this.isAdding=!1,this.addingMimeType=""},confirmAdding:function(){0!=this.addingMimeType.length&&(this.addingMimeType=this.addingMimeType.replace(/ \ s + / g , " " ) , t h i s . m i m e T y p e s . p u s h ( t h i s . a d d i n g M i m e T y p e ) , t h i s . c a n c e l A d d i n g ( ) ) } , r e m o v e M i m e T y p e : f u n c t i o n ( e ) { t h i s . m i m e T y p e s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "mimeTypes.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small"  v - for = "(mimeType, index) in mimeTypes" > { { mimeType } }  < a  href = ""  title = "删除"  @ click . prevent = "removeMimeType(index)" > < i  class = "icon remove" > < / i > < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline"  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "text"  size = "16"  maxlength = "100"  v - model = "addingMimeType"  ref = "addingMimeType"  placeholder = "类似于image/png"  @ keyup . enter = "confirmAdding"  @ keypress . enter . prevent = "1"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmAdding" > 确认 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "取消"  @ click . prevent = "cancelAdding" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addMimeType()" > + 添加MimeType < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 服务器返回的内容的MimeType , 比如 < span  class = "ui label tiny" > text / html < /span>、<span class="ui label tiny">image/ * < / s p a n > 等 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " h t t p - c o n d - p a r a m s " , { p r o p s : [ " v - c o n d " ] , m o u n t e d : f u n c t i o n ( ) { l e t   i = t h i s . v C o n d ; i f ( n u l l ! = i ) i f ( t h i s . o p e r a t o r = i . o p e r a t o r , [ " r e g e x p " , " n o t   r e g e x p " , " e q " , " n o t " , " p r e f i x " , " s u f f i x " , " c o n t a i n s " , " n o t   c o n t a i n s " , " e q   i p " , " g t   i p " , " g t e   i p " , " l t   i p " , " l t e   i p " , " i p   r a n g e " ] . $ c o n t a i n s ( i . o p e r a t o r ) ) t h i s . s t r i n g V a l u e = i . v a l u e ; e l s e   i f ( [ " e q   i n t " , " e q   f l o a t " , " g t " , " g t e " , " l t " , " l t e " , " m o d   1 0 " , " i p   m o d   1 0 " , " m o d   1 0 0 " , " i p   m o d   1 0 0 " ] . $ c o n t a i n s ( i . o p e r a t o r ) ) t h i s . n u m b e r V a l u e = i . v a l u e ; e l s e { v a r   e ; i f ( [ " m o d " , " i p   m o d " ] . $ c o n t a i n s ( i . o p e r a t o r ) ) r e t u r n   e = i . v a l u e . s p l i t ( " , " ) , t h i s . m o d D i v V a l u e = e [ 0 ] , v o i d ( 1 < e . l e n g t h & & ( t h i s . m o d R e m V a l u e = e [ 1 ] ) ) ; l e t   t = t h i s ; i f ( [ " i n " , " n o t   i n " , " f i l e   e x t " , " m i m e   t y p e " ] . $ c o n t a i n s ( i . o p e r a t o r ) ) t r y { l e t   e = J S O N . p a r s e ( i . v a l u e ) ; n u l l ! = e & & e   i n s t a n c e o f   A r r a y & & e . f o r E a c h ( f u n c t i o n ( e ) { t . s t r i n g V a l u e s . p u s h ( e ) } ) } c a t c h ( e ) { } e l s e [ " v e r s i o n   r a n g e " ] . $ c o n t a i n s ( i . o p e r a t o r ) & & ( e = i . v a l u e . s p l i t ( " , " ) , t h i s . v e r s i o n R a n g e M i n V a l u e = e [ 0 ] , 1 < e . l e n g t h & & ( t h i s . v e r s i o n R a n g e M a x V a l u e = e [ 1 ] ) ) } } , d a t a : f u n c t i o n ( ) { l e t   e = { i s R e q u e s t : ! 0 , p a r a m : " " , o p e r a t o r : w i n d o w . R E Q U E S T _ C O N D _ O P E R A T O R S [ 0 ] . o p , v a l u e : " " , i s C a s e I n s e n s i t i v e : ! 1 } ; r e t u r n { c o n d : e = n u l l ! = t h i s . v C o n d ? t h i s . v C o n d : e , o p e r a t o r s : w i n d o w . R E Q U E S T _ C O N D _ O P E R A T O R S , o p e r a t o r : w i n d o w . R E Q U E S T _ C O N D _ O P E R A T O R S [ 0 ] . o p , o p e r a t o r D e s c r i p t i o n : w i n d o w . R E Q U E S T _ C O N D _ O P E R A T O R S [ 0 ] . d e s c r i p t i o n , v a r i a b l e s : w i n d o w . R E Q U E S T _ V A R I A B L E S , v a r i a b l e : " " , s t r i n g V a l u e : " " , n u m b e r V a l u e : " " , m o d D i v V a l u e : " " , m o d R e m V a l u e : " " , s t r i n g V a l u e s : [ ] , v e r s i o n R a n g e M i n V a l u e : " " , v e r s i o n R a n g e M a x V a l u e : " " } } , m e t h o d s : { c h a n g e V a r i a b l e : f u n c t i o n ( ) { l e t   e = t h i s . c o n d . p a r a m ; n u l l = = e & & ( e = " " ) , t h i s . c o n d . p a r a m = e + t h i s . v a r i a b l e } , c h a n g e O p e r a t o r : f u n c t i o n ( ) { l e t   t = t h i s , i = ( t h i s . o p e r a t o r s . f o r E a c h ( f u n c t i o n ( e ) { e . o p = = t . o p e r a t o r & & ( t . o p e r a t o r D e s c r i p t i o n = e . d e s c r i p t i o n ) } ) , t h i s . c o n d . o p e r a t o r = t h i s . o p e r a t o r , d o c u m e n t . g e t E l e m e n t B y I d ( " v a r i a b l e s - v a l u e - b o x " ) ) ; n u l l ! = i & & s e t T i m e o u t ( f u n c t i o n ( ) { l e t   e = i . g e t E l e m e n t s B y T a g N a m e ( " I N P U T " ) ; 0 < e . l e n g t h & & e [ 0 ] . f o c u s ( ) } , 1 0 0 ) } , c h a n g e S t r i n g V a l u e s : f u n c t i o n ( e ) { t h i s . s t r i n g V a l u e s = e , t h i s . c o n d . v a l u e = J S O N . s t r i n g i f y ( e ) } } , w a t c h : { s t r i n g V a l u e : f u n c t i o n ( e ) { t h i s . c o n d . v a l u e = e } , n u m b e r V a l u e : f u n c t i o n ( e ) { t h i s . c o n d . v a l u e = e } , m o d D i v V a l u e : f u n c t i o n ( t ) { i f ( 0 ! = t . l e n g t h ) { l e t   e = p a r s e I n t ( t ) ; i s N a N ( e ) & & ( e = 1 ) , t h i s . m o d D i v V a l u e = e , t h i s . c o n d . v a l u e = e + " , " + t h i s . m o d R e m V a l u e } } , m o d R e m V a l u e : f u n c t i o n ( t ) { i f ( 0 ! = t . l e n g t h ) { l e t   e = p a r s e I n t ( t ) ; i s N a N ( e ) & & ( e = 0 ) , t h i s . m o d R e m V a l u e = e , t h i s . c o n d . v a l u e = t h i s . m o d D i v V a l u e + " , " + e } } , v e r s i o n R a n g e M i n V a l u e : f u n c t i o n ( e ) { t h i s . c o n d . v a l u e = t h i s . v e r s i o n R a n g e M i n V a l u e + " , " + t h i s . v e r s i o n R a n g e M a x V a l u e } , v e r s i o n R a n g e M a x V a l u e : f u n c t i o n ( e ) { t h i s . c o n d . v a l u e = t h i s . v e r s i o n R a n g e M i n V a l u e + " , " + t h i s . v e r s i o n R a n g e M a x V a l u e } } , t e m p l a t e : ` < t b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 参数值 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "hidden"  name = "condJSON"  : value = "JSON.stringify(cond)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  placeholder = "\${xxx}"  v - model = "cond.param" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< select  class = "ui dropdown"  style = "width: 7em; color: grey"  v - model = "variable"  @ change = "changeVariable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< option  value = "" > [ 常用参数 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< option  v - for = "v in variables"  : value = "v.code" > { { v . code } }  -  { { v . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 	 	 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< p  class = "comment" > 其中可以使用变量 , 类似于 < code - label > \ $ { requestPath } < / c o d e - l a b e l > , 也 可 以 是 多 个 变 量 的 组 合 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 操作符 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< select  class = "ui dropdown auto-width"  v - model = "operator"  @ change = "changeOperator" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  v - for = "operator in operators"  : value = "operator.op" > { { operator . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > { { operatorDescription } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - show = "!['file exist', 'file not exist'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 对比值 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td  id = "variables-value-box" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  正则表达式  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['regexp', 'not regexp'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "stringValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 要匹配的正则表达式 , 比如 < code - label > ^ /static/ ( . + ) . js < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  数字相关  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['eq int', 'eq float', 'gt', 'gte', 'lt', 'lte'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "numberValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > 要对比的数字 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  取模  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['mod 10'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "numberValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 参数值除以10的余数 , 在0 - 9 之间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['mod 100'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "numberValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 参数值除以100的余数 , 在0 - 99 之间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['mod', 'ip mod'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< div  class = "ui field" > 除 : < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "modDivValue"  placeholder = "除数" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< div  class = "ui field" > 余 : < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "modRemValue"  placeholder = "余数" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  字符串相关  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['eq', 'not', 'prefix', 'suffix', 'contains', 'not contains'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "stringValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'eq'" > 和参数值一致的字符串 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'not'" > 和参数值不一致的字符串 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'prefix'" > 参数值的前缀 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'suffix'" > 参数值的后缀为此字符串 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'contains'" > 参数值包含此字符串 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'not contains'" > 参数值不包含此字符串 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['in', 'not in', 'file ext', 'mime type'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< values - box  @ change = "changeStringValues"  : values = "stringValues"  size = "15" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'in'" > 添加参数值列表 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'not in'" > 添加参数值列表 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'file ext'" > 添加扩展名列表 , 比如 < code - label > png < / c o d e - l a b e l > 、 < c o d e - l a b e l > h t m l < / c o d e - l a b e l > , 不 包 括 点 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment"  v - if = "cond.operator == 'mime type'" > 添加MimeType列表 , 类似于 < code - label > text / html < /code-label>、<code-label>image/ * < / c o d e - l a b e l > 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['version range'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > < input  type = "text"  v - model = "versionRangeMinValue"  maxlength = "200"  placeholder = "最小版本"  style = "width: 10em" / > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > - < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui field" > < input  type = "text"  v - model = "versionRangeMaxValue"  maxlength = "200"  placeholder = "最大版本"  style = "width: 10em" / > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!--  IP相关  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['eq ip', 'gt ip', 'gte ip', 'lt ip', 'lte ip', 'ip range'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  style = "width: 10em"  v - model = "stringValue"  placeholder = "x.x.x.x" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > 要对比的IP 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['ip mod 10'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "numberValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 参数中IP转换成整数后除以10的余数 , 在0 - 9 之间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - if = "['ip mod 100'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  maxlength = "11"  size = "11"  style = "width: 5em"  v - model = "numberValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 参数中IP转换成整数后除以100的余数 , 在0 - 99 之间 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 17:14:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tr  v - if = "['regexp', 'not regexp', 'eq', 'not', 'prefix', 'suffix', 'contains', 'not contains', 'in', 'not in'].$contains(cond.operator)" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 不区分大小写 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										   < div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "checkbox"  v - model = "cond.isCaseInsensitive" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< p  class = "comment" > 选中后表示对比时忽略参数值的大小写 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t r > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /tbody>`}),Vue.component("http-status-box",{props:["v-status-list"],data:function(){let e=this.vStatusList;return{statusList:e=null==e?[]:e,isAdding:!1,addingStatus:""}},methods:{add:function(){this.isAdding=!0;let e=this;setTimeout(function(){e.$refs.addingStatus.focus()},100)},confirm:function(){let e=this;this.addingStatus=this.addingStatus.replace(/ \ s / g , "" ) . toUpperCase ( ) , 0 == this . addingStatus . length ? teaweb . warn ( "请输入要添加的状态码" , function ( ) { e . $refs . addingStatus . focus ( ) } ) : this . statusList . $contains ( this . addingStatus ) ? teaweb . warn ( "此状态码已经存在,无需重复添加" , function ( ) { e . $refs . addingStatus . focus ( ) } ) : this . addingStatus . match ( /^\d{3}$/ ) ? ( this . statusList . push ( parseInt ( this . addingStatus , 10 ) ) , this . cancel ( ) ) : teaweb . warn ( "请输入正确的状态码" , function ( ) { e . $refs . addingStatus . focus ( ) } ) } , remove : function ( e ) { this . statusList . $remove ( e ) } , cancel : function ( ) { this . isAdding = ! 1 , this . addingStatus = "" } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-15 09:56:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "statusListJSON"  : value = "JSON.stringify(statusList)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "statusList.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label small basic"  v - for = "(status, index) in statusList" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { status } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											& nbsp ;  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "addingStatus"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  ref = "addingStatus"  placeholder = "如200"  size = "3"  maxlength = "3"  style = "width: 5em" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												& nbsp ;  < a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< p  class = "comment" > 格式为三位数字 , 比如 < code - label > 200 < / c o d e - l a b e l > 、 < c o d e - l a b e l > 4 0 4 < / c o d e - l a b e l > 等 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "margin-top: 0.5em"  v - if = "!isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s e r v e r - g r o u p - s e l e c t o r " , { p r o p s : [ " v - g r o u p s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v G r o u p s ; r e t u r n { g r o u p s : e = n u l l = = e ? [ ] : e } } , m e t h o d s : { s e l e c t G r o u p : f u n c t i o n ( ) { l e t   t = t h i s ; v a r   e = t h i s . g r o u p s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i d . t o S t r i n g ( ) } ) . j o i n ( " , " ) ; t e a w e b . p o p u p ( " / s e r v e r s / g r o u p s / s e l e c t P o p u p ? s e l e c t e d G r o u p I d s = " + e , { c a l l b a c k : f u n c t i o n ( e ) { t . g r o u p s . p u s h ( e . d a t a . g r o u p ) } } ) } , a d d G r o u p : 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 / g r o u p s / c r e a t e P o p u p " , { c a l l b a c k : f u n c t i o n ( e ) { t . g r o u p s . p u s h ( e . d a t a . g r o u p ) } } ) } , r e m o v e G r o u p : f u n c t i o n ( e ) { t h i s . g r o u p s . $ r e m o v e ( e ) } , g r o u p I d s : f u n c t i o n ( ) { r e t u r n   t h i s . g r o u p s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i d } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "groups.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small basic"  v - if = "groups.length > 0"  v - for = "(group, index) in groups" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "hidden"  name = "groupIds"  : value = "group.id" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { group . name } }  & nbsp ; < a  href = ""  title = "删除"  @ click . prevent = "removeGroup(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  @ click . prevent = "selectGroup()" > [ 选择分组 ] < / a >   & n b s p ;   < a   h r e f = " "   @ c l i c k . p r e v e n t = " a d d G r o u p ( ) " > [ 添 加 分 组 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s c r i p t - g r o u p - c o n f i g - b o x " , { p r o p s : [ " v - g r o u p " , " v - i s - l o c a t i o n " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v G r o u p , t = ( n u l l = = ( e = n u l l = = e ? { i s P r i o r : ! 1 , i s O n : ! 0 , s c r i p t s : [ ] } : e ) . s c r i p t s & & ( e . s c r i p t s = [ ] ) , n u l l ) ; r e t u r n   0 < e . s c r i p t s . l e n g t h & & ( t = e . s c r i p t s [ e . s c r i p t s . l e n g t h - 1 ] ) , { g r o u p : e , s c r i p t : t } } , m e t h o d s : { c h a n g e S c r i p t : f u n c t i o n ( e ) { t h i s . g r o u p . s c r i p t s = [ e ] , t h i s . c h a n g e ( ) } , c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . g r o u p ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-26 22:10:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< prior - checkbox  : v - config = "group"  v - if = "vIsLocation" > < / p r i o r - c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  : style = "{opacity: (!vIsLocation || group.isPrior) ? 1 : 0.5}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< script - config - box  : v - script - config = "script"  comment = "在接收到客户端请求之后立即调用。预置req、resp变量。"  @ change = "changeScript"  : v - is - location = "vIsLocation" > < / s c r i p t - c o n f i g - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " m e t r i c - p e r i o d - c o n f i g - b o x " , { p r o p s : [ " v - p e r i o d " , " v - p e r i o d - u n i t " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v P e r i o d , t = t h i s . v P e r i o d U n i t ; r e t u r n   n u l l ! = e & & 0 ! = e . t o S t r i n g ( ) . l e n g t h | | ( e = 1 ) , n u l l ! = t & & 0 ! = t . l e n g t h | | ( t = " d a y " ) , { p e r i o d C o n f i g : { p e r i o d : e , u n i t : t } } } , w a t c h : { " p e r i o d C o n f i g . p e r i o d " : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) , ( i s N a N ( e ) | | e < = 0 ) & & ( e = 1 ) , t h i s . p e r i o d C o n f i g . p e r i o d = e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "periodJSON"  : value = "JSON.stringify(periodConfig)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "text"  v - model = "periodConfig.period"  maxlength = "4"  size = "4" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< select  class = "ui dropdown"  v - model = "periodConfig.unit" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< option  value = "minute" > 分钟 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< option  value = "hour" > 小时 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< option  value = "day" > 天 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< option  value = "week" > 周 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< option  value = "month" > 月 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment" > 在此周期内同一对象累积为同一数据 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " t r a f f i c - l i m i t - c o n f i g - b o x " , { p r o p s : [ " v - t r a f f i c - l i m i t " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v T r a f f i c L i m i t ; r e t u r n   n u l l = = ( e = n u l l = = e ? { i s O n : ! 1 , d a i l y S i z e : { c o u n t : - 1 , u n i t : " g b " } , m o n t h l y S i z e : { c o u n t : - 1 , u n i t : " g b " } , t o t a l S i z e : { c o u n t : - 1 , u n i t : " g b " } , n o t i c e P a g e B o d y : " " } : e ) . d a i l y S i z e & & ( e . d a i l y S i z e = { c o u n t : - 1 , u n i t : " g b " } ) , n u l l = = e . m o n t h l y S i z e & & ( e . m o n t h l y S i z e = { c o u n t : - 1 , u n i t : " g b " } ) , n u l l = = e . t o t a l S i z e & & ( e . t o t a l S i z e = { c o u n t : - 1 , u n i t : " g b " } ) , { c o n f i g : e } } , m e t h o d s : { s h o w B o d y T e m p l a t e : f u n c t i o n ( ) { t h i s . c o n f i g . n o t i c e P a g e B o d y = ` < ! D O C T Y P E   h t m l > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< html > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< title > Traffic  Limit  Exceeded  Warning < / t i t l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< h1 > Traffic  Limit  Exceeded  Warning < / h 1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< p > The  site  traffic  has  exceeded  the  limit .  Please  contact  with  the  site  administrator . < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< address > Request  ID :  \ $ { requestId } . < / a d d r e s s > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / h t m l > ` } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "trafficLimitJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable definition" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< checkbox  v - model = "config.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > 注意 : 由于流量统计是每5分钟统计一次 , 所以超出流量限制后 , 对用户的提醒也会有所延迟 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - show = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 日流量限制 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - value = "config.dailySize" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 月流量限制 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - value = "config.monthlySize" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											<!-- < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 总体限制 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< size - capacity - box  : v - value = "config.totalSize" > < / s i z e - c a p a c i t y - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< p  class = "comment" > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > - - > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 网页提示内容 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< textarea  v - model = "config.noticePageBody" > < / t e x t a r e a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment" > < a  href = ""  @ click . prevent = "showBodyTemplate" > [ 使用模板 ] < / a > 。 当 达 到 流 量 限 制 时 网 页 显 示 的 H T M L 内 容 , 不 填 写 则 显 示 默 认 的 提 示 内 容 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "synFloodJSON"  : value = "JSON.stringify(config)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< a  href = ""  @ click . prevent = "edit" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - if = "config.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											已启用  /  < span > 空连接次数 : { { config . minAttempts } } 次 / 分钟 < /span> /  封禁时间 : { { config . timeoutSeconds } } 秒  < span  v - if = "config.ignoreLocal" > /   忽 略 局 域 网 访 问 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  v - else > 未启用 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< i  class = "icon angle"  : class = "{up: isEditing, down: !isEditing}" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< table  class = "ui table selectable"  v - show = "isEditing" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "config.isOn" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 启用后 , WAF将会尝试自动检测并阻止SYN  Flood攻击 。 此功能需要节点已安装并启用Firewalld 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 空连接次数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "minAttempts"  style = "width: 5em"  maxlength = "4" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label" > 次 / 分钟 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 10:03:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 超过此数字的 "空连接" 将被视为SYN  Flood攻击 , 为了防止误判 , 此数值默认不小于5 。 < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 封禁时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  v - model = "timeoutSeconds"  style = "width: 5em"  maxlength = "4" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  class = "ui label" > 秒 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 忽略局域网访问 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "config.ignoreLocal" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " a d m i n - s e l e c t o r " , { p r o p s : [ " v - a d m i n - i d " ] , 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 ( " / a d m i n s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . a d m i n s = e . d a t a . a d m i n s } ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v A d m i n I d ; r e t u r n { a d m i n s : [ ] , a d m i n I d : e = n u l l = = e ? 0 : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < select  class = "ui dropdown auto-width"  name = "adminId"  v - model = "adminId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < option  value = "0" > [ 选择系统用户 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								        < option  v - for = "admin in admins"  : value = "admin.id" > { { admin . name } } ( { { admin . username } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " i p - l i s t - b i n d - b o x " , { p r o p s : [ " v - h t t p - f i r e w a l l - p o l i c y - i d " , " v - t y p e " ] , m o u n t e d : f u n c t i o n ( ) { t h i s . r e f r e s h ( ) } , d a t a : f u n c t i o n ( ) { r e t u r n { p o l i c y I d : t h i s . v H t t p F i r e w a l l P o l i c y I d , t y p e : t h i s . v T y p e , l i s t s : [ ] } } , m e t h o d s : { b i n d : f u n c t i o n ( ) { l e t   e = t h i s ; t e a w e b . p o p u p ( " / s e r v e r s / i p l i s t s / b i n d H T T P F i r e w a l l P o p u p ? h t t p F i r e w a l l P o l i c y I d = " + t h i s . p o l i c y I d + " & t y p e = " + t h i s . t y p e , { w i d t h : " 5 0 e m " , h e i g h t : " 3 4 e m " , c a l l b a c k : f u n c t i o n ( ) { } , o n C l o s e : f u n c t i o n ( ) { e . r e f r e s h ( ) } } ) } , r e m o v e : f u n c t i o n ( t , e ) { l e t   i = t h i s ; t e a w e b . c o n f i r m ( " 确 定 要 删 除 这 个 绑 定 的 I P 名 单 吗 ? " , f u n c t i o n ( ) { T e a . a c t i o n ( " / s e r v e r s / i p l i s t s / u n b i n d H T T P F i r e w a l l " ) . p a r a m s ( { h t t p F i r e w a l l P o l i c y I d : i . p o l i c y I d , l i s t I d : e } ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { i . l i s t s . $ r e m o v e ( t ) } ) } ) } , r e f r e s h : 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 / i p l i s t s / h t t p F i r e w a l l " ) . p a r a m s ( { h t t p F i r e w a l l P o l i c y I d : t h i s . p o l i c y I d , 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 . l i s t s = e . d a t a . l i s t s } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< a  href = ""  @ click . prevent = "bind()"  style = "color: rgba(0,0,0,.6)" > 绑定 + < / a >   & n b s p ;   < s p a n   v - i f = " l i s t s . l e n g t h   >   0 " > < s p a n   c l a s s = " d i s a b l e d   s m a l l " > | & n b s p ; < / s p a n >   已 绑 定 : < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui label basic small"  v - for = "(list, index) in lists" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  : href = "'/servers/iplists/list?listId=' + list.id"  title = "点击查看详情"  style = "opacity: 1" > { { list . name } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  title = "删除"  @ click . prevent = "remove(index, list.id)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " i p - l i s t - t a b l e " , { p r o p s : [ " v - i t e m s " , " v - k e y w o r d " , " v - s h o w - s e a r c h - b u t t o n " ] , d a t a : f u n c t i o n ( ) { r e t u r n { i t e m s : t h i s . v I t e m s , k e y w o r d : n u l l ! = t h i s . v K e y w o r d ? t h i s . v K e y w o r d : " " , s e l e c t e d A l l : ! 1 , h a s S e l e c t e d I t e m s : ! 1 } } , m e t h o d s : { u p d a t e I t e m : f u n c t i o n ( e ) { t h i s . $ e m i t ( " u p d a t e - i t e m " , e ) } , d e l e t e I t e m : f u n c t i o n ( e ) { t h i s . $ e m i t ( " d e l e t e - i t e m " , e ) } , v i e w L o g 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 / i p l i s t s / a c c e s s L o g s P o p u p ? i t e m I d = " + e , { w i d t h : " 5 0 e m " , h e i g h t : " 3 0 e m " } ) } , c h a n g e S e l e c t e d A l l : f u n c t i o n ( ) { l e t   e = t h i s . $ r e f s . i t e m C h e c k B o x ; i f ( n u l l ! = e ) { l e t   t = t h i s ; e . f o r E a c h ( f u n c t i o n ( e ) { e . c h e c k e d = t . s e l e c t e d A l l } ) , t h i s . h a s S e l e c t e d I t e m s = t h i s . s e l e c t e d A l l } } , c h a n g e S e l e c t e d : f u n c t i o n ( e ) { l e t   t = t h i s , i = ( t . h a s S e l e c t e d I t e m s = ! 1 , t . $ r e f s . i t e m C h e c k B o x ) ; n u l l ! = i & & i . f o r E a c h ( f u n c t i o n ( e ) { e . c h e c k e d & & ( t . h a s S e l e c t e d I t e m s = ! 0 ) } ) } , d e l e t e A l l : f u n c t i o n ( ) { l e t   e = t h i s . $ r e f s . i t e m C h e c k B o x ; i f ( n u l l ! = e ) { l e t   t = [ ] ; e . f o r E a c h ( f u n c t i o n ( e ) { e . c h e c k e d & & t . p u s h ( e . v a l u e ) } ) , 0 ! = t . l e n g t h & & T e a . a c t i o n ( " / s e r v e r s / i p l i s t s / d e l e t e I t e m s " ) . p o s t ( ) . p a r a m s ( { i t e m I d s : t } ) . s u c c e s s ( f u n c t i o n ( ) { t e a w e b . s u c c e s s T o a s t ( " 批 量 删 除 成 功 " , 1 2 0 0 , t e a w e b . r e l o a d ) } ) } } , f o r m a t S e c o n d s : f u n c t i o n ( e ) { r e t u r n   e < 6 0 ? e + " 秒 " : e < 3 6 0 0 ? M a t h . c e i l ( e / 6 0 ) + " 分 钟 " : e < 8 6 4 0 0 ? M a t h . c e i l ( e / 3 6 0 0 ) + " 小 时 " : M a t h . c e i l ( e / 8 6 4 0 0 ) + " 天 " } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								 < div  v - show = "hasSelectedItems" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								 	< a  href = ""  @ click . prevent = "deleteAll" > [ 批量删除 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								 < table  class = "ui table selectable celled"  v - if = "items.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            	< th  style = "width: 1em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            		< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  v - model = "selectedAll"  @ change = "changeSelectedAll" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < th  style = "width:18em" > IP < / t h > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-21 18:38:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < th  style = "width: 6em" > 类型 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < th  style = "width: 6em" > 级别 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < th  style = "width: 12em" > 过期时间 < / t h > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < th > 备注 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								                < th  class = "three op" > 操作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								            < / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tbody  v - for = "item in items" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< input  type = "checkbox"  : value = "item.id"  @ change = "changeSelected"  ref = "itemCheckBox" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-21 18:38:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.type != 'all'"  : class = "{green: item.list != null && item.list.type == 'white'}" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-09 20:13:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< keyword  : v - word = "keyword" > { { item . ipFrom } } < / k e y w o r d >   < s p a n >   < s p a n   c l a s s = " s m a l l   r e d "   v - i f = " i t e m . i s R e a d   ! =   n u l l   & &   ! i t e m . i s R e a d " > & n b s p ; N e w & n b s p ; < / s p a n > & n b s p ; < a   : h r e f = " ' / s e r v e r s / i p l i s t s ? i p = '   +   i t e m . i p F r o m "   v - i f = " v S h o w S e a r c h B u t t o n "   t i t l e = " 搜 索 此 I P " > < s p a n > < i   c l a s s = " i c o n   s e a r c h   s m a l l "   s t y l e = " c o l o r :   # c c c " > < / i > < / s p a n > < / a > < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.ipTo.length > 0" >  -  < keyword  : v - word = "keyword" > { { item . ipTo } } < / k e y w o r d > < / s p a n > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else  class = "disabled" > * < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-19 19:51:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "item.region != null && item.region.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "grey small" > { { item . region } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "item.isp != null && item.isp.length > 0 && item.isp != '内网IP'"  class = "grey small" > < span  class = "disabled" > | < / s p a n >   { { i t e m . i s p } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "item.createdTime != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  class = "small grey" > 添加于  { { item . createdTime } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "item.list != null && item.list.id > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																@  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																< a  : href = "'/servers/iplists/list?listId=' + item.list.id"  v - if = "item.policy.id == 0" > < span > [ < span  v - if = "item.list.type == 'black'" > 黑 < / s p a n > < s p a n   v - i f = " i t e m . l i s t . t y p e   = =   ' w h i t e ' " > 白 < / s p a n > 名 单 : { { i t e m . l i s t . n a m e } } ] < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																< span  v - else > [ < span  v - if = "item.list.type == 'black'" > 黑 < / s p a n > < s p a n   v - i f = " i t e m . l i s t . t y p e   = =   ' w h i t e ' " > 白 < / s p a n > 名 单 : { { i t e m . l i s t . n a m e } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< span  v - if = "item.policy.id > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< span  v - if = "item.policy.server != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																		< a  : href = "'/servers/server/settings/waf/ipadmin/allowList?serverId=' + item.policy.server.id + '&firewallPolicyId=' + item.policy.id"  v - if = "item.list.type == 'white'" > [ 服务 : { { item . policy . server . name } } ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																		< a  : href = "'/servers/server/settings/waf/ipadmin/denyList?serverId=' + item.policy.server.id + '&firewallPolicyId=' + item.policy.id"  v - if = "item.list.type == 'black'" > [ 服务 : { { item . policy . server . name } } ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< span  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																		< a  : href = "'/servers/components/waf/ipadmin/lists?firewallPolicyId=' + item.policy.id +  '&type=' + item.list.type" > [ 策略 : { { item . policy . name } } ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.type.length == 0" > IPv4 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else - if = "item.type == 'ipv4'" > IPv4 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else - if = "item.type == 'ipv6'" > IPv6 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else - if = "item.type == 'all'" > < strong > 所有IP < / s t r o n g > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.eventLevelName != null && item.eventLevelName.length > 0" > { { item . eventLevelName } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else  class = "disabled" > - < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "item.expiredTime.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														{ { item . expiredTime } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  v - if = "item.isExpired"  style = "margin-top: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  class = "ui label tiny basic red" > 已过期 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-09 20:13:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div   v - if = "item.lifeSeconds != null && item.lifeSeconds > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  class = "small grey" > { { formatSeconds ( item . lifeSeconds ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else  class = "disabled" > 不过期 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.reason.length > 0" > { { item . reason } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else  class = "disabled" > - < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 10:46:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "item.sourceNode != null && item.sourceNode.id > 0"  style = "margin-top: 0.4em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  : href = "'/clusters/cluster/node?clusterId=' + item.sourceNode.clusterId + '&nodeId=' + item.sourceNode.id" > < span  class = "small" > < i  class = "icon cloud" > < / i > { { i t e m . s o u r c e N o d e . n a m e } } < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  style = "margin-top: 0.4em"  v - if = "item.sourceServer != null && item.sourceServer.id > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  : href = "'/servers/server?serverId=' + item.sourceServer.id"  style = "border: 0" > < span  class = "small " > < i  class = "icon clone outline" > < / i > { { i t e m . s o u r c e S e r v e r . n a m e } } < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "item.sourcePolicy != null && item.sourcePolicy.id > 0"  style = "margin-top: 0.4em" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-14 10:46:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  : href = "'/servers/components/waf/group?firewallPolicyId=' +  item.sourcePolicy.id + '&type=inbound&groupId=' + item.sourceGroup.id + '#set' + item.sourceSet.id"  v - if = "item.sourcePolicy.serverId == 0" > < span  class = "small " > < i  class = "icon shield" > < / i > { { i t e m . s o u r c e P o l i c y . n a m e } }   & r a q u o ;   { { i t e m . s o u r c e G r o u p . n a m e } }   & r a q u o ;   { { i t e m . s o u r c e S e t . n a m e } } < / s p a n > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< a  : href = "'/servers/server/settings/waf/group?serverId=' + item.sourcePolicy.serverId + '&firewallPolicyId=' + item.sourcePolicy.id + '&type=inbound&groupId=' + item.sourceGroup.id + '#set' + item.sourceSet.id"  v - if = "item.sourcePolicy.serverId > 0" > < span  class = "small " > < i  class = "icon shield" > < / i >   { { i t e m . s o u r c e P o l i c y . n a m e } }   & r a q u o ;   { { i t e m . s o u r c e G r o u p . n a m e } }   & r a q u o ;   { { i t e m . s o u r c e S e t . n a m e } } < / s p a n > < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "viewLogs(item.id)" > 日志 < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "updateItem(item.id)" > 修改 < / a >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "deleteItem(item.id)" > 删除 < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / t a b l e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " i p - i t e m - t e x t " , { p r o p s : [ " v - i t e m " ] , t e m p l a t e : ` < s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < span  v - if = "vItem.type == 'all'" > * < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < span  v - if = "vItem.type == 'ipv4' || vItem.type.length == 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        { { vItem . ipFrom } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < span  v - if = "vItem.ipTo.length > 0" > -  { { vItem . ipTo } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < span  v - if = "vItem.type == 'ipv6'" > { { vItem . ipFrom } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								    < span  v - if = "vItem.eventLevelName != null && vItem.eventLevelName.length > 0" > & nbsp ;  级别 : { { vItem . eventLevelName } } < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / s p a n > ` } ) , V u e . c o m p o n e n t ( " i p - b o x " , { p r o p s : [ " v - i p " ] , m e t h o d s : { p o p u p : f u n c t i o n ( ) { l e t   e = t h i s . v I p ; v a r   t ; n u l l ! = e & & 0 ! = e . l e n g t h | | ( t = t h i s . $ r e f s . c o n t a i n e r , n u l l = = ( e = t . i n n e r T e x t ) & & ( e = t . t e x t C o n t e n t ) ) , t e a w e b . p o p u p ( " / s e r v e r s / i p b o x ? i p = " + e , { w i d t h : " 5 0 e m " , h e i g h t : " 3 0 e m " } ) } } , t e m p l a t e : ' < s p a n   @ c l i c k . p r e v e n t = " p o p u p ( ) "   r e f = " c o n t a i n e r " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " a p i - n o d e - s e l e c t o r " , { p r o p s : [ ] , d a t a : f u n c t i o n ( ) { r e t u r n { } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									暂未实现 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " a p i - n o d e - a d d r e s s e s - b o x " , { p r o p s : [ " v - a d d r s " , " v - n a m e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v A d d r s ; r e t u r n { a d d r s : e = n u l l = = e ? [ ] : e } } , m e t h o d s : { a d d A d d r : 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 ( " / a p i / n o d e / c r e a t e A d d r P o p u p " , { h e i g h t : " 1 6 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . a d d r s . p u s h ( e . d a t a . a d d r ) } } ) } , u p d a t e A d d r : f u n c t i o n ( t , e ) { l e t   i = t h i s ; w i n d o w . U P D A T I N G _ A D D R = e , t e a w e b . p o p u p ( " / a p i / n o d e / u p d a t e A d d r P o p u p ? a d d r e s s I d = " , { c a l l b a c k : f u n c t i o n ( e ) { V u e . s e t ( i . a d d r s , t , e . d a t a . a d d r ) } } ) } , r e m o v e A d d r : f u n c t i o n ( e ) { t h i s . a d d r s . $ r e m o v e ( e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  : name = "vName"  : value = "JSON.stringify(addrs)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "addrs.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "(addr, index) in addrs"  class = "ui label small" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												{ { addr . protocol } } : //{{addr.host.quoteIP()}}:{{addr.portRange}}</span>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "修改"  @ click . prevent = "updateAddr(index, addr)" > < i  class = "icon pencil small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "删除"  @ click . prevent = "removeAddr(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button small"  type = "button"  @ click . prevent = "addAddr()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " p a g e - b o x " , { d a t a : f u n c t i o n ( ) { r e t u r n { p a g e : " " } } , c r e a t e d : f u n c t i o n ( ) { l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . p a g e = T e a . V u e . p a g e } ) } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "page"  v - html = "page" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n e t w o r k - a d d r e s s e s - b o x " , { p r o p s : [ " v - s e r v e r - t y p e " , " v - a d d r e s s e s " , " v - p r o t o c o l " , " v - n a m e " , " v - f r o m " , " v - s u p p o r t - r a n g e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v A d d r e s s e s , t = ( n u l l = = e & & ( e = [ ] ) , t h i s . v P r o t o c o l ) , i = ( n u l l = = t & & ( t = " " ) , t h i s . v N a m e ) , s = ( n u l l = = i & & ( i = " a d d r e s s e s " ) , t h i s . v F r o m ) ; r e t u r n   n u l l = = s & & ( s = " " ) , { a d d r e s s e s : e , p r o t o c o l : t , n a m e : i , f r o m : s } } , w a t c h : { v S e r v e r T y p e : f u n c t i o n ( ) { t h i s . a d d r e s s e s = [ ] } , v A d d r e s s e s : f u n c t i o n ( ) { n u l l ! = t h i s . v A d d r e s s e s & & ( t h i s . a d d r e s s e s = t h i s . v A d d r e s s e s ) } } , m e t h o d s : { a d d A d d r : f u n c t i o n ( ) { l e t   t = t h i s ; w i n d o w . U P D A T I N G _ A D D R = n u l l , t e a w e b . p o p u p ( " / s e r v e r s / a d d P o r t P o p u p ? s e r v e r T y p e = " + t h i s . v S e r v e r T y p e + " & p r o t o c o l = " + t h i s . p r o t o c o l + " & f r o m = " + t h i s . f r o m + " & s u p p o r t R a n g e = " + ( t h i s . s u p p o r t R a n g e ( ) ? 1 : 0 ) , { h e i g h t : " 1 8 e m " , c a l l b a c k : f u n c t i o n ( e ) { v a r   i = e . d a t a . a d d r e s s ; n u l l ! = t . a d d r e s s e s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   i . h o s t = = t . h o s t & & i . p o r t R a n g e = = t . p o r t R a n g e & & i . p r o t o c o l = = t . p r o t o c o l } ) ? t e a w e b . w a r n ( " 要 添 加 的 网 络 地 址 已 经 存 在 " ) : ( t . a d d r e s s e s . p u s h ( i ) , [ " h t t p s " , " h t t p s 4 " , " h t t p s 6 " ] . $ c o n t a i n s ( i . p r o t o c o l ) ? t h i s . t l s P r o t o c o l N a m e = " H T T P S " : [ " t l s " , " t l s 4 " , " t l s 6 " ] . $ c o n t a i n s ( i . p r o t o c o l ) & & ( t h i s . t l s P r o t o c o l N a m e = " T L S " ) , t . $ e m i t ( " c h a n g e " , t . a d d r e s s e s ) ) } } ) } , r e m o v e A d d r : f u n c t i o n ( e ) { t h i s . a d d r e s s e s . $ r e m o v e ( e ) , t h i s . $ e m i t ( " c h a n g e " , t h i s . a d d r e s s e s ) } , u p d a t e A d d r : f u n c t i o n ( t , e ) { l e t   i = t h i s ; w i n d o w . U P D A T I N G _ A D D R = e , t e a w e b . p o p u p ( " / s e r v e r s / a d d P o r t P o p u p ? s e r v e r T y p e = " + t h i s . v S e r v e r T y p e + " & p r o t o c o l = " + t h i s . p r o t o c o l + " & f r o m = " + t h i s . f r o m + " & s u p p o r t R a n g e = " + ( t h i s . s u p p o r t R a n g e ( ) ? 1 : 0 ) , { h e i g h t : " 1 8 e m " , c a l l b a c k : f u n c t i o n ( e ) { e = e . d a t a . a d d r e s s ; V u e . s e t ( i . a d d r e s s e s , t , e ) , [ " h t t p s " , " h t t p s 4 " , " h t t p s 6 " ] . $ c o n t a i n s ( e . p r o t o c o l ) ? t h i s . t l s P r o t o c o l N a m e = " H T T P S " : [ " t l s " , " t l s 4 " , " t l s 6 " ] . $ c o n t a i n s ( e . p r o t o c o l ) & & ( t h i s . t l s P r o t o c o l N a m e = " T L S " ) , i . $ e m i t ( " c h a n g e " , i . a d d r e s s e s ) } } ) , t h i s . $ e m i t ( " c h a n g e " , t h i s . a d d r e s s e s ) } , s u p p o r t R a n g e : f u n c t i o n ( ) { r e t u r n   t h i s . v S u p p o r t R a n g e | | " t c p P r o x y " = = t h i s . v S e r v e r T y p e | | " u d p P r o x y " = = t h i s . v S e r v e r T y p e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  : name = "name"  : value = "JSON.stringify(addresses)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "addresses.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label small basic"  v - for = "(addr, index) in addresses" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { addr . protocol } } : //<span v-if="addr.host.length > 0">{{addr.host.quoteIP()}}</span><span v-if="addr.host.length == 0">*</span>:<span v-if="addr.portRange.indexOf('-')<0">{{addr.portRange}}</span><span v-else style="font-style: italic">{{addr.portRange}}</span>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "updateAddr(index, addr)"  title = "修改" > < i  class = "icon pencil small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "removeAddr(index)"  title = "删除" > < i  class = "icon remove" > < / i > < / a >   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< a  href = ""  @ click . prevent = "addAddr()" > [ 添加端口绑定 ] < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s u b m i t - b t n " , { t e m p l a t e : ' < b u t t o n   c l a s s = " u i   b u t t o n   p r i m a r y "   t y p e = " s u b m i t " > < s l o t > 保 存 < / s l o t > < / b u t t o n > ' } ) , V u e . c o m p o n e n t ( " m o r e - i t e m s - a n g l e " , { p r o p s : [ " v - d a t a - u r l " , " v - u r l " ] , d a t a : f u n c t i o n ( ) { r e t u r n { v i s i b l e : ! 1 } } , m e t h o d s : { s h o w : f u n c t i o n ( ) { t h i s . v i s i b l e = ! t h i s . v i s i b l e , t h i s . v i s i b l e ? t h i s . s h o w B o x ( ) : t h i s . h i d e B o x ( ) } , s h o w B o x : f u n c t i o n ( ) { l e t   a = t h i s ; t h i s . v i s i b l e = ! 0 , T e a . a c t i o n ( t h i s . v D a t a U r l ) . p a r a m s ( { u r l : t h i s . v U r l } ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { l e t   t = e . d a t a . g r o u p s ; v a r   e = a . $ e l . o f f s e t L e f t + 1 2 0 , i = a . $ e l . o f f s e t T o p + 7 0 ; f u n c t i o n   s ( e ) { " I " = = e . t a r g e t . t a g N a m e | | a . i s I n B o x ( n , e . t a r g e t ) | | ( d o c u m e n t . r e m o v e E v e n t L i s t e n e r ( " c l i c k " , s ) , a . h i d e B o x ( ) ) } l e t   n = d o c u m e n t . c r e a t e E l e m e n t ( " d i v " ) , o = ( n . s e t A t t r i b u t e ( " i d " , " m o r e - i t e m s - b o x " ) , n . s t y l e . c s s T e x t = " z - i n d e x :   1 0 0 ;   p o s i t i o n :   a b s o l u t e ;   l e f t :   " + e + " p x ;   t o p :   " + i + " p x ;   m a x - h e i g h t :   3 0 e m ;   o v e r f l o w :   a u t o ;   b o r d e r - b o t t o m :   1 p x   s o l i d   r g b a ( 3 4 , 3 6 , 3 8 , . 1 5 ) " , d o c u m e n t . b o d y . a p p e n d ( n ) , ' < u l   c l a s s = " u i   l a b e l e d   m e n u   v e r t i c a l   b o r d e r l e s s "   s t y l e = " p a d d i n g :   0 " > ' ) ; t . f o r E a c h ( f u n c t i o n ( e ) { o + = ' < d i v   c l a s s = " i t e m   h e a d e r " > ' + t e a w e b . e n c o d e H T M L ( e . n a m e ) + " < / d i v > " , e . i t e m s . f o r E a c h ( f u n c t i o n ( e ) { o + = ' < a   h r e f = " ' + e . u r l + ' "   c l a s s = " i t e m   ' + ( e . i s A c t i v e ? " a c t i v e " : " " ) + ' "   s t y l e = " f o n t - s i z e :   0 . 9 e m ; " > ' + t e a w e b . e n c o d e H T M L ( e . n a m e ) + ' < i   c l a s s = " i c o n   r i g h t   a n g l e " > < / i > < / a > ' } ) } ) , o + = " < / u l > " , n . i n n e r H T M L = o ; d o c u m e n t . a d d E v e n t L i s t e n e r ( " c l i c k " , s ) } ) } , h i d e B o x : f u n c t i o n ( ) { l e t   e = d o c u m e n t . g e t E l e m e n t B y I d ( " m o r e - i t e m s - b o x " ) ; n u l l ! = e & & e . p a r e n t N o d e . r e m o v e C h i l d ( e ) , t h i s . v i s i b l e = ! 1 } , i s I n B o x : f u n c t i o n ( e , t ) { f o r ( ; ; ) { i f ( n u l l = = t ) b r e a k ; i f ( t . p a r e n t N o d e = = e ) r e t u r n ! 0 ; t = t . p a r e n t N o d e } r e t u r n ! 1 } } , t e m p l a t e : ' < a   h r e f = " "   c l a s s = " i t e m "   @ c l i c k . p r e v e n t = " s h o w " > < i   c l a s s = " i c o n   a n g l e "   : c l a s s = " { d o w n :   ! v i s i b l e ,   u p :   v i s i b l e } " > < / i > < / a > ' } ) , V u e . c o m p o n e n t ( " m e n u - i t e m " , { p r o p s : [ " h r e f " , " a c t i v e " , " c o d e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . a c t i v e ; v a r   t ; v o i d   0 = = = e & & ( t = " " , n u l l ! = ( t = v o i d   0 ! = = w i n d o w . T E A . A C T I O N . d a t a . f i r s t M e n u I t e m ? w i n d o w . T E A . A C T I O N . d a t a . f i r s t M e n u I t e m : t ) & & 0 < t . l e n g t h & & n u l l ! = t h i s . c o d e & & 0 < t h i s . c o d e . l e n g t h & & ( e = 0 < t . i n d e x O f ( " , " ) ? t . s p l i t ( " , " ) . $ c o n t a i n s ( t h i s . c o d e ) : t = = t h i s . c o d e ) ) ; l e t   i = n u l l = = t h i s . h r e f ? " " : t h i s . h r e f ; r e t u r n " s t r i n g " = = t y p e o f   i & & 0 < i . l e n g t h & & i . s t a r t s W i t h ( " . " ) & & ( t = i . i n d e x O f ( " ? " ) , i = 0 < = t ? T e a . u r l ( i . s u b s t r i n g ( 0 , t ) ) + i . s u b s t r i n g ( t ) : T e a . u r l ( i ) ) , { v H r e f : i , v A c t i v e : e } } , m e t h o d s : { c l i c k : f u n c t i o n ( e ) { t h i s . $ e m i t ( " c l i c k " , e ) } } , t e m p l a t e : ' \ t \ t < a   : h r e f = " v H r e f "   c l a s s = " i t e m "   : c l a s s = " { a c t i v e : v A c t i v e } "   @ c l i c k = " c l i c k " > < s l o t > < / s l o t > < / a >   \ t \ t ' } ) , V u e . c o m p o n e n t ( " l i n k - i c o n " , { p r o p s : [ " h r e f " , " t i t l e " , " t a r g e t " ] , d a t a : f u n c t i o n ( ) { r e t u r n { v T i t l e : n u l l = = t h i s . t i t l e ? " 打 开 链 接 " : t h i s . t i t l e } } , t e m p l a t e : ' < s p a n > < s l o t > < / s l o t > & n b s p ; < a   : h r e f = " h r e f "   : t i t l e = " v T i t l e "   c l a s s = " l i n k   g r e y "   : t a r g e t = " t a r g e t " > < i   c l a s s = " i c o n   l i n k i f y   s m a l l " > < / i > < / a > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " l i n k - r e d " , { p r o p s : [ " h r e f " , " t i t l e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . h r e f ; r e t u r n { v H r e f : e = n u l l = = e ? " " : e } } , m e t h o d s : { c l i c k P r e v e n t : f u n c t i o n ( ) { e m i t C l i c k ( t h i s , a r g u m e n t s ) } } , t e m p l a t e : ' < a   : h r e f = " v H r e f "   : t i t l e = " t i t l e "   s t y l e = " b o r d e r - b o t t o m :   1 p x   # d b 2 8 2 8   d a s h e d "   @ c l i c k . p r e v e n t = " c l i c k P r e v e n t " > < s p a n   c l a s s = " r e d " > < s l o t > < / s l o t > < / s p a n > < / a > ' } ) , V u e . c o m p o n e n t ( " l i n k - p o p u p " , { p r o p s : [ " t i t l e " ] , m e t h o d s : { c l i c k P r e v e n t : f u n c t i o n ( ) { e m i t C l i c k ( t h i s , a r g u m e n t s ) } } , t e m p l a t e : ' < a   h r e f = " "   : t i t l e = " t i t l e "   @ c l i c k . p r e v e n t = " c l i c k P r e v e n t " > < s l o t > < / s l o t > < / a > ' } ) , V u e . c o m p o n e n t ( " p o p u p - i c o n " , { p r o p s : [ " t i t l e " , " h r e f " , " h e i g h t " ] , m e t h o d s : { c l i c k P r e v e n t : f u n c t i o n ( ) { n u l l ! = t h i s . h r e f & & 0 < t h i s . h r e f . l e n g t h & & t e a w e b . p o p u p ( t h i s . h r e f , { h e i g h t : t h i s . h e i g h t } ) } } , t e m p l a t e : ' < s p a n > < s l o t > < / s l o t > & n b s p ; < a   h r e f = " "   : t i t l e = " t i t l e "   @ c l i c k . p r e v e n t = " c l i c k P r e v e n t " > < i   c l a s s = " i c o n   e x p a n d   s m a l l " > < / i > < / a > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " t i p - i c o n " , { p r o p s : [ " c o n t e n t " ] , m e t h o d s : { s h o w T i p : f u n c t i o n ( ) { t e a w e b . p o p u p T i p ( t h i s . c o n t e n t ) } } , t e m p l a t e : ' < a   h r e f = " "   t i t l e = " 查 看 帮 助 "   @ c l i c k . p r e v e n t = " s h o w T i p " > < i   c l a s s = " i c o n   q u e s t i o n   c i r c l e   g r e y " > < / i > < / a > ' } ) , V u e . c o m p o n e n t ( " c o u n t r i e s - s e l e c t o r " , { p r o p s : [ " v - c o u n t r i e s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v C o u n t r i e s ; v a r   t = ( e = n u l l = = e ? [ ] : e ) . $ m a p ( f u n c t i o n ( e , t ) { r e t u r n   t . i d } ) ; r e t u r n { c o u n t r i e s : e , c o u n t r y I d s : t } } , m e t h o d s : { a d d : f u n c t i o n ( ) { l e t   e = t h i s . c o u n t r y I d s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . t o S t r i n g ( ) } ) , t = t h i s ; t e a w e b . p o p u p ( " / u i / s e l e c t C o u n t r i e s P o p u p ? c o u n t r y I d s = " + e . j o i n ( " , " ) , { w i d t h : " 4 8 e m " , h e i g h t : " 2 3 e m " , c a l l b a c k : f u n c t i o n ( e ) { t . c o u n t r i e s = e . d a t a . c o u n 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "countryIdsJSON"  : value = "JSON.stringify(countryIds)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "countries.length > 0"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "(country, index) in countries"  class = "ui label tiny basic" > { { country . name } }  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove" > < / i > < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " r a q u o - i t e m " , { t e m p l a t e : ' < s p a n   c l a s s = " i t e m   d i s a b l e d "   s t y l e = " p a d d i n g :   0 " > & r a q u o ; < / s p a n > ' } ) , V u e . c o m p o n e n t ( " m o r e - o p t i o n s - t b o d y " , { d a t a : f u n c t i o n ( ) { r e t u r n { i s V i s i b l e : ! 1 } } , m e t h o d s : { s h o w : f u n c t i o n ( ) { t h i s . i s V i s i b l e = ! t h i s . i s V i s i b l e , t h i s . $ e m i t ( " c h a n g e " , t h i s . i s V i s i b l e ) } } , t e m p l a t e : ` < t b o d y > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< 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 > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /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 void teaweb.warn("找不到要下载的内容");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 "," size "," maxlength "," name "," placeholder "],data:function(){let e=this.values;return{vValues:e=null==e?[]: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.vValues[e];var t=this;setTimeout(function(){t.$refs.value.focus()},200)},confirm:function(){0!=this.value.length&&(this.isUpdating?Vue.set(this.vValues,this.index,this.value):this.vValues.push(this.value),this.cancel(),this.$emit(" change ",this.vValues))},remove:function(e){this.vValues.$remove(e),this.$emit(" change ",this.vValues)},cancel:function(){this.isUpdating=!1,this.isAdding=!1,this.value=" " } , updateAll : function ( e ) { this . vValeus = e } , addValue : function ( e ) { this . vValues . push ( e ) } , startEditing : function ( ) { this . isEditing = ! this . isEditing } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - show = "!isEditing && vValues.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label tiny basic"  v - for = "(value, index) in vValues"  style = "margin-top:0.4em;margin-bottom:0.4em" > { { value } } < / 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 || vValues.length == 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  style = "margin-bottom: 1em"  v - if = "vValues.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui label tiny basic"  v - for = "(value, index) in vValues"  style = "margin-top:0.4em;margin-bottom:0.4em" > { { value } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< 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 >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  添加 | 修改  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "isAdding || isUpdating" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "text"  : size = "size"  : maxlength = "maxlength"  : placeholder = "placeholder"  v - model = "value"  ref = "value"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< button  class = "ui button small"  type = "button"  @ click . prevent = "confirm()" > 确定 < / b u t t o n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< a  href = ""  @ click . prevent = "cancel()"  title = "取消" > < i  class = "icon remove small" > < / i > < / a >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - if = "!isAdding && !isUpdating" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  type = "button"  @ click . prevent = "create()" > + < / b u t t o n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 	 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("datetime-input",{props:["v-name","v-timestamp"],mounted:function(){let t=this;teaweb.datepicker(this.$refs.dayInput,function(e){t.day=e,t.hour="23",t.minute="59",t.second="59",t.change()})},data:function(){let t=this.vTimestamp,i=(null!=t?(t=parseInt(t),isNaN(t)&&(t=0)):t=0,""),s="",n="",o="";if(0<t){let e=new Date;e.setTime(1e3*t);var a=e.getFullYear().toString(),l=this.leadingZero((e.getMonth()+1).toString(),2);i=a+"-"+l+"-"+this.leadingZero(e.getDate().toString(),2),s=this.leadingZero(e.getHours().toString(),2),n=this.leadingZero(e.getMinutes().toString(),2),o=this.leadingZero(e.getSeconds().toString(),2)}return{timestamp:t,day:i,hour:s,minute:n,second:o,hasDayError:!1,hasHourError:!1,hasMinuteError:!1,hasSecondError:!1}},methods:{change:function(){let e=new Date;var t,i;/ ^ \ d { 4 } - \ d { 1 , 2 } - \ d { 1 , 2 } $ / . test ( this . day ) ? ( i = this . day . split ( "-" ) , t = parseInt ( i [ 0 ] ) , e . setFullYear ( t ) , ( t = parseInt ( i [ 1 ] ) ) < 1 || 12 < t ? this . hasDayError = ! 0 : ( e . setMonth ( t - 1 ) , ( t = parseInt ( i [ 2 ] ) ) < 1 || 32 < t ? this . hasDayError = ! 0 : ( e . setDate ( t ) , this . hasDayError = ! 1 , /^\d+$/ . test ( this . hour ) ? ( i = parseInt ( this . hour ) , isNaN ( i ) || i < 0 || 24 <= i ? this . hasHourError = ! 0 : ( this . hasHourError = ! 1 , e . setHours ( i ) , /^\d+$/ . test ( this . minute ) ? ( t = parseInt ( this . minute ) , isNaN ( t ) || t < 0 || 60 <= t ? this . hasMinuteError = ! 0 : ( this . hasMinuteError = ! 1 , e . setMinutes ( t ) , /^\d+$/ . test ( this . second ) ? ( i = parseInt ( this . second ) , isNaN ( i ) || i < 0 || 60 <= i ? this . hasSecondError = ! 0 : ( this . hasSecondError = ! 1 , e . setSeconds ( i ) , this . timestamp = Math . floor ( e . getTime ( ) / 1e3 ) ) ) : this . hasSecondError = ! 0 ) ) : this . hasMinuteError = ! 0 ) ) : this . hasHourError = ! 0 ) ) ) : this . hasDayError = ! 0 } , leadingZero : function ( t , i ) { if ( i <= ( t = t . toString ( ) ) . length ) return  t ; for ( let  e = 0 ; e < i - t . length ; e ++ ) t = "0" + t ; return  t } , resultTimestamp : function ( ) { return  this . timestamp } , nextDays : function ( e ) { let  t = new  Date ; t . setTime ( t . getTime ( ) + 86400 * e * 1e3 ) , this . day = t . getFullYear ( ) + "-" + this . leadingZero ( t . getMonth ( ) + 1 , 2 ) + "-" + this . leadingZero ( t . getDate ( ) , 2 ) , this . hour = this . leadingZero ( t . getHours ( ) , 2 ) , this . minute = this . leadingZero ( t . getMinutes ( ) , 2 ) , this . second = this . leadingZero ( t . getSeconds ( ) , 2 ) , this . change ( ) } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  : name = "vName"  : value = "timestamp" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui fields inline"  style = "padding: 0; margin:0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field"  : class = "{error: hasDayError}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< input  type = "text"  v - model = "day"  placeholder = "YYYY-MM-DD"  style = "width:8.6em"  maxlength = "10"  @ input = "change"  ref = "dayInput" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field"  : class = "{error: hasHourError}" > < input  type = "text"  v - model = "hour"  maxlength = "2"  style = "width:4em"  placeholder = "时"  @ input = "change" / > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > : < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field"  : class = "{error: hasMinuteError}" > < input  type = "text"  v - model = "minute"  maxlength = "2"  style = "width:4em"  placeholder = "分"  @ input = "change" / > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field" > : < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui field"  : class = "{error: hasSecondError}" > < input  type = "text"  v - model = "second"  maxlength = "2"  style = "width:4em"  placeholder = "秒"  @ input = "change" / > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-05 20:59:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< p  class = "comment" > 常用时间 : < a  href = ""  @ click . prevent = "nextDays(1)" >  & nbsp ; 1 天 & nbsp ;  < / a >   < s p a n   c l a s s = " d i s a b l e d " > | < / s p a n >   < a   h r e f = " "   @ c l i c k . p r e v e n t = " n e x t D a y s ( 3 ) " >   & n b s p ; 3 天 & n b s p ;   < / a >   < s p a n   c l a s s = " d i s a b l e d " > | < / s p a n >   < a   h r e f = " "   @ c l i c k . p r e v e n t = " n e x t D a y s ( 7 ) " >   & n b s p ; 一 周 & n b s p ;   < / a >   < s p a n   c l a s s = " d i s a b l e d " > | < / s p a n >   < a   h r e f = " "   @ c l i c k . p r e v e n t = " n e x t D a y s ( 3 0 ) " >   & n b s p ; 3 0 天 & n b s p ;   < / a >   < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-21 18:38:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " l a b e l - o n " , { p r o p s : [ " v - i s - o n " ] , t e m p l a t e : ' < d i v > < s p a n   v - i f = " v I s O n "   c l a s s = " u i   l a b e l   t i n y   g r e e n   b a s i c " > 已 启 用 < / s p a n > < s p a n   v - i f = " ! v I s O n "   c l a s s = " u i   l a b e l   t i n y   r e d   b a s i c " > 已 停 用 < / s p a n > < / d i v > ' } ) , V u e . c o m p o n e n t ( " c o d e - l a b e l " , { m e t h o d s : { c l i c k : f u n c t i o n ( e ) { t h i s . $ e m i t ( " c l i c k " , e ) } } , t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   b a s i c   t i n y "   s t y l e = " p a d d i n g :   3 p x ; m a r g i n - l e f t : 2 p x ; m a r g i n - r i g h t : 2 p x "   @ c l i c k . p r e v e n t = " c l i c k " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " c o d e - l a b e l - p l a i n " , { t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   b a s i c   t i n y "   s t y l e = " p a d d i n g :   3 p x ; m a r g i n - l e f t : 2 p x ; m a r g i n - r i g h t : 2 p x " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " t i n y - l a b e l " , { t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   t i n y "   s t y l e = " m a r g i n - b o t t o m :   0 . 5 e m " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " t i n y - b a s i c - l a b e l " , { t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   t i n y   b a s i c "   s t y l e = " m a r g i n - b o t t o m :   0 . 5 e m " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " m i c r o - b a s i c - l a b e l " , { t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   t i n y   b a s i c "   s t y l e = " m a r g i n - b o t t o m :   0 . 5 e m ;   f o n t - s i z e :   0 . 7 e m ;   p a d d i n g :   4 p x " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " g r e y - l a b e l " , { p r o p s : [ " c o l o r " ] , d a t a : f u n c t i o n ( ) { l e t   e = " g r e y " ; r e t u r n { l a b e l C o l o r : e = n u l l ! = t h i s . c o l o r & & 0 < t h i s . c o l o r . l e n g t h ? " r e d " : e } } , t e m p l a t e : ' < s p a n   c l a s s = " u i   l a b e l   b a s i c   t i n y "   : c l a s s = " l a b e l C o l o r "   s t y l e = " m a r g i n - t o p :   0 . 4 e m ;   f o n t - s i z e :   0 . 7 e m ;   b o r d e r :   1 p x   s o l i d   # d d d ! i m p o r t a n t ;   f o n t - w e i g h t :   n o r m a l ; " > < s l o t > < / s l o t > < / s p a n > ' } ) , V u e . c o m p o n e n t ( " o p t i o n a l - l a b e l " , { t e m p l a t e : ' < e m > < s p a n   c l a s s = " g r e y " > ( 可 选 ) < / s p a n > < / e m > ' } ) , V u e . c o m p o n e n t ( " p l u s - l a b e l " , { t e m p l a t e : ' < s p a n   s t y l e = " c o l o r :   # B 1 8 7 0 1 ; " > P l u s 专 属 功 能 。 < / s p a n > ' } ) , V u e . c o m p o n e n t ( " f i r s t - m e n u " , { p r o p s : [ ] , t e m p l a t e : '   \ t \ t < d i v   c l a s s = " f i r s t - m e n u " >   \ t \ t \ t < d i v   c l a s s = " u i   m e n u   t e x t   b l u e   s m a l l " > \ t \ t \ t \ t < s l o t > < / s l o t > \ t \ t \ t < / d i v >   \ t \ t \ t < d i v   c l a s s = " u i   d i v i d e r " > < / d i v >   \ t \ t < / d i v > ' } ) , V u e . c o m p o n e n t ( " m o r e - o p t i o n s - i n d i c a t o r " , { d a t a : f u n c t i o n ( ) { r e t u r n { v i s i b l e : ! 1 } } , m e t h o d s : { c h a n g e V i s i b l e : f u n c t i o n ( ) { t h i s . v i s i b l e = ! t h i s . v i s i b l e , n u l l ! = T e a . V u e & & ( T e a . V u e . m o r e O p t i o n s V i s i b l e = t h i s . v i s i b l e ) , t h i s . $ e m i t ( " c h a n g e " , t h i s . v i s i b l e ) } } , t e m p l a t e : ' < a   h r e f = " "   s t y l e = " f o n t - w e i g h t :   n o r m a l "   @ c l i c k . p r e v e n t = " c h a n g e V i s i b l e ( ) " > < s l o t > < s p a n   v - i f = " ! v i s i b l e " > 更 多 选 项 < / s p a n > < s p a n   v - i f = " v i s i b l e " > 收 起 选 项 < / s p a n > < / s l o t >   < i   c l a s s = " i c o n   a n g l e "   : c l a s s = " { d o w n : ! v i s i b l e ,   u p : v i s i b l e } " > < / i >   < / a > ' } ) , V u e . c o m p o n e n t ( " p a g e - s i z e - s e l e c t o r " , { d a t a : f u n c t i o n ( ) { l e t   t = w i n d o w . l o c a t i o n . s e a r c h , i = 1 0 ; i f ( 0 < t . l e n g t h ) { l e t   e = ( t = t . s u b s t r ( 1 ) ) . s p l i t ( " & " ) ; e . f o r E a c h ( f u n c t i o n ( t ) { t = t . s p l i t ( " = " ) ; i f ( 2 = = t . l e n g t h & & " p a g e S i z e " = = t [ 0 ] ) { l e t   e = t [ 1 ] ; e . m a t c h ( / ^ \ d + $ / ) & & ( i = p a r s e I n t ( e , 1 0 ) , ( i s N a N ( i ) | | i < 1 ) & & ( i = 1 0 ) ) } } ) } r e t u r n { p a g e S i z e : i } } , w a t c h : { p a g e S i z e : f u n c t i o n ( ) { w i n d o w . C h a n g e P a g e S i z e ( t h i s . p a g e S i z e ) } } , t e m p l a t e : ` < s e l e c t   c l a s s = " u i   d r o p d o w n "   s t y l e = " h e i g h t : 3 4 p x ; p a d d i n g - t o p : 0 ; p a d d i n g - b o t t o m : 0 ; m a r g i n - l e f t : 1 e m ; c o l o r : # 6 6 6 "   v - m o d e l = " p a g e S i z e " > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< option  value = "10" > [ 每页 ] < / o p t i o n > < o p t i o n   v a l u e = " 1 0 "   s e l e c t e d = " s e l e c t e d " > 1 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 2 0 " > 2 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 3 0 " > 3 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 4 0 " > 4 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 5 0 " > 5 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 6 0 " > 6 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 7 0 " > 7 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 8 0 " > 8 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 9 0 " > 9 0 条 < / o p t i o n > < o p t i o n   v a l u e = " 1 0 0 " > 1 0 0 条 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / s e l e c t > ` } ) , V u e . c o m p o n e n t ( " s e c o n d - m e n u " , { t e m p l a t e : '   \ t \ t < d i v   c l a s s = " s e c o n d - m e n u " >   \ t \ t \ t < d i v   c l a s s = " u i   m e n u   t e x t   b l u e   s m a l l " > \ t \ t \ t \ t < s l o t > < / s l o t > \ t \ t \ t < / d i v >   \ t \ t \ t < d i v   c l a s s = " u i   d i v i d e r " > < / d i v >   \ t \ t < / d i v > ' } ) , V u e . c o m p o n e n t ( " l o a d i n g - m e s s a g e " , { t e m p l a t e : ` < d i v   c l a s s = " u i   m e s s a g e   l o a d i n g " > 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 21:25:33 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								        < div  class = "ui active inline loader small" > < / d i v >     & n b s p ;   < s l o t > < / s l o t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								    < / d i v > ` } ) , V u e . c o m p o n e n t ( " m o r e - o p t i o n s - a n g l e " , { d a t a : f u n c t i o n ( ) { r e t u r n { i s V i s i b l e : ! 1 } } , m e t h o d s : { s h o w : f u n c t i o n ( ) { t h i s . i s V i s i b l e = ! t h i s . i s V i s i b l e , t h i s . $ e m i t ( " c h a n g e " , t h i s . i s V i s i b l e ) } } , t e m p l a t e : ' < a   h r e f = " "   @ c l i c k . p r e v e n t = " s h o w ( ) " > < s p a n   v - i f = " ! i s V i s i b l e " > 更 多 选 项 < / 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 > ' } ) , V u e . c o m p o n e n t ( " i n n e r - m e n u - i t e m " , { p r o p s : [ " h r e f " , " a c t i v e " , " c o d e " ] , d a t a : f u n c t i o n ( ) { v a r   e , t = t h i s . a c t i v e ; r e t u r n   v o i d   0 = = = t & & ( e = " " , t = ( e = v o i d   0 ! = = w i n d o w . T E A . A C T I O N . d a t a . f i r s t M e n u I t e m ? w i n d o w . T E A . A C T I O N . d a t a . f i r s t M e n u I t e m : e ) = = t h i s . c o d e ) , { v H r e f : n u l l = = t h i s . h r e f ? " " : t h i s . h r e f , v A c t i v e : t } } , t e m p l a t e : ' \ t \ t < a   : h r e f = " v H r e f "   c l a s s = " i t e m   r i g h t "   s t y l e = " c o l o r : # 4 1 8 3 c 4 "   : c l a s s = " { a c t i v e : v A c t i v e } " > [ < s l o t > < / s l o t > ] < / a >   \ t \ t ' } ) , V u e . c o m p o n e n t ( " h e a l t h - c h e c k - c o n f i g - b o x " , { p r o p s : [ " v - h e a l t h - c h e c k - c o n f i g " ] , d a t a : f u n c t i o n ( ) { l e t   t = t h i s . v H e a l t h C h e c k C o n f i g , i = " h t t p " , s = " " , n = " / " , o = " " ; i f ( n u l l = = t ) { t = { i s O n : ! 1 , u r l : " " , i n t e r v a l : { c o u n t : 6 0 , u n i t : " s e c o n d " } , s t a t u s C o d e s : [ 2 0 0 ] , t i m e o u t : { c o u n t : 1 0 , u n i t : " s e c o n d " } , c o u n t T r i e s : 3 , t r y D e l a y : { c o u n t : 1 0 0 , u n i t : " m s " } , a u t o D o w n : ! 0 , c o u n t U p : 1 , c o u n t D o w n : 3 , u s e r A g e n t : " " , o n l y B a s i c R e q u e s t : ! 1 } ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . c h a n g e U R L ( ) } , 5 0 0 ) } e l s e { t r y { l e t   e = n e w   U R L ( t . u r l ) ; i = e . p r o t o c o l . s u b s t r i n g ( 0 , e . p r o t o c o l . l e n g t h - 1 ) ; v a r   a = ( o = " % 2 4 % 7 B h o s t % 7 D " = = ( o = e . h o s t ) ? " $ { h o s t } " : o ) . i n d e x O f ( " : " ) ; 0 < a & & ( o = o . s u b s t r i n g ( 0 , a ) ) , s = e . p o r t , n = e . p a t h n a m e , 0 < e . s e a r c h . l e n g t h & & ( n + = e . s e a r c h ) } c a t c h ( e ) { } n u l l = = t . s t a t u s C o d e s & & ( t . s t a t u s C o d e s = [ 2 0 0 ] ) , n u l l = = t . i n t e r v a l & & ( t . i n t e r v a l = { c o u n t : 6 0 , u n i t : " s e c o n d " } ) , n u l l = = t . t i m e o u t & & ( t . t i m e o u t = { c o u n t : 1 0 , u n i t : " s e c o n d " } ) , n u l l = = t . t r y D e l a y & & ( t . t r y D e l a y = { c o u n t : 1 0 0 , u n i t : " m s " } ) , ( n u l l = = t . c o u n t U p | | t . c o u n t U p < 1 ) & & ( t . c o u n t U p = 1 ) , ( n u l l = = t . c o u n t D o w n | | t . c o u n t D o w n < 1 ) & & ( t . c o u n t D o w n = 3 ) } r e t u r n { h e a l t h C h e c k : t , a d v a n c e d V i s i b l e : ! 1 , u r l P r o t o c o l : i , u r l H o s t : o , u r l P o r t : s , u r l R e q u e s t U R I : n , u r l I s E d i t i n g : 0 = = t . u r l . l e n g t h } } , w a t c h : { u r l R e q u e s t U R I : f u n c t i o n ( ) { 0 < t h i s . u r l R e q u e s t U R I . l e n g t h & & " / " ! = t h i s . u r l R e q u e s t U R I [ 0 ] & & ( t h i s . u r l R e q u e s t U R I = " / " + t h i s . u r l R e q u e s t U R I ) , t h i s . c h a n g e U R L ( ) } , u r l P o r t : 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 h i s . u r l P o r t = " " : t h i s . u r l P o r t = t . t o S t r i n g ( ) , t h i s . c h a n g e U R L ( ) } , u r l P r o t o c o l : f u n c t i o n ( ) { t h i s . c h a n g e U R L ( ) } , u r l H o s t : f u n c t i o n ( ) { t h i s . c h a n g e U R L ( ) } , " h e a l t h C h e c k . c o u n t T r i e s " : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; i s N a N ( e ) ? t h i s . h e a l t h C h e c k . c o u n t T r i e s = 0 : t h i s . h e a l t h C h e c k . c o u n t T r i e s = e } , " h e a l t h C h e c k . c o u n t U p " : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; i s N a N ( e ) ? t h i s . h e a l t h C h e c k . c o u n t U p = 0 : t h i s . h e a l t h C h e c k . c o u n t U p = e } , " h e a l t h C h e c k . c o u n t D o w n " : f u n c t i o n ( e ) { e = p a r s e I n t ( e ) ; i s N a N ( e ) ? t h i s . h e a l t h C h e c k . c o u n t D o w n = 0 : t h i s . h e a l t h C h e c k . c o u n t D o w n = e } } , m e t h o d s : { s h o w A d v a n c e d : f u n c t i o n ( ) { t h i s . a d v a n c e d V i s i b l e = ! t h i s . a d v a n c e d V i s i b l e } , c h a n g e U R L : f u n c t i o n ( ) { l e t   e = t h i s . u r l H o s t ; 0 = = e . l e n g t h & & ( e = " $ { h o s t } " ) , t h i s . h e a l t h C h e c k . u r l = t h i s . u r l P r o t o c o l + " : / / " + e + ( 0 < t h i s . u r l P o r t . l e n g t h ? " : " + t h i s . u r l P o r t : " " ) + t h i s . u r l R e q u e s t U R I } , c h a n g e S t a t u s : f u n c t i o n ( e ) { t h i s . h e a l t h C h e c k . s t a t u s C o d e s = e . $ m a p ( f u n c t i o n ( e , t ) { t = p a r s e I n t ( t ) ; r e t u r n   i s N a N ( t ) ? 0 : t } ) } , e d i t U R L : f u n c t i o n ( ) { t h i s . u r l I s E d i t i n g = ! t h i s . u r l I s E d i t i n g } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< input  type = "hidden"  name = "healthCheckJSON"  : value = "JSON.stringify(healthCheck)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< table  class = "ui table definition selectable" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  class = "title" > 是否启用 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "checkbox"  value = "1"  v - model = "healthCheck.isOn" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "healthCheck.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > URL  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  v - if = "healthCheck.url.length > 0"  style = "margin-bottom: 1em" > < code - label > { { healthCheck . url } } < /code-label>   <a href="" @click.prevent="editURL"><span class="small">修改 <i class="icon angle" :class="{down: !urlIsEditing, up: urlIsEditing}"></i > < / s p a n > < / a >   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  v - show = "urlIsEditing" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														 < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td  class = "title" > 协议 < / t d >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< select  class = "ui dropdown auto-width"  v - model = "urlProtocol" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< option  value = "http" > http : //</option>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< option  value = "https" > https : //</option>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 域名 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "text"  v - model = "urlHost" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< p  class = "comment" > 在此集群上可以访问到的一个域名 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 端口 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< input  type = "text"  maxlength = "5"  style = "width:5.4em"  placeholder = "端口"  v - model = "urlPort" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > RequestURI < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< td > < input  type = "text"  v - model = "urlRequestURI"  placeholder = "/"  style = "width:20em" / > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< p  class = "comment"  v - if = "healthCheck.url.length > 0" > 拼接后的URL : < code - label > { { healthCheck . url } } < / c o d e - l a b e l > , 其 中 \ $ { h o s t } 指 的 是 域 名 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 检测时间间隔 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< time - duration - box  : v - value = "healthCheck.interval" > < / t i m e - d u r a t i o n - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 是否自动下线 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "checkbox"  value = "1"  v - model = "healthCheck.autoDown" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label > < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 选中后系统会根据健康检查的结果自动标记节点的上线 / 下线状态 , 并可能自动同步DNS设置 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr  v - show = "healthCheck.autoDown" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 连续上线次数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "healthCheck.countUp"  style = "width:5em"  maxlength = "6" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > 连续N次检查成功后自动恢复上线 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr  v - show = "healthCheck.autoDown" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 连续下线次数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "healthCheck.countDown"  style = "width:5em"  maxlength = "6" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< p  class = "comment" > 连续N次检查失败后自动下线 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "healthCheck.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td  colspan = "2" > < more - options - angle  @ change = "showAdvanced" > < / m o r e - o p t i o n s - a n g l e > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< tbody  v - show = "advancedVisible && healthCheck.isOn" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 允许的状态码 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< values - box  : values = "healthCheck.statusCodes"  maxlength = "3"  @ change = "changeStatus" > < / v a l u e s - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 超时时间 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< time - duration - box  : v - value = "healthCheck.timeout" > < / t i m e - d u r a t i o n - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 连续尝试次数 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "healthCheck.countTries"  style = "width: 5em"  maxlength = "2" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 每次尝试间隔 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< time - duration - box  : v - value = "healthCheck.tryDelay" > < / t i m e - d u r a t i o n - b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											< td > 终端信息 < em > ( User - Agent ) < / e m > < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  v - model = "healthCheck.userAgent"  maxlength = "200" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 发送到服务器的User - Agent值 , 不填写表示使用默认值 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 只基础请求 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< checkbox  v - model = "healthCheck.onlyBasicRequest" > < / c h e c k b o x > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< p  class = "comment" > 只做基础的请求 , 不处理反向代理 ( 不检查源站 ) 、 WAF等 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / t b o d y > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< div  class = "margin" > < / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("request-variables-describer",{data:function(){return{vars:[]}},methods:{update:function(e){this.vars=[];let i=this;e.replace(/ \ $ { . + ? } / g , function ( e ) { var  t = i . findVar ( e ) ; if ( null == t ) return  e ; i . vars . push ( t ) } ) } , findVar : function ( t ) { let  i = null ; return  window . REQUEST _VARIABLES . forEach ( function ( e ) { e . code == t && ( i = e ) } ) , i } } , template : ` <span>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 10:03:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< span  v - for = "(v, index) in vars" > < code - label  : title = "v.description" > { { v . code } } < / c o d e - l a b e l >   -   { { v . n a m e } } < s p a n   v - i f = " i n d e x   <   v a r s . l e n g t h - 1 " > ; < / s p a n > < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / s p a n > ` } ) , V u e . c o m p o n e n t ( " c o m b o - b o x " , { p r o p s : [ " n a m e " , " t i t l e " , " p l a c e h o l d e r " , " s i z e " , " v - i t e m s " , " v - 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 I t e m s , i = ( ( e = n u l l ! = e & & e   i n s t a n c e o f   A r r a y ? e : [ ] ) . f o r E a c h ( f u n c t i o n ( e ) { n u l l = = e . v a l u e & & ( e . v a l u e = e . i d ) } ) , n u l l ) ; i f ( n u l l ! = t h i s . v V a l u e ) { l e t   t = t h i s ; e . f o r E a c h ( f u n c t i o n ( e ) { e . v a l u e = = t . v V a l u e & & ( i = e ) } ) } r e t u r n { a l l I t e m s : e , i t e m s : e . $ c o p y ( ) , s e l e c t e d I t e m : i , k e y w o r d : " " , v i s i b l e : ! 1 , h i d e T i m e r : n u l l , h o v e r I n d e x : 0 } } , m e t h o d s : { r e s e t : f u n c t i o n ( ) { t h i s . s e l e c t e d I t e m = n u l l , t h i s . c h a n g e ( ) , t h i s . h o v e r I n d e x = 0 ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . s e a r c h B o x & & e . $ r e f s . s e a r c h B o x . f o c u s ( ) } ) } , c h a n g e K e y w o r d : f u n c t i o n ( ) { t h i s . h o v e r I n d e x = 0 ; l e t   t = t h i s . k e y w o r d ; 0 = = t . l e n g t h ? t h i s . i t e m s = t h i s . a l l I t e m s . $ c o p y ( ) : t h i s . i t e m s = t h i s . a l l I t e m s . $ c o p y ( ) . 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 . n a m e , t ) } ) } , s e l e c t I t e m : f u n c t i o n ( e ) { t h i s . s e l e c t e d I t e m = e , t h i s . c h a n g e ( ) , t h i s . h o v e r I n d e x = 0 , t h i s . k e y w o r d = " " , t h i s . c h a n g e K e y w o r d ( ) } , c o n f i r m : f u n c t i o n ( ) { t h i s . i t e m s . l e n g t h > t h i s . h o v e r I n d e x & & t h i s . s e l e c t I t e m ( t h i s . i t e m s [ t h i s . h o v e r I n d e x ] ) } , s h o w : f u n c t i o n ( ) { t h i s . v i s i b l e = ! 0 } , h i d e : f u n c t i o n ( ) { l e t   e = t h i s ; t h i s . h i d e T i m e r = s e t T i m e o u t ( f u n c t i o n ( ) { e . v i s i b l e = ! 1 } , 5 0 0 ) } , d o w n I t e m : f u n c t i o n ( ) { t h i s . h o v e r I n d e x + + , t h i s . h o v e r I n d e x > t h i s . i t e m s . l e n g t h - 1 & & ( t h i s . h o v e r I n d e x = 0 ) , t h i s . f o c u s I t e m ( ) } , u p I t e m : f u n c t i o n ( ) { t h i s . h o v e r I n d e x - - , t h i s . h o v e r I n d e x < 0 & & ( t h i s . h o v e r I n d e x = 0 ) , t h i s . f o c u s I t e m ( ) } , f o c u s I t e m : f u n c t i o n ( ) { i f ( t h i s . h o v e r I n d e x < t h i s . i t e m s . l e n g t h ) { t h i s . $ r e f s . i t e m R e f [ t h i s . h o v e r I n d e x ] . f o c u s ( ) ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . s e a r c h B o x . f o c u s ( ) , n u l l ! = e . h i d e T i m e r & & ( c l e a r T i m e o u t ( e . h i d e T i m e r ) , e . h i d e T i m e r = n u l l ) } ) } } , c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . s e l e c t e d I t e m ) ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { n u l l ! = e . $ r e f s . s e l e c t e d L a b e l & & e . $ r e f s . s e l e c t e d L a b e l . f o c u s ( ) } ) } , s u b m i t F o r m : f u n c t i o n ( e ) { i f ( " A " = = e . t a r g e t . t a g N a m e ) { l e t   e = t h i s . $ r e f s . s e l e c t e d L a b e l . p a r e n t N o d e ; f o r ( ; ; ) { i f ( n u l l = = ( e = e . p a r e n t N o d e ) | | " B O D Y " = = e . t a g N a m e ) r e t u r n ; i f ( " F O R M " = = e . t a g N a m e ) { e . s u b m i t ( ) ; b r e a k } } } } } , t e m p l a t e : ` < d i v   s t y l e = " d i s p l a y :   i n l i n e ;   z - i n d e x :   1 0 ;   b a c k g r o u n d :   w h i t e " > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  搜索框  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "selectedItem == null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "text"  v - model = "keyword"  : placeholder = "placeholder"  : size = "size"  style = "width: 11em"  @ input = "changeKeyword"  @ focus = "show"  @ blur = "hide"  @ keyup . enter = "confirm()"  @ keypress . enter . prevent = "1"  ref = "searchBox"  @ keyup . down = "downItem"  @ keyup . up = "upItem" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  当前选中  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "selectedItem != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  : name = "name"  : value = "selectedItem.value" / > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-07 18:34:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										< a  href = ""  class = "ui label basic"  style = "line-height: 1.4; font-weight: normal; font-size: 1em"  ref = "selectedLabel"  @ click . prevent = "submitForm" > < span > { { title } } : { { selectedItem . name } } < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 15:28:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  title = "清除"  @ click . prevent = "reset" > < i  class = "icon remove small" > < / i > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  菜单  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "selectedItem == null && items.length > 0 && visible" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 15:28:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui menu vertical small narrow-scrollbar"  style = "width: 11em; max-height: 17em; overflow-y: auto; position: absolute; border: rgba(129, 177, 210, 0.81) 1px solid; border-top: 0; z-index: 100" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 12:04:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  v - for = "(item, index) in items"  ref = "itemRef"  class = "item"  : class = "{active: index == hoverIndex, blue: index == hoverIndex}"  @ click . prevent = "selectItem(item)"  style = "line-height: 1.4" > { { item . name } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " t i m e - d u r a t i o n - b o x " , { p r o p s : [ " v - n a m e " , " v - v a l u e " , " v - c o u n t " , " v - u n i t " ] , m o u n t e d : f u n c t i o n ( ) { t h i s . c h a n g e ( ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v V a l u e ; r e t u r n " n u m b e r " ! = t y p e o f ( e = n u l l = = e ? { c o u n t : t h i s . v C o u n t , u n i t : t h i s . v U n i t } : e ) . c o u n t & & ( e . c o u n t = - 1 ) , { d u r a t i o n : e , c o u n t S t r i n g : 0 < = e . c o u n t ? e . c o u n t . t o S t r i n g ( ) : " " } } , w a t c h : { c o u n t S t r i n g : f u n c t i o n ( e ) { v a r   e = e . t r i m ( ) ; 0 = = e . l e n g t h ? t h i s . d u r a t i o n . c o u n t = - 1 : ( e = p a r s e I n t ( e ) , i s N a N ( e ) | | ( t h i s . d u r a t i o n . c o u n t = e ) , t h i s . c h a n g e ( ) ) } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . d u r a t i o n ) } } , t e m p l a t e : ` < d i v   c l a s s = " u i   f i e l d s   i n l i n e "   s t y l e = " p a d d i n g - b o t t o m :   0 ;   m a r g i n - b o t t o m :   0 " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  : name = "vName"  : value = "JSON.stringify(duration)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "text"  v - model = "countString"  maxlength = "11"  size = "11"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< select  class = "ui dropdown"  v - model = "duration.unit"  @ change = "change" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "ms" > 毫秒 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "second" > 秒 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "minute" > 分钟 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "hour" > 小时 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "day" > 天 < / o p t i o n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-08 19:13:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "week" > 周 < / o p t i o n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o t - f o u n d - b o x " , { p r o p s : [ " m e s s a g e " ] , t e m p l a t e : ` < d i v   s t y l e = " t e x t - a l i g n :   c e n t e r ;   m a r g i n - t o p :   5 e m ; " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "font-size: 2em; margin-bottom: 1em" > < i  class = "icon exclamation triangle large grey" > < / i > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< p  class = "comment" > { { message } } < slot > < / s l o t > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("warning-message",{template:'<div class="ui icon message warning"><i class="icon warning circle"></i > < div  class = "content" > < slot > < / s l o t > < / d i v > < / d i v > ' } ) ; l e t   c h e c k b o x I d = 0 , r a d i o I d = ( V u e . c o m p o n e n t ( " c h e c k b o x " , { p r o p s : [ " n a m e " , " v a l u e " , " v - v a l u e " , " i d " , " c h e c k e d " ] , d a t a : f u n c t i o n ( ) { c h e c k b o x I d + + ; l e t   e = t h i s . i d , t = ( n u l l = = e & & ( e = " c h e c k b o x " + c h e c k b o x I d ) , t h i s . v V a l u e ) , i = ( n u l l = = t & & ( t = " 1 " ) , t h i s . v a l u e ) ; r e t u r n   n u l l = = i & & " c h e c k e d " = = t h i s . c h e c k e d & & ( i = t ) , { e l e m e n t I d : e , e l e m e n t V a l u e : t , n e w V a l u e : i } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " i n p u t " , t h i s . n e w V a l u e ) } , c h e c k : f u n c t i o n ( ) { t h i s . n e w V a l u e = t h i s . e l e m e n t V a l u e } , u n c h e c k : f u n c t i o n ( ) { t h i s . n e w V a l u e = " " } , i s C h e c k e d : f u n c t i o n ( ) { r e t u r n   t h i s . n e w V a l u e = = t h i s . e l e m e n t V a l u e } } , w a t c h : { v a l u e : f u n c t i o n ( e ) { " b o o l e a n " = = t y p e o f   e & & ( t h i s . n e w V a l u e = e ) } } , t e m p l a t e : ` < d i v   c l a s s = " u i   c h e c k b o x " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "checkbox"  : name = "name"  : value = "elementValue"  : id = "elementId"  @ change = "change"  v - model = "newValue" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< label  : for = "elementId"  style = "font-size: 0.85em!important;" > < slot > < / s l o t > < / l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n e t w o r k - a d d r e s s e s - v i e w " , { p r o p s : [ " v - a d d r e s s e s " ] , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui label tiny basic"  v - if = "vAddresses != null"  v - for = "addr in vAddresses" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										{ { addr . protocol } } : //<span v-if="addr.host.length > 0">{{addr.host.quoteIP()}}</span><span v-else>*</span>:{{addr.portRange}}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s i z e - c a p a c i t y - v i e w " , { p r o p s : [ " v - d e f a u l t - t e x t " , " v - v a l u e " ] , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "vValue != null && vValue.count > 0" > { { vValue . count } } { { vValue . unit . toUpperCase ( ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - else > { { vDefaultText } } < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("tip-message-box",{props:["code"],mounted:function(){let t=this;Tea.action("/ui / showTip ").params({code:this.code}).success(function(e){t.visible=e.data.visible}).post()},data:function(){return{visible:!1}},methods:{close:function(){this.visible=!1,Tea.action(" / ui / hideTip ").params({code:this.code}).post()}},template:`<div class=" ui  icon  message " v-if=" visible " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< i  class = "icon info circle" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< i  class = "close icon"  title = "取消"  @ click . prevent = "close"  style = "margin-top: 1em" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "content" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< slot > < / s l o t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("keyword",{props:["v-word"],data:function(){let e=this.vWord;e=null==e?"":(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/ \ ) / g , "\\)" ) ) . replace ( /\(/g , "\\(" ) ) . replace ( /\+/g , "\\+" ) ) . replace ( /\^/g , "\\^" ) ) . replace ( /\$/g , "\\$" ) ) . replace ( /\?/ , "\\?" ) ) . replace ( /\*/ , "\\*" ) ) . replace ( /\[/ , "\\[" ) ) . replace ( /{/ , "\\{" ) ) . replace ( /\./ , "\\." ) ; let  t = this . $slots . default [ 0 ] . text ; if ( 0 < e . length ) { let  i = this , s = [ ] , n = 0 ; t = t . replaceAll ( new  RegExp ( "(" + e + ")" , "ig" ) , function ( e ) { n ++ ; var  e = '<span style="border: 1px #ccc dashed; color: #ef4d58">' + i . encodeHTML ( e ) + "</span>" , t = "$TMP__KEY__" + n . toString ( ) + "$" ; return  s . push ( [ t , e ] ) , t } ) , t = this . encodeHTML ( t ) , s . forEach ( function ( e ) { t = t . replace ( e [ 0 ] , e [ 1 ] ) } ) } else  t = this . encodeHTML ( t ) ; return { word : e , text : t } } , methods : { encodeHTML : function ( e ) { return  e = ( e = ( e = ( e = e . replace ( /&/g , "&" ) ) . replace ( /</g , "<" ) ) . replace ( />/g , ">" ) ) . replace ( /"/g , """ ) } } , template : '<span><span style="display: none"><slot></slot></span><span v-html="text"></span></span>' } ) , Vue . component ( "node-log-row" , { props : [ "v-log" , "v-keyword" ] , data : function ( ) { return { log : this . vLog , keyword : this . vKeyword } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< pre  class = "log-box"  style = "margin: 0; padding: 0" > < span  : class = "{red:log.level == 'error', orange:log.level == 'warning', green: log.level == 'success'}" > < span  v - if = "!log.isToday" > [ { { log . createdTime } } ] < / s p a n > < s t r o n g   v - i f = " l o g . i s T o d a y " > [ { { l o g . c r e a t e d T i m e } } ] < / s t r o n g > < k e y w o r d   : v - w o r d = " k e y w o r d " > [ { { l o g . t a g } } ] { { l o g . d e s c r i p t i o n } } < / k e y w o r d > < / s p a n >   & n b s p ;   < s p a n   v - i f = " l o g . c o u n t   >   1 "   c l a s s = " u i   l a b e l   t i n y "   : c l a s s = " { r e d : l o g . l e v e l   = =   ' e r r o r ' ,   o r a n g e : l o g . l e v e l   = =   ' w a r n i n g ' } " > 共 { { l o g . c o u n t } } 条 < / s p a n >   < s p a n   v - i f = " l o g . s e r v e r   ! =   n u l l   & &   l o g . s e r v e r . i d   >   0 " > < a   : h r e f = " ' / s e r v e r s / s e r v e r ? s e r v e r I d = '   +   l o g . s e r v e r . i d "   c l a s s = " u i   l a b e l   t i n y   b a s i c " > { { l o g . s e r v e r . n a m e } } < / a > < / s p a n > < / p r e > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("provinces-selector",{props:["v-provinces"],data:function(){let e=this.vProvinces;var t=(e=null==e?[]:e).$map(function(e,t){return t.id});return{provinces:e,provinceIds:t}},methods:{add:function(){let e=this.provinceIds.map(function(e){return e.toString()}),t=this;teaweb.popup("/ui / selectProvincesPopup ? provinceIds = "+e.join(" , "),{width:" 48 em ",height:" 23 em " , callback : function ( e ) { t . provinces = e . data . provinces , t . change ( ) } } ) } , remove : function ( e ) { this . provinces . $remove ( e ) , this . change ( ) } , change : function ( ) { this . provinceIds = this . provinces . $map ( function ( e , t ) { return  t . id } ) } } , template : ` <div>
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "provinceIdsJSON"  : value = "JSON.stringify(provinceIds)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "provinces.length > 0"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - for = "(province, index) in provinces"  class = "ui label tiny basic" > { { province . name } }  < a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon remove" > < / i > < / a > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button tiny"  type = "button"  @ click . prevent = "add" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " c s r f - t o k e n " , { c r e a t e d : f u n c t i o n ( ) { t h i s . r e f r e s h T o k e n ( ) } , m o u n t e d : f u n c t i o n ( ) { l e t   e = t h i s ; t h i s . $ r e f s . t o k e n . f o r m . a d d E v e n t L i s t e n e r ( " s u b m i t " , f u n c t i o n ( ) { e . r e f r e s h T o k e n ( ) } ) , s e t I n t e r v a l ( f u n c t i o n ( ) { e . r e f r e s h T o k e n ( ) } , 6 e 5 ) } , d a t a : f u n c t i o n ( ) { r e t u r n { t o k e n : " " } } , m e t h o d s : { r e f r e s h T o k e n : 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 ( " / c s r f / t o k e n " ) . g e t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . t o k e n = e . d a t a . t o k e n } ) } } , t e m p l a t e : ' < i n p u t   t y p e = " h i d d e n "   n a m e = " c s r f T o k e n "   : v a l u e = " t o k e n "   r e f = " t o k e n " / > ' } ) , V u e . c o m p o n e n t ( " l a b e l e d - i n p u t " , { p r o p s : [ " n a m e " , " s i z e " , " m a x l e n g t h " , " l a b e l " , " v a l u e " ] , t e m p l a t e : ' < d i v   c l a s s = " u i   i n p u t   r i g h t   l a b e l e d " >   \ t < i n p u t   t y p e = " t e x t "   : n a m e = " n a m e "   : s i z e = " s i z e "   : m a x l e n g t h = " m a x l e n g t h "   : v a l u e = " v a l u e " / > \ t < s p a n   c l a s s = " u i   l a b e l " > { { l a b e l } } < / s p a n > < / d i v > ' } ) , 0 ) , s o u r c e C o d e B o x I n d e x = ( V u e . c o m p o n e n t ( " r a d i o " , { p r o p s : [ " n a m e " , " v a l u e " , " v - v a l u e " , " i d " ] , d a t a : f u n c t i o n ( ) { r a d i o I d + + ; l e t   e = t h i s . i d ; r e t u r n { e l e m e n t I d : e = n u l l = = e ? " r a d i o " + r a d i o I d : e } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " i n p u t " , t h i s . v V a l u e ) } } , t e m p l a t e : ` < d i v   c l a s s = " u i   c h e c k b o x   r a d i o " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "radio"  : name = "name"  : value = "vValue"  : id = "elementId"  @ change = "change"  : checked = "(vValue == value)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< label  : for = "elementId" > < slot > < / s l o t > < / l a b e l > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " c o p y - t o - c l i p b o a r d " , { p r o p s : [ " v - t a r g e t " ] , c r e a t e d : f u n c t i o n ( ) { i f ( " u n d e f i n e d " = = t y p e o f   C l i p b o a r d J S ) { l e t   e = d o c u m e n t . c r e a t e E l e m e n t ( " s c r i p t " ) ; e . s e t A t t r i b u t e ( " s r c " , " / j s / c l i p b o a r d . m i n . j s " ) , d o c u m e n t . h e a d . a p p e n d C h i l d ( e ) } } , m e t h o d s : { c o p y : f u n c t i o n ( ) { n e w   C l i p b o a r d J S ( " [ d a t a - c l i p b o a r d - t a r g e t ] " ) , t e a w e b . s u c c e s s T o a s t ( " 已 复 制 到 剪 切 板 " ) } } , t e m p l a t e : ` < a   h r e f = " "   t i t l e = " 拷 贝 到 剪 切 板 "   : d a t a - c l i p b o a r d - t a r g e t = " ' # '   +   v T a r g e t "   @ c l i c k . p r e v e n t = " c o p y " > < i   c l a s s = " u i   i c o n   c o p y   s m a l l " > < / i > < / e m > < / a > ` } ) , V u e . c o m p o n e n t ( " n o d e - r o l e - n a m e " , { p r o p s : [ " v - r o l e " ] , d a t a : f u n c t i o n ( ) { l e t   e = " " ; s w i t c h ( t h i s . v R o l e ) { c a s e " n o d e " : e = " 边 缘 节 点 " ; b r e a k ; c a s e " m o n i t o r " : e = " 监 控 节 点 " ; b r e a k ; c a s e " a p i " : e = " A P I 节 点 " ; b r e a k ; c a s e " u s e r " : e = " 用 户 平 台 " ; b r e a k ; c a s e " a d m i n " : e = " 管 理 平 台 " ; b r e a k ; c a s e " d a t a b a s e " : e = " 数 据 库 节 点 " ; b r e a k ; c a s e " d n s " : e = " D N S 节 点 " ; b r e a k ; c a s e " r e p o r t " : e = " 区 域 监 控 终 端 " } r e t u r n { r o l e N a m e : e } } , t e m p l a t e : " < s p a n > { { r o l e N a m e } } < / s p a n > " } ) , 0 ) ; V u e . c o m p o n e n t ( " s o u r c e - c o d e - b o x " , { p r o p s : [ " n a m e " , " t y p e " , " i d " , " r e a d - o n l y " , " w i d t h " , " h e i g h t " , " f o c u s " ] , m o u n t e d : f u n c t i o n ( ) { l e t   e = t h i s . r e a d O n l y ; " b o o l e a n " ! = t y p e o f   e & & ( e = ! 0 ) ; v a r   t = d o c u m e n t . g e t E l e m e n t B y I d ( " s o u r c e - c o d e - b o x - " + t h i s . i n d e x ) , i = d o c u m e n t . g e t E l e m e n t B y I d ( t h i s . v a l u e B o x I d ) ; l e t   s = " " ; n u l l ! = i . t e x t C o n t e n t ? s = i . t e x t C o n t e n t : n u l l ! = i . i n n e r T e x t & & ( s = i . i n n e r T e x t ) , t h i s . c r e a t e E d i t o r ( t , s , e ) } , d a t a : f u n c t i o n ( ) { v a r   e = s o u r c e C o d e B o x I n d e x + + ; l e t   t = " s o u r c e - c o d e - b o x - v a l u e - " + s o u r c e C o d e B o x I n d e x ; r e t u r n { i n d e x : e , v a l u e B o x I d : t = n u l l ! = t h i s . i d ? t h i s . i d : t } } , m e t h o d s : { c r e a t e E d i t o r : f u n c t i o n ( e , t , i ) { l e t   s = C o d e M i r r o r . f r o m T e x t A r e a ( e , { t h e m e : " i d e a " , l i n e N u m b e r s : ! 0 , v a l u e : " " , r e a d O n l y : i , s h o w C u r s o r W h e n S e l e c t i n g : ! 0 , h e i g h t : " a u t o " , v i e w p o r t M a r g i n : 1 / 0 , l i n e W r a p p i n g : ! 0 , h i g h l i g h t F o r m a t t i n g : ! 1 , i n d e n t U n i t : 4 , i n d e n t W i t h T a b s : ! 0 } ) , n = t h i s , o = ( s . o n ( " c h a n g e " , f u n c t i o n ( ) { n . c h a n g e ( s . g e t V a l u e ( ) ) } ) , s . s e t V a l u e ( t ) , t h i s . f o c u s & & s . f o c u s ( ) , t h i s . w i d t h ) , a = t h i s . h e i g h t ; n u l l ! = o & & n u l l ! = a ? ( o = p a r s e I n t ( o ) , a = p a r s e I n t ( a ) , i s N a N ( o ) | | i s N a N ( a ) | | ( o < = 0 & & ( o = e . p a r e n t N o d e . o f f s e t W i d t h ) , s . s e t S i z e ( o , a ) ) ) : n u l l ! = a & & ( a = p a r s e I n t ( a ) , i s N a N ( a ) | | s . s e t S i z e ( " 1 0 0 % " , a ) ) ; i = C o d e M i r r o r . f i n d M o d e B y M I M E ( t h i s . t y p e ) ; n u l l ! = i & & ( s . s e t O p t i o n ( " m o d e " , i . m o d e ) , C o d e M i r r o r . m o d e U R L = " / c o d e m i r r o r / m o d e / % N / % N . j s " , C o d e M i r r o r . a u t o L o a d M o d e ( s , i . m o d e ) ) } , c h a n g e : f u n c t i o n ( e ) { t h i s . $ e m i t ( " c h a n g e " , e ) } } , t e m p l a t e : ` < d i v   c l a s s = " s o u r c e - c o d e - b o x " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  style = "display: none"  : id = "valueBoxId" > < slot > < / s l o t > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< textarea  : id = "'source-code-box-' + index"  : name = "name" > < / t e x t a r e a > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " s i z e - c a p a c i t y - b o x " , { p r o p s : [ " v - n a m e " , " v - v a l u e " , " v - c o u n t " , " v - u n i t " , " s i z e " , " m a x l e n g t h " , " v - s u p p o r t e d - u n i t s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v V a l u e , t = ( " n u m b e r " ! = t y p e o f ( e = n u l l = = e ? { c o u n t : t h i s . v C o u n t , u n i t : t h i s . v U n i t } : e ) . c o u n t & & ( e . c o u n t = - 1 ) , t h i s . s i z e ) , i = ( n u l l = = t & & ( t = 6 ) , t h i s . m a x l e n g t h ) , s = ( n u l l = = i & & ( i = 1 0 ) , t h i s . v S u p p o r t e d U n i t s ) ; r e t u r n   n u l l = = s & & ( s = [ ] ) , { c a p a c i t y : e , c o u n t S t r i n g : 0 < = e . c o u n t ? e . c o u n t . t o S t r i n g ( ) : " " , v S i z e : t , v M a x l e n g t h : i , s u p p o r t e d U n i t s : s } } , w a t c h : { c o u n t S t r i n g : f u n c t i o n ( e ) { e = e . t r i m ( ) ; i f ( 0 = = e . l e n g t h ) r e t u r n   t h i s . c a p a c i t y . c o u n t = - 1 , v o i d   t h i s . c h a n g e ( ) ; e = p a r s e I n t ( e ) ; i s N a N ( e ) | | ( t h i s . c a p a c i t y . c o u n t = e ) , t h i s . c h a n g e ( ) } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . c a p a c i t y ) } } , t e m p l a t e : ` < d i v   c l a s s = " u i   f i e l d s   i n l i n e " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  : name = "vName"  : value = "JSON.stringify(capacity)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "text"  v - model = "countString"  : maxlength = "vMaxlength"  : size = "vSize" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< select  class = "ui dropdown"  v - model = "capacity.unit"  @ change = "change" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-12 11:46:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "byte"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('byte')" > 字节 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "kb"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('kb')" > KB < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "mb"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('mb')" > MB < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "gb"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('gb')" > GB < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "tb"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('tb')" > TB < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "pb"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('pb')" > PB < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< option  value = "eb"  v - if = "supportedUnits.length == 0 || supportedUnits.$contains('eb')" > EB < / o p t i o n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " i n n e r - m e n u " , { t e m p l a t e : ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "second-menu"  style = "width:80%;position: absolute;top:-8px;right:1em" >  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui menu text blue small" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< slot > < / s l o t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v >   
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > ` } ) , V u e . c o m p o n e n t ( " d a t e p i c k e r " , { p r o p s : [ " v - n a m e " , " v - v a l u e " , " v - b o t t o m - l e f t " ] , 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 w e b . d a t e p i c k e r ( t h i s . $ r e f s . d a y I n p u t , f u n c t i o n ( e ) { t . d a y = e , t . c h a n g e ( ) } , ! ! t h i s . v B o t t o m L e f t ) } , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v N a m e , t = ( n u l l = = e & & ( e = " d a y " ) , t h i s . v V a l u e ) ; r e t u r n   n u l l = = t & & ( t = " " ) , { n a m e : e , d a y : t } } , m e t h o d s : { c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . d a y ) } } , t e m p l a t e : ` < d i v   s t y l e = " d i s p l a y :   i n l i n e - b l o c k " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "text"  : name = "name"  v - model = "day"  placeholder = "YYYY-MM-DD"  style = "width:8.6em"  maxlength = "10"  @ input = "change"  ref = "dayInput"  autocomplete = "off" / > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 16:40:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< /div>`}),Vue.component("sort-arrow",{props:["name"],data:function(){let e=window.location.toString(),n="",o=[];if(null!=window.location.search&&0<window.location.search.length){let e=window.location.search.substring(1),t=e.split("&"),s=this;t.forEach(function(e){var t,i=e.indexOf("=");0<i?(t=e.substring(0,i),i=e.substring(i+1),t==s.name?n=i:"page"!=t&&"asc"!=i&&"desc"!=i&&o.push(e)):o.push(e)})}"asc"!=n&&"desc"==n?o.push(this.name+"=asc"):o.push(this.name+"=desc");var t=e.indexOf("?");return e=0<t?e.substring(0,t)+"?"+o.join("&"):e+"?"+o.join("&"),{order:n,url:e}},template:`<a :href="url" title="排序">  <i class="ui icon long arrow small" :class="{down: order == 'asc', up: order == 'desc', 'down grey': order == '' || order == null}"></i > < / a > ` } ) , V u e . c o m p o n e n t ( " u s e r - l i n k " , { p r o p s : [ " v - u s e r " , " v - k e y w o r d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v U s e r ; r e t u r n { u s e r : e = n u l l = = e ? { i d : 0 , u s e r n a m e : " " , f u l l n a m e : " " } : e } } , t e m p l a t e : ` < d i v   s t y l e = " d i s p l a y :   i n l i n e - b l o c k " > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< span  v - if = "user.id > 0" > < keyword  : v - word = "vKeyword" > { { user . fullname } } < / k e y w o r d > < s p a n   c l a s s = " s m a l l   g r e y " > ( < k e y w o r d   : v - w o r d = " v K e y w o r d " > { { u s e r . u s e r n a m e } } < / k e y w o r d > ) < / s p a n > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - else  class = "disabled" > [ 已删除 ] < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " r e p o r t - n o d e - g r o u p s - s e l e c t o r " , { p r o p s : [ " v - g r o u p - i d s " ] , 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 ( " / c l u s t e r s / m o n i t o r s / g r o u p s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . g r o u p s = e . d a t a . g r o u p s . m a p ( f u n c t i o n ( e ) { r e t u r n   e . i s C h e c k e d = t . g r o u p I d s . $ c o n t a i n s ( e . i d ) , e } ) , t . i s L o a d e d = ! 0 } ) } , d a t a : f u n c t i o n ( ) { v a r   e = t h i s . v G r o u p I d s ; r e t u r n { g r o u p s : [ ] , g r o u p I d s : e = n u l l = = e ? [ ] : e , i s L o a d e d : ! 1 , a l l G r o u p s : 0 = = e . l e n g t h } } , m e t h o d s : { c h e c k : f u n c t i o n ( e ) { e . i s C h e c k e d = ! e . i s C h e c k e d , t h i s . g r o u p I d s = [ ] ; l e t   t = t h i s ; t h i s . g r o u p s . f o r E a c h ( f u n c t i o n ( e ) { e . i s C h e c k e d & & t . g r o u p I d s . p u s h ( e . i d ) } ) , t h i s . c h a n g e ( ) } , c h a n g e : f u n c t i o n ( ) { l e t   t = t h i s , s = [ ] ; t h i s . g r o u p I d s . f o r E a c h ( f u n c t i o n ( i ) { v a r   e = t . g r o u p s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . i d = = i } ) ; n u l l ! = e & & s . p u s h ( { i d : e . i d , n a m e : e . n a m e } ) } ) , t h i s . $ e m i t ( " c h a n g e " , s ) } } , w a t c h : { a l l G r o u p s : f u n c t i o n ( e ) { e & & ( t h i s . g r o u p I d s = [ ] , t h i s . g r o u p s . f o r E a c h ( f u n c t i o n ( e ) { e . i s C h e c k e d = ! 1 } ) ) , t h i s . c h a n g e ( ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "reportNodeGroupIdsJSON"  : value = "JSON.stringify(groupIds)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  class = "disabled"  v - if = "isLoaded && groups.length == 0" > 还没有分组 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "groups.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "checkbox"  v - model = "allGroups"  id = "all-group" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< label  for = "all-group" > 全部分组 < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui divider"  v - if = "!allGroups" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  v - show = "!allGroups" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "group in groups"  : key = "group.id"  style = "float: left; width: 7.6em; margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< div  class = "ui checkbox" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< input  type = "checkbox"  v - model = "group.isChecked"  value = "1"  : id = "'report-node-group-' + group.id"  @ click . prevent = "check(group)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< label  : for = "'report-node-group-' + group.id" > { { group . name } } < / l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " f i n a n c e - u s e r - s e l e c t o r " , { 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 ( " / f i n a n c e / u s e r s / o p t i o n s " ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . u s e r s = e . d a t a . u s e r s } ) } , p r o p s : [ " v - u s e r - i d " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v U s e r I d ; r e t u r n { u s e r s : [ ] , u s e r I d : e = n u l l = = e ? 0 : e } } , w a t c h : { u s e r I d : f u n c t i o n ( e ) { t h i s . $ e m i t ( " c h a n g e " , e ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown auto-width"  name = "userId"  v - model = "userId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  value = "0" > [ 选择用户 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< option  v - for = "user in users"  : value = "user.id" > { { user . fullname } }  ( { { user . username } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s e l e c t > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - l o g i n - s u g g e s t - p o r t s " , { d a t a : f u n c t i o n ( ) { r e t u r n { p o r t s : [ ] , a v a i l a b l e P o r t s : [ ] , a u t o S e l e c t e d : ! 1 , i s L o a d i n g : ! 1 } } , m e t h o d s : { r e l o a d : f u n c t i o n ( e ) { l e t   t = t h i s ; t h i s . a u t o S e l e c t e d = ! 1 , t h i s . i s L o a d i n g = ! 0 , T e a . a c t i o n ( " / c l u s t e r s / c l u s t e r / s u g g e s t L o g i n P o r t s " ) . p a r a m s ( { h o s t : e } ) . s u c c e s s ( f u n c t i o n ( e ) { n u l l ! = e . d a t a . a v a i l a b l e P o r t s & & ( t . a v a i l a b l e P o r t s = e . d a t a . a v a i l a b l e P o r t s , 0 < t . a v a i l a b l e P o r t s . l e n g t h & & ( t . a u t o S e l e c t P o r t ( t . a v a i l a b l e P o r t s [ 0 ] ) , t . a u t o S e l e c t e d = ! 0 ) ) , n u l l ! = e . d a t a . p o r t s & & ( t . p o r t s = e . d a t a . p o r t s , 0 < t . p o r t s . l e n g t h & & ! t . a u t o S e l e c t e d & & ( t . a u t o S e l e c t P o r t ( t . p o r t s [ 0 ] ) , t . a u t o S e l e c t e d = ! 0 ) ) } ) . d o n e ( f u n c t i o n ( ) { t . i s L o a d i n g = ! 1 } ) . p o s t ( ) } , s e l e c t P o r 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 ) } , a u t o S e l e c t P o r t : f u n c t i o n ( e ) { t h i s . $ e m i t ( " a u t o - s e l e c t " , e ) } } , t e m p l a t e : ` < s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "isLoading" > 正在检查端口 ... < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "availablePorts.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										可能端口 : < a  href = ""  v - for = "port in availablePorts"  @ click . prevent = "selectPort(port)"  class = "ui label tiny basic blue"  style = "border: 1px #2185d0 dashed; font-weight: normal" > { { port } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										& nbsp ;  & nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "ports.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
										常用端口 : < a  href = ""  v - for = "port in ports"  @ click . prevent = "selectPort(port)"  class = "ui label tiny basic blue"  style = "border: 1px #2185d0 dashed;  font-weight: normal" > { { port } } < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< span  v - if = "ports.length == 0" > 常用端口有22等 。 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< span  v - if = "ports.length > 0"  class = "grey small" > ( 可以点击要使用的端口 ) < / s p a n > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / s p a n > ` } ) , V u e . c o m p o n e n t ( " n o d e - g r o u p - s e l e c t o r " , { p r o p s : [ " v - c l u s t e r - i d " , " v - g r o u p " ] , d a t a : f u n c t i o n ( ) { r e t u r n { s e l e c t e d G r o u p : t h i s . v G r o u p } } , m e t h o d s : { s e l e c t G r o u p : 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 ( " / c l u s t e r s / c l u s t e r / g r o u p s / s e l e c t P o p u p ? c l u s t e r I d = " + t h i s . v C l u s t e r I d , { c a l l b a c k : f u n c t i o n ( e ) { t . s e l e c t e d G r o u p = e . d a t a . g r o u p } } ) } , a d d G r o u p : 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 ( " / c l u s t e r s / c l u s t e r / g r o u p s / c r e a t e P o p u p ? c l u s t e r I d = " + t h i s . v C l u s t e r I d , { c a l l b a c k : f u n c t i o n ( e ) { t . s e l e c t e d G r o u p = e . d a t a . g r o u p } } ) } , r e m o v e G r o u p : f u n c t i o n ( ) { t h i s . s e l e c t e d G r o u p = n u l l } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui label small basic"  v - if = "selectedGroup != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "groupId"  : value = "selectedGroup.id" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										{ { selectedGroup . name } }  & nbsp ; < a  href = ""  title = "删除"  @ click . prevent = "removeGroup()" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "selectedGroup == null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  @ click . prevent = "selectGroup()" > [ 选择分组 ] < / a >   & n b s p ;   < a   h r e f = " "   @ c l i c k . p r e v e n t = " a d d G r o u p ( ) " > [ 添 加 分 组 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - i p - a d d r e s s e s - b o x " , { p r o p s : [ " v - i p - a d d r e s s e s " , " r o l e " ] , d a t a : f u n c t i o n ( ) { r e t u r n { i p A d d r e s s e s : n u l l = = t h i s . v I p A d d r e s s e s ? [ ] : t h i s . v I p A d d r e s s e s , s u p p o r t T h r e s h o l d s : " n s " ! = t h i s . r o l e } } , m e t h o d s : { a d d I P A d d r e s s : f u n c t i o n ( ) { w i n d o w . U P D A T I N G _ N O D E _ I P _ A D D R E S S = n u l l ; l e t   t = t h i s ; t e a w e b . p o p u p ( " / n o d e s / i p A d d r e s s e s / c r e a t e P o p u p ? s u p p o r t T h r e s h o l d s = " + ( t h i s . s u p p o r t T h r e s h o l d s ? 1 : 0 ) , { c a l l b a c k : f u n c t i o n ( e ) { t . i p A d d r e s s e s . p u s h ( e . d a t a . i p A d d r e s s ) } , h e i g h t : " 2 4 e m " , w i d t h : " 4 4 e m " } ) } , u p d a t e I P A d d r e s s : f u n c t i o n ( t , e ) { w i n d o w . U P D A T I N G _ N O D E _ I P _ A D D R E S S = e ; l e t   i = t h i s ; t e a w e b . p o p u p ( " / n o d e s / i p A d d r e s s e s / u p d a t e P o p u p ? s u p p o r t T h r e s h o l d s = " + ( t h i s . s u p p o r t T h r e s h o l d s ? 1 : 0 ) , { c a l l b a c k : f u n c t i o n ( e ) { V u e . s e t ( i . i p A d d r e s s e s , t , e . d a t a . i p A d d r e s s ) } , h e i g h t : " 2 4 e m " , w i d t h : " 4 4 e m " } ) } , r e m o v e I P A d d r e s s : f u n c t i o n ( e ) { t h i s . i p A d d r e s s e s . $ r e m o v e ( e ) } , i s I P v 6 : f u n c t i o n ( e ) { r e t u r n - 1 < e . i n d e x O f ( " : " ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "ipAddressesJSON"  : value = "JSON.stringify(ipAddresses)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "ipAddresses.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  v - for = "(address, index) in ipAddresses"  class = "ui label tiny basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "isIPv6(address.ip)"  class = "grey" > [ IPv6 ] < / s p a n >   { { a d d r e s s . i p } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  class = "small grey"  v - if = "address.name.length > 0" > ( { { address . name } } < span  v - if = "!address.canAccess" > , 不可访问 < / s p a n > ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
												< span  class = "small grey"  v - if = "address.name.length == 0 && !address.canAccess" > ( 不可访问 ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  class = "small red"  v - if = "!address.isOn"  title = "未启用" > [ off ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  class = "small red"  v - if = "!address.isUp"  title = "已下线" > [ down ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  class = "small"  v - if = "address.thresholds != null && address.thresholds.length > 0" > [ { { address . thresholds . length } } 个阈值 ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												& nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "修改"  @ click . prevent = "updateIPAddress(index, address)" > < i  class = "icon pencil small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  title = "删除"  @ click . prevent = "removeIPAddress(index)" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< button  class = "ui button small"  type = "button"  @ click . prevent = "addIPAddress()" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - i p - a d d r e s s - t h r e s h o l d s - v i e w " , { p r o p s : [ " v - t h r e s h o l d s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v T h r e s h o l d s ; r e t u r n   n u l l = = e ? e = [ ] : e . f o r E a c h ( f u n c t i o n ( e ) { n u l l = = e . i t e m s & & ( e . i t e m s = [ ] ) , n u l l = = e . a c t i o n s & & ( e . a c t i o n s = [ ] ) } ) , { t h r e s h o l d s : e , a l l I t e m s : w i n d o w . I P _ A D D R _ T H R E S H O L D _ I T E M S , a l l O p e r a t o r s : [ { n a m e : " 小 于 等 于 " , c o d e : " l t e " } , { n a m e : " 大 于 " , c o d e : " g t " } , { n a m e : " 不 等 于 " , c o d e : " n e q " } , { n a m e : " 小 于 " , c o d e : " l t " } , { n a m e : " 大 于 等 于 " , c o d e : " g t e " } ] , a l l A c t i o n s : w i n d o w . I P _ A D D R _ T H R E S H O L D _ A C T I O N S } } , m e t h o d s : { i t e m N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l I t e m s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . n a m e ) } ) , i } , i t e m U n i t N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l I t e m s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . u n i t ) } ) , i } , i t e m D u r a t i o n U n i t N a m e : f u n c t i o n ( e ) { s w i t c h ( e ) { c a s e " m i n u t e " : r e t u r n " 分 钟 " ; c a s e " s e c o n d " : r e t u r n " 秒 " ; c a s e " h o u r " : r e t u r n " 小 时 " ; c a s e " d a y " : r e t u r n " 天 " } r e t u r n   e } , i t e m O p e r a t o r N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l O p e r a t o r s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . n a m e ) } ) , i } , a c t i o n N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l A c t i o n s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . n a m e ) } ) , i } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  已有条件  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "thresholds.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label basic small"  v - for = "(threshold, index) in thresholds"  style = "margin-bottom: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - for = "(item, itemIndex) in threshold.items" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.item != 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														[ { { item . duration } } { { itemDurationUnitName ( item . durationUnit ) } } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s p a n > 	   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													{ { itemName ( item . item ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.item == 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														<!--  健康检查  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "item.value == 1" > 成功 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "item.value == 0" > 失败 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														<!--  连通性  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< span  v - if = "item.item == 'connectivity' && item.options != null && item.options.groups != null && item.options.groups.length > 0" > [ < span  v - for = "(group, groupIndex) in item.options.groups" > { { group . name } }  < span  v - if = "groupIndex != item.options.groups.length - 1" > & nbsp ;  < / s p a n > < / s p a n > ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														 < span  class = "grey" > [ { { itemOperatorName ( item . operator ) } } ] < / s p a n >   { { i t e m . v a l u e } } { { i t e m U n i t N a m e ( i t e m . i t e m ) } }   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												 < span  v - if = "itemIndex != threshold.items.length - 1"  style = "font-style: italic" > AND  & nbsp ; < / s p a n > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												- & gt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - for = "(action, actionIndex) in threshold.actions" > { { actionName ( action . action ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "action.action == 'switch'" > 到 { { action . options . ips . join ( ", " ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "action.action == 'webHook'"  class = "small grey" > ( { { action . options . url } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												 & nbsp ; 					 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												 < span  v - if = "actionIndex != threshold.actions.length - 1"  style = "font-style: italic" > AND  & nbsp ; < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - i p - a d d r e s s - t h r e s h o l d s - b o x " , { p r o p s : [ " v - t h r e s h o l d s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v T h r e s h o l d s ; r e t u r n   n u l l = = e ? e = [ ] : e . f o r E a c h ( f u n c t i o n ( e ) { n u l l = = e . i t e m s & & ( e . i t e m s = [ ] ) , n u l l = = e . a c t i o n s & & ( e . a c t i o n s = [ ] ) } ) , { e d i t i n g I n d e x : - 1 , t h r e s h o l d s : e , a d d i n g T h r e s h o l d : { i t e m s : [ ] , a c t i o n s : [ ] } , i s A d d i n g : ! 1 , i s A d d i n g I t e m : ! 1 , i s A d d i n g A c t i o n : ! 1 , i t e m C o d e : " n o d e A v g R e q u e s t s " , i t e m R e p o r t G r o u p s : [ ] , i t e m O p e r a t o r : " l t e " , i t e m V a l u e : " " , i t e m D u r a t i o n : " 5 " , a l l I t e m s : w i n d o w . I P _ A D D R _ T H R E S H O L D _ I T E M S , a l l O p e r a t o r s : [ { n a m e : " 小 于 等 于 " , c o d e : " l t e " } , { n a m e : " 大 于 " , c o d e : " g t " } , { n a m e : " 不 等 于 " , c o d e : " n e q " } , { n a m e : " 小 于 " , c o d e : " l t " } , { n a m e : " 大 于 等 于 " , c o d e : " g t e " } ] , a l l A c t i o n s : w i n d o w . I P _ A D D R _ T H R E S H O L D _ A C T I O N S , a c t i o n C o d e : " u p " , a c t i o n B a c k u p I P s : " " , a c t i o n W e b H o o k U R L : " " } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! t h i s . i s A d d i n g } , c a n c e l : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 , t h i s . e d i t i n g I n d e x = - 1 , t h i s . a d d i n g T h r e s h o l d = { i t e m s : [ ] , a c t i o n s : [ ] } } , c o n f i r m : f u n c t i o n ( ) { 0 = = t h i s . a d d i n g T h r e s h o l d . i t e m s . l e n g t h ? t e a w e b . w a r n ( " 需 要 至 少 添 加 一 个 阈 值 " ) : 0 = = t h i s . a d d i n g T h r e s h o l d . a c t i o n s . l e n g t h ? t e a w e b . w a r n ( " 需 要 至 少 添 加 一 个 动 作 " ) : ( 0 < = t h i s . e d i t i n g I n d e x ? ( t h i s . t h r e s h o l d s [ t h i s . e d i t i n g I n d e x ] . i t e m s = t h i s . a d d i n g T h r e s h o l d . i t e m s , t h i s . t h r e s h o l d s [ t h i s . e d i t i n g I n d e x ] . a c t i o n s = t h i s . a d d i n g T h r e s h o l d . a c t i o n s ) : t h i s . t h r e s h o l d s . p u s h ( { i t e m s : t h i s . a d d i n g T h r e s h o l d . i t e m s , a c t i o n s : t h i s . a d d i n g T h r e s h o l d . a c t i o n s } ) , t h i s . c a n c e l ( ) ) } , r e m o v e : f u n c t i o n ( e ) { t h i s . c a n c e l ( ) , t h i s . t h r e s h o l d s . $ r e m o v e ( e ) } , u p d a t e : f u n c t i o n ( e ) { t h i s . e d i t i n g I n d e x = e , t h i s . a d d i n g T h r e s h o l d = { i t e m s : t h i s . t h r e s h o l d s [ e ] . i t e m s . $ c o p y ( ) , a c t i o n s : t h i s . t h r e s h o l d s [ e ] . a c t i o n s . $ c o p y ( ) } , t h i s . i s A d d i n g = ! 0 } , a d d I t e m : f u n c t i o n ( ) { t h i s . i s A d d i n g I t e m = ! t h i s . i s A d d i n g I t e m ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . i t e m V a l u e . f o c u s ( ) } , 1 0 0 ) } , c a n c e l I t e m : f u n c t i o n ( ) { t h i s . i s A d d i n g I t e m = ! 1 , t h i s . i t e m C o d e = " n o d e A v g R e q u e s t s " , t h i s . i t m e O p e r a t o r = " l t e " , t h i s . i t e m V a l u e = " " , t h i s . i t e m D u r a t i o n = " 5 " , t h i s . i t e m R e p o r t G r o u p s = [ ] } , c o n f i r m I t e m : f u n c t i o n ( ) { i f ( [ " n o d e H e a l t h C h e c k " ] . $ c o n t a i n s ( t h i s . i t e m C o d e ) ) { i f ( 0 = = t h i s . i t e m V a l u e . t o S t r i n g ( ) . l e n g t h ) r e t u r n   v o i d   t e a w e b . w a r n ( " 请 选 择 检 查 结 果 " ) ; l e t   e = p a r s e I n t ( t h i s . i t e m V a l u e ) ; r e t u r n   i s N a N ( e ) | | e < 0 ? e = 0 : 1 < e & & ( e = 1 ) , t h i s . a d d i n g T h r e s h o l d . i t e m s . p u s h ( { i t e m : t h i s . i t e m C o d e , o p e r a t o r : t h i s . i t e m O p e r a t o r , v a l u e : e , d u r a t i o n : 0 , d u r a t i o n U n i t : " m i n u t e " , o p t i o n s : { } } ) , v o i d   t h i s . c a n c e l I t e m ( ) } i f ( 0 = = t h i s . i t e m D u r a t i o n . l e n g t h ) { l e t   e = t h i s ; v o i d   t e a w e b . w a r n ( " 请 输 入 统 计 周 期 " , f u n c t i o n ( ) { e . $ r e f s . i t e m D u r a t i o n . f o c u s ( ) } ) } e l s e { v a r   t = p a r s e I n t ( t h i s . i t e m D u r a t i o n ) ; i f ( i s N a N ( t ) | | t < = 0 ) t e a w e b . w a r n ( " 请 输 入 正 确 的 统 计 周 期 " , f u n c t i o n ( ) { t h a t . $ r e f s . i t e m D u r a t i o n . f o c u s ( ) } ) ; e l s e   i f ( 0 = = t h i s . i t e m V a l u e . l e n g t h ) { l e t   e = t h i s ; v o i d   t e a w e b . w a r n ( " 请 输 入 对 比 值 " , f u n c t i o n ( ) { e . $ r e f s . i t e m V a l u e . f o c u s ( ) } ) } e l s e { v a r   i = p a r s e F l o a t ( t h i s . i t e m V a l u e ) ; i f ( i s N a N ( i ) ) t e a w e b . w a r n ( " 请 输 入 正 确 的 对 比 值 " , f u n c t i o n ( ) { t h a t . $ r e f s . i t e m V a l u e . f o c u s ( ) } ) ; e l s e { l e t   e = { } ; i f ( " c o n n e c t i v i t y " = = = t h i s . i t e m C o d e ) { i f ( 1 0 0 < i ) { l e t   e = t h i s ; r e t u r n   v o i d   t e a w e b . w a r n ( " 连 通 性 对 比 值 不 能 超 过 1 0 0 " , f u n c t i o n ( ) { e . $ r e f s . i t e m V a l u e . f o c u s ( ) } ) } e . g r o u p s = t h i s . i t e m R e p o r t G r o u p s } t h i s . a d d i n g T h r e s h o l d . i t e m s . p u s h ( { i t e m : t h i s . i t e m C o d e , o p e r a t o r : t h i s . i t e m O p e r a t o r , v a l u e : i , d u r a t i o n : t , d u r a t i o n U n i t : " m i n u t e " , o p t i o n s : e } ) , t h i s . c a n c e l I t e m ( ) } } } } , r e m o v e I t e m : f u n c t i o n ( e ) { t h i s . c a n c e l I t e m ( ) , t h i s . a d d i n g T h r e s h o l d . i t e m s . $ r e m o v e ( e ) } , c h a n g e R e p o r t G r o u p s : f u n c t i o n ( e ) { t h i s . i t e m R e p o r t G r o u p s = e } , i t e m N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l I t e m s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . n a m e ) } ) , i } , i t e m U n i t N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l I t e m s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . u n i t ) } ) , i } , i t e m D u r a t i o n U n i t N a m e : f u n c t i o n ( e ) { s w i t c h ( e ) { c a s e " m i n u t e " : r e t u r n " 分 钟 " ; c a s e " s e c o n d " : r e t u r n " 秒 " ; c a s e " h o u r " : r e t u r n " 小 时 " ; c a s e " d a y " : r e t u r n " 天 " } r e t u r n   e } , i t e m O p e r a t o r N a m e : f u n c t i o n ( t ) { l e t   i = " " ; r e t u r n   t h i s . a l l O p e r a t o r s . f o r E a c h ( f u n c t i o n ( e ) { e . c o d e = = t & & ( i = e . n a m e ) } ) , i } , a d d A c t i o n : f u n c t i o n ( ) { t h i s . i s A d d i n g A c t i o n = ! t h i s . i s A d d i n g A c t i o n } , c a n c e l A c t i o n : f u n c t i o n ( ) { t h i s . i s A d d i n g A c t i o n = ! 1 , t h i s . a c t i o n C o d e = " u p " , t h i s . a c t i o n B a c k u p I P s = " " , t h i s . a c t i o n W e b H o o k U R L = " " } , c o n f i r m A c t i o n : f u n c t i o n ( ) { t h i s . d o C o n f i r m A c t i o n ( ! 1 ) } , d o C o n f i r m A c t i o n : f u n c t i o n ( e , t ) { l e t   i = ! 1 , s = t h i s ; i f ( t h i s . a d d i n g T h r e s h o l d . a c t i o n s . f o r E a c h ( f u n c t i o n ( e ) { e . a c t i o n = = s . a c t i o n C o d e & & ( i = ! 0 ) } ) , i ) t 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "thresholdsJSON"  : value = "JSON.stringify(thresholds)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  已有条件  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "thresholds.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui label basic small"  v - for = "(threshold, index) in thresholds" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - for = "(item, itemIndex) in threshold.items" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "item.item != 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													[ { { item . duration } } { { itemDurationUnitName ( item . durationUnit ) } } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s p a n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												{ { itemName ( item . item ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - if = "item.item == 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  健康检查  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.value == 1" > 成功 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.value == 0" > 失败 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< span  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  连通性  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span  v - if = "item.item == 'connectivity' && item.options != null && item.options.groups != null && item.options.groups.length > 0" > [ < span  v - for = "(group, groupIndex) in item.options.groups" > { { group . name } }  < span  v - if = "groupIndex != item.options.groups.length - 1" > & nbsp ;  < / s p a n > < / s p a n > ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< span   class = "grey" > [ { { itemOperatorName ( item . operator ) } } ] < / s p a n >   & n b s p ; { { i t e m . v a l u e } } { { i t e m U n i t N a m e ( i t e m . i t e m ) } }   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											 	< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											 	& nbsp ; < span  v - if = "itemIndex != threshold.items.length - 1"  style = "font-style: italic" > AND  & nbsp ; < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											- & gt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - for = "(action, actionIndex) in threshold.actions" > { { actionName ( action . action ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "action.action == 'switch'" > 到 { { action . options . ips . join ( ", " ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< span  v - if = "action.action == 'webHook'"  class = "small grey" > ( { { action . options . url } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											 & nbsp ; < span  v - if = "actionIndex != threshold.actions.length - 1"  style = "font-style: italic" > AND  & nbsp ; < / s p a n > < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											& nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "修改"  @ click . prevent = "update(index)" > < i  class = "icon pencil small" > < / i > < / a >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "删除"  @ click . prevent = "remove(index)" > < i  class = "icon small remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									<!--  新阈值  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding"  style = "margin-top: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< table  class = "ui table celled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< thead > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< td  style = "width: 50%; background: #f9fafb; border-bottom: 1px solid rgba(34,36,38,.1)" > 阈值 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< th > 动作 < / t h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t h e a d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  style = "background: white" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  已经添加的项目  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  v - for = "(item, index) in addingThreshold.items"  class = "ui label basic small"  style = "margin-bottom: 0.5em;" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "item.item != 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																[ { { item . duration } } { { itemDurationUnitName ( item . durationUnit ) } } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / s p a n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { itemName ( item . item ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "item.item == 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																<!--  健康检查  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< span  v - if = "item.value == 1" > 成功 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< span  v - if = "item.value == 0" > 失败 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - else > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																<!--  连通性  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< span  v - if = "item.item == 'connectivity' && item.options != null && item.options.groups != null && item.options.groups.length > 0" > [ < span  v - for = "(group, groupIndex) in item.options.groups" > { { group . name } }  < span  v - if = "groupIndex != item.options.groups.length - 1" > & nbsp ;  < / s p a n > < / s p a n > ] < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																 < span  class = "grey" > [ { { itemOperatorName ( item . operator ) } } ] < / s p a n >   { { i t e m . v a l u e } } { { i t e m U n i t N a m e ( i t e m . i t e m ) } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															 < / s p a n >   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															 & nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  title = "删除"  @ click . prevent = "removeItem(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  正在添加的项目  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "isAddingItem"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td  style = "width: 6em" > 统计项目 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< select  class = "ui dropdown auto-width"  v - model = "itemCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< option  v - for = "item in allItems"  : value = "item.code" > { { item . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< p  class = "comment"  style = "font-weight: normal"  v - for = "item in allItems"  v - if = "item.code == itemCode" > { { item . description } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - show = "itemCode != 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 统计周期 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< input  type = "text"  v - model = "itemDuration"  style = "width: 4em"  maxlength = "4"  ref = "itemDuration"  @ keyup . enter = "confirmItem()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< span  class = "ui label" > 分钟 < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - show = "itemCode != 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 操作符 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< select  class = "ui dropdown auto-width"  v - model = "itemOperator" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< option  v - for = "operator in allOperators"  : value = "operator.code" > { { operator . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - show = "itemCode != 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 对比值 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< div  class = "ui input right labeled" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< input  type = "text"  maxlength = "20"  style = "width: 5em"  v - model = "itemValue"  ref = "itemValue"  @ keyup . enter = "confirmItem()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< span  class = "ui label"  v - for = "item in allItems"  v - if = "item.code == itemCode" > { { item . unit } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - show = "itemCode == 'nodeHealthCheck'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 检查结果 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< select  class = "ui dropdown auto-width"  v - model = "itemValue" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< option  value = "1" > 成功 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< option  value = "0" > 失败 < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< p  class = "comment"  style = "font-weight: normal" > 只有状态发生改变的时候才会触发 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															<!--  连通性  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - if = "itemCode == 'connectivity'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 终端分组 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td  style = "font-weight: normal" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< div  style = "zoom: 0.8" > < report - node - groups - selector  @ change = "changeReportGroups" > < / r e p o r t - n o d e - g r o u p s - s e l e c t o r > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmItem" > 确定 < / b u t t o n > 	 	 	 	 	 	 	   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  title = "取消"  @ click . prevent = "cancelItem" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  style = "margin-top: 0.8em"  v - if = "!isAddingItem" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addItem" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< td  style = "background: white" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  已经添加的动作  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  v - for = "(action, index) in addingThreshold.actions"  class = "ui label basic small"  style = "margin-bottom: 0.5em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															{ { actionName ( action . action ) } }  & nbsp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "action.action == 'switch'" > 到 { { action . options . ips . join ( ", " ) } } < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< span  v - if = "action.action == 'webHook'"  class = "small grey" > ( { { action . options . url } } ) < / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  title = "删除"  @ click . prevent = "removeAction(index)" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													<!--  正在添加的动作  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  v - if = "isAddingAction"  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< table  class = "ui table" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td  style = "width: 6em" > 动作类型 < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< select  class = "ui dropdown auto-width"  v - model = "actionCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																		< option  v - for = "action in allActions"  : value = "action.code" > { { action . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< p  class = "comment"  v - for = "action in allActions"  v - if = "action.code == actionCode" > { { action . description } } < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															<!--  切换  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - if = "actionCode == 'switch'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 备用IP  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< textarea  rows = "2"  v - model = "actionBackupIPs"  ref = "actionBackupIPs" > < / t e x t a r e a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< p  class = "comment" > 每行一个备用IP 。 < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															<!--  WebHook  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< tr  v - if = "actionCode == 'webHook'" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > URL  * < / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																	< input  type = "text"  maxlength = "1000"  placeholder = "https://..."  v - model = "actionWebHookURL"  ref = "webHookURL"  @ keyup . enter = "confirmAction()"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
																	< p  class = "comment" > 完整的URL , 比如 < code - label > https : //example.com/webhook/api</code-label>,  系统会在触发阈值的时候通过GET调用此URL。</p>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
																< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< div  style = "margin-top: 0.8em" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirmAction" > 确定 < / b u t t o n > 	   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
															< a  href = ""  title = "取消"  @ click . prevent = "cancelAction" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< div  style = "margin-top: 0.8em"  v - if = "!isAddingAction" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
														< button  class = "ui button tiny"  type = "button"  @ click . prevent = "addAction" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< / d i v > 	 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / t d > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / t r > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t a b l e > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										<!--  添加阈值  -- > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< button  class = "ui button tiny"  : class = "{disabled: (isAddingItem || isAddingAction)}"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n >   & n b s p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  title = "取消"  @ click . prevent = "cancel" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "!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 > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - r e g i o n - s e l e c t o r " , { p r o p s : [ " v - r e g i o n " ] , d a t a : f u n c t i o n ( ) { r e t u r n { s e l e c t e d R e g i o n : t h i s . v R e g i o n } } , m e t h o d s : { s e l e c t R e g i o n : 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 ( " / c l u s t e r s / r e g i o n s / s e l e c t P o p u p ? c l u s t e r I d = " + t h i s . v C l u s t e r I d , { c a l l b a c k : f u n c t i o n ( e ) { t . s e l e c t e d R e g i o n = e . d a t a . r e g i o n } } ) } , a d d R e g i o n : 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 ( " / c l u s t e r s / r e g i o n s / c r e a t e P o p u p ? c l u s t e r I d = " + t h i s . v C l u s t e r I d , { c a l l b a c k : f u n c t i o n ( e ) { t . s e l e c t e d R e g i o n = e . d a t a . r e g i o n } } ) } , r e m o v e R e g i o n : f u n c t i o n ( ) { t h i s . s e l e c t e d R e g i o n = n u l l } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  class = "ui label small basic"  v - if = "selectedRegion != null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< input  type = "hidden"  name = "regionId"  : value = "selectedRegion.id" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										{ { selectedRegion . name } }  & nbsp ; < a  href = ""  title = "删除"  @ click . prevent = "removeRegion()" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "selectedRegion == null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  @ click . prevent = "selectRegion()" > [ 选择区域 ] < / a >   & n b s p ;   < a   h r e f = " "   @ c l i c k . p r e v e n t = " a d d R e g i o n ( ) " > [ 添 加 区 域 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - c o m b o - b o x " , { p r o p s : [ " v - c l u s t e r - i d " , " v - n o d e - i d " ] , d a t a : f u n c t i o n ( ) { l e t   t = t h i s ; r e t u r n   T e a . a c t i o n ( " / c l u s t e r s / n o d e O p t i o n s " ) . p a r a m s ( { c l u s t e r I d : t h i s . v C l u s t e r I d } ) . p o s t ( ) . s u c c e s s ( f u n c t i o n ( e ) { t . n o d e s = e . d a t a . n o d e s } ) , { n o d e s : [ ] } } , t e m p l a t e : ` < d i v   v - i f = " n o d e s . l e n g t h   >   0 " > 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 15:28:50 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< combo - box  title = "节点"  placeholder = "节点名称"  : v - items = "nodes"  name = "nodeId"  : v - value = "vNodeId" > < / c o m b o - b o x > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " n o d e - l e v e l - s e l e c t o r " , { p r o p s : [ " v - n o d e - l e v e l " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v N o d e L e v e l ; r e t u r n { l e v e l s : [ { n a m e : " 边 缘 节 点 " , c o d e : 1 , d e s c r i p t i o n : " 普 通 的 边 缘 节 点 。 " } , { n a m e : " L 2 节 点 " , c o d e : 2 , d e s c r i p t i o n : " 特 殊 的 边 缘 节 点 , 同 时 负 责 同 组 上 一 级 节 点 的 回 源 。 " } ] , l e v e l C o d e : e = n u l l = = e | | e < 1 ? 1 : e } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-04 19:46:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
									< select  class = "ui dropdown auto-width"  name = "level"  v - model = "levelCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< option  v - for = "level in levels"  : value = "level.code" > { { level . name } } < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								< p  class = "comment"  v - if = "typeof(levels[levelCode - 1]) != null" > < plus - label 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
								> < / p l u s - l a b e l > { { l e v e l s [ l e v e l C o d e   -   1 ] . d e s c r i p t i o n } } < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " d n s - r o u t e - s e l e c t o r " , { p r o p s : [ " v - a l l - r o u t e s " , " v - r o u t e s " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v R o u t e s ; r e t u r n ( e = n u l l = = e ? [ ] : e ) . $ s o r t ( f u n c t i o n ( e , t ) { r e t u r n   e . d o m a i n I d = = t . d o m a i n I d ? e . c o d e < t . c o d e : e . d o m a i n I d < t . d o m a i n I d ? 1 : - 1 } ) , { r o u t e s : e , r o u t e C o d e s : e . $ m a p ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e + " @ " + t . d o m a i n I d } ) , i s A d d i n g : ! 1 , r o u t e C o d e : " " , k e y w o r d : " " , s e a r c h i n g R o u t e s : t h i s . v A l l R o u t e s . $ c o p y ( ) } } , m e t h o d s : { a d d : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 0 , t h i s . k e y w o r d = " " , t h i s . r o u t e C o d e = " " ; l e t   e = t h i s ; s e t T i m e o u t ( f u n c t i o n ( ) { e . $ r e f s . k e y w o r d R e f . f o c u s ( ) } , 2 0 0 ) } , c a n c e l : f u n c t i o n ( ) { t h i s . i s A d d i n g = ! 1 } , c o n f i r m : f u n c t i o n ( ) { i f ( 0 ! = t h i s . r o u t e C o d e . l e n g t h ) i f ( t h i s . r o u t e C o d e s . $ c o n t a i n s ( t h i s . r o u t e C o d e ) ) t e a w e b . w a r n ( " 已 经 添 加 过 此 线 路 , 不 能 重 复 添 加 " ) ; e l s e { l e t   i = t h i s ; v a r   e = t h i s . v A l l R o u t e s . $ f i n d ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e + " @ " + t . d o m a i n I d = = i . r o u t e C o d e } ) ; n u l l ! = e & & ( t h i s . r o u t e C o d e s . p u s h ( t h i s . r o u t e C o d e ) , t h i s . r o u t e s . p u s h ( e ) , t h i s . r o u t e s . $ s o r t ( f u n c t i o n ( e , t ) { r e t u r n   e . d o m a i n I d = = t . d o m a i n I d ? e . c o d e < t . c o d e : e . d o m a i n I d < t . d o m a i n I d ? 1 : - 1 } ) , t h i s . r o u t e C o d e = " " , t h i s . i s A d d i n g = ! 1 ) } } , r e m o v e : f u n c t i o n ( i ) { t h i s . r o u t e C o d e s . $ r e m o v e V a l u e ( i . c o d e + " @ " + i . d o m a i n I d ) , t h i s . r o u t e s . $ r e m o v e I f ( f u n c t i o n ( e , t ) { r e t u r n   t . c o d e + " @ " + t . d o m a i n I d = = i . c o d e + " @ " + i . d o m a i n I d } ) } } , w a t c h : { k e y w o r d : f u n c t i o n ( t ) { i f ( 0 = = t . l e n g t h ) r e t u r n   t h i s . s e a r c h i n g R o u t e s = t h i s . v A l l R o u t e s . $ c o p y ( ) , v o i d ( t h i s . r o u t e C o d e = " " ) ; t h i s . s e a r c h i n g R o u t e s = t h i s . v A l l R o u t e 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 . n a m e , t ) | | t e a w e b . m a t c h ( e . d o m a i n N a m e , t ) } ) , 0 < t h i s . s e a r c h i n g R o u t e s . l e n g t h ? t h i s . r o u t e C o d e = t h i s . s e a r c h i n g R o u t e s [ 0 ] . c o d e + " @ " + t h i s . s e a r c h i n g R o u t e s [ 0 ] . d o m a i n I d : t h i s . r o u t e C o d e = " " } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "dnsRoutesJSON"  : value = "JSON.stringify(routeCodes)" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "routes.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< tiny - basic - label  v - for = "route in routes"  : key = "route.code + '@' + route.domainId" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
											{ { route . name } }  < span  class = "grey small" > ( { { route . domainName } } ) < /span><a href="" @click.prevent="remove(route)"><i class="icon remove"></i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / t i n y - b a s i c - l a b e l > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui divider" > < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< button  type = "button"  class = "ui button small"  @ click . prevent = "add"  v - if = "!isAdding" > + < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "isAdding" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< div  class = "ui fields inline" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< select  class = "ui dropdown"  style = "width: 18em"  v - model = "routeCode" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
													< option  value = ""  v - if = "keyword.length == 0" > [ 请选择 ] < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
													< option  v - for = "route in searchingRoutes"  : value = "route.code + '@' + route.domainId" > { { route . name } } ( { { route . domainName } } ) < / o p t i o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< / s e l e c t > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< input  type = "text"  placeholder = "搜索..."  size = "10"  v - model = "keyword"  ref = "keywordRef"  @ keyup . enter = "confirm"  @ keypress . enter . prevent = "1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< button  class = "ui button tiny"  type = "button"  @ click . prevent = "confirm" > 确定 < / b u t t o n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< div  class = "ui field" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
												< a  href = ""  @ click . prevent = "cancel()" > < i  class = "icon remove small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " d n s - d o m a i n - s e l e c t o r " , { p r o p s : [ " v - d o m a i n - i d " , " v - d o m a i n - n a m e " ] , d a t a : f u n c t i o n ( ) { l e t   e = t h i s . v D o m a i n I d , t = ( n u l l = = e & & ( e = 0 ) , t h i s . v D o m a i n N a m e ) ; r e t u r n   n u l l = = t & & ( t = " " ) , { d o m a i n I d : e , d o m a i n N a m e : t } } , m e t h o d s : { 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 ( " / d n s / d o m a i n s / 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 . d o m a i n I d = e . d a t a . d o m a i n I d , t . d o m a i n N a m e = e . d a t a . d o m a i n N a m e , t . c h a n g e ( ) } } ) } , r e m o v e : f u n c t i o n ( ) { t h i s . d o m a i n I d = 0 , t h i s . d o m a i n N a m e = " " , t h i s . c h a n g e ( ) } , u p d 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 ( " / d n s / d o m a i n s / s e l e c t P o p u p ? d o m a i n I d = " + t h i s . d o m a i n I d , { c a l l b a c k : f u n c t i o n ( e ) { t . d o m a i n I d = e . d a t a . d o m a i n I d , t . d o m a i n N a m e = e . d a t a . d o m a i n N a m e , t . c h a n g e ( ) } } ) } , c h a n g e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , { i d : t h i s . d o m a i n I d , n a m e : t h i s . d o m a i n N a m e } ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "dnsDomainId"  : value = "domainId" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "domainName.length > 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< span  class = "ui label small basic" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											{ { domainName } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "update" > < i  class = "icon pencil small" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
											< a  href = ""  @ click . prevent = "remove()" > < i  class = "icon remove" > < / i > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< / s p a n > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "domainName.length == 0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  @ click . prevent = "select()" > [ 选择域名 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
								 
							
							
								< / d i v > ` } ) , V u e . c o m p o n e n t ( " g r a n t - s e l e c t o r " , { p r o p s : [ " v - g r a n t " , " v - n o d e - c l u s t e r - i d " , " v - n s - c l u s t e r - i d " ] , d a t a : f u n c t i o n ( ) { r e t u r n { g r a n t I d : n u l l = = t h i s . v G r a n t ? 0 : t h i s . v G r a n t . i d , g r a n t : t h i s . v G r a n t , n o d e C l u s t e r I d : n u l l ! = t h i s . v N o d e C l u s t e r I d ? t h i s . v N o d e C l u s t e r I d : 0 , n s C l u s t e r I d : n u l l ! = t h i s . v N s C l u s t e r I d ? t h i s . v N s C l u s t e r I d : 0 } } , m e t h o d s : { 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 ( " / c l u s t e r s / g r a n t s / s e l e c t P o p u p ? n o d e C l u s t e r I d = " + t h i s . n o d e C l u s t e r I d + " & n s C l u s t e r I d = " + t h i s . n s C l u s t e r I d , { c a l l b a c k : e = > { t . g r a n t I d = e . d a t a . g r a n t . i d , 0 < t . g r a n t I d & & ( t . g r a n t = e . d a t a . g r a n t ) , t . n o t i f y U p d a t e ( ) } , h e i g h t : " 2 6 e m " } ) } , 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 ( " / c l u s t e r s / g r a n t s / 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 : e = > { t . g r a n t I d = e . d a t a . g r a n t . i d , 0 < t . g r a n t I d & & ( t . g r a n t = e . d a t a . g r a n t ) , t . n o t i f y U p d a t e ( ) } } ) } , u p d a t e : f u n c t i o n ( ) { i f ( n u l l = = t h i s . g r a n t ) w i n d o w . l o c a t i o n . r e l o a d ( ) ; e l s e { l e t   t = t h i s ; t e a w e b . p o p u p ( " / c l u s t e r s / g r a n t s / u p d a t e P o p u p ? g r a n t I d = " + t h i s . g r a n t . i d , { h e i g h t : " 2 6 e m " , c a l l b a c k : e = > { t . g r a n t = e . d a t a . g r a n t , t . n o t i f y U p d a t e ( ) } } ) } } , r e m o v e : f u n c t i o n ( ) { t h i s . g r a n t = n u l l , t h i s . g r a n t I d = 0 , t h i s . n o t i f y U p d a t e ( ) } , n o t i f y U p d a t e : f u n c t i o n ( ) { t h i s . $ e m i t ( " c h a n g e " , t h i s . g r a n t ) } } , t e m p l a t e : ` < d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-22 12:08:53 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< input  type = "hidden"  name = "grantId"  : value = "grantId" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
									< div  class = "ui label small basic"  v - if = "grant != null" > { { grant . name } } < span  class = "small grey" > ( { { grant . methodName } } ) < / s p a n > < s p a n   c l a s s = " s m a l l   g r e y "   v - i f = " g r a n t . u s e r n a m e   ! =   n u l l   & &   g r a n t . u s e r n a m e . l e n g t h   >   0 " > ( { { g r a n t . u s e r n a m e } } ) < / s p a n >   < a   h r e f = " "   t i t l e = " 修 改 "   @ c l i c k . p r e v e n t = " u p d a t e ( ) " > < i   c l a s s = " i c o n   p e n c i l   s m a l l " > < / i > < / a >   < a   h r e f = " "   t i t l e = " 删 除 "   @ c l i c k . p r e v e n t = " r e m o v e ( ) " > < i   c l a s s = " i c o n   r e m o v e " > < / i > < / a >   < / d i v > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< div  v - if = "grant == null" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
										< a  href = ""  @ click . prevent = "select()" > [ 选择已有认证 ] < / a >   & n b s p ;   & n b s p ;   < a   h r e f = " "   @ c l i c k . p r e v e n t = " c r e a t e ( ) " > [ 添 加 新 认 证 ] < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
								
									
								 
							
							
									< / d i v > 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-08 21:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
								
									
										 
									
								 
							
							
								< / d i v > ` } ) , w i n d o w . R E Q U E S T _ C O N D _ C O M P O N E N T S = [ { t y p e : " u r l - e x t e n s i o n " , n a m e : " U R L 扩 展 名 " , d e s c r i p t i o n : " 根 据 U R L 中 的 文 件 路 径 扩 展 名 进 行 过 滤 " , c o m p o n e n t : " h t t p - c o n d - u r l - e x t e n s i o n " , p a r a m s T i t l e : " 扩 展 名 列 表 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 1 } , { t y p e : " u r l - p r e f i x " , n a m e : " U R L 前 缀 " , d e s c r i p t i o n : " 根 据 U R L 中 的 文 件 路 径 前 缀 进 行 过 滤 " , c o m p o n e n t : " h t t p - c o n d - u r l - p r e f i x " , p a r a m s T i t l e : " U R L 前 缀 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " u r l - e q " , n a m e : " U R L 精 准 匹 配 " , d e s c r i p t i o n : " 检 查 U R L 中 的 文 件 路 径 是 否 一 致 " , c o m p o n e n t : " h t t p - c o n d - u r l - e q " , p a r a m s T i t l e : " U R L 完 整 路 径 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " u r l - r e g e x p " , n a m e : " U R L 正 则 匹 配 " , d e s c r i p t i o n : " 使 用 正 则 表 达 式 检 查 U R L 中 的 文 件 路 径 是 否 一 致 " , c o m p o n e n t : " h t t p - c o n d - u r l - r e g e x p " , p a r a m s T i t l e : " 正 则 表 达 式 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " u s e r - a g e n t - r e g e x p " , n a m e : " U s e r - A g e n t 正 则 匹 配 " , d e s c r i p t i o n : " 使 用 正 则 表 达 式 检 查 U s e r - A g e n t 中 是 否 含 有 某 些 浏 览 器 和 系 统 标 识 " , c o m p o n e n t : " h t t p - c o n d - u s e r - a g e n t - r e g e x p " , p a r a m s T i t l e : " 正 则 表 达 式 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " p a r a m s " , n a m e : " 参 数 匹 配 " , d e s c r i p t i o n : " 根 据 参 数 值 进 行 匹 配 " , c o m p o n e n t : " h t t p - c o n d - p a r a m s " , p a r a m s T i t l e : " 参 数 配 置 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 1 } , { t y p e : " u r l - n o t - e x t e n s i o n " , n a m e : " 排 除 : U R L 扩 展 名 " , d e s c r i p t i o n : " 根 据 U R L 中 的 文 件 路 径 扩 展 名 进 行 过 滤 " , c o m p o n e n t : " h t t p - c o n d - u r l - n o t - e x t e n s i o n " , p a r a m s T i t l e : " 扩 展 名 列 表 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 1 } , { t y p e : " u r l - n o t - p r e f i x " , n a m e : " 排 除 : U R L 前 缀 " , d e s c r i p t i o n : " 根 据 U R L 中 的 文 件 路 径 前 缀 进 行 过 滤 " , c o m p o n e n t : " h t t p - c o n d - u r l - n o t - p r e f i x " , p a r a m s T i t l e : " U R L 前 缀 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " u r l - n o t - e q " , n a m e : " 排 除 : U R L 精 准 匹 配 " , d e s c r i p t i o n : " 检 查 U R L 中 的 文 件 路 径 是 否 一 致 " , c o m p o n e n t : " h t t p - c o n d - u r l - n o t - e q " , p a r a m s T i t l e : " U R L 完 整 路 径 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " u r l - n o t - r e g e x p " , n a m e : " 排 除 : U R L 正 则 匹 配 " , d e s c r i p t i o n : " 使 用 正 则 表 达 式 检 查 U R L 中 的 文 件 路 径 是 否 一 致 , 如 果 一 致 , 则 不 匹 配 " , c o m p o n e n t : " h t t p - c o n d - u r l - n o t - r e g e x p " , p a r a m s T i t l e : " 正 则 表 达 式 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " u s e r - a g e n t - n o t - r e g e x p " , n a m e : " 排 除 : U s e r - A g e n t 正 则 匹 配 " , d e s c r i p t i o n : " 使 用 正 则 表 达 式 检 查 U s e r - A g e n t 中 是 否 含 有 某 些 浏 览 器 和 系 统 标 识 , 如 果 含 有 , 则 不 匹 配 " , c o m p o n e n t : " h t t p - c o n d - u s e r - a g e n t - n o t - r e g e x p " , p a r a m s T i t l e : " 正 则 表 达 式 " , i s R e q u e s t : ! 0 , c a s e I n s e n s i t i v e : ! 0 } , { t y p e : " m i m e - t y p e " , n a m e : " 内 容 M i m e T y p e " , d e s c r i p t i o n : " 根 据 服 务 器 返 回 的 内 容 的 M i m e T y p e 进 行 过 滤 。 注 意 : 当 用 于 缓 存 条 件 时 , 此 条 件 需 要 结 合 别 的 请 求 条 件 使 用 。 " , c o m p o n e n t : " h t t p - c o n d - m i m e - t y p e " , p a r a m s T i t l e : " M i m e T y p e 列 表 " , i s R e q u e s t : ! 1 , c a s e I n s e n s i t i v e : ! 1 } ] , w i n d o w . R E Q U E S T _ C O N D _ O P E R A T O R S = [ { d e s c r i p t i o n : " 判 断 是 否 正 则 表 达 式 匹 配 " , n a m e : " 正 则 表 达 式 匹 配 " , o p : " r e g e x p " } , { d e s c r i p t i o n : " 判 断 是 否 正 则 表 达 式 不 匹 配 " , n a m e : " 正 则 表 达 式 不 匹 配 " , o p : " n o t   r e g e x p " } , { d e s c r i p t i o n : " 使 用 字 符 串 对 比 参 数 值 是 否 相 等 于 某 个 值 " , n a m e : " 字 符 串 等 于 " , o p : " e q " } , { d e s c r i p t i o n : " 参 数 值 包 含 某 个 前 缀 " , n a m e : " 字 符 串 前 缀 " , o p : " p r e f i x " } , { d e s c r i p t i o n : " 参 数 值 包 含 某 个 后 缀 " , n a m e : " 字 符 串 后 缀 " , o p : " s u f f i x " } , { d e s c r i p t i o n : " 参 数 值 包 含 另 外 一 个 字 符 串 " , n a m e : " 字 符 串 包 含 " , o p : " c o n t a i n s " } , { d e s c r i p t i o n : " 参 数 值 不 包 含 另 外 一 个 字 符 串 " , n a m e : " 字 符 串 不 包 含 " , o p : " n o t   c o n t a i n s " } , { d e s c r i p t i o n : " 使 用 字 符 串 对 比 参 数 值 是 否 不 相 等 于 某 个 值 " , n a m e : " 字 符 串 不 等 于 " , o p : " n o t " } , { d e s c r i p t i o n : " 判 断 参 数 值 在 某 个 列 表 中 " , n a m e : " 在 列 表 中 " , o p : " i n " } , { d e s c r i p t i o n : " 判 断 参 数 值 不 在 某 个 列 表 中 " , n a m e : " 不 在 列 表 中 " , o p : " n o t   i n " } , { d e s c r i p t i o n : " 判 断 小 写 的 扩 展 名 ( 不 带 点 ) 在 某 个 列 表 中 " , n a m e : " 扩 展 名 " , o p : " f i l e   e x t " } , { d e s c r i p t i o n : " 判 断 M i m e T y p e 在 某 个 列 表 中 , 支 持 类 似 于 i m a g e / * 的 语 法 " , n a m e : " M i m e T y p e " , o p : " m i m e   t y p e " } , { d e s c r i p t i o n : " 判 断 版 本 号 在 某 个 范 围 内 , 格 式 为 v e r s i o n 1 , v e r s i o n 2 " , n a m e : " 版 本 号 范 围 " , o p : " v e r s i o n   r a n g e " } , { d e s c r i p t i o n : " 将 参 数 转 换 为 整 数 数 字 后 进 行 对 比 " , n a m e : " 整 数 等 <EFBFBD> <EFBFBD>