...

Source file src/edge-infra.dev/pkg/edge/api/middleware/version_check.go

Documentation: edge-infra.dev/pkg/edge/api/middleware

     1  package middleware
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	"edge-infra.dev/pkg/edge/client"
     8  	"edge-infra.dev/pkg/lib/runtime/version"
     9  
    10  	"github.com/gin-gonic/gin"
    11  	comp "github.com/hashicorp/go-version"
    12  )
    13  
    14  // CheckVersion extract edge-version token from header, validate if it matches the server version.
    15  func CheckVersion() gin.HandlerFunc {
    16  	return func(c *gin.Context) {
    17  		clientVersion, err := comp.NewVersion(c.GetHeader(client.EdgeVersion))
    18  		if err == nil {
    19  			serverVersion, err := comp.NewVersion(version.New().SemVer)
    20  			if err == nil && serverVersion.LessThan(clientVersion) {
    21  				errMsg := fmt.Sprintf("client version %s incompatible with server version %s", clientVersion, serverVersion)
    22  				c.String(http.StatusBadRequest, errMsg)
    23  				return
    24  			}
    25  		}
    26  		c.Next()
    27  	}
    28  }
    29  

View as plain text