diff --git a/internal/web/actions/default/servers/components/waf/policy.go b/internal/web/actions/default/servers/components/waf/policy.go index 32dc8adb..16719e6e 100644 --- a/internal/web/actions/default/servers/components/waf/policy.go +++ b/internal/web/actions/default/servers/components/waf/policy.go @@ -47,11 +47,12 @@ func (this *PolicyAction) RunGet(params struct { } this.Data["firewallPolicy"] = maps.Map{ - "id": firewallPolicy.Id, - "name": firewallPolicy.Name, - "isOn": firewallPolicy.IsOn, - "description": firewallPolicy.Description, - "groups": internalGroups, + "id": firewallPolicy.Id, + "name": firewallPolicy.Name, + "isOn": firewallPolicy.IsOn, + "description": firewallPolicy.Description, + "groups": internalGroups, + "blockOptions": firewallPolicy.BlockOptions, } // 正在使用此策略的服务 diff --git a/internal/web/actions/default/servers/components/waf/update.go b/internal/web/actions/default/servers/components/waf/update.go index 276ab0de..9ec0f06f 100644 --- a/internal/web/actions/default/servers/components/waf/update.go +++ b/internal/web/actions/default/servers/components/waf/update.go @@ -8,6 +8,7 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" + "net/http" ) type UpdateAction struct { @@ -30,11 +31,21 @@ func (this *UpdateAction) RunGet(params struct { this.NotFound("firewallPolicy", params.FirewallPolicyId) return } + + if firewallPolicy.BlockOptions == nil { + firewallPolicy.BlockOptions = &firewallconfigs.HTTPFirewallBlockAction{ + StatusCode: http.StatusForbidden, + Body: "Blocked By WAF", + URL: "", + } + } + this.Data["firewallPolicy"] = maps.Map{ - "id": firewallPolicy.Id, - "name": firewallPolicy.Name, - "description": firewallPolicy.Description, - "isOn": firewallPolicy.IsOn, + "id": firewallPolicy.Id, + "name": firewallPolicy.Name, + "description": firewallPolicy.Description, + "isOn": firewallPolicy.IsOn, + "blockOptions": firewallPolicy.BlockOptions, } // 预置分组 @@ -63,6 +74,7 @@ func (this *UpdateAction) RunPost(params struct { FirewallPolicyId int64 Name string GroupCodes []string + BlockOptionsJSON []byte Description string IsOn bool @@ -81,6 +93,7 @@ func (this *UpdateAction) RunPost(params struct { Name: params.Name, Description: params.Description, FirewallGroupCodes: params.GroupCodes, + BlockOptionsJSON: params.BlockOptionsJSON, }) if err != nil { this.ErrorPage(err) diff --git a/web/public/js/components/server/http-firewall-block-options.js b/web/public/js/components/server/http-firewall-block-options.js new file mode 100644 index 00000000..7341108b --- /dev/null +++ b/web/public/js/components/server/http-firewall-block-options.js @@ -0,0 +1,37 @@ +Vue.component("http-firewall-block-options", { + props: ["v-block-options"], + data: function () { + return { + blockOptions: this.vBlockOptions, + statusCode: this.vBlockOptions.statusCode + } + }, + watch: { + statusCode: function (v) { + let statusCode = parseInt(v) + if (isNaN(statusCode)) { + this.blockOptions.statusCode = 403 + } else { + this.blockOptions.statusCode = statusCode + } + } + }, + template: `
+ + + + + + + + + + +
状态码 + +
提示内容 + +
+
+` +}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/group.html b/web/views/@default/servers/components/waf/group.html index aaaccaaa..e677875c 100644 --- a/web/views/@default/servers/components/waf/group.html +++ b/web/views/@default/servers/components/waf/group.html @@ -41,7 +41,7 @@ - {{set.name}} + {{set.name}}

@@ -53,7 +53,7 @@ 暂时还没有规则 {{set.connector.toUpperCase()}} - {{set.actionName}}[{{set.action.toUpperCase()}}] + {{set.actionName}}[{{set.action.toUpperCase()}}]
-> [{{link.name}}]  
diff --git a/web/views/@default/servers/components/waf/policy.html b/web/views/@default/servers/components/waf/policy.html index 933e05a8..36cb3826 100644 --- a/web/views/@default/servers/components/waf/policy.html +++ b/web/views/@default/servers/components/waf/policy.html @@ -21,6 +21,24 @@ {{group.name}} + + 阻止动作设置 + + 还没有设置。 +
+ + + + + + + + + +
状态码{{firewallPolicy.blockOptions.statusCode}}
提示内容{{firewallPolicy.blockOptions.body}}
+
+ + 描述 diff --git a/web/views/@default/servers/components/waf/update.html b/web/views/@default/servers/components/waf/update.html index e7c46fde..82feb663 100644 --- a/web/views/@default/servers/components/waf/update.html +++ b/web/views/@default/servers/components/waf/update.html @@ -24,6 +24,12 @@

可以启用一些我们预置的规则组。

+ + 阻止动作配置 + + + +