1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package require
- // Set the appropriate hub branch according to config settings and crowdsec version
- import (
- log "github.com/sirupsen/logrus"
- "golang.org/x/mod/semver"
- "github.com/crowdsecurity/crowdsec/pkg/cwversion"
- "github.com/crowdsecurity/crowdsec/pkg/csconfig"
- )
- func chooseBranch(cfg *csconfig.Config) string {
- // this was set from config.yaml or flag
- if cfg.Cscli.HubBranch != "" {
- log.Debugf("Hub override from config: branch '%s'", cfg.Cscli.HubBranch)
- return cfg.Cscli.HubBranch
- }
- latest, err := cwversion.Latest()
- if err != nil {
- log.Warningf("Unable to retrieve latest crowdsec version: %s, using hub branch 'master'", err)
- return "master"
- }
- csVersion := cwversion.VersionStrip()
- if csVersion == latest {
- log.Debugf("Latest crowdsec version (%s), using hub branch 'master'", csVersion)
- return "master"
- }
- // if current version is greater than the latest we are in pre-release
- if semver.Compare(csVersion, latest) == 1 {
- log.Debugf("Your current crowdsec version seems to be a pre-release (%s), using hub branch 'master'", csVersion)
- return "master"
- }
- if csVersion == "" {
- log.Warning("Crowdsec version is not set, using hub branch 'master'")
- return "master"
- }
- log.Warnf("A new CrowdSec release is available (%s). "+
- "Your version is '%s'. Please update it to use new parsers/scenarios/collections.",
- latest, csVersion)
- return csVersion
- }
- // HubBranch sets the branch (in cscli config) and returns its value
- // It can be "master", or the branch corresponding to the current crowdsec version, or the value overridden in config/flag
- func HubBranch(cfg *csconfig.Config) string {
- branch := chooseBranch(cfg)
- cfg.Cscli.HubBranch = branch
- return branch
- }
- func HubURLTemplate(cfg *csconfig.Config) string {
- return cfg.Cscli.HubURLTemplate
- }
|