mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-28 19:11:57 +08:00
added netmaker check on checkin
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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), ¤tDataMap)
|
err = json.Unmarshal([]byte(record), ¤tDataMap)
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user