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: `