From 20a939b188219e421de2c199af35e471f90f2325 Mon Sep 17 00:00:00 2001 From: afeiszli Date: Wed, 17 Nov 2021 12:33:42 -0500 Subject: [PATCH 1/5] windows netclient fix --- netclient/wireguard/common.go | 3 +-- scripts/netclient-install.ps1 | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/netclient/wireguard/common.go b/netclient/wireguard/common.go index 76895bd3..1b3b6527 100644 --- a/netclient/wireguard/common.go +++ b/netclient/wireguard/common.go @@ -188,10 +188,9 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig } if ncutils.IsWindows() { wgConfPath := ncutils.GetWGPathSpecific() + ifacename + ".conf" - ncutils.PrintLog("error writing wg conf file to "+confPath+": "+err.Error(), 1) err = ioutil.WriteFile(wgConfPath, []byte(newConf), 0644) if err != nil { - ncutils.PrintLog("error writing wg conf file to "+confPath+": "+err.Error(), 1) + ncutils.PrintLog("error writing wg conf file to "+wgConfPath+": "+err.Error(), 1) return err } confPath = wgConfPath diff --git a/scripts/netclient-install.ps1 b/scripts/netclient-install.ps1 index 381d00e9..97f1d82a 100644 --- a/scripts/netclient-install.ps1 +++ b/scripts/netclient-install.ps1 @@ -23,7 +23,8 @@ new-module -name netclient-install -scriptblock { $outpath = "$env:userprofile\Downloads\wireguard-installer.exe" Invoke-WebRequest -Uri $url -OutFile $outpath $args = @("Comma","Separated","Arguments") - Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args + $procWG = Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args + $procWG.WaitForExit() Start-Sleep -Seconds 5 $software = "WireGuard"; $installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null @@ -46,7 +47,8 @@ new-module -name netclient-install -scriptblock { Invoke-WebRequest -Uri $url -OutFile $outpath } $NetArgs = @("join","-t",$token) - Start-Process -Filepath $outpath -ArgumentList $NetArgs + $procNC = Start-Process -Filepath $outpath -ArgumentList $NetArgs + $procNC.WaitForExit() Add-MpPreference -ExclusionPath "C:\ProgramData\Netclient" if ((Get-Command "netclient.exe" -ErrorAction SilentlyContinue) -eq $null) { From ccbd6f90f79f29b67196a62c58a92701615fd42d Mon Sep 17 00:00:00 2001 From: afeiszli Date: Wed, 17 Nov 2021 21:57:27 -0500 Subject: [PATCH 2/5] fixing windows --- database/postgres.go | 1 + netclient/ncutils/netclientutils.go | 36 -------------- netclient/ncutils/netclientutils_darwin.go | 53 ++++++++++++++++---- netclient/ncutils/netclientutils_linux.go | 36 ++++++++++++++ netclient/ncutils/netclientutils_windows.go | 54 +++++++++++++++++++++ netclient/wireguard/common.go | 10 ++++ netclient/wireguard/windows.go | 9 +++- scripts/netclient-install.ps1 | 11 ++++- 8 files changed, 162 insertions(+), 48 deletions(-) diff --git a/database/postgres.go b/database/postgres.go index efe3932d..09ce66d2 100644 --- a/database/postgres.go +++ b/database/postgres.go @@ -4,6 +4,7 @@ import ( "database/sql" "errors" "fmt" + "github.com/gravitl/netmaker/servercfg" _ "github.com/lib/pq" ) diff --git a/netclient/ncutils/netclientutils.go b/netclient/ncutils/netclientutils.go index a3eed971..5e8c1b10 100644 --- a/netclient/ncutils/netclientutils.go +++ b/netclient/ncutils/netclientutils.go @@ -190,42 +190,6 @@ PersistentKeepAlive = %s return peersString, nil } -// CreateUserSpaceConf - creates a user space WireGuard conf -func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { - peersString, err := parsePeers(perskeepalive, peers) - var listenPortString string - var fwmarkString string - if mtu <= 0 { - mtu = 1280 - } - if listenPort != "" { - listenPortString += "ListenPort = " + listenPort - } - if fwmark != 0 { - fwmarkString += "FWMark = " + strconv.Itoa(int(fwmark)) - } - if err != nil { - return "", err - } - config := fmt.Sprintf(`[Interface] -Address = %s -PrivateKey = %s -MTU = %s -%s -%s - -%s - -`, - address+"/32", - privatekey, - strconv.Itoa(int(mtu)), - listenPortString, - fwmarkString, - peersString) - return config, nil -} - // GetLocalIP - gets local ip of machine func GetLocalIP(localrange string) (string, error) { _, localRange, err := net.ParseCIDR(localrange) diff --git a/netclient/ncutils/netclientutils_darwin.go b/netclient/ncutils/netclientutils_darwin.go index 4075c060..cc4e5f31 100644 --- a/netclient/ncutils/netclientutils_darwin.go +++ b/netclient/ncutils/netclientutils_darwin.go @@ -8,14 +8,49 @@ import ( // RunCmd - runs a local command func RunCmd(command string, printerr bool) (string, error) { - args := strings.Fields(command) - 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")) - } - return string(out), err + args := strings.Fields(command) + 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")) + } + return string(out), err } +// CreateUserSpaceConf - creates a user space WireGuard conf +func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { + peersString, err := parsePeers(perskeepalive, peers) + var listenPortString string + var fwmarkString string + if mtu <= 0 { + mtu = 1280 + } + if listenPort != "" { + listenPortString += "ListenPort = " + listenPort + } + if fwmark != 0 { + fwmarkString += "FWMark = " + strconv.Itoa(int(fwmark)) + } + if err != nil { + return "", err + } + config := fmt.Sprintf(`[Interface] +Address = %s +PrivateKey = %s +MTU = %s +%s +%s + +%s + +`, + address+"/32", + privatekey, + strconv.Itoa(int(mtu)), + listenPortString, + fwmarkString, + peersString) + return config, nil +} diff --git a/netclient/ncutils/netclientutils_linux.go b/netclient/ncutils/netclientutils_linux.go index a88c252e..cc4e5f31 100644 --- a/netclient/ncutils/netclientutils_linux.go +++ b/netclient/ncutils/netclientutils_linux.go @@ -18,3 +18,39 @@ func RunCmd(command string, printerr bool) (string, error) { } return string(out), err } + +// CreateUserSpaceConf - creates a user space WireGuard conf +func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { + peersString, err := parsePeers(perskeepalive, peers) + var listenPortString string + var fwmarkString string + if mtu <= 0 { + mtu = 1280 + } + if listenPort != "" { + listenPortString += "ListenPort = " + listenPort + } + if fwmark != 0 { + fwmarkString += "FWMark = " + strconv.Itoa(int(fwmark)) + } + if err != nil { + return "", err + } + config := fmt.Sprintf(`[Interface] +Address = %s +PrivateKey = %s +MTU = %s +%s +%s + +%s + +`, + address+"/32", + privatekey, + strconv.Itoa(int(mtu)), + listenPortString, + fwmarkString, + peersString) + return config, nil +} diff --git a/netclient/ncutils/netclientutils_windows.go b/netclient/ncutils/netclientutils_windows.go index a88c252e..0e237a40 100644 --- a/netclient/ncutils/netclientutils_windows.go +++ b/netclient/ncutils/netclientutils_windows.go @@ -1,9 +1,15 @@ package ncutils import ( + "fmt" "log" + "os" "os/exec" + "strconv" "strings" + "syscall" + + "golang.zx2c4.com/wireguard/wgctrl/wgtypes" ) // RunCmd - runs a local command @@ -11,6 +17,24 @@ func RunCmd(command string, printerr bool) (string, error) { args := strings.Fields(command) cmd := exec.Command(args[0], args[1:]...) cmd.Wait() + //cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: "/C \"" + command + "\""} + out, err := cmd.CombinedOutput() + if err != nil && printerr { + log.Println("error running command:", command) + log.Println(strings.TrimSuffix(string(out), "\n")) + } + return string(out), err +} + +// RunCmd - runs a local command +func RunCmdFormatted(command string, printerr bool) (string, error) { + var comSpec = os.Getenv("COMSPEC") + if comSpec == "" { + comSpec = os.Getenv("SystemRoot") + "\\System32\\cmd.exe" + } + cmd := exec.Command(comSpec) + cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: "/C \"" + command + "\""} + cmd.Wait() out, err := cmd.CombinedOutput() if err != nil && printerr { log.Println("error running command:", command) @@ -18,3 +42,33 @@ func RunCmd(command string, printerr bool) (string, error) { } return string(out), err } + +// CreateUserSpaceConf - creates a user space WireGuard conf +func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { + peersString, err := parsePeers(perskeepalive, peers) + var listenPortString string + if mtu <= 0 { + mtu = 1280 + } + if listenPort != "" { + listenPortString += "ListenPort = " + listenPort + } + if err != nil { + return "", err + } + config := fmt.Sprintf(`[Interface] +Address = %s +PrivateKey = %s +MTU = %s +%s + +%s + +`, + address+"/32", + privatekey, + strconv.Itoa(int(mtu)), + listenPortString, + peersString) + return config, nil +} diff --git a/netclient/wireguard/common.go b/netclient/wireguard/common.go index 1b3b6527..a4fd6c1a 100644 --- a/netclient/wireguard/common.go +++ b/netclient/wireguard/common.go @@ -217,6 +217,16 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig ncutils.PrintLog("failed to create wireguard interface", 1) return err } + if ncutils.IsWindows() { + var output string + starttime := time.Now() + ncutils.PrintLog("waiting for interface...", 1) + for !strings.Contains(output, ifacename) && !(time.Now().After(starttime.Add(time.Minute))) { + output, _ = ncutils.RunCmd("wg", false) + time.Sleep(time.Second >> 1) + err = ApplyConf(confPath) + } + } } } else { ipExec, err := exec.LookPath("ip") diff --git a/netclient/wireguard/windows.go b/netclient/wireguard/windows.go index 38afa2cb..ea245326 100644 --- a/netclient/wireguard/windows.go +++ b/netclient/wireguard/windows.go @@ -1,9 +1,14 @@ package wireguard -import "github.com/gravitl/netmaker/netclient/ncutils" +import ( + "fmt" + + "github.com/gravitl/netmaker/netclient/ncutils" +) func ApplyWindowsConf(confPath string) error { - if _, err := ncutils.RunCmd("wireguard.exe /installtunnelservice "+confPath, false); err != nil { + var commandLine = fmt.Sprintf(`wireguard.exe /installtunnelservice "%s"`, confPath) + if _, err := ncutils.RunCmdFormatted(commandLine, false); err != nil { return err } return nil diff --git a/scripts/netclient-install.ps1 b/scripts/netclient-install.ps1 index 97f1d82a..55aac83f 100644 --- a/scripts/netclient-install.ps1 +++ b/scripts/netclient-install.ps1 @@ -24,6 +24,11 @@ new-module -name netclient-install -scriptblock { Invoke-WebRequest -Uri $url -OutFile $outpath $args = @("Comma","Separated","Arguments") $procWG = Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args + if ($procWG -eq $null) {} + Start-Sleep -Seconds 5 + } else { + $procWG.WaitForExit() + } $procWG.WaitForExit() Start-Sleep -Seconds 5 $software = "WireGuard"; @@ -48,7 +53,11 @@ new-module -name netclient-install -scriptblock { } $NetArgs = @("join","-t",$token) $procNC = Start-Process -Filepath $outpath -ArgumentList $NetArgs - $procNC.WaitForExit() + if ($procNC -eq $null) {} + Start-Sleep -Seconds 5 + } else { + $procNC.WaitForExit() + } Add-MpPreference -ExclusionPath "C:\ProgramData\Netclient" if ((Get-Command "netclient.exe" -ErrorAction SilentlyContinue) -eq $null) { From d4001f6a4d294f16c2a17756eee7b049874f56ce Mon Sep 17 00:00:00 2001 From: afeiszli Date: Wed, 17 Nov 2021 22:06:25 -0500 Subject: [PATCH 3/5] fixing windows --- netclient/netclient.syso | Bin 0 -> 9010 bytes scripts/netclient-install.ps1 | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 netclient/netclient.syso diff --git a/netclient/netclient.syso b/netclient/netclient.syso new file mode 100644 index 0000000000000000000000000000000000000000..d76c53a5be48e9556df261899fc55279d944dd2a GIT binary patch literal 9010 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 QE&JzpFxNt~-}m Date: Wed, 17 Nov 2021 23:45:40 -0500 Subject: [PATCH 4/5] cleaning up powershell --- netclient/ncutils/netclientutils.go | 4 +++- netclient/netclient.syso | Bin 9010 -> 0 bytes netclient/wireguard/common.go | 20 ++++++++++++-------- scripts/netclient-install.ps1 | 26 ++++---------------------- 4 files changed, 19 insertions(+), 31 deletions(-) delete mode 100644 netclient/netclient.syso diff --git a/netclient/ncutils/netclientutils.go b/netclient/ncutils/netclientutils.go index 5e8c1b10..dfa2f166 100644 --- a/netclient/ncutils/netclientutils.go +++ b/netclient/ncutils/netclientutils.go @@ -243,7 +243,9 @@ func GetNetworkIPMask(networkstring string) (string, string, error) { return "", "", err } ipstring := ip.String() - maskstring := ipnet.Mask.String() + mask := ipnet.Mask + maskstring := fmt.Sprintf("%d.%d.%d.%d", mask[0], mask[1], mask[2], mask[3]) + //maskstring := ipnet.Mask.String() return ipstring, maskstring, err } diff --git a/netclient/netclient.syso b/netclient/netclient.syso deleted file mode 100644 index d76c53a5be48e9556df261899fc55279d944dd2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9010 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 QE&JzpFxNt~-}m> 1) err = ApplyConf(confPath) } + if !strings.Contains(output, ifacename) { + return errors.New("could not create wg interface for " + ifacename) + } + ip, mask, err := ncutils.GetNetworkIPMask(nodecfg.NetworkSettings.AddressRange) + if err != nil { + log.Println(err.Error()) + return err + } + _, _ = ncutils.RunCmd("route add "+ip+" mask "+mask+" "+node.Address, true) } } } else { @@ -290,13 +300,7 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig } //extra network route setting required for freebsd and windows - if ncutils.IsWindows() { - ip, mask, err := ncutils.GetNetworkIPMask(nodecfg.NetworkSettings.AddressRange) - if err != nil { - return err - } - _, _ = ncutils.RunCmd("route add "+ip+" mask "+mask+" "+node.Address, true) - } else if ncutils.IsFreeBSD() { + if ncutils.IsFreeBSD() { _, _ = ncutils.RunCmd("route add -net "+nodecfg.NetworkSettings.AddressRange+" -interface "+ifacename, true) } diff --git a/scripts/netclient-install.ps1 b/scripts/netclient-install.ps1 index f1264e54..f5de174a 100644 --- a/scripts/netclient-install.ps1 +++ b/scripts/netclient-install.ps1 @@ -25,14 +25,7 @@ new-module -name netclient-install -scriptblock { $outpath = "$env:userprofile\Downloads\wireguard-installer.exe" Invoke-WebRequest -Uri $url -OutFile $outpath $args = @("Comma","Separated","Arguments") - $procWG = Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args - if ($procWG -eq $null) { - Start-Sleep -Seconds 5 - } else { - $procWG.WaitForExit() - } - $procWG.WaitForExit() - Start-Sleep -Seconds 5 + Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args -Wait $software = "WireGuard"; $installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null If(-Not $installed) { @@ -52,14 +45,11 @@ new-module -name netclient-install -scriptblock { Write-Host "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe"; $url = "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe" Invoke-WebRequest -Uri $url -OutFile $outpath + $loc = Get-Location + Copy-Item -Path "$env:userprofile\Downloads\netclient.exe" -Destination "$loc\netclient.exe" } $NetArgs = @("join","-t",$token) - $procNC = Start-Process -Filepath $outpath -ArgumentList $NetArgs - if ($procNC -eq $null) { - Start-Sleep -Seconds 5 - } else { - $procNC.WaitForExit() - } + Start-Process -Filepath $outpath -ArgumentList $NetArgs -Wait Add-MpPreference -ExclusionPath "C:\ProgramData\Netclient" if ((Get-Command "netclient.exe" -ErrorAction SilentlyContinue) -eq $null) { @@ -71,15 +61,7 @@ new-module -name netclient-install -scriptblock { Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath $env:Path += ";C:\ProgramData\Netclient\bin" } - ''' - Please add netclient.exe to your path to make it permanently executable from powershell: - 1. Open "Edit environment variables for your account" - 2. Double click on "Path" - 3. On a new line, add the following: C:\ProgramData\Netclient\bin - 4. Click "Ok" - ''' } - Write-Host "'netclient' is installed." } } From 2395435d3f3c644b44d182c75b6f2a95d9a52a27 Mon Sep 17 00:00:00 2001 From: afeiszli Date: Thu, 18 Nov 2021 00:01:05 -0500 Subject: [PATCH 5/5] fixing build dependency issues --- netclient/ncutils/netclientutils_darwin.go | 8 ++++ netclient/ncutils/netclientutils_freebsd.go | 43 +++++++++++++++++++++ netclient/ncutils/netclientutils_linux.go | 8 ++++ 3 files changed, 59 insertions(+) diff --git a/netclient/ncutils/netclientutils_darwin.go b/netclient/ncutils/netclientutils_darwin.go index cc4e5f31..72eb10b5 100644 --- a/netclient/ncutils/netclientutils_darwin.go +++ b/netclient/ncutils/netclientutils_darwin.go @@ -1,9 +1,13 @@ package ncutils import ( + "fmt" "log" "os/exec" + "strconv" "strings" + + "golang.zx2c4.com/wireguard/wgctrl/wgtypes" ) // RunCmd - runs a local command @@ -19,6 +23,10 @@ func RunCmd(command string, printerr bool) (string, error) { return string(out), err } +func RunCmdFormatted(command string, printerr bool) (string, error) { + return "", nil +} + // CreateUserSpaceConf - creates a user space WireGuard conf func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { peersString, err := parsePeers(perskeepalive, peers) diff --git a/netclient/ncutils/netclientutils_freebsd.go b/netclient/ncutils/netclientutils_freebsd.go index ebfb7f10..338980e5 100644 --- a/netclient/ncutils/netclientutils_freebsd.go +++ b/netclient/ncutils/netclientutils_freebsd.go @@ -2,13 +2,20 @@ package ncutils import ( "context" + "fmt" + "golang.zx2c4.com/wireguard/wgctrl/wgtypes" "log" "os/exec" + "strconv" "strings" "syscall" "time" ) +func RunCmdFormatted(command string, printerr bool) (string, error) { + return "", nil +} + // Runs Commands for FreeBSD func RunCmd(command string, printerr bool) (string, error) { args := strings.Fields(command) @@ -27,3 +34,39 @@ func RunCmd(command string, printerr bool) (string, error) { } return string(out), err } + +// CreateUserSpaceConf - creates a user space WireGuard conf +func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { + peersString, err := parsePeers(perskeepalive, peers) + var listenPortString string + var fwmarkString string + if mtu <= 0 { + mtu = 1280 + } + if listenPort != "" { + listenPortString += "ListenPort = " + listenPort + } + if fwmark != 0 { + fwmarkString += "FWMark = " + strconv.Itoa(int(fwmark)) + } + if err != nil { + return "", err + } + config := fmt.Sprintf(`[Interface] +Address = %s +PrivateKey = %s +MTU = %s +%s +%s + +%s + +`, + address+"/32", + privatekey, + strconv.Itoa(int(mtu)), + listenPortString, + fwmarkString, + peersString) + return config, nil +} diff --git a/netclient/ncutils/netclientutils_linux.go b/netclient/ncutils/netclientutils_linux.go index cc4e5f31..72eb10b5 100644 --- a/netclient/ncutils/netclientutils_linux.go +++ b/netclient/ncutils/netclientutils_linux.go @@ -1,9 +1,13 @@ package ncutils import ( + "fmt" "log" "os/exec" + "strconv" "strings" + + "golang.zx2c4.com/wireguard/wgctrl/wgtypes" ) // RunCmd - runs a local command @@ -19,6 +23,10 @@ func RunCmd(command string, printerr bool) (string, error) { return string(out), err } +func RunCmdFormatted(command string, printerr bool) (string, error) { + return "", nil +} + // CreateUserSpaceConf - creates a user space WireGuard conf func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) { peersString, err := parsePeers(perskeepalive, peers)