Browse Source

Merge pull request #1138 from gravitl/feature_v0.14.2_server_version

send server version in peer update message
dcarns 3 years ago
parent
commit
50d286dd0b
4 changed files with 17 additions and 4 deletions
  1. 2 0
      logic/peers.go
  2. 5 4
      models/mqtt.go
  3. 1 0
      netclient/config/config.go
  4. 9 0
      netclient/functions/mqhandlers.go

+ 2 - 0
logic/peers.go

@@ -13,6 +13,7 @@ import (
 	"github.com/gravitl/netmaker/logic/acls"
 	"github.com/gravitl/netmaker/logic/acls/nodeacls"
 	"github.com/gravitl/netmaker/models"
+	"github.com/gravitl/netmaker/servercfg"
 	"github.com/seancfoley/ipaddress-go/ipaddr"
 	"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
 )
@@ -239,6 +240,7 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
 	}
 
 	peerUpdate.Network = node.Network
+	peerUpdate.ServerVersion = servercfg.Version
 	peerUpdate.Peers = peers
 	peerUpdate.ServerAddrs = serverNodeAddresses
 	peerUpdate.DNS = getPeerDNS(node.Network)

+ 5 - 4
models/mqtt.go

@@ -4,10 +4,11 @@ import "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
 
 // PeerUpdate - struct
 type PeerUpdate struct {
-	Network     string               `json:"network" bson:"network" yaml:"network"`
-	ServerAddrs []ServerAddr         `json:"serveraddrs" bson:"serveraddrs" yaml:"serveraddrs"`
-	Peers       []wgtypes.PeerConfig `json:"peers" bson:"peers" yaml:"peers"`
-	DNS         string               `json:"dns" bson:"dns" yaml:"dns"`
+	Network       string               `json:"network" bson:"network" yaml:"network"`
+	ServerVersion string               `json:"serverversion" bson:"serverversion" yaml:"serverversion"`
+	ServerAddrs   []ServerAddr         `json:"serveraddrs" bson:"serveraddrs" yaml:"serveraddrs"`
+	Peers         []wgtypes.PeerConfig `json:"peers" bson:"peers" yaml:"peers"`
+	DNS           string               `json:"dns" bson:"dns" yaml:"dns"`
 }
 
 // KeyUpdate - key update struct

+ 1 - 0
netclient/config/config.go

@@ -39,6 +39,7 @@ type ServerConfig struct {
 	AccessKey   string `yaml:"accesskey"`
 	Server      string `yaml:"server"`
 	API         string `yaml:"api"`
+	Version     string `yaml:"version"`
 }
 
 // RegisterRequest - struct for registation with netmaker server

+ 9 - 0
netclient/functions/mqhandlers.go

@@ -183,6 +183,15 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
 		return
 	}
 	insert(peerUpdate.Network, lastPeerUpdate, string(data))
+	// check version
+	if peerUpdate.ServerVersion != ncutils.Version {
+		logger.Log(0, "server/client version mismatch server: ", peerUpdate.ServerVersion, " client: ", ncutils.Version)
+	}
+	if peerUpdate.ServerVersion != cfg.Server.Version {
+		logger.Log(1, "updating server version")
+		cfg.Server.Version = peerUpdate.ServerVersion
+		config.Write(&cfg, cfg.Network)
+	}
 
 	file := ncutils.GetNetclientPathSpecific() + cfg.Node.Interface + ".conf"
 	err = wireguard.UpdateWgPeers(file, peerUpdate.Peers)