From 62e7cc366e8a0e877e9b5c647b1150c06d71fd0d Mon Sep 17 00:00:00 2001 From: Abhishek Kondur Date: Tue, 31 Jan 2023 13:33:15 +0400 Subject: [PATCH] update ext client model --- logic/peers.go | 21 +++++++++++++-------- models/mqtt.go | 13 +++++++++---- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index 0149dee3..7ec822a2 100644 --- a/logic/peers.go +++ b/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) { diff --git a/models/mqtt.go b/models/mqtt.go index 32d0e934..10f5b0c7 100644 --- a/models/mqtt.go +++ b/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