mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 06:40:27 +08:00
WAF阻止动作增加封锁范围
This commit is contained in:
@@ -2,6 +2,7 @@ package settingutils
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
|
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
|
||||||
|
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
)
|
)
|
||||||
@@ -31,7 +32,9 @@ func (this *Helper) BeforeAction(actionPtr actions.ActionWrapper) (goNext bool)
|
|||||||
if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) {
|
if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) {
|
||||||
tabbar.Add("Web服务", "", "/settings/server", "", this.tab == "server")
|
tabbar.Add("Web服务", "", "/settings/server", "", this.tab == "server")
|
||||||
tabbar.Add("管理界面设置", "", "/settings/ui", "", this.tab == "ui")
|
tabbar.Add("管理界面设置", "", "/settings/ui", "", this.tab == "ui")
|
||||||
|
if teaconst.IsPlus {
|
||||||
tabbar.Add("用户界面设置", "", "/settings/user-ui", "", this.tab == "userUI")
|
tabbar.Add("用户界面设置", "", "/settings/user-ui", "", this.tab == "userUI")
|
||||||
|
}
|
||||||
tabbar.Add("安全设置", "", "/settings/security", "", this.tab == "security")
|
tabbar.Add("安全设置", "", "/settings/security", "", this.tab == "security")
|
||||||
tabbar.Add("IP库", "", "/settings/ip-library", "", this.tab == "ipLibrary")
|
tabbar.Add("IP库", "", "/settings/ip-library", "", this.tab == "ipLibrary")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
|
|
||||||
// 动作参数
|
// 动作参数
|
||||||
blockTimeout: "",
|
blockTimeout: "",
|
||||||
|
blockScope: "global",
|
||||||
|
|
||||||
captchaLife: "",
|
captchaLife: "",
|
||||||
get302Life: "",
|
get302Life: "",
|
||||||
post307Life: "",
|
post307Life: "",
|
||||||
@@ -97,6 +99,9 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
this.actionOptions["timeout"] = v
|
this.actionOptions["timeout"] = v
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
blockScope: function (v) {
|
||||||
|
this.actionOptions["scope"] = v
|
||||||
|
},
|
||||||
captchaLife: function (v) {
|
captchaLife: function (v) {
|
||||||
v = parseInt(v)
|
v = parseInt(v)
|
||||||
if (isNaN(v)) {
|
if (isNaN(v)) {
|
||||||
@@ -169,6 +174,7 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
|
|
||||||
// 动作参数
|
// 动作参数
|
||||||
this.blockTimeout = ""
|
this.blockTimeout = ""
|
||||||
|
this.blockScope = "global"
|
||||||
this.captchaLife = ""
|
this.captchaLife = ""
|
||||||
this.get302Life = ""
|
this.get302Life = ""
|
||||||
this.post307Life = ""
|
this.post307Life = ""
|
||||||
@@ -220,6 +226,11 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
if (config.options.timeout != null || config.options.timeout > 0) {
|
if (config.options.timeout != null || config.options.timeout > 0) {
|
||||||
this.blockTimeout = config.options.timeout.toString()
|
this.blockTimeout = config.options.timeout.toString()
|
||||||
}
|
}
|
||||||
|
if (config.options.scope != null && config.options.scope.length > 0) {
|
||||||
|
this.blockScope = config.options.scope
|
||||||
|
} else {
|
||||||
|
this.blockScope = "service" // 兼容先前版本遗留的默认值
|
||||||
|
}
|
||||||
break
|
break
|
||||||
case "allow":
|
case "allow":
|
||||||
break
|
break
|
||||||
@@ -450,7 +461,7 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
<input type="hidden" name="actionsJSON" :value="JSON.stringify(configs)"/>
|
<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-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">
|
<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}} ({{config.code.toUpperCase()}})
|
{{config.name}} <span class="small">({{config.code.toUpperCase()}})</span>
|
||||||
|
|
||||||
<!-- block -->
|
<!-- block -->
|
||||||
<span v-if="config.code == 'block' && config.options.timeout > 0">:有效期{{config.options.timeout}}秒</span>
|
<span v-if="config.code == 'block' && config.options.timeout > 0">:有效期{{config.options.timeout}}秒</span>
|
||||||
@@ -476,6 +487,13 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
<!-- go_set -->
|
<!-- go_set -->
|
||||||
<span v-if="config.code == 'go_set'">:{{config.options.groupName}} / {{config.options.setName}}</span>
|
<span v-if="config.code == 'go_set'">:{{config.options.groupName}} / {{config.options.setName}}</span>
|
||||||
|
|
||||||
|
<!-- 范围 -->
|
||||||
|
<span v-if="config.options.scope != null && config.options.scope.length > 0" class="small grey">
|
||||||
|
|
||||||
|
<span v-if="config.options.scope == 'global'">[所有服务]</span>
|
||||||
|
<span v-if="config.options.scope == 'service'">[当前服务]</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<a href="" title="修改" @click.prevent="update(index, config)"><i class="icon pencil small"></i></a> <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove small"></i></a> <a href="" title="拖动改变顺序"><i class="icon bars handle"></i></a>
|
<a href="" title="修改" @click.prevent="update(index, config)"><i class="icon pencil small"></i></a> <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove small"></i></a> <a href="" title="拖动改变顺序"><i class="icon bars handle"></i></a>
|
||||||
</div>
|
</div>
|
||||||
@@ -503,6 +521,15 @@ Vue.component("http-firewall-actions-box", {
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr v-if="actionCode == 'block'">
|
||||||
|
<td>封锁范围</td>
|
||||||
|
<td>
|
||||||
|
<select class="ui dropdown auto-width" v-model="blockScope">
|
||||||
|
<option value="service">当前服务</option>
|
||||||
|
<option value="global">所有服务</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<!-- captcha -->
|
<!-- captcha -->
|
||||||
<tr v-if="actionCode == 'captcha'">
|
<tr v-if="actionCode == 'captcha'">
|
||||||
|
|||||||
Reference in New Issue
Block a user