added netmaker check on checkin

This commit is contained in:
afeiszli
2021-08-02 12:14:35 -04:00
parent 2a42bb23a3
commit 2bf5a69845
2 changed files with 31 additions and 12 deletions

View File

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

View File

@@ -16,14 +16,19 @@ func SetPeers(newPeers map[string]string, networkName string) bool {
} }
return !areEqual return !areEqual
} }
func GetPeers(networkName string) (map[string]string, error) {
func PeersAreEqual(toCompare map[string]string, networkName string) bool {
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
} }