Browse Source

Merge pull request #1895 from gravitl/netclient_refactor_fixes

update host struct in memory, set to proxy port if peer host is using…
dcarns 2 years ago
parent
commit
711190d4a0
2 changed files with 12 additions and 9 deletions
  1. 9 9
      controllers/node.go
  2. 3 0
      logic/peers.go

+ 9 - 9
controllers/node.go

@@ -571,10 +571,16 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 	// consume password before hashing for mq client creation
 	// consume password before hashing for mq client creation
 	hostPassword := data.Host.HostPass
 	hostPassword := data.Host.HostPass
 	data.Node.Server = servercfg.GetServer()
 	data.Node.Server = servercfg.GetServer()
-
 	if err := logic.CreateHost(&data.Host); err != nil {
 	if err := logic.CreateHost(&data.Host); err != nil {
 		if errors.Is(err, logic.ErrHostExists) {
 		if errors.Is(err, logic.ErrHostExists) {
 			logger.Log(3, "host exists .. no need to create")
 			logger.Log(3, "host exists .. no need to create")
+			host, err := logic.GetHost(data.Host.ID.String())
+			if err != nil {
+				logger.Log(0, r.Header.Get("user"), "failed to find host:", err.Error())
+				logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
+				return
+			}
+			logic.UpdateHost(&data.Host, host) // update the in memory struct values
 			networks := logic.GetHostNetworks(data.Host.ID.String())
 			networks := logic.GetHostNetworks(data.Host.ID.String())
 			if err := mq.ModifyClient(&mq.MqClient{
 			if err := mq.ModifyClient(&mq.MqClient{
 				ID:       data.Host.ID.String(),
 				ID:       data.Host.ID.String(),
@@ -585,6 +591,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 				logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 				logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 				return
 				return
 			}
 			}
+
 		} else {
 		} else {
 			logger.Log(0, "error creating host", err.Error())
 			logger.Log(0, "error creating host", err.Error())
 			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
@@ -604,14 +611,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 		}
 		}
 	}
 	}
 
 
-	host, err := logic.GetHost(data.Host.ID.String())
-	if err != nil {
-		logger.Log(0, r.Header.Get("user"), "failed to find host:", err.Error())
-		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
-		return
-	}
-
-	err = logic.AssociateNodeToHost(&data.Node, host)
+	err = logic.AssociateNodeToHost(&data.Node, &data.Host)
 	if err != nil {
 	if err != nil {
 		logger.Log(0, r.Header.Get("user"),
 		logger.Log(0, r.Header.Get("user"),
 			fmt.Sprintf("failed to create node on network [%s]: %s",
 			fmt.Sprintf("failed to create node on network [%s]: %s",

+ 3 - 0
logic/peers.go

@@ -248,6 +248,9 @@ func GetPeerUpdate(node *models.Node, host *models.Host) (models.PeerUpdate, err
 			IP:   peerHost.EndpointIP,
 			IP:   peerHost.EndpointIP,
 			Port: peerHost.ListenPort,
 			Port: peerHost.ListenPort,
 		}
 		}
+		if !host.ProxyEnabled && peerHost.ProxyEnabled {
+			peerConfig.Endpoint.Port = peerHost.ProxyListenPort
+		}
 		if uselocal {
 		if uselocal {
 			peerConfig.Endpoint.IP = peer.LocalAddress.IP
 			peerConfig.Endpoint.IP = peer.LocalAddress.IP
 		}
 		}