From 42bd61a1b2a7caf04d9c54d7a7ab1300fb5e20e2 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 21 Nov 2020 20:43:52 +0800 Subject: [PATCH] =?UTF-8?q?[waf]=E6=94=AF=E6=8C=81=E5=8C=85=E5=90=AB?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6=E3=80=81=E4=B8=8D=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6=E7=AD=89=E6=93=8D=E4=BD=9C=E7=AC=A6?= =?UTF-8?q?=EF=BC=9B=E6=94=AF=E6=8C=81=E5=AF=B9=E5=8F=82=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E7=BC=96=E8=A7=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/http_firewall_rule_dao.go | 21 +++++++++++++++++++ .../db/models/http_firewall_rule_model.go | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/internal/db/models/http_firewall_rule_dao.go b/internal/db/models/http_firewall_rule_dao.go index 4a476bde..86fac63c 100644 --- a/internal/db/models/http_firewall_rule_dao.go +++ b/internal/db/models/http_firewall_rule_dao.go @@ -92,6 +92,16 @@ func (this *HTTPFirewallRuleDAO) ComposeFirewallRule(ruleId int64) (*firewallcon config.Id = int64(rule.Id) config.IsOn = rule.IsOn == 1 config.Param = rule.Param + + paramFilters := []*firewallconfigs.ParamFilter{} + if IsNotNull(rule.ParamFilters) { + err = json.Unmarshal([]byte(rule.ParamFilters), ¶mFilters) + if err != nil { + return nil, err + } + } + config.ParamFilters = paramFilters + config.Operator = rule.Operator config.Value = rule.Value config.IsCaseInsensitive = rule.IsCaseInsensitive == 1 @@ -118,6 +128,17 @@ func (this *HTTPFirewallRuleDAO) CreateOrUpdateRuleFromConfig(ruleConfig *firewa op.IsOn = ruleConfig.IsOn op.Description = ruleConfig.Description op.Param = ruleConfig.Param + + if len(ruleConfig.ParamFilters) == 0 { + op.ParamFilters = "[]" + } else { + paramFilters, err := json.Marshal(ruleConfig.ParamFilters) + if err != nil { + return 0, err + } + op.ParamFilters = paramFilters + } + op.Value = ruleConfig.Value op.IsCaseInsensitive = ruleConfig.IsCaseInsensitive op.Operator = ruleConfig.Operator diff --git a/internal/db/models/http_firewall_rule_model.go b/internal/db/models/http_firewall_rule_model.go index db12b0a1..3cb3ca94 100644 --- a/internal/db/models/http_firewall_rule_model.go +++ b/internal/db/models/http_firewall_rule_model.go @@ -6,7 +6,7 @@ type HTTPFirewallRule struct { IsOn uint8 `field:"isOn"` // 是否启用 Description string `field:"description"` // 说明 Param string `field:"param"` // 参数 - Filters string `field:"filters"` // 处理器 + ParamFilters string `field:"paramFilters"` // 处理器 Operator string `field:"operator"` // 操作符 Value string `field:"value"` // 对比值 IsCaseInsensitive uint8 `field:"isCaseInsensitive"` // 是否大小写不敏感 @@ -22,7 +22,7 @@ type HTTPFirewallRuleOperator struct { IsOn interface{} // 是否启用 Description interface{} // 说明 Param interface{} // 参数 - Filters interface{} // 处理器 + ParamFilters interface{} // 处理器 Operator interface{} // 操作符 Value interface{} // 对比值 IsCaseInsensitive interface{} // 是否大小写不敏感