@@ -2,7 +2,7 @@ package parser
2
2
3
3
import (
4
4
"fmt"
5
- "net"
5
+ "net/netip "
6
6
7
7
"github.com/expr-lang/expr"
8
8
"github.com/expr-lang/expr/vm"
@@ -16,9 +16,9 @@ import (
16
16
type Whitelist struct {
17
17
Reason string `yaml:"reason,omitempty"`
18
18
Ips []string `yaml:"ip,omitempty"`
19
- B_Ips []net. IP
19
+ B_Ips []netip. Addr
20
20
Cidrs []string `yaml:"cidr,omitempty"`
21
- B_Cidrs []* net. IPNet
21
+ B_Cidrs []netip. Prefix
22
22
Exprs []string `yaml:"expression,omitempty"`
23
23
B_Exprs []* ExprWhitelist
24
24
}
@@ -52,7 +52,7 @@ func (n *Node) CheckIPsWL(p *types.Event) bool {
52
52
break
53
53
}
54
54
for _ , v := range n .Whitelist .B_Ips {
55
- if v . Equal ( src ) {
55
+ if v == src {
56
56
n .Logger .Debugf ("Event from [%s] is whitelisted by IP (%s), reason [%s]" , src , v , n .Whitelist .Reason )
57
57
isWhitelisted = true
58
58
break
@@ -115,14 +115,19 @@ func (n *Node) CheckExprWL(cachedExprEnv map[string]interface{}, p *types.Event)
115
115
116
116
func (n * Node ) CompileWLs () (bool , error ) {
117
117
for _ , v := range n .Whitelist .Ips {
118
- n .Whitelist .B_Ips = append (n .Whitelist .B_Ips , net .ParseIP (v ))
119
- n .Logger .Debugf ("adding ip %s to whitelists" , net .ParseIP (v ))
118
+ addr , err := netip .ParseAddr (v )
119
+ if err != nil {
120
+ return false , fmt .Errorf ("parsing whitelist: %w" , err )
121
+ }
122
+
123
+ n .Whitelist .B_Ips = append (n .Whitelist .B_Ips , addr )
124
+ n .Logger .Debugf ("adding ip %s to whitelists" , addr )
120
125
}
121
126
122
127
for _ , v := range n .Whitelist .Cidrs {
123
- _ , tnet , err := net . ParseCIDR (v )
128
+ tnet , err := netip . ParsePrefix (v )
124
129
if err != nil {
125
- return false , fmt .Errorf ("unable to parse cidr whitelist '%s' : %v" , v , err )
130
+ return false , fmt .Errorf ("parsing whitelist: %w" , err )
126
131
}
127
132
n .Whitelist .B_Cidrs = append (n .Whitelist .B_Cidrs , tnet )
128
133
n .Logger .Debugf ("adding cidr %s to whitelists" , tnet )
@@ -131,7 +136,7 @@ func (n *Node) CompileWLs() (bool, error) {
131
136
for _ , filter := range n .Whitelist .Exprs {
132
137
var err error
133
138
expression := & ExprWhitelist {}
134
- expression .Filter , err = expr .Compile (filter , exprhelpers .GetExprOptions (map [string ]interface {} {"evt" : & types.Event {}})... )
139
+ expression .Filter , err = expr .Compile (filter , exprhelpers .GetExprOptions (map [string ]any {"evt" : & types.Event {}})... )
135
140
if err != nil {
136
141
return false , fmt .Errorf ("unable to compile whitelist expression '%s' : %v" , filter , err )
137
142
}
0 commit comments