|
@@ -142,13 +142,25 @@ func UpdateHost(client mqtt.Client, msg mqtt.Message) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
logger.Log(0, fmt.Sprintf("recieved host update: %+v\n", hostUpdate))
|
|
logger.Log(0, fmt.Sprintf("recieved host update: %+v\n", hostUpdate))
|
|
|
|
+ var sendPeerUpdate bool
|
|
switch hostUpdate.Action {
|
|
switch hostUpdate.Action {
|
|
case models.UpdateHost:
|
|
case models.UpdateHost:
|
|
- // TODO: logic to update host recieved from client
|
|
|
|
|
|
+ sendPeerUpdate = updateHostFromClient(&hostUpdate.Host, currentHost)
|
|
|
|
+ err := logic.UpsertHost(currentHost)
|
|
|
|
+ if err != nil {
|
|
|
|
+ logger.Log(0, "failed to update host: ", currentHost.ID.String(), err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
case models.DeleteHost:
|
|
case models.DeleteHost:
|
|
// TODO: logic to delete host on the server
|
|
// TODO: logic to delete host on the server
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+ if sendPeerUpdate {
|
|
|
|
+ err := PublishPeerUpdate()
|
|
|
|
+ if err != nil {
|
|
|
|
+ logger.Log(0, "failed to pulish peer update: ", err.Error())
|
|
|
|
+ }
|
|
|
|
+ }
|
|
// if servercfg.Is_EE && ifaceDelta {
|
|
// if servercfg.Is_EE && ifaceDelta {
|
|
// if err = logic.EnterpriseResetAllPeersFailovers(currentHost.ID.String(), currentHost.Network); err != nil {
|
|
// 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)
|
|
// logger.Log(1, "failed to reset failover list during node update", currentHost.ID.String(), currentHost.Network)
|
|
@@ -158,6 +170,33 @@ func UpdateHost(client mqtt.Client, msg mqtt.Message) {
|
|
}(msg)
|
|
}(msg)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// used for updating host on sever with update recieved from client
|
|
|
|
+func updateHostFromClient(newHost, currHost *models.Host) (sendPeerUpdate bool) {
|
|
|
|
+
|
|
|
|
+ if newHost.ListenPort != 0 && currHost.ListenPort != newHost.ListenPort {
|
|
|
|
+ currHost.ListenPort = newHost.ListenPort
|
|
|
|
+ sendPeerUpdate = true
|
|
|
|
+ }
|
|
|
|
+ if newHost.ProxyListenPort != 0 && currHost.ProxyListenPort != newHost.ProxyListenPort {
|
|
|
|
+ currHost.ProxyListenPort = newHost.ProxyListenPort
|
|
|
|
+ sendPeerUpdate = true
|
|
|
|
+ }
|
|
|
|
+ if currHost.ProxyEnabled != newHost.ProxyEnabled {
|
|
|
|
+ currHost.ProxyEnabled = newHost.ProxyEnabled
|
|
|
|
+ sendPeerUpdate = true
|
|
|
|
+ }
|
|
|
|
+ if currHost.EndpointIP.String() != newHost.EndpointIP.String() {
|
|
|
|
+ currHost.EndpointIP = newHost.EndpointIP
|
|
|
|
+ sendPeerUpdate = true
|
|
|
|
+ }
|
|
|
|
+ currHost.DaemonInstalled = newHost.DaemonInstalled
|
|
|
|
+ currHost.Debug = newHost.Debug
|
|
|
|
+ currHost.Verbosity = newHost.Verbosity
|
|
|
|
+ currHost.Version = newHost.Version
|
|
|
|
+ currHost.Name = newHost.Name
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
// UpdateMetrics message Handler -- handles updates from client nodes for metrics
|
|
// UpdateMetrics message Handler -- handles updates from client nodes for metrics
|
|
func UpdateMetrics(client mqtt.Client, msg mqtt.Message) {
|
|
func UpdateMetrics(client mqtt.Client, msg mqtt.Message) {
|
|
if servercfg.Is_EE {
|
|
if servercfg.Is_EE {
|