Browse Source

embedded file to windows, cleaned up logs

0xdcarns 3 years ago
parent
commit
a856cbc638

+ 18 - 1
go.mod

@@ -1,6 +1,6 @@
 module github.com/gravitl/netmaker
 
-go 1.15
+go 1.17
 
 require (
 	github.com/davecgh/go-spew v1.1.1 // indirect
@@ -28,3 +28,20 @@ require (
 	google.golang.org/protobuf v1.27.1
 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
 )
+
+require (
+	cloud.google.com/go v0.34.0 // indirect
+	github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d // indirect
+	github.com/felixge/httpsnoop v1.0.1 // indirect
+	github.com/go-playground/locales v0.14.0 // indirect
+	github.com/go-playground/universal-translator v0.18.0 // indirect
+	github.com/google/go-cmp v0.5.5 // indirect
+	github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 // indirect
+	github.com/leodido/go-urn v1.2.1 // indirect
+	github.com/mdlayher/genetlink v1.0.0 // indirect
+	github.com/mdlayher/netlink v1.4.0 // indirect
+	github.com/pmezard/go-difflib v1.0.0 // indirect
+	github.com/russross/blackfriday/v2 v2.0.1 // indirect
+	github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
+	google.golang.org/appengine v1.4.0 // indirect
+)

+ 51 - 58
netclient/daemon/windows.go

@@ -2,10 +2,8 @@ package daemon
 
 import (
 	"fmt"
-	"io"
 	"io/ioutil"
 	"log"
-	"net/http"
 	"os"
 	"strings"
 
@@ -23,13 +21,7 @@ func SetupWindowsDaemon() error {
 
 	if !ncutils.FileExists(ncutils.GetNetclientPathSpecific() + "winsw.exe") {
 		ncutils.Log("performing first time daemon setup")
-		if !ncutils.FileExists(".\\winsw.exe") {
-			err := downloadWinsw()
-			if err != nil {
-				return err
-			}
-		}
-		err := copyWinswOver()
+		err := ncutils.GetEmbedded()
 		if err != nil {
 			return err
 		}
@@ -90,56 +82,57 @@ func RemoveWindowsDaemon() {
 	ncutils.Log("uninstalled Windows, Netclient daemon")
 }
 
-func copyWinswOver() error {
+// func copyWinswOver() error {
 
-	input, err := ioutil.ReadFile(".\\winsw.exe")
-	if err != nil {
-		ncutils.Log("failed to find winsw.exe")
-		return err
-	}
-	if err = ioutil.WriteFile(ncutils.GetNetclientPathSpecific()+"winsw.exe", input, 0644); err != nil {
-		ncutils.Log("failed to copy winsw.exe to " + ncutils.GetNetclientPath())
-		return err
-	}
-	if err = os.Remove(".\\winsw.exe"); err != nil {
-		ncutils.Log("failed to cleanup local winsw.exe, feel free to delete it")
-		return err
-	}
-	ncutils.Log("finished copying winsw.exe")
-	return nil
-}
+// 	input, err := ioutil.ReadFile(".\\winsw.exe")
+// 	if err != nil {
+// 		ncutils.Log("failed to find winsw.exe")
+// 		return err
+// 	}
+// 	if err = ioutil.WriteFile(ncutils.GetNetclientPathSpecific()+"winsw.exe", input, 0644); err != nil {
+// 		ncutils.Log("failed to copy winsw.exe to " + ncutils.GetNetclientPath())
+// 		return err
+// 	}
+// 	if err = os.Remove(".\\winsw.exe"); err != nil {
+// 		ncutils.Log("failed to cleanup local winsw.exe, feel free to delete it")
+// 		return err
+// 	}
+// 	ncutils.Log("finished copying winsw.exe")
+// 	return nil
+// }
 
-func downloadWinsw() error {
-	fullURLFile := "https://github.com/winsw/winsw/releases/download/v2.11.0/WinSW-x64.exe"
-	fileName := "winsw.exe"
+// func downloadWinsw() error {
+// 	fullURLFile := "https://github.com/winsw/winsw/releases/download/v2.11.0/WinSW-x64.exe"
+// 	fileName := "winsw.exe"
 
-	// Create the file
-	file, err := os.Create(fileName)
-	if err != nil {
-		ncutils.Log("could not create file on OS for Winsw")
-		return err
-	}
-	client := http.Client{
-		CheckRedirect: func(r *http.Request, via []*http.Request) error {
-			r.URL.Opaque = r.URL.Path
-			return nil
-		},
-	}
-	// Put content on file
-	ncutils.Log("downloading service tool...")
-	resp, err := client.Get(fullURLFile)
-	if err != nil {
-		ncutils.Log("could not GET Winsw")
-		return err
-	}
-	defer resp.Body.Close()
+// 	// Create the file
+// 	file, err := os.Create(fileName)
+// 	if err != nil {
+// 		ncutils.Log("could not create file on OS for Winsw")
+// 		return err
+// 	}
+// 	defer file.Close()
 
-	_, err = io.Copy(file, resp.Body)
-	if err != nil {
-		ncutils.Log("could not mount winsw.exe")
-		return err
-	}
-	defer file.Close()
-	ncutils.Log("finished downloading Winsw")
-	return nil
-}
+// 	client := http.Client{
+// 		CheckRedirect: func(r *http.Request, via []*http.Request) error {
+// 			r.URL.Opaque = r.URL.Path
+// 			return nil
+// 		},
+// 	}
+// 	// Put content on file
+// 	ncutils.Log("downloading service tool...")
+// 	resp, err := client.Get(fullURLFile)
+// 	if err != nil {
+// 		ncutils.Log("could not GET Winsw")
+// 		return err
+// 	}
+// 	defer resp.Body.Close()
+
+// 	_, err = io.Copy(file, resp.Body)
+// 	if err != nil {
+// 		ncutils.Log("could not mount winsw.exe")
+// 		return err
+// 	}
+// 	ncutils.Log("finished downloading Winsw")
+// 	return nil
+// }

+ 1 - 1
netclient/ncutils/netclientutils.go

@@ -110,7 +110,7 @@ func GenPass() string {
 		rand.NewSource(time.Now().UnixNano()))
 
 	length := 16
-	charset := "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+	charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 
 	b := make([]byte, length)
 	for i := range b {

+ 6 - 0
netclient/ncutils/netclientutils_darwin.go

@@ -23,10 +23,16 @@ func RunCmd(command string, printerr bool) (string, error) {
 	return string(out), err
 }
 
+// RunCmdFormatted - run a command formatted for MacOS
 func RunCmdFormatted(command string, printerr bool) (string, error) {
 	return "", nil
 }
 
+// GetEmbedded - if files required for MacOS, put here
+func GetEmbedded() error {
+	return nil
+}
+
 // CreateUserSpaceConf - creates a user space WireGuard conf
 func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) {
 	peersString, err := parsePeers(perskeepalive, peers)

+ 6 - 0
netclient/ncutils/netclientutils_freebsd.go

@@ -12,10 +12,16 @@ import (
 	"time"
 )
 
+// RunCmdFormatted - run a command formatted for freebsd
 func RunCmdFormatted(command string, printerr bool) (string, error) {
 	return "", nil
 }
 
+// GetEmbedded - if files required for freebsd, put here
+func GetEmbedded() error {
+	return nil
+}
+
 // Runs Commands for FreeBSD
 func RunCmd(command string, printerr bool) (string, error) {
 	args := strings.Fields(command)

+ 6 - 0
netclient/ncutils/netclientutils_linux.go

@@ -23,10 +23,16 @@ func RunCmd(command string, printerr bool) (string, error) {
 	return string(out), err
 }
 
+// RunCmdFormatted - does nothing for linux
 func RunCmdFormatted(command string, printerr bool) (string, error) {
 	return "", nil
 }
 
+// GetEmbedded - if files required for linux, put here
+func GetEmbedded() error {
+	return nil
+}
+
 // CreateUserSpaceConf - creates a user space WireGuard conf
 func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) {
 	peersString, err := parsePeers(perskeepalive, peers)

+ 19 - 0
netclient/ncutils/netclientutils_windows.go

@@ -1,6 +1,7 @@
 package ncutils
 
 import (
+	"embed"
 	"fmt"
 	"log"
 	"os"
@@ -12,6 +13,9 @@ import (
 	"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
 )
 
+//go:embed windowsdaemon/winsw.exe
+var winswContent embed.FS
+
 // RunCmd - runs a local command
 func RunCmd(command string, printerr bool) (string, error) {
 	args := strings.Fields(command)
@@ -72,3 +76,18 @@ MTU = %s
 		peersString)
 	return config, nil
 }
+
+// GetEmbedded - Gets the Windows daemon creator
+func GetEmbedded() error {
+	data, err := winswContent.ReadFile("windowsdaemon/winsw.exe")
+	if err != nil {
+		return err
+	}
+	fileName := fmt.Sprintf("%swinsw.exe", GetNetclientPathSpecific())
+	err = os.WriteFile(fileName, data, 0700)
+	if err != nil {
+		Log("could not mount winsw.exe")
+		return err
+	}
+	return nil
+}

BIN
netclient/netclient.syso