Browse Source

update ext client model

Abhishek Kondur 2 years ago
parent
commit
62e7cc366e
2 changed files with 22 additions and 12 deletions
  1. 13 8
      logic/peers.go
  2. 9 4
      models/mqtt.go

+ 13 - 8
logic/peers.go

@@ -394,8 +394,11 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 			}
 			peerConfig.AllowedIPs = allowedips
 			extClientPeerMap[peerHost.PublicKey.String()] = models.PeerExtInfo{
-				PeerConfig: peerConfig,
-				Allow:      true,
+				PeerAddr: net.IPNet{
+					IP:   net.ParseIP(peer.PrimaryAddress()),
+					Mask: net.CIDRMask(32, 32),
+				},
+				Allow: true,
 			}
 			if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr)
@@ -424,12 +427,6 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 			extPeers, extPeerIDAndAddrs, err := getExtPeers(&node)
 			if err == nil {
 				hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...)
-				for _, extPeer := range extPeers {
-					hostPeerUpdate.IngressInfo.ExtPeers[extPeer.PublicKey.String()] = models.ExtClientInfo{
-						ExtPeer: extPeer,
-						Peers:   extClientPeerMap,
-					}
-				}
 				for _, extPeerIdAndAddr := range extPeerIDAndAddrs {
 					hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = make(map[string]models.IDandAddr)
 					hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID][extPeerIdAndAddr.ID] = models.IDandAddr{
@@ -438,6 +435,14 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 						Name:    extPeerIdAndAddr.Name,
 						Network: node.Network,
 					}
+					hostPeerUpdate.IngressInfo.ExtPeers[extPeerIdAndAddr.ID] = models.ExtClientInfo{
+						Masquerade: true,
+						ExtPeerAddr: net.IPNet{
+							IP:   net.ParseIP(extPeerIdAndAddr.Address),
+							Mask: net.CIDRMask(32, 32),
+						},
+						Peers: extClientPeerMap,
+					}
 				}
 
 			} else if !database.IsEmptyRecord(err) {

+ 9 - 4
models/mqtt.go

@@ -1,6 +1,8 @@
 package models
 
 import (
+	"net"
+
 	proxy_models "github.com/gravitl/netclient/nmproxy/models"
 	"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
 )
@@ -34,13 +36,16 @@ type IngressInfo struct {
 }
 
 type PeerExtInfo struct {
-	PeerConfig wgtypes.PeerConfig
-	Allow      bool
+	PeerAddr net.IPNet
+	PeerKey  wgtypes.Key
+	Allow    bool
 }
 
 type ExtClientInfo struct {
-	ExtPeer wgtypes.PeerConfig
-	Peers   map[string]PeerExtInfo
+	Masquerade  bool
+	ExtPeerAddr net.IPNet
+	ExtPeerKey  wgtypes.Key
+	Peers       map[string]PeerExtInfo
 }
 
 // NetworkInfo - struct for network info