Browse Source

change listen port to proxy on ext client creation if proxy used on ingress GW

Abhishek Kondur 2 years ago
parent
commit
972ded5a2d
4 changed files with 18 additions and 42 deletions
  1. 5 1
      controllers/ext_client.go
  2. 2 2
      logic/gateway.go
  3. 1 4
      mq/publishers.go
  4. 10 35
      nm-proxy/manager/manager.go

+ 5 - 1
controllers/ext_client.go

@@ -332,7 +332,11 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 	}
-	extclient.IngressGatewayEndpoint = node.Endpoint + ":" + strconv.FormatInt(int64(node.ListenPort), 10)
+	listenPort := node.ListenPort
+	if node.Proxy {
+		listenPort = 51722
+	}
+	extclient.IngressGatewayEndpoint = node.Endpoint + ":" + strconv.FormatInt(int64(listenPort), 10)
 
 	extclient.Enabled = true
 	parentNetwork, err := logic.GetNetwork(networkName)

+ 2 - 2
logic/gateway.go

@@ -230,8 +230,8 @@ func CreateIngressGateway(netid string, nodeid string, failover bool) (models.No
 		}
 	}
 	node.SetLastModified()
-	// node.PostUp = postUpCmd
-	// node.PostDown = postDownCmd
+	node.PostUp = postUpCmd
+	node.PostDown = postDownCmd
 	node.UDPHolePunch = "no"
 	if failover && servercfg.Is_EE {
 		node.Failover = "yes"

+ 1 - 4
mq/publishers.go

@@ -26,10 +26,7 @@ func PublishPeerUpdate(newNode *models.Node, publishToSelf bool) error {
 		return err
 	}
 	for _, node := range networkNodes {
-		// err := PublishProxyUpdate(manager.AddInterface, &node)
-		// if err != nil {
-		// 	logger.Log(1, "failed to publish proxy update to node", node.Name, "on network", node.Network, ":", err.Error())
-		// }
+
 		if node.IsServer == "yes" {
 			if servercfg.IsProxyEnabled() {
 				err := PublishProxyUpdate(manager.AddInterface, &node)

+ 10 - 35
nm-proxy/manager/manager.go

@@ -234,6 +234,7 @@ func (m *ManagerAction) processPayload() (*wg.WGIface, error) {
 
 		if currentPeer, ok := wgProxyConf.PeerMap[m.Payload.Peers[i].PublicKey.String()]; ok {
 			if currentPeer.IsAttachedExtClient {
+				m.Payload.Peers = append(m.Payload.Peers[:i], m.Payload.Peers[i+1:]...)
 				continue
 			}
 			// check if proxy is off for the peer
@@ -351,43 +352,10 @@ func (m *ManagerAction) AddInterfaceToProxy() error {
 			log.Println("Endpoint nil for peer: ", peerI.PublicKey.String())
 			continue
 		}
-		if peerConf.IsExtClient && !common.IsIngressGateway {
-			continue
-		}
-		shouldProceed := false
-		if peerConf.IsExtClient && peerConf.IsAttachedExtClient {
-			// check if ext client got endpoint,otherwise continue
-			for _, devpeerI := range wgInterface.Device.Peers {
-				if devpeerI.PublicKey.String() == peerI.PublicKey.String() && devpeerI.Endpoint != nil {
-					peerI.Endpoint = devpeerI.Endpoint
-					shouldProceed = true
-					break
-				}
-			}
-
-		} else {
-			shouldProceed = true
-		}
-		if peerConf.IsExtClient && peerConf.IsAttachedExtClient && shouldProceed {
-			// ctx, cancel := context.WithCancel(context.Background())
-			// common.ExtClientsWaitTh[peerI.PublicKey.String()] = common.ExtClientPeer{
-			// 	CancelFunc: cancel,
-			// }
-			//go proxy.StartSniffer(ctx, wgInterface.Name, m.Payload.WgAddr, peerConf.Address, wgInterface.Port)
-		}
 
 		if peerConf.IsExtClient && !peerConf.IsAttachedExtClient {
 			peerI.Endpoint = peerConf.IngressGatewayEndPoint
 		}
-		if shouldProceed {
-			common.PeerKeyHashMap[fmt.Sprintf("%x", md5.Sum([]byte(peerI.PublicKey.String())))] = models.RemotePeer{
-				Interface:           m.Payload.InterfaceName,
-				PeerKey:             peerI.PublicKey.String(),
-				IsExtClient:         peerConf.IsExtClient,
-				Endpoint:            peerI.Endpoint,
-				IsAttachedExtClient: peerConf.IsAttachedExtClient,
-			}
-		}
 
 		var isRelayed bool
 		var relayedTo *net.UDPAddr
@@ -400,8 +368,8 @@ func (m *ManagerAction) AddInterfaceToProxy() error {
 			relayedTo = peerConf.RelayedTo
 
 		}
-		if !shouldProceed && peerConf.IsAttachedExtClient {
-			log.Println("Extclient endpoint not updated yet....skipping")
+		if peerConf.IsAttachedExtClient {
+			log.Println("Extclient Thread...")
 			go func(wgInterface *wg.WGIface, peer *wgtypes.PeerConfig,
 				isRelayed bool, relayTo *net.UDPAddr, peerConf PeerConf, ingGwAddr string) {
 				addExtClient := false
@@ -454,6 +422,13 @@ func (m *ManagerAction) AddInterfaceToProxy() error {
 			}(wgInterface, &peerI, isRelayed, relayedTo, peerConf, m.Payload.WgAddr)
 			continue
 		}
+		common.PeerKeyHashMap[fmt.Sprintf("%x", md5.Sum([]byte(peerI.PublicKey.String())))] = models.RemotePeer{
+			Interface:           m.Payload.InterfaceName,
+			PeerKey:             peerI.PublicKey.String(),
+			IsExtClient:         peerConf.IsExtClient,
+			Endpoint:            peerI.Endpoint,
+			IsAttachedExtClient: peerConf.IsAttachedExtClient,
+		}
 
 		peerpkg.AddNewPeer(wgInterface, &peerI, peerConf.Address, isRelayed,
 			peerConf.IsExtClient, peerConf.IsAttachedExtClient, relayedTo)