Browse Source

fixing netclient pull to get server addresses

afeiszli 3 years ago
parent
commit
3cc3cd9a0f
2 changed files with 19 additions and 14 deletions
  1. 15 13
      controllers/node_grpc.go
  2. 4 1
      netclient/wireguard/common.go

+ 15 - 13
controllers/node_grpc.go

@@ -67,18 +67,7 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.Object)
 			return nil, errors.New("invalid key, and network does not allow no-key signups")
 			return nil, errors.New("invalid key, and network does not allow no-key signups")
 		}
 		}
 	}
 	}
-
-	var serverNodes = logic.GetServerNodes(node.Network)
-	var serverAddrs = make([]models.ServerAddr, len(serverNodes))
-	for i, server := range serverNodes {
-		serverAddrs[i] = models.ServerAddr{
-			ID:       server.ID,
-			IsLeader: logic.IsLeader(&server),
-			Address:  server.Address,
-		}
-	}
-	// TODO consolidate functionality around files
-	node.NetworkSettings.DefaultServerAddrs = serverAddrs
+	getServerAddrs(&node)
 	key, keyErr := logic.RetrievePublicTrafficKey()
 	key, keyErr := logic.RetrievePublicTrafficKey()
 	if keyErr != nil {
 	if keyErr != nil {
 		logger.Log(0, "error retrieving key: ", keyErr.Error())
 		logger.Log(0, "error retrieving key: ", keyErr.Error())
@@ -147,7 +136,7 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
 		newnode.PostUp = node.PostUp
 		newnode.PostUp = node.PostUp
 	}
 	}
 	var shouldPeersUpdate = logic.ShouldPeersUpdate(&node, &newnode)
 	var shouldPeersUpdate = logic.ShouldPeersUpdate(&node, &newnode)
-
+	getServerAddrs(&node)
 	err = logic.UpdateNode(&node, &newnode)
 	err = logic.UpdateNode(&node, &newnode)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -170,6 +159,19 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
 	}, nil
 	}, nil
 }
 }
 
 
+func getServerAddrs(node *models.Node) {
+	var serverNodes = logic.GetServerNodes(node.Network)
+	var serverAddrs = make([]models.ServerAddr, len(serverNodes))
+	for i, server := range serverNodes {
+		serverAddrs[i] = models.ServerAddr{
+			IsLeader: logic.IsLeader(&server),
+			Address:  server.Address,
+		}
+	}
+	// TODO consolidate functionality around files
+	node.NetworkSettings.DefaultServerAddrs = serverAddrs
+}
+
 // NodeServiceServer.DeleteNode - deletes a node and responds over gRPC
 // NodeServiceServer.DeleteNode - deletes a node and responds over gRPC
 func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
 func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
 
 

+ 4 - 1
netclient/wireguard/common.go

@@ -143,7 +143,7 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
 	if node.Address == "" {
 	if node.Address == "" {
 		log.Fatal("no address to configure")
 		log.Fatal("no address to configure")
 	}
 	}
-	if node.UDPHolePunch != "yes" {
+	if node.UDPHolePunch == "yes" {
 		node.ListenPort = 0
 		node.ListenPort = 0
 	}
 	}
 	if err := WriteWgConfig(&modcfg.Node, key.String(), peers); err != nil {
 	if err := WriteWgConfig(&modcfg.Node, key.String(), peers); err != nil {
@@ -395,6 +395,9 @@ func UpdateWgInterface(file, privateKey, nameserver string, node models.Node) er
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
+	if node.UDPHolePunch == "yes" {
+		node.ListenPort = 0
+	}
 	wireguard.Section(section_interface).Key("PrivateKey").SetValue(privateKey)
 	wireguard.Section(section_interface).Key("PrivateKey").SetValue(privateKey)
 	wireguard.Section(section_interface).Key("ListenPort").SetValue(strconv.Itoa(int(node.ListenPort)))
 	wireguard.Section(section_interface).Key("ListenPort").SetValue(strconv.Itoa(int(node.ListenPort)))
 	if node.Address != "" {
 	if node.Address != "" {