crowdsec/pkg/leakybucket/trigger.go
mmetc 206211ce53
lint: import statement order (#3085)
* lint: import statement order

* lint
2024-06-26 12:16:17 +02:00

43 lines
1,006 B
Go

package leakybucket
import (
"time"
log "github.com/sirupsen/logrus"
"github.com/crowdsecurity/crowdsec/pkg/types"
)
type Trigger struct {
DumbProcessor
}
func (t *Trigger) OnBucketPour(b *BucketFactory) func(types.Event, *Leaky) *types.Event {
// Pour makes the bucket overflow all the time
// TriggerPour unconditionally overflows
return func(msg types.Event, l *Leaky) *types.Event {
if l.Mode == types.TIMEMACHINE {
var d time.Time
err := d.UnmarshalText([]byte(msg.MarshaledTime))
if err != nil {
log.Warningf("Failed unmarshaling event time (%s) : %v", msg.MarshaledTime, err)
d = time.Now().UTC()
}
l.logger.Debugf("yay timemachine overflow time : %s --> %s", d, msg.MarshaledTime)
l.Last_ts = d
l.First_ts = d
l.Ovflw_ts = d
} else {
l.Last_ts = time.Now().UTC()
l.First_ts = time.Now().UTC()
l.Ovflw_ts = time.Now().UTC()
}
l.Total_count = 1
l.logger.Infof("Bucket overflow")
l.Queue.Add(msg)
l.Out <- l.Queue
return nil
}
}