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

Function DecisionCmd

pkg/apiserver/papi_cmd.go:38–88  ·  view source on GitHub ↗
(ctx context.Context, message *Message, p *Papi, sync bool)

Source from the content-addressed store, hash-verified

36}
37
38func DecisionCmd(ctx context.Context, message *Message, p *Papi, sync bool) error {
39 switch message.Header.OperationCmd {
40 case "delete":
41 data, err := json.Marshal(message.Data)
42 if err != nil {
43 return err
44 }
45
46 UUIDs := make([]string, 0)
47 deleteDecisionMsg := deleteDecisions{
48 Decisions: make([]string, 0),
49 }
50
51 if err := json.Unmarshal(data, &deleteDecisionMsg); err != nil {
52 return fmt.Errorf("message for '%s' contains bad data format: %w", message.Header.OperationType, err)
53 }
54
55 UUIDs = append(UUIDs, deleteDecisionMsg.Decisions...)
56 log.Infof("Decisions UUIDs to remove: %+v", UUIDs)
57
58 filter := make(map[string][]string)
59 filter["uuid"] = UUIDs
60
61 _, deletedDecisions, err := p.DBClient.ExpireDecisionsWithFilter(ctx, filter)
62 if err != nil {
63 return fmt.Errorf("unable to expire decisions %+v: %w", UUIDs, err)
64 }
65
66 decisions := make([]*models.Decision, 0)
67
68 for _, deletedDecision := range deletedDecisions {
69 log.Infof("Decision from '%s' for '%s' (%s) has been deleted", deletedDecision.Origin, deletedDecision.Value, deletedDecision.Type)
70 dec := &models.Decision{
71 UUID: deletedDecision.UUID,
72 Origin: &deletedDecision.Origin,
73 Scenario: &deletedDecision.Scenario,
74 Scope: &deletedDecision.Scope,
75 Value: &deletedDecision.Value,
76 ID: int64(deletedDecision.ID),
77 Until: deletedDecision.Until.String(),
78 Type: &deletedDecision.Type,
79 }
80 decisions = append(decisions, dec)
81 }
82 p.Channels.DeleteDecisionChannel <- decisions
83 default:
84 return fmt.Errorf("unknown command '%s' for operation type '%s'", message.Header.OperationCmd, message.Header.OperationType)
85 }
86
87 return nil
88}
89
90func AlertCmd(ctx context.Context, message *Message, p *Papi, sync bool) error {
91 switch message.Header.OperationCmd {

Callers

nothing calls this directly

Calls 2

StringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…