Fix issue with netclient failing when interface doesnt exist, issue #221

This commit is contained in:
Emika 2021-08-11 17:20:25 -06:00
parent 80dd97455e
commit fa5de4e777
2 changed files with 14 additions and 6 deletions

View file

@ -6,6 +6,7 @@ import (
"errors"
"log"
"strings"
"os"
nodepb "github.com/gravitl/netmaker/grpc"
"github.com/gravitl/netmaker/models"
@ -226,7 +227,12 @@ func Pull(network string, manual bool) (*models.Node, error) {
}
} else {
if err = wireguard.SetWGConfig(network, true); err != nil {
return nil, err
if errors.Is(err, os.ErrNotExist) {
log.Println("readding interface")
return Pull(network, true)
} else {
return nil, err
}
}
}
setDNS(&resNode, servercfg, &cfg.Node)

View file

@ -234,7 +234,7 @@ func SetWGConfig(network string, peerupdate bool) error {
return err
}
if peerupdate {
SetPeers(nodecfg.Interface, nodecfg.PersistentKeepalive, peers)
err = SetPeers(nodecfg.Interface, nodecfg.PersistentKeepalive, peers)
} else {
err = InitWireguard(&nodecfg, privkey, peers, hasGateway, gateways)
}
@ -245,22 +245,22 @@ func SetWGConfig(network string, peerupdate bool) error {
return err
}
func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
client, err := wgctrl.New()
if err != nil {
log.Println("failed to start wgctrl")
return
return err
}
device, err := client.Device(iface)
if err != nil {
log.Println("failed to parse interface")
return
return err
}
devicePeers := device.Peers
if len(devicePeers) > 1 && len(peers) == 0 {
log.Println("no peers pulled")
return
return err
}
for _, peer := range peers {
@ -316,6 +316,8 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
}
}
}
return nil
}
func StorePrivKey(key string, network string) error {