mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-06 17:29:15 +08:00
send connected status on checkin
This commit is contained in:
@@ -39,6 +39,12 @@ const (
|
|||||||
var seededRand *rand.Rand = rand.New(
|
var seededRand *rand.Rand = rand.New(
|
||||||
rand.NewSource(time.Now().UnixNano()))
|
rand.NewSource(time.Now().UnixNano()))
|
||||||
|
|
||||||
|
// NodeCheckin - struct for node checkins with server
|
||||||
|
type NodeCheckin struct {
|
||||||
|
Version string
|
||||||
|
Connected string
|
||||||
|
}
|
||||||
|
|
||||||
// Node - struct for node model
|
// Node - struct for node model
|
||||||
type Node struct {
|
type Node struct {
|
||||||
ID string `json:"id,omitempty" bson:"id,omitempty" yaml:"id,omitempty" validate:"required,min=5,id_unique"`
|
ID string `json:"id,omitempty" bson:"id,omitempty" yaml:"id,omitempty" validate:"required,min=5,id_unique"`
|
||||||
|
@@ -36,13 +36,19 @@ func Ping(client mqtt.Client, msg mqtt.Message) {
|
|||||||
logger.Log(0, record)
|
logger.Log(0, record)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
version, decryptErr := decryptMsg(&node, msg.Payload())
|
decrypted, decryptErr := decryptMsg(&node, msg.Payload())
|
||||||
if decryptErr != nil {
|
if decryptErr != nil {
|
||||||
logger.Log(0, "error decrypting when updating node ", node.ID, decryptErr.Error())
|
logger.Log(0, "error decrypting when updating node ", node.ID, decryptErr.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
var checkin models.NodeCheckin
|
||||||
|
if err := json.Unmarshal(decrypted, &checkin); err != nil {
|
||||||
|
logger.Log(1, "error unmarshaling payload ", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
node.SetLastCheckIn()
|
node.SetLastCheckIn()
|
||||||
node.Version = string(version)
|
node.Version = checkin.Version
|
||||||
|
node.Connected = checkin.Connected
|
||||||
if err := logic.UpdateNode(&node, &node); err != nil {
|
if err := logic.UpdateNode(&node, &node); err != nil {
|
||||||
logger.Log(0, "error updating node", node.Name, node.ID, " on checkin", err.Error())
|
logger.Log(0, "error updating node", node.Name, node.ID, " on checkin", err.Error())
|
||||||
return
|
return
|
||||||
|
@@ -3,7 +3,6 @@ package functions
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/gravitl/netmaker/logger"
|
|
||||||
"github.com/gravitl/netmaker/netclient/config"
|
"github.com/gravitl/netmaker/netclient/config"
|
||||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||||
"github.com/gravitl/netmaker/netclient/wireguard"
|
"github.com/gravitl/netmaker/netclient/wireguard"
|
||||||
@@ -24,10 +23,6 @@ func Connect(network string) error {
|
|||||||
if err = wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, filePath); err != nil {
|
if err = wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, filePath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := PublishNodeUpdate(cfg); err != nil {
|
|
||||||
logger.Log(0, "network:", cfg.Node.Network, "could not publish connection change, it will likely get reverted")
|
|
||||||
}
|
|
||||||
|
|
||||||
return config.ModNodeConfig(&cfg.Node)
|
return config.ModNodeConfig(&cfg.Node)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,9 +41,5 @@ func Disconnect(network string) error {
|
|||||||
if err = wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, filePath); err != nil {
|
if err = wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, filePath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := PublishNodeUpdate(cfg); err != nil {
|
|
||||||
logger.Log(0, "network:", cfg.Node.Network, "could not publish connection change, it will likely get reverted")
|
|
||||||
}
|
|
||||||
|
|
||||||
return config.ModNodeConfig(&cfg.Node)
|
return config.ModNodeConfig(&cfg.Node)
|
||||||
}
|
}
|
||||||
|
@@ -123,7 +123,15 @@ func PublishNodeUpdate(nodeCfg *config.ClientConfig) error {
|
|||||||
|
|
||||||
// Hello -- ping the broker to let server know node it's alive and well
|
// Hello -- ping the broker to let server know node it's alive and well
|
||||||
func Hello(nodeCfg *config.ClientConfig) {
|
func Hello(nodeCfg *config.ClientConfig) {
|
||||||
if err := publish(nodeCfg, fmt.Sprintf("ping/%s", nodeCfg.Node.ID), []byte(ncutils.Version), 0); err != nil {
|
var checkin models.NodeCheckin
|
||||||
|
checkin.Version = ncutils.Version
|
||||||
|
checkin.Connected = nodeCfg.Node.Connected
|
||||||
|
data, err := json.Marshal(checkin)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(0, "unable to marshal checkin data", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := publish(nodeCfg, fmt.Sprintf("ping/%s", nodeCfg.Node.ID), data, 0); err != nil {
|
||||||
logger.Log(0, fmt.Sprintf("Network: %s error publishing ping, %v", nodeCfg.Node.Network, err))
|
logger.Log(0, fmt.Sprintf("Network: %s error publishing ping, %v", nodeCfg.Node.Network, err))
|
||||||
logger.Log(0, "running pull on "+nodeCfg.Node.Network+" to reconnect")
|
logger.Log(0, "running pull on "+nodeCfg.Node.Network+" to reconnect")
|
||||||
_, err := Pull(nodeCfg.Node.Network, true)
|
_, err := Pull(nodeCfg.Node.Network, true)
|
||||||
|
Reference in New Issue
Block a user