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

This commit is contained in:
Abhishek Kondur 2022-11-27 22:22:54 +05:30
parent bc45797542
commit 972ded5a2d
4 changed files with 18 additions and 42 deletions

View file

@ -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)

View file

@ -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"

View file

@ -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)

View file

@ -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)