From 46e63988685cc0986e0a33c9b2bd0fe50682f30b Mon Sep 17 00:00:00 2001 From: Laurence Jones Date: Tue, 29 Apr 2025 12:18:06 +0100 Subject: [PATCH] enhance: Allow the use of 'd' suffix in profiles (#3594) --- pkg/csprofiles/csprofiles.go | 6 +++--- pkg/database/alerts.go | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/csprofiles/csprofiles.go b/pkg/csprofiles/csprofiles.go index c9a7cda79..0b2ae0280 100644 --- a/pkg/csprofiles/csprofiles.go +++ b/pkg/csprofiles/csprofiles.go @@ -2,13 +2,13 @@ package csprofiles import ( "fmt" - "time" "github.com/expr-lang/expr" "github.com/expr-lang/expr/vm" log "github.com/sirupsen/logrus" "github.com/crowdsecurity/crowdsec/pkg/csconfig" + utils "github.com/crowdsecurity/crowdsec/pkg/database" "github.com/crowdsecurity/crowdsec/pkg/exprhelpers" "github.com/crowdsecurity/crowdsec/pkg/models" "github.com/crowdsecurity/crowdsec/pkg/types" @@ -84,7 +84,7 @@ func NewProfile(profilesCfg []*csconfig.ProfileCfg) ([]*Runtime, error) { duration = defaultDuration } - if _, err := time.ParseDuration(duration); err != nil { + if _, err := utils.ParseDuration(duration); err != nil { return nil, fmt.Errorf("error parsing duration '%s' of %s: %w", duration, profile.Name, err) } } @@ -136,7 +136,7 @@ func (profile *Runtime) GenerateDecisionFromProfile(alert *models.Alert) ([]*mod profile.Logger.Warningf("Failed to run duration_expr : %v", err) } else { durationStr := fmt.Sprint(duration) - if _, err := time.ParseDuration(durationStr); err != nil { + if _, err := utils.ParseDuration(durationStr); err != nil { profile.Logger.Warningf("Failed to parse expr duration result '%s'", duration) } else { *decision.Duration = durationStr diff --git a/pkg/database/alerts.go b/pkg/database/alerts.go index 00121ac8c..025cf0630 100644 --- a/pkg/database/alerts.go +++ b/pkg/database/alerts.go @@ -292,7 +292,7 @@ func (c *Client) UpdateCommunityBlocklist(ctx context.Context, alertItem *models duration, err := time.ParseDuration(*decisionItem.Duration) if err != nil { - return 0,0,0, rollbackOnError(txClient, err, "parsing decision duration") + return 0, 0, 0, rollbackOnError(txClient, err, "parsing decision duration") } if decisionItem.Scope == nil { @@ -382,7 +382,7 @@ func (c *Client) createDecisionChunk(ctx context.Context, simulated bool, stopAt sz int ) - duration, err := time.ParseDuration(*decisionItem.Duration) + duration, err := ParseDuration(*decisionItem.Duration) if err != nil { return nil, errors.Wrapf(ParseDurationFail, "decision duration '%+v' : %s", *decisionItem.Duration, err) }