diff --git a/controllers/ext_client.go b/controllers/ext_client.go index 3ac9a05f..83bfe108 100644 --- a/controllers/ext_client.go +++ b/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) diff --git a/logic/gateway.go b/logic/gateway.go index 989e69a6..a84d1867 100644 --- a/logic/gateway.go +++ b/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" diff --git a/mq/publishers.go b/mq/publishers.go index b04e9100..4acc43e5 100644 --- a/mq/publishers.go +++ b/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) diff --git a/nm-proxy/manager/manager.go b/nm-proxy/manager/manager.go index b42c2a6f..7c35ee38 100644 --- a/nm-proxy/manager/manager.go +++ b/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)