From fef31752bdf8171420103760088445d5a9c6979e Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 25 May 2022 15:21:22 -0400 Subject: [PATCH] send server version in peer update message --- logic/peers.go | 2 ++ models/mqtt.go | 9 +++++---- netclient/config/config.go | 1 + netclient/functions/mqhandlers.go | 12 ++++++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index af3c9197..11059e18 100644 --- a/logic/peers.go +++ b/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) diff --git a/models/mqtt.go b/models/mqtt.go index b3f46528..fbb4ee7b 100644 --- a/models/mqtt.go +++ b/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 diff --git a/netclient/config/config.go b/netclient/config/config.go index f6d6c4cf..d05d4317 100644 --- a/netclient/config/config.go +++ b/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 diff --git a/netclient/functions/mqhandlers.go b/netclient/functions/mqhandlers.go index d02f11ac..5713010a 100644 --- a/netclient/functions/mqhandlers.go +++ b/netclient/functions/mqhandlers.go @@ -2,6 +2,7 @@ package functions import ( "encoding/json" + "log" "runtime" "strings" "time" @@ -183,6 +184,17 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) { return } insert(peerUpdate.Network, lastPeerUpdate, string(data)) + // check version + log.Println(peerUpdate.ServerVersion) + if peerUpdate.ServerVersion != ncutils.Version { + logger.Log(0, "server/client version mismatch server: ", peerUpdate.ServerVersion, " client: ", ncutils.Version) + } + log.Println(cfg.Server.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)