|
@@ -118,6 +118,45 @@ func UpdateNode(client mqtt.Client, msg mqtt.Message) {
|
|
|
}()
|
|
|
}
|
|
|
|
|
|
+// UpdateHost message Handler -- handles updates from client hosts
|
|
|
+func UpdateHost(client mqtt.Client, msg mqtt.Message) {
|
|
|
+ go func() {
|
|
|
+ id, err := getID(msg.Topic())
|
|
|
+ if err != nil {
|
|
|
+ logger.Log(1, "error getting host.ID sent on ", msg.Topic(), err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ currentHost, err := logic.GetHost(id)
|
|
|
+ if err != nil {
|
|
|
+ logger.Log(1, "error getting node ", id, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ decrypted, decryptErr := decryptMsgWithHost(currentHost, msg.Payload())
|
|
|
+ if decryptErr != nil {
|
|
|
+ logger.Log(1, "failed to decrypt message for node ", id, decryptErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var newHost models.Host
|
|
|
+ if err := json.Unmarshal(decrypted, &newHost); err != nil {
|
|
|
+ logger.Log(1, "error unmarshaling payload ", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // ifaceDelta := logic.IfaceDelta(¤tHost, newNode)
|
|
|
+ // if servercfg.Is_EE && ifaceDelta {
|
|
|
+ // if err = logic.EnterpriseResetAllPeersFailovers(currentHost.ID.String(), currentHost.Network); err != nil {
|
|
|
+ // logger.Log(1, "failed to reset failover list during node update", currentHost.ID.String(), currentHost.Network)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ logic.UpdateHost(&newHost, currentHost)
|
|
|
+ if err := logic.UpsertHost(&newHost); err != nil {
|
|
|
+ logger.Log(1, "error saving host", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.Log(1, "updated host", newHost.ID.String())
|
|
|
+ }()
|
|
|
+}
|
|
|
+
|
|
|
// UpdateMetrics message Handler -- handles updates from client nodes for metrics
|
|
|
func UpdateMetrics(client mqtt.Client, msg mqtt.Message) {
|
|
|
if servercfg.Is_EE {
|