From 84dd0d662ba8ed0b02a36f9f4bc403e02ed1d3b2 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 27 Sep 2021 10:11:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8WAF=E8=A7=84=E5=88=99=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E9=94=99=E8=AF=AF=E6=97=B6=E7=BB=99=E4=BA=88=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/actions/default/servers/components/waf/group.go | 9 +++++++++ .../actions/default/servers/server/settings/waf/group.go | 6 ++++++ .../js/components/server/http-firewall-rule-label.js | 9 +++++++++ web/public/js/utils.js | 6 ++++++ 4 files changed, 30 insertions(+) diff --git a/internal/web/actions/default/servers/components/waf/group.go b/internal/web/actions/default/servers/components/waf/group.go index 81be0c7c..e2cc338f 100644 --- a/internal/web/actions/default/servers/components/waf/group.go +++ b/internal/web/actions/default/servers/components/waf/group.go @@ -73,6 +73,14 @@ func (this *GroupAction) RunGet(params struct { "name": set.Name, "rules": lists.Map(set.Rules, func(k int, v interface{}) interface{} { rule := v.(*firewallconfigs.HTTPFirewallRule) + + // 校验 + var errString = "" + var err = rule.Init() + if err != nil { + errString = err.Error() + } + return maps.Map{ "param": rule.Param, "paramFilters": rule.ParamFilters, @@ -81,6 +89,7 @@ func (this *GroupAction) RunGet(params struct { "isCaseInsensitive": rule.IsCaseInsensitive, "isComposed": firewallconfigs.CheckCheckpointIsComposed(rule.Prefix()), "checkpointOptions": rule.CheckpointOptions, + "err": errString, } }), "isOn": set.IsOn, diff --git a/internal/web/actions/default/servers/server/settings/waf/group.go b/internal/web/actions/default/servers/server/settings/waf/group.go index 1c0739f3..9b58d071 100644 --- a/internal/web/actions/default/servers/server/settings/waf/group.go +++ b/internal/web/actions/default/servers/server/settings/waf/group.go @@ -74,6 +74,11 @@ func (this *GroupAction) RunGet(params struct { "name": set.Name, "rules": lists.Map(set.Rules, func(k int, v interface{}) interface{} { rule := v.(*firewallconfigs.HTTPFirewallRule) + var errString = "" + var err = rule.Init() + if err != nil { + errString = err.Error() + } return maps.Map{ "param": rule.Param, "paramFilters": rule.ParamFilters, @@ -82,6 +87,7 @@ func (this *GroupAction) RunGet(params struct { "isCaseInsensitive": rule.IsCaseInsensitive, "isComposed": firewallconfigs.CheckCheckpointIsComposed(rule.Prefix()), "checkpointOptions": rule.CheckpointOptions, + "err": errString, } }), "isOn": set.IsOn, diff --git a/web/public/js/components/server/http-firewall-rule-label.js b/web/public/js/components/server/http-firewall-rule-label.js index d88b7e6e..c7590dd4 100644 --- a/web/public/js/components/server/http-firewall-rule-label.js +++ b/web/public/js/components/server/http-firewall-rule-label.js @@ -6,6 +6,13 @@ Vue.component("http-firewall-rule-label", { rule: this.vRule } }, + methods: { + showErr: function (err) { + + teaweb.popupTip("规则校验错误,请修正:" + teaweb.encodeHTML(err) + "") + }, + + }, template: `
{{rule.name}}[{{rule.param}}] @@ -19,6 +26,8 @@ Vue.component("http-firewall-rule-label", { {{rule.operator}} {{rule.value}} + + 规则错误
` }) \ No newline at end of file diff --git a/web/public/js/utils.js b/web/public/js/utils.js index 4f821d34..8fb31521 100644 --- a/web/public/js/utils.js +++ b/web/public/js/utils.js @@ -597,6 +597,12 @@ window.teaweb = { instance.resize() }) return instance + }, + encodeHTML: function (s) { + s = s.replace("&", "&") + s = s.replace("<", "<") + s = s.replace(">", ">") + return s } }