processor.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package leakybucket
  2. import "github.com/crowdsecurity/crowdsec/pkg/types"
  3. type Processor interface {
  4. OnBucketInit(Bucket *BucketFactory) error
  5. OnBucketPour(Bucket *BucketFactory) func(types.Event, *Leaky) *types.Event
  6. OnBucketOverflow(Bucket *BucketFactory) func(*Leaky, types.RuntimeAlert, *types.Queue) (types.RuntimeAlert, *types.Queue)
  7. AfterBucketPour(Bucket *BucketFactory) func(types.Event, *Leaky) *types.Event
  8. }
  9. type DumbProcessor struct {
  10. }
  11. func (d *DumbProcessor) OnBucketInit(bucketFactory *BucketFactory) error {
  12. return nil
  13. }
  14. func (d *DumbProcessor) OnBucketPour(bucketFactory *BucketFactory) func(types.Event, *Leaky) *types.Event {
  15. return func(msg types.Event, leaky *Leaky) *types.Event {
  16. return &msg
  17. }
  18. }
  19. func (d *DumbProcessor) OnBucketOverflow(b *BucketFactory) func(*Leaky, types.RuntimeAlert, *types.Queue) (types.RuntimeAlert, *types.Queue) {
  20. return func(leaky *Leaky, alert types.RuntimeAlert, queue *types.Queue) (types.RuntimeAlert, *types.Queue) {
  21. return alert, queue
  22. }
  23. }
  24. func (d *DumbProcessor) AfterBucketPour(bucketFactory *BucketFactory) func(types.Event, *Leaky) *types.Event {
  25. return func(msg types.Event, leaky *Leaky) *types.Event {
  26. return &msg
  27. }
  28. }