send server version in peer update message

This commit is contained in:
Matthew R. Kasun 2022-05-25 15:21:22 -04:00
parent 67837435ec
commit fef31752bd
4 changed files with 20 additions and 4 deletions

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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)