diff --git a/go.mod b/go.mod index c3debf8c..0d891c99 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect golang.zx2c4.com/wireguard v0.0.0-20210805125648-3957e9b9dd19 // indirect - golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210803171230-4253848d036c + golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210913210325-91d1988e44de golang.zx2c4.com/wireguard/windows v0.4.5 // indirect google.golang.org/genproto v0.0.0-20210201151548-94839c025ad4 // indirect google.golang.org/grpc v1.35.0 diff --git a/go.sum b/go.sum index 9b4b2e54..87d82bb7 100644 --- a/go.sum +++ b/go.sum @@ -340,6 +340,8 @@ golang.zx2c4.com/wireguard/wgctrl v0.0.0-20200609130330-bd2cb7843e1b h1:l4mBVCYi golang.zx2c4.com/wireguard/wgctrl v0.0.0-20200609130330-bd2cb7843e1b/go.mod h1:UdS9frhv65KTfwxME1xE8+rHYoFpbm36gOud1GhBe9c= golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210803171230-4253848d036c h1:ADNrRDI5NR23/TUCnEmlLZLt4u9DnZ2nwRkPrAcFvto= golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210803171230-4253848d036c/go.mod h1:+1XihzyZUBJcSc5WO9SwNA7v26puQwOEDwanaxfNXPQ= +golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210913210325-91d1988e44de h1:M9Jc92kgqmVmidpnOeegP2VgO2DfHEcsUWtWMmBwNFQ= +golang.zx2c4.com/wireguard/wgctrl v0.0.0-20210913210325-91d1988e44de/go.mod h1:+1XihzyZUBJcSc5WO9SwNA7v26puQwOEDwanaxfNXPQ= golang.zx2c4.com/wireguard/windows v0.4.5 h1:btpw+5IM8UrSl5SILCODt1bXTM2qYpcaYArM6wDlwHA= golang.zx2c4.com/wireguard/windows v0.4.5/go.mod h1:LdS2bRTWu//RpztraGz5ZkPZul60cCbmgtLTPSKrS50= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= diff --git a/netclient/command/commands.go b/netclient/command/commands.go index 8c4631c8..626ff288 100644 --- a/netclient/command/commands.go +++ b/netclient/command/commands.go @@ -64,7 +64,7 @@ func RunUserspaceDaemon() { if err := CheckIn(cfg); err != nil { // pass } - time.Sleep(30 * time.Second) + time.Sleep(15 * time.Second) } } diff --git a/netclient/functions/common.go b/netclient/functions/common.go index 0098dd31..c1b4e676 100644 --- a/netclient/functions/common.go +++ b/netclient/functions/common.go @@ -131,15 +131,10 @@ func LeaveNetwork(network string) error { } else { wcclient = nodepb.NewNodeServiceClient(conn) - ctx := context.Background() - ctx, err = auth.SetJWT(wcclient, network) + ctx, err := auth.SetJWT(wcclient, network) if err != nil { log.Printf("Failed to authenticate: %v", err) } else { - if !ncutils.IsKernel() { - //wireguard.RemoveConf(node.Interface, true) - //ncutils.PrintLog("removed network tunnel "+node.Interface, 1) - } node.SetID() var header metadata.MD _, err = wcclient.DeleteNode( diff --git a/netclient/ncutils/netclientutils.go b/netclient/ncutils/netclientutils.go index ff779f07..a6eb76d4 100644 --- a/netclient/ncutils/netclientutils.go +++ b/netclient/ncutils/netclientutils.go @@ -323,7 +323,9 @@ func Copy(src, dst string) (int64, error) { func RunCmd(command string, printerr bool) (string, error) { args := strings.Fields(command) - out, err := exec.Command(args[0], args[1:]...).CombinedOutput() + cmd := exec.Command(args[0], args[1:]...) + cmd.Wait() + out, err := cmd.CombinedOutput() if err != nil && printerr { log.Println("error running command:", command) log.Println(strings.TrimSuffix(string(out), "\n")) diff --git a/netclient/wireguard/common.go b/netclient/wireguard/common.go index be42ca93..4e4ad0f7 100644 --- a/netclient/wireguard/common.go +++ b/netclient/wireguard/common.go @@ -9,6 +9,7 @@ import ( "runtime" "strconv" "strings" + "time" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/netclient/config" @@ -27,6 +28,7 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error { ncutils.PrintLog("failed to start wgctrl", 0) return err } + device, err := client.Device(iface) if err != nil { ncutils.PrintLog("failed to parse interface", 0) @@ -174,7 +176,12 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig return err } // spin up userspace / windows interface + apply the conf file - _ = RemoveConf(ifacename, false) // remove interface first + d, _ := wgclient.Device(ifacename) + for d != nil && d.Name == ifacename { + _ = RemoveConf(ifacename, false) // remove interface first + time.Sleep(time.Second >> 2) + d, _ = wgclient.Device(ifacename) + } err = ApplyConf(confPath) if err != nil { ncutils.PrintLog("failed to create wireguard interface", 1) diff --git a/netclient/wireguard/windows.go b/netclient/wireguard/windows.go index 7f00048f..38afa2cb 100644 --- a/netclient/wireguard/windows.go +++ b/netclient/wireguard/windows.go @@ -3,7 +3,7 @@ package wireguard import "github.com/gravitl/netmaker/netclient/ncutils" func ApplyWindowsConf(confPath string) error { - if _, err := ncutils.RunCmd("wireguard.exe /installtunnelservice "+confPath, true); err != nil { + if _, err := ncutils.RunCmd("wireguard.exe /installtunnelservice "+confPath, false); err != nil { return err } return nil