mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-05 06:10:26 +08:00
92 lines
2.4 KiB
JavaScript
92 lines
2.4 KiB
JavaScript
|
|
Vue.component("firewall-syn-flood-config-box", {
|
|||
|
|
props: ["v-syn-flood-config"],
|
|||
|
|
data: function () {
|
|||
|
|
let config = this.vSynFloodConfig
|
|||
|
|
if (config == null) {
|
|||
|
|
config = {
|
|||
|
|
isOn: false,
|
|||
|
|
minAttempts: 10,
|
|||
|
|
timeoutSeconds: 600,
|
|||
|
|
ignoreLocal: true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return {
|
|||
|
|
config: config,
|
|||
|
|
isEditing: false,
|
|||
|
|
minAttempts: config.minAttempts,
|
|||
|
|
timeoutSeconds: config.timeoutSeconds
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
edit: function () {
|
|||
|
|
this.isEditing = !this.isEditing
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
minAttempts: function (v) {
|
|||
|
|
let count = parseInt(v)
|
|||
|
|
if (isNaN(count)) {
|
|||
|
|
count = 10
|
|||
|
|
}
|
|||
|
|
if (count < 3) {
|
|||
|
|
count = 3
|
|||
|
|
}
|
|||
|
|
this.config.minAttempts = count
|
|||
|
|
},
|
|||
|
|
timeoutSeconds: function (v) {
|
|||
|
|
let seconds = parseInt(v)
|
|||
|
|
if (isNaN(seconds)) {
|
|||
|
|
seconds = 10
|
|||
|
|
}
|
|||
|
|
if (seconds < 60) {
|
|||
|
|
seconds = 60
|
|||
|
|
}
|
|||
|
|
this.config.timeoutSeconds = seconds
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
template: `<div>
|
|||
|
|
<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">/ 忽略局域网访问</span>
|
|||
|
|
</span>
|
|||
|
|
<span v-else>未启用</span>
|
|||
|
|
<i class="icon angle" :class="{up: isEditing, down: !isEditing}"></i>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<table class="ui table selectable" v-show="isEditing">
|
|||
|
|
<tr>
|
|||
|
|
<td class="title">是否启用</td>
|
|||
|
|
<td>
|
|||
|
|
<checkbox v-model="config.isOn"></checkbox>
|
|||
|
|
<p class="comment">启用后,WAF将会尝试自动检测并阻止SYN Flood攻击。此功能需要节点已安装并启用Firewalld。</p>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>空连接次数</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="ui input right labeled">
|
|||
|
|
<input type="text" v-model="minAttempts" style="width: 5em" maxlength="4"/>
|
|||
|
|
<span class="ui label">次/分钟</span>
|
|||
|
|
</div>
|
|||
|
|
<p class="comment">超过此数字的"空连接"将被视为SYN Flood攻击,为了防止误判,此数值默认不小于3。</p>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>封禁时间</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="ui input right labeled">
|
|||
|
|
<input type="text" v-model="timeoutSeconds" style="width: 5em" maxlength="4"/>
|
|||
|
|
<span class="ui label">秒</span>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>忽略局域网访问</td>
|
|||
|
|
<td>
|
|||
|
|
<checkbox v-model="config.ignoreLocal"></checkbox>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div>`
|
|||
|
|
})
|