Browse Source

added node peers to return

0xdcarns 2 years ago
parent
commit
a419b24151
3 changed files with 16 additions and 7 deletions
  1. 2 1
      controllers/node.go
  2. 8 1
      logic/peers.go
  3. 6 5
      models/mqtt.go

+ 2 - 1
controllers/node.go

@@ -445,6 +445,7 @@ func getNode(w http.ResponseWriter, r *http.Request) {
 		Node:         node,
 		Host:         *host,
 		HostPeers:    hostPeerUpdate.Peers,
+		Peers:        hostPeerUpdate.NodePeers,
 		ServerConfig: server,
 		PeerIDs:      hostPeerUpdate.PeerIDs,
 	}
@@ -628,7 +629,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 		Node:         data.Node,
 		ServerConfig: server,
 		Host:         data.Host,
-		Peers:        hostPeerUpdate.Peers,
+		Peers:        hostPeerUpdate.NodePeers,
 	}
 	logger.Log(1, r.Header.Get("user"), "created new node", data.Host.Name, "on network", networkName)
 	w.WriteHeader(http.StatusOK)

+ 8 - 1
logic/peers.go

@@ -220,7 +220,7 @@ func GetProxyUpdateForHost(host *models.Host) (models.ProxyManagerPayload, error
 					relayPeersMap[relayedHost.PublicKey.String()] = models.RelayedConf{
 						RelayedPeerEndpoint: relayedEndpoint,
 						RelayedPeerPubKey:   relayedHost.PublicKey.String(),
-						Peers:               payload.Peers,
+						Peers:               payload.NodePeers,
 					}
 				}
 
@@ -305,6 +305,8 @@ func GetPeerUpdateForHost(network string, host *models.Host) (models.HostPeerUpd
 		},
 		EgressInfo: make(map[string]models.EgressInfo),
 		PeerIDs:    make(models.PeerMap, 0),
+		Peers:      []wgtypes.PeerConfig{},
+		NodePeers:  []wgtypes.PeerConfig{},
 	}
 	logger.Log(1, "peer update for host ", host.ID.String())
 	peerIndexMap := make(map[string]int)
@@ -416,6 +418,7 @@ func GetPeerUpdateForHost(network string, host *models.Host) (models.HostPeerUpd
 				}
 			}
 
+			var nodePeer wgtypes.PeerConfig
 			if _, ok := hostPeerUpdate.HostPeerIDs[peerHost.PublicKey.String()]; !ok {
 				hostPeerUpdate.HostPeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr)
 				hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, peerConfig)
@@ -426,6 +429,7 @@ func GetPeerUpdateForHost(network string, host *models.Host) (models.HostPeerUpd
 					Name:    peerHost.Name,
 					Network: peer.Network,
 				}
+				nodePeer = peerConfig
 			} else {
 				peerAllowedIPs := hostPeerUpdate.Peers[peerIndexMap[peerHost.PublicKey.String()]].AllowedIPs
 				peerAllowedIPs = append(peerAllowedIPs, allowedips...)
@@ -436,6 +440,7 @@ func GetPeerUpdateForHost(network string, host *models.Host) (models.HostPeerUpd
 					Name:    peerHost.Name,
 					Network: peer.Network,
 				}
+				nodePeer = hostPeerUpdate.Peers[peerIndexMap[peerHost.PublicKey.String()]]
 			}
 
 			if node.Network == network { // add to peers map for metrics
@@ -445,6 +450,7 @@ func GetPeerUpdateForHost(network string, host *models.Host) (models.HostPeerUpd
 					Name:    peerHost.Name,
 					Network: peer.Network,
 				}
+				hostPeerUpdate.NodePeers = append(hostPeerUpdate.NodePeers, nodePeer)
 			}
 		}
 		var extPeers []wgtypes.PeerConfig
@@ -487,6 +493,7 @@ func GetPeerUpdateForHost(network string, host *models.Host) (models.HostPeerUpd
 					}
 					if node.Network == network {
 						hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = extPeerIdAndAddr
+						hostPeerUpdate.NodePeers = append(hostPeerUpdate.NodePeers, extPeers...)
 					}
 				}
 			} else if !database.IsEmptyRecord(err) {

+ 6 - 5
models/mqtt.go

@@ -8,11 +8,12 @@ import (
 
 // HostPeerUpdate - struct for host peer updates
 type HostPeerUpdate struct {
-	Host          Host                  `json:"host" bson:"host" yaml:"host"`
-	Server        string                `json:"server" bson:"server" yaml:"server"`
-	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"`
+	Host          Host                 `json:"host" bson:"host" yaml:"host"`
+	Server        string               `json:"server" bson:"server" yaml:"server"`
+	ServerVersion string               `json:"serverversion" bson:"serverversion" yaml:"serverversion"`
+	ServerAddrs   []ServerAddr         `json:"serveraddrs" bson:"serveraddrs" yaml:"serveraddrs"`
+	NodePeers     []wgtypes.PeerConfig `json:"peers" bson:"peers" yaml:"peers"`
+	Peers         []wgtypes.PeerConfig
 	HostPeerIDs   HostPeerMap           `json:"hostpeerids" bson:"hostpeerids" yaml:"hostpeerids"`
 	ProxyUpdate   ProxyManagerPayload   `json:"proxy_update" bson:"proxy_update" yaml:"proxy_update"`
 	EgressInfo    map[string]EgressInfo `json:"egress_info" bson:"egress_info" yaml:"egress_info"` // map key is node ID