Refactor version checks using go-version library

This commit is contained in:
bcmmbaga
2023-12-22 14:25:12 +03:00
parent 26e4ad7698
commit 3a717368f7

View File

@@ -3,6 +3,8 @@ package checks
import ( import (
"fmt" "fmt"
"github.com/hashicorp/go-version"
nbpeer "github.com/netbirdio/netbird/management/server/peer" nbpeer "github.com/netbirdio/netbird/management/server/peer"
) )
@@ -23,20 +25,44 @@ type NBVersionPostureCheck struct {
} }
func (n *NBVersionPostureCheck) Check(peer nbpeer.Peer) error { func (n *NBVersionPostureCheck) Check(peer nbpeer.Peer) error {
if peer.Meta.WtVersion >= n.MinimumVersionAllowed { peerNBVersion, err := version.NewVersion(peer.Meta.UIVersion)
if err != nil {
return err
}
constraints, err := version.NewConstraint(">= " + n.MinimumVersionAllowed)
if err != nil {
return err
}
if constraints.Check(peerNBVersion) {
return nil return nil
} }
return fmt.Errorf("peer nb version is not supported")
return fmt.Errorf("peer nb version is older than minimum allowed version %s", n.MinimumVersionAllowed)
} }
type OSVersionPostureCheck struct { type OSVersionPostureCheck struct {
Enabled bool Enabled bool
MinimumVersionAllowed string MinimumVersionAllowed string
// TODO: add OS context to prevent using the same version on different OS types
} }
func (o *OSVersionPostureCheck) Check(peer nbpeer.Peer) error { func (o *OSVersionPostureCheck) Check(peer nbpeer.Peer) error {
if peer.Meta.WtVersion >= o.MinimumVersionAllowed { peerNBVersion, err := version.NewVersion(peer.Meta.UIVersion)
if err != nil {
return err
}
constraints, err := version.NewConstraint(">= " + o.MinimumVersionAllowed)
if err != nil {
return err
}
if constraints.Check(peerNBVersion) {
return nil return nil
} }
return fmt.Errorf("peer OS version is not supported") return fmt.Errorf("peer OS version is not supported")
} }