Skip to content

Commit

Permalink
fallback to master for hub index download if it does not exist (#2210)
Browse files Browse the repository at this point in the history
  • Loading branch information
blotus authored May 17, 2023
1 parent 0ea1508 commit 6e3ca35
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
11 changes: 10 additions & 1 deletion cmd/crowdsec-cli/hub.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"errors"
"fmt"

"github.com/fatih/color"
Expand Down Expand Up @@ -98,7 +99,15 @@ Fetches the [.index.json](https://github.com/crowdsecurity/hub/blob/master/.inde
log.Fatal(err)
}
if err := cwhub.UpdateHubIdx(csConfig.Hub); err != nil {
log.Fatalf("Failed to get Hub index : %v", err)
if errors.Is(err, cwhub.ErrIndexNotFound) {
log.Warnf("Could not find index file for branch '%s', using 'master'", cwhub.HubBranch)
cwhub.HubBranch = "master"
if err := cwhub.UpdateHubIdx(csConfig.Hub); err != nil {
log.Fatalf("Failed to get Hub index after retry : %v", err)
}
} else {
log.Fatalf("Failed to get Hub index : %v", err)
}
}
//use LocalSync to get warnings about tainted / outdated items
_, warn := cwhub.LocalSync(csConfig.Hub)
Expand Down
9 changes: 7 additions & 2 deletions pkg/cwhub/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (
"gopkg.in/yaml.v2"
)

var ErrIndexNotFound = fmt.Errorf("index not found")

func UpdateHubIdx(hub *csconfig.Hub) error {

bidx, err := DownloadHubIdx(hub)
Expand Down Expand Up @@ -47,10 +49,13 @@ func DownloadHubIdx(hub *csconfig.Hub) ([]byte, error) {
if err != nil {
return nil, errors.Wrap(err, "failed http request for hub index")
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
if resp.StatusCode == http.StatusNotFound {
return nil, ErrIndexNotFound
}
return nil, fmt.Errorf("bad http code %d while requesting %s", resp.StatusCode, req.URL.String())
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, errors.Wrap(err, "failed to read request answer for hub index")
Expand Down Expand Up @@ -81,7 +86,7 @@ func DownloadHubIdx(hub *csconfig.Hub) ([]byte, error) {
return body, nil
}

//DownloadLatest will download the latest version of Item to the tdir directory
// DownloadLatest will download the latest version of Item to the tdir directory
func DownloadLatest(hub *csconfig.Hub, target Item, overwrite bool, updateOnly bool) (Item, error) {
var err error

Expand Down
2 changes: 2 additions & 0 deletions pkg/cwhub/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ import (
func chooseHubBranch() (string, error) {
latest, err := cwversion.Latest()
if err != nil {
log.Warningf("Unable to retrieve latest crowdsec version: %s, defaulting to master", err)
//lint:ignore nilerr reason
return "master", nil // ignore
}

csVersion := cwversion.VersionStrip()
if csVersion == latest {
log.Debugf("current version is equal to latest (%s)", csVersion)
return "master", nil
}

Expand Down

0 comments on commit 6e3ca35

Please sign in to comment.