Browse Source

proxy only required connections

Abhishek Kondur 2 years ago
parent
commit
60ddad3189
5 changed files with 29 additions and 27 deletions
  1. 1 1
      controllers/ext_client.go
  2. 6 7
      controllers/relay.go
  3. 5 4
      logic/peers.go
  4. 9 8
      models/proxy.go
  5. 8 7
      mq/publishers.go

+ 1 - 1
controllers/ext_client.go

@@ -215,7 +215,7 @@ func getExtClientConf(w http.ResponseWriter, r *http.Request) {
 	if network.DefaultKeepalive != 0 {
 		keepalive = "PersistentKeepalive = " + strconv.Itoa(int(network.DefaultKeepalive))
 	}
-	gwendpoint := host.EndpointIP.String() + ":" + strconv.Itoa(logic.GetPeerListenPort(host))
+	gwendpoint := host.EndpointIP.String() + ":" + strconv.Itoa(host.ListenPort)
 	newAllowedIPs := network.AddressRange
 	if newAllowedIPs != "" && network.AddressRange6 != "" {
 		newAllowedIPs += ","

+ 6 - 7
controllers/relay.go

@@ -115,7 +115,7 @@ func createHostRelay(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	relay.HostID = params["hostid"]
-	relayHost, _, err := logic.CreateHostRelay(relay)
+	relayHost, relayedHosts, err := logic.CreateHostRelay(relay)
 	if err != nil {
 		logger.Log(0, r.Header.Get("user"),
 			fmt.Sprintf("failed to create relay on host [%s]: %v", relay.HostID, err))
@@ -131,15 +131,14 @@ func createHostRelay(w http.ResponseWriter, r *http.Request) {
 	}
 	logger.Log(1, r.Header.Get("user"), "created relay on host", relay.HostID)
 	go func(relayHostID string) {
-		relatedhosts := logic.GetRelatedHosts(relayHostID)
-		for _, relatedHost := range relatedhosts {
-			relatedHost.ProxyEnabled = true
-			logic.UpsertHost(&relatedHost)
+		for _, relayedHost := range relayedHosts {
+			relayedHost.ProxyEnabled = true
+			logic.UpsertHost(&relayedHost)
 			if err := mq.HostUpdate(&models.HostUpdate{
 				Action: models.UpdateHost,
-				Host:   relatedHost,
+				Host:   relayedHost,
 			}); err != nil {
-				logger.Log(0, "failed to send host update: ", relatedHost.ID.String(), err.Error())
+				logger.Log(0, "failed to send host update: ", relayedHost.ID.String(), err.Error())
 			}
 		}
 		if err := mq.PublishPeerUpdate(); err != nil {

+ 5 - 4
logic/peers.go

@@ -94,9 +94,10 @@ func GetProxyUpdateForHost(ctx context.Context, host *models.Host) (models.Proxy
 			var found bool
 			if currPeerConf, found = peerConfMap[peerHost.PublicKey.String()]; !found {
 				currPeerConf = models.PeerConf{
-					Proxy:            peerHost.ProxyEnabled,
-					PublicListenPort: int32(GetPeerListenPort(peerHost)),
-					ProxyListenPort:  GetProxyListenPort(peerHost),
+					Proxy:                 peerHost.ProxyEnabled,
+					PublicListenPort:      int32(GetPeerListenPort(peerHost)),
+					ProxyListenPort:       GetProxyListenPort(peerHost),
+					ProxyPublicListenPort: peerHost.PublicListenPort,
 				}
 			}
 
@@ -219,7 +220,7 @@ func GetPeerUpdateForHost(ctx context.Context, network string, host *models.Host
 				}
 				peerConfig.Endpoint = &net.UDPAddr{
 					IP:   peerHost.EndpointIP,
-					Port: GetPeerListenPort(peerHost),
+					Port: peerHost.ListenPort,
 				}
 
 				if uselocal {

+ 9 - 8
models/proxy.go

@@ -35,14 +35,15 @@ type RelayedConf struct {
 
 // PeerConf - struct for peer config in the network
 type PeerConf struct {
-	Proxy            bool         `json:"proxy"`
-	PublicListenPort int32        `json:"public_listen_port"`
-	ProxyListenPort  int          `json:"proxy_listen_port"`
-	IsExtClient      bool         `json:"is_ext_client"`
-	Address          net.IP       `json:"address"`
-	ExtInternalIp    net.IP       `json:"ext_internal_ip"`
-	IsRelayed        bool         `json:"is_relayed"`
-	RelayedTo        *net.UDPAddr `json:"relayed_to"`
+	Proxy                 bool         `json:"proxy"`
+	PublicListenPort      int32        `json:"public_listen_port"`
+	ProxyListenPort       int          `json:"proxy_listen_port"`
+	ProxyPublicListenPort int          `json:"proxy_public_listen_port"`
+	IsExtClient           bool         `json:"is_ext_client"`
+	Address               net.IP       `json:"address"`
+	ExtInternalIp         net.IP       `json:"ext_internal_ip"`
+	IsRelayed             bool         `json:"is_relayed"`
+	RelayedTo             *net.UDPAddr `json:"relayed_to"`
 }
 
 // ProxyManagerPayload - struct for proxy manager payload

+ 8 - 7
mq/publishers.go

@@ -88,14 +88,15 @@ func PublishSingleHostPeerUpdate(ctx context.Context, host *models.Host, deleted
 	if len(peerUpdate.Peers) == 0 { // no peers to send
 		return nil
 	}
-	if host.ProxyEnabled {
-		proxyUpdate, err := logic.GetProxyUpdateForHost(ctx, host)
-		if err != nil {
-			return err
-		}
-		proxyUpdate.Action = models.ProxyUpdate
-		peerUpdate.ProxyUpdate = proxyUpdate
+	//if host.ProxyEnabled {
+	proxyUpdate, err := logic.GetProxyUpdateForHost(ctx, host)
+	if err != nil {
+		return err
 	}
+	proxyUpdate.Server = servercfg.GetServer()
+	proxyUpdate.Action = models.ProxyUpdate
+	peerUpdate.ProxyUpdate = proxyUpdate
+	//}
 
 	data, err := json.Marshal(&peerUpdate)
 	if err != nil {