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

Method handleEvent

pkg/apiserver/papi.go:129–161  ·  view source on GitHub ↗
(ctx context.Context, event longpollclient.Event, sync bool)

Source from the content-addressed store, hash-verified

127}
128
129func (p *Papi) handleEvent(ctx context.Context, event longpollclient.Event, sync bool) error {
130 logger := p.Logger.WithField("request-id", event.RequestId)
131 logger.Debugf("message received: %+v", event.Data)
132
133 message := &Message{}
134 if err := json.Unmarshal([]byte(event.Data), message); err != nil {
135 return fmt.Errorf("polling papi message format is not compatible: %+v: %w", event.Data, err)
136 }
137
138 if message.Header == nil {
139 return errors.New("no header in message, skipping")
140 }
141
142 if message.Header.Source == nil {
143 return errors.New("no source user in header message, skipping")
144 }
145
146 operationFunc, ok := operationMap[message.Header.OperationType]
147 if !ok {
148 return fmt.Errorf("operation '%s' unknown, continue", message.Header.OperationType)
149 }
150
151 metrics.PapiOrdersReceived.WithLabelValues(message.Header.OperationType, message.Header.OperationCmd).Inc()
152
153 logger.Debugf("Calling operation '%s'", message.Header.OperationType)
154
155 err := operationFunc(ctx, message, p, sync)
156 if err != nil {
157 return fmt.Errorf("'%s %s failed: %w", message.Header.OperationType, message.Header.OperationCmd, err)
158 }
159
160 return nil
161}
162
163func (p *Papi) GetPermissions(ctx context.Context) (PapiPermCheckSuccess, error) {
164 httpClient := p.apiClient.GetClient()

Callers 2

PullOnceMethod · 0.95
PullMethod · 0.95

Calls 1

IncMethod · 0.80

Tested by

no test coverage detected