mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-21 15:56:07 +08:00
Merge pull request #1079 from gravitl/bugfix_v0.14.0_untrapped_err
added length checks as temp solution
This commit is contained in:
commit
eade829f19
|
@ -202,6 +202,9 @@ func StringSliceContains(slice []string, item string) bool {
|
|||
// sets the network server peers of a given node
|
||||
func setNetworkServerPeers(serverNode *models.Node) {
|
||||
if currentPeersList, err := getSystemPeers(serverNode); err == nil {
|
||||
if currentPeersList == nil {
|
||||
currentPeersList = make(map[string]string)
|
||||
}
|
||||
if database.SetPeers(currentPeersList, serverNode.Network) {
|
||||
logger.Log(1, "set new peers on network", serverNode.Network)
|
||||
}
|
||||
|
|
|
@ -114,9 +114,11 @@ func getSystemPeers(node *models.Node) (map[string]string, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, peer := range device.Peers {
|
||||
if IsBase64(peer.PublicKey.String()) && peer.Endpoint != nil && CheckEndpoint(peer.Endpoint.String()) {
|
||||
peers[peer.PublicKey.String()] = peer.Endpoint.String()
|
||||
if device.Peers != nil && len(device.Peers) > 0 {
|
||||
for _, peer := range device.Peers {
|
||||
if IsBase64(peer.PublicKey.String()) && peer.Endpoint != nil && CheckEndpoint(peer.Endpoint.String()) {
|
||||
peers[peer.PublicKey.String()] = peer.Endpoint.String()
|
||||
}
|
||||
}
|
||||
}
|
||||
return peers, nil
|
||||
|
|
|
@ -58,7 +58,9 @@ func SetPeers(iface string, node *models.Node, peers []wgtypes.PeerConfig) error
|
|||
iparr = append(iparr, ipaddr.String())
|
||||
}
|
||||
}
|
||||
allowedips = strings.Join(iparr, ",")
|
||||
if iparr != nil && len(iparr) > 0 {
|
||||
allowedips = strings.Join(iparr, ",")
|
||||
}
|
||||
keepAliveString := strconv.Itoa(int(keepalive))
|
||||
if keepAliveString == "0" {
|
||||
keepAliveString = "15"
|
||||
|
@ -78,30 +80,36 @@ func SetPeers(iface string, node *models.Node, peers []wgtypes.PeerConfig) error
|
|||
}
|
||||
}
|
||||
|
||||
for _, currentPeer := range devicePeers {
|
||||
shouldDelete := true
|
||||
for _, peer := range peers {
|
||||
if peer.AllowedIPs[0].String() == currentPeer.AllowedIPs[0].String() {
|
||||
shouldDelete = false
|
||||
}
|
||||
// re-check this if logic is not working, added in case of allowedips not working
|
||||
if peer.PublicKey.String() == currentPeer.PublicKey.String() {
|
||||
shouldDelete = false
|
||||
if devicePeers != nil && len(devicePeers) > 0 {
|
||||
for _, currentPeer := range devicePeers {
|
||||
shouldDelete := true
|
||||
if peers != nil && len(peers) > 0 {
|
||||
for _, peer := range peers {
|
||||
if peer.AllowedIPs[0].String() == currentPeer.AllowedIPs[0].String() {
|
||||
shouldDelete = false
|
||||
}
|
||||
// re-check this if logic is not working, added in case of allowedips not working
|
||||
if peer.PublicKey.String() == currentPeer.PublicKey.String() {
|
||||
shouldDelete = false
|
||||
}
|
||||
}
|
||||
if shouldDelete {
|
||||
output, err := ncutils.RunCmd("wg set "+iface+" peer "+currentPeer.PublicKey.String()+" remove", true)
|
||||
if err != nil {
|
||||
log.Println(output, "error removing peer", currentPeer.PublicKey.String())
|
||||
}
|
||||
}
|
||||
oldPeerAllowedIps[currentPeer.PublicKey.String()] = currentPeer.AllowedIPs
|
||||
}
|
||||
}
|
||||
if shouldDelete {
|
||||
output, err := ncutils.RunCmd("wg set "+iface+" peer "+currentPeer.PublicKey.String()+" remove", true)
|
||||
if err != nil {
|
||||
log.Println(output, "error removing peer", currentPeer.PublicKey.String())
|
||||
}
|
||||
}
|
||||
oldPeerAllowedIps[currentPeer.PublicKey.String()] = currentPeer.AllowedIPs
|
||||
}
|
||||
if ncutils.IsMac() {
|
||||
err = SetMacPeerRoutes(iface)
|
||||
return err
|
||||
} else if ncutils.IsLinux() {
|
||||
local.SetPeerRoutes(iface, oldPeerAllowedIps, peers)
|
||||
if peers != nil && len(peers) > 0 {
|
||||
local.SetPeerRoutes(iface, oldPeerAllowedIps, peers)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Reference in a new issue