mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	集群设置中增加“自动调节系统参数”选项
This commit is contained in:
		@@ -10670,16 +10670,6 @@ Vue.component("http-cc-config-box", {
 | 
			
		||||
		</tr>
 | 
			
		||||
	</tbody>
 | 
			
		||||
	<tbody v-show="moreOptionsVisible && config.isOn">
 | 
			
		||||
		<tr>
 | 
			
		||||
			<td>单IP最低QPS</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<div class="ui input right labeled">
 | 
			
		||||
					<input type="text" name="minQPSPerIP" maxlength="6" style="width: 6em" v-model="minQPSPerIP"/>
 | 
			
		||||
					<span class="ui label">请求数/秒</span>
 | 
			
		||||
				</div>
 | 
			
		||||
				<p class="comment">当某个IP在1分钟内平均QPS达到此值时,才会触发CC防护;如果设置为0,表示任何访问都会触发。</p>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr>
 | 
			
		||||
			<td>例外URL</td>
 | 
			
		||||
			<td>
 | 
			
		||||
@@ -10709,13 +10699,23 @@ Vue.component("http-cc-config-box", {
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr>
 | 
			
		||||
			<td class="color-border">使用自定义阈值</td>
 | 
			
		||||
			<td>单IP最低QPS</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<div class="ui input right labeled">
 | 
			
		||||
					<input type="text" name="minQPSPerIP" maxlength="6" style="width: 6em" v-model="minQPSPerIP"/>
 | 
			
		||||
					<span class="ui label">请求数/秒</span>
 | 
			
		||||
				</div>
 | 
			
		||||
				<p class="comment">当某个IP在1分钟内平均QPS达到此值时,才会开始检测;如果设置为0,表示任何访问都会检测。(注意这里设置的是检测开启阈值,不是拦截阈值,拦截阈值在当前表单下方可以设置)</p>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr>
 | 
			
		||||
			<td class="color-border">使用自定义拦截阈值</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<checkbox v-model="useCustomThresholds"></checkbox>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr v-show="!config.useDefaultThresholds">
 | 
			
		||||
			<td class="color-border">自定义阈值设置</td>
 | 
			
		||||
			<td class="color-border">自定义拦截阈值设置</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<div>
 | 
			
		||||
					<div class="ui input left right labeled">
 | 
			
		||||
@@ -18122,7 +18122,9 @@ Vue.component("url-patterns-box", {
 | 
			
		||||
			isAdding: false,
 | 
			
		||||
 | 
			
		||||
			addingPattern: {"type": "wildcard", "pattern": ""},
 | 
			
		||||
			editingIndex: -1
 | 
			
		||||
			editingIndex: -1,
 | 
			
		||||
 | 
			
		||||
			patternIsInvalid: false
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
@@ -18183,6 +18185,27 @@ Vue.component("url-patterns-box", {
 | 
			
		||||
		},
 | 
			
		||||
		notifyChange: function () {
 | 
			
		||||
			this.$emit("input", this.patterns)
 | 
			
		||||
		},
 | 
			
		||||
		changePattern: function () {
 | 
			
		||||
			this.patternIsInvalid = false
 | 
			
		||||
			let pattern = this.addingPattern.pattern
 | 
			
		||||
			switch (this.addingPattern.type) {
 | 
			
		||||
				case "wildcard":
 | 
			
		||||
					if (pattern.indexOf("?") >= 0) {
 | 
			
		||||
						this.patternIsInvalid = true
 | 
			
		||||
					}
 | 
			
		||||
					break
 | 
			
		||||
				case "regexp":
 | 
			
		||||
					if (pattern.indexOf("?") >= 0) {
 | 
			
		||||
						let pieces = pattern.split("?")
 | 
			
		||||
						for (let i = 0; i < pieces.length - 1; i++) {
 | 
			
		||||
							if (pieces[i].length == 0 || pieces[i][pieces[i].length - 1] != "\\") {
 | 
			
		||||
								this.patternIsInvalid = true
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	template: `<div>
 | 
			
		||||
@@ -18202,14 +18225,15 @@ Vue.component("url-patterns-box", {
 | 
			
		||||
				</select>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="ui field">
 | 
			
		||||
				<input type="text" :placeholder="(addingPattern.type == 'wildcard') ? '可以使用星号(*)通配符,不区分大小写' : '可以使用正则表达式,不区分大小写'" v-model="addingPattern.pattern" size="36" ref="patternInput" @keyup.enter="confirm()" @keypress.enter.prevent="1" spellcheck="false"/>
 | 
			
		||||
				<input type="text" :placeholder="(addingPattern.type == 'wildcard') ? '可以使用星号(*)通配符,不区分大小写' : '可以使用正则表达式,不区分大小写'" v-model="addingPattern.pattern" @input="changePattern" size="36" ref="patternInput" @keyup.enter="confirm()" @keypress.enter.prevent="1" spellcheck="false"/>
 | 
			
		||||
				<p class="comment" v-if="patternIsInvalid"><span class="red" style="font-weight: normal"><span v-if="addingPattern.type == 'wildcard'">通配符</span><span v-if="addingPattern.type == 'regexp'">正则表达式</span>中不能包含问号(?)及问号以后的内容。</span></p>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="ui field" style="padding-left: 0">
 | 
			
		||||
				<tip-icon content="通配符示例:<br/>单个路径开头:/hello/world/*<br/>单个路径结尾:*/hello/world<br/>包含某个路径:*/article/*<br/>某个域名下的所有URL:*example.com/*" v-if="addingPattern.type == 'wildcard'"></tip-icon>
 | 
			
		||||
				<tip-icon content="正则表达式示例:<br/>单个路径开头:^/hello/world<br/>单个路径结尾:/hello/world$<br/>包含某个路径:/article/<br/>匹配某个数字路径:/article/(\\d+)<br/>某个域名下的所有URL:^(http|https)://example.com/" v-if="addingPattern.type == 'regexp'"></tip-icon>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="ui field">
 | 
			
		||||
				<button class="ui button tiny" type="button" @click.prevent="confirm">确定</button><a href="" title="取消" @click.prevent="cancel"><i class="icon remove small"></i></a>
 | 
			
		||||
				<button class="ui button tiny" :class="{disabled:this.patternIsInvalid}" type="button" @click.prevent="confirm">确定</button><a href="" title="取消" @click.prevent="cancel"><i class="icon remove small"></i></a>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user