Browse Source

added netmaker check on checkin

afeiszli 4 years ago
parent
commit
2bf5a69845
2 changed files with 31 additions and 12 deletions
  1. 23 9
      controllers/common.go
  2. 8 3
      database/statics.go

+ 23 - 9
controllers/common.go

@@ -23,8 +23,9 @@ func GetPeersList(networkName string) ([]models.PeersResponse, error) {
 	if err != nil {
 	if err != nil {
 		log.Println(err)
 		log.Println(err)
 	}
 	}
-	udppeers, errN := serverctl.GetPeers(networkName)
+	udppeers, errN := database.GetPeers(networkName)
 	if errN != nil {
 	if errN != nil {
+		log.Println("failed to collect udp peers")
 		log.Println(errN)
 		log.Println(errN)
 	}
 	}
 	for _, value := range collection {
 	for _, value := range collection {
@@ -47,9 +48,11 @@ func GetPeersList(networkName string) ([]models.PeersResponse, error) {
 			if node.UDPHolePunch == "yes" && errN == nil {
 			if node.UDPHolePunch == "yes" && errN == nil {
 				endpointstring := udppeers[peer.PublicKey]
 				endpointstring := udppeers[peer.PublicKey]
 				endpointarr := strings.Split(endpointstring, ":")
 				endpointarr := strings.Split(endpointstring, ":")
+				log.Println("got values:",endpointstring,endpointarr)
 				if len(endpointarr) == 2 {
 				if len(endpointarr) == 2 {
 					port, err := strconv.Atoi(endpointarr[1])
 					port, err := strconv.Atoi(endpointarr[1])
 					if err == nil {
 					if err == nil {
+						log.Println("overriding:",endpointarr[0],int32(port))
 						peer.Endpoint = endpointarr[0]
 						peer.Endpoint = endpointarr[0]
 						peer.ListenPort = int32(port)
 						peer.ListenPort = int32(port)
 					}
 					}
@@ -233,6 +236,25 @@ func NodeCheckIn(node models.Node, networkName string) (models.CheckInResponse,
 		err = fmt.Errorf("%w; Couldnt Get Node "+node.MacAddress, err)
 		err = fmt.Errorf("%w; Couldnt Get Node "+node.MacAddress, err)
 		return response, err
 		return response, err
 	}
 	}
+
+	if parentnode.Name == "netmaker" {
+		if NotifyNetworkCheck(networkName) {
+			err := SetNetworkNodesLastModified(networkName)
+			if err != nil {
+				log.Println(err, "could not notify network to update peers")
+			}
+		}
+		return models.CheckInResponse{
+			Success:true,
+			NeedPeerUpdate:false,
+			NeedKeyUpdate: false,
+			NeedConfigUpdate:false,
+			NeedDelete:false,
+			NodeMessage:"",
+			IsPending:false,
+		}, nil
+	}
+
 	if parentnode.IsPending == "yes" {
 	if parentnode.IsPending == "yes" {
 		err = fmt.Errorf("%w; Node checking in is still pending: "+node.MacAddress, err)
 		err = fmt.Errorf("%w; Node checking in is still pending: "+node.MacAddress, err)
 		response.IsPending = true
 		response.IsPending = true
@@ -260,14 +282,6 @@ func NodeCheckIn(node models.Node, networkName string) (models.CheckInResponse,
 	if nkeyupdate < gkeyupdate {
 	if nkeyupdate < gkeyupdate {
 		response.NeedKeyUpdate = true
 		response.NeedKeyUpdate = true
 	}
 	}
-	if parentnode.Name == "netmaker" {
-		if NotifyNetworkCheck(networkName) {
-			err := SetNetworkNodesLastModified(networkName)
-			if err != nil {
-				log.Println(err, "could not notify network to update peers")
-			}
-		}
-	}
 
 
 	if time.Now().Unix() > parentnode.ExpirationDateTime {
 	if time.Now().Unix() > parentnode.ExpirationDateTime {
 		response.NeedDelete = true
 		response.NeedDelete = true

+ 8 - 3
database/statics.go

@@ -16,14 +16,19 @@ func SetPeers(newPeers map[string]string, networkName string) bool {
 	}
 	}
 	return !areEqual
 	return !areEqual
 }
 }
-
-func PeersAreEqual(toCompare map[string]string, networkName string) bool {
+func GetPeers(networkName string) (map[string]string, error) {
 	record, err := FetchRecord(PEERS_TABLE_NAME, networkName)
 	record, err := FetchRecord(PEERS_TABLE_NAME, networkName)
 	if err != nil {
 	if err != nil {
-		return false
+		return nil, err
 	}
 	}
 	currentDataMap := make(map[string]string)
 	currentDataMap := make(map[string]string)
 	err = json.Unmarshal([]byte(record), &currentDataMap)
 	err = json.Unmarshal([]byte(record), &currentDataMap)
+	return currentDataMap, err
+}
+
+
+func PeersAreEqual(toCompare map[string]string, networkName string) bool {
+	currentDataMap, err := GetPeers(networkName)
 	if err != nil {
 	if err != nil {
 		return false
 		return false
 	}
 	}