diff --git a/rule/logic/and.go b/rule/logic/and.go index f2d54379..876bd71b 100644 --- a/rule/logic/and.go +++ b/rule/logic/and.go @@ -29,15 +29,14 @@ func NewAND(payload string, adapter string) (*AND, error) { and.rules = rules payloads := make([]string, 0, len(rules)) for _, rule := range rules { - payloads = append(payloads, fmt.Sprintf("(%s)", rule.Payload())) + payloads = append(payloads, fmt.Sprintf("(%s,%s)", rule.RuleType().String(), rule.Payload())) if rule.ShouldResolveIP() { and.needIP = true break } } - and.payload = strings.Join(payloads, " && ") - + and.payload = fmt.Sprintf("(%s)", strings.Join(payloads, " && ")) return and, nil } diff --git a/rule/logic/not.go b/rule/logic/not.go index 20fb90c5..4259acbd 100644 --- a/rule/logic/not.go +++ b/rule/logic/not.go @@ -29,7 +29,7 @@ func NewNOT(payload string, adapter string) (*NOT, error) { } not.rule = rule[0] - not.payload = fmt.Sprintf("!(%s)", rule[0].Payload()) + not.payload = fmt.Sprintf("(!(%s,%s))", rule[0].RuleType(), rule[0].Payload()) return not, nil } diff --git a/rule/logic/or.go b/rule/logic/or.go index b79188c3..80b8eef3 100644 --- a/rule/logic/or.go +++ b/rule/logic/or.go @@ -55,13 +55,13 @@ func NewOR(payload string, adapter string) (*OR, error) { or.rules = rules payloads := make([]string, 0, len(rules)) for _, rule := range rules { - payloads = append(payloads, fmt.Sprintf("(%s)", rule.Payload())) + payloads = append(payloads, fmt.Sprintf("(%s,%s)", rule.RuleType(), rule.Payload())) if rule.ShouldResolveIP() { or.needIP = true break } } - or.payload = strings.Join(payloads, " || ") + or.payload = fmt.Sprintf("(%s)", strings.Join(payloads, " || ")) return or, nil }