MCPcopy
hub / github.com/crowdsecurity/crowdsec / processFilter

Method processFilter

pkg/parser/node.go:104–134  ·  view source on GitHub ↗
(cachedExprEnv map[string]any)

Source from the content-addressed store, hash-verified

102}
103
104func (n *Node) processFilter(cachedExprEnv map[string]any) (bool, error) {
105 clog := n.Logger
106 if n.RunTimeFilter == nil {
107 clog.Trace("Node has no filter, enter")
108 return true, nil
109 }
110
111 // Evaluate node's filter
112 output, err := exprhelpers.Run(n.RunTimeFilter, cachedExprEnv, clog, n.Debug)
113 if err != nil {
114 clog.Warningf("failed to run filter: %v", err)
115 clog.Debug("Event leaving node: ko")
116
117 return false, nil
118 }
119
120 switch out := output.(type) {
121 case bool:
122 if !out {
123 clog.Debug("Event leaving node: ko (failed filter)")
124 return false, nil
125 }
126 default:
127 clog.Warningf("Expr %q returned non-bool, abort: %T", n.Filter, output)
128 clog.Debug("Event leaving node: ko")
129
130 return false, nil
131 }
132
133 return true, nil
134}
135
136func (n *Node) processWhitelist(cachedExprEnv map[string]any, p *pipeline.Event) (bool, error) {
137 var exprErr error

Callers 1

processMethod · 0.95

Calls 3

RunFunction · 0.92
TraceMethod · 0.65
DebugMethod · 0.45

Tested by

no test coverage detected