diff --git a/.github/workflows/golang-test.yml b/.github/workflows/golang-test.yml index df5b30b3c..0e1ee94f8 100644 --- a/.github/workflows/golang-test.yml +++ b/.github/workflows/golang-test.yml @@ -18,7 +18,7 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - name: Test - run: go test ./... + run: GOBIN=$(which go) && sudo --preserve-env=GOROOT $GOBIN test ./... test_build: strategy: diff --git a/README.md b/README.md index b4f63b885..24e54dd97 100644 --- a/README.md +++ b/README.md @@ -66,14 +66,29 @@ After that you may need to add /usr/local/bin in your MAC's PATH environment var ````shell export PATH=$PATH:/usr/local/bin ```` + +#### Windows +1. Checkout Wiretrustee [releases](https://github.com/wiretrustee/wiretrustee/releases/latest) +2. Download the latest Windows release ```wiretrustee__windows_amd64.tar.gz``` (**Switch VERSION to the latest**): +3. Decompress and move to a more fixed path in your system +4. Open Powershell +5. For Windows systems, we can use the service command to configure Wiretrustee as a service by running the following commands in Powershell: +````shell +cd C:\path\to\wiretrustee\bin +.\wiretrustee.exe service --help +.\wiretrustee.exe service install # This will prompt for administrator permissions in order to install a new service +```` +> You may need to run Powershell as Administrator +6. After installing you can follow the [Client Configuration](#Client-Configuration) steps. +7. To uninstall the service simple run the command above with the uninstall flag: +````shell +.\wiretrustee.exe service uninstall +```` + ### Client Configuration 1. Initialize Wiretrustee: -For **MACOS**, you need to create the configuration directory: -````shell -sudo mkdir /etc/wiretrustee -```` -Then, for all systems: +For **Unix** systems: ```shell sudo wiretrustee init \ --stunURLs stun:stun.wiretrustee.com:3468,stun:stun.l.google.com:19302 \ @@ -82,6 +97,16 @@ sudo wiretrustee init \ --wgLocalAddr 10.30.30.1/24 \ --log-level info ``` +For **Windows** systems: +```shell +.\wiretrustee.exe init ` + --stunURLs stun:stun.wiretrustee.com:3468,stun:stun.l.google.com:19302 ` + --turnURLs :@turn:stun.wiretrustee.com:3468 ` + --signalAddr signal.wiretrustee.com:10000 ` + --wgLocalAddr 10.30.30.1/24 ` + --log-level info + ``` + It is important to mention that the ```wgLocalAddr``` parameter has to be unique across your network. E.g. if you have Peer A with ```wgLocalAddr=10.30.30.1/24``` then another Peer B can have ```wgLocalAddr=10.30.30.2/24``` @@ -89,11 +114,16 @@ If for some reason, you already have a generated Wireguard key, you can specify If not specified, then a new one will be generated, and its corresponding public key will be output to the log. A new config will be generated and stored under ```/etc/wiretrustee/config.json``` -2. Add a peer to connect to. +2. Add a peer to connect to. + +For **Unix** systems: ```shell sudo wiretrustee add-peer --allowedIPs 10.30.30.2/32 --key '' ``` - +For **Windows** systems: +```shell +.\wiretrustee.exe add-peer --allowedIPs 10.30.30.2/32 --key '' +``` 3. Restart Wiretrustee to reload changes For **MACOS** you will just start the service: ````shell @@ -106,6 +136,11 @@ For **Linux** systems: sudo systemctl restart wiretrustee.service sudo systemctl status wiretrustee.service ``` +For **Windows** systems: +```shell +.\wiretrustee.exe service start +``` +> You may need to run Powershell as Administrator ### Running the Signal service After installing the application, you can run the signal using the command below: ````shell diff --git a/cmd/config.go b/cmd/config.go index 4bbef1c8d..1754e41c8 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -6,6 +6,7 @@ import ( "github.com/wiretrustee/wiretrustee/connection" "io/ioutil" "os" + "path/filepath" ) // Config Configuration type @@ -23,6 +24,15 @@ type Config struct { //Write writes configPath to a file func (cfg *Config) Write(path string) error { + + if path == defaultConfigPath { + configDir := filepath.Dir(path) + err := os.MkdirAll(configDir, 0750) + if err != nil { + return err + } + } + bs, err := json.Marshal(cfg) if err != nil { return err diff --git a/cmd/root.go b/cmd/root.go index c499a34e3..1c7b0a472 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,6 +6,7 @@ import ( "github.com/spf13/cobra" "os" "os/signal" + "runtime" ) const ( @@ -14,8 +15,9 @@ const ( ) var ( - configPath string - logLevel string + configPath string + defaultConfigPath string + logLevel string rootCmd = &cobra.Command{ Use: "wiretrustee", @@ -28,14 +30,20 @@ var ( func Execute() error { return rootCmd.Execute() } - func init() { - rootCmd.PersistentFlags().StringVar(&configPath, "config", "/etc/wiretrustee/config.json", "Wiretrustee config file location to write new config to") + defaultConfigPath = "/etc/wiretrustee/config.json" + if runtime.GOOS == "windows" { + defaultConfigPath = os.Getenv("PROGRAMDATA") + "\\Wiretrustee\\" + "config.json" + } + rootCmd.PersistentFlags().StringVar(&configPath, "config", defaultConfigPath, "Wiretrustee config file location to write new config to") rootCmd.PersistentFlags().StringVar(&logLevel, "log-level", "info", "") rootCmd.AddCommand(initCmd) rootCmd.AddCommand(addPeerCmd) rootCmd.AddCommand(upCmd) rootCmd.AddCommand(signalCmd) + rootCmd.AddCommand(serviceCmd) + serviceCmd.AddCommand(runCmd, startCmd, stopCmd, restartCmd) // service control commands are subcommands of service + serviceCmd.AddCommand(installCmd, uninstallCmd) // service installer commands are subcommands of service } // SetupCloseHandler handles SIGTERM signal and exits with success @@ -45,7 +53,7 @@ func SetupCloseHandler() { go func() { for range c { fmt.Println("\r- Ctrl+C pressed in Terminal") - os.Exit(0) + stopUP <- 0 } }() } diff --git a/cmd/service.go b/cmd/service.go new file mode 100644 index 000000000..8cb359727 --- /dev/null +++ b/cmd/service.go @@ -0,0 +1,48 @@ +package cmd + +import ( + "github.com/kardianos/service" + log "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +type program struct { + cmd *cobra.Command + args []string +} + +var logger service.Logger + +func newSVCConfig() *service.Config { + return &service.Config{ + Name: "wiretrustee", + DisplayName: "Wiretrustee", + Description: "A WireGuard-based mesh network that connects your devices into a single private network.", + } +} + +func newSVC(prg *program, conf *service.Config) (service.Service, error) { + s, err := service.New(prg, conf) + if err != nil { + log.Fatal(err) + return nil, err + } + logger, err = s.Logger(nil) + if err != nil { + log.Fatal(err) + return nil, err + } + return s, nil +} + +var ( + serviceCmd = &cobra.Command{ + Use: "service", + Short: "manages wiretrustee service", + //Run: func(cmd *cobra.Command, args []string) { + //}, + } +) + +func init() { +} diff --git a/cmd/service_controller.go b/cmd/service_controller.go new file mode 100644 index 000000000..a02a554b8 --- /dev/null +++ b/cmd/service_controller.go @@ -0,0 +1,110 @@ +package cmd + +import ( + "github.com/kardianos/service" + "github.com/spf13/cobra" +) + +func (p *program) Start(s service.Service) error { + // Start should not block. Do the actual work async. + logger.Info("Starting service") //nolint + go upCmd.Run(p.cmd, p.args) + return nil +} + +func (p *program) Stop(s service.Service) error { + stopUP <- 1 + return nil +} + +var ( + runCmd = &cobra.Command{ + Use: "run", + Short: "runs wiretrustee as service", + Run: func(cmd *cobra.Command, args []string) { + + prg := &program{ + cmd: cmd, + args: args, + } + + s, err := newSVC(prg, newSVCConfig()) + if err != nil { + cmd.PrintErrln(err) + return + } + err = s.Run() + if err != nil { + cmd.PrintErrln(err) + return + } + cmd.Printf("Wiretrustee service is running") + }, + } +) + +var ( + startCmd = &cobra.Command{ + Use: "start", + Short: "starts wiretrustee service", + Run: func(cmd *cobra.Command, args []string) { + + s, err := newSVC(&program{}, newSVCConfig()) + if err != nil { + cmd.PrintErrln(err) + return + } + err = s.Start() + if err != nil { + cmd.PrintErrln(err) + return + } + cmd.Printf("Wiretrustee service has been started") + }, + } +) + +var ( + stopCmd = &cobra.Command{ + Use: "stop", + Short: "stops wiretrustee service", + Run: func(cmd *cobra.Command, args []string) { + + s, err := newSVC(&program{}, newSVCConfig()) + if err != nil { + cmd.PrintErrln(err) + return + } + err = s.Stop() + if err != nil { + cmd.PrintErrln(err) + return + } + cmd.Printf("Wiretrustee service has been stopped") + }, + } +) + +var ( + restartCmd = &cobra.Command{ + Use: "restart", + Short: "restarts wiretrustee service", + Run: func(cmd *cobra.Command, args []string) { + + s, err := newSVC(&program{}, newSVCConfig()) + if err != nil { + cmd.PrintErrln(err) + return + } + err = s.Restart() + if err != nil { + cmd.PrintErrln(err) + return + } + cmd.Printf("Wiretrustee service has been restarted") + }, + } +) + +func init() { +} diff --git a/cmd/service_installer.go b/cmd/service_installer.go new file mode 100644 index 000000000..1f289f81d --- /dev/null +++ b/cmd/service_installer.go @@ -0,0 +1,69 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "runtime" +) + +var ( + installCmd = &cobra.Command{ + Use: "install", + Short: "installs wiretrustee service", + Run: func(cmd *cobra.Command, args []string) { + + svcConfig := newSVCConfig() + + svcConfig.Arguments = []string{ + "service", + "run", + "--config", + configPath, + "--log-level", + logLevel, + } + + if runtime.GOOS == "linux" { + // Respected only by systemd systems + svcConfig.Dependencies = []string{"After=network.target syslog.target"} + } + + s, err := newSVC(&program{}, svcConfig) + if err != nil { + cmd.PrintErrln(err) + return + } + + err = s.Install() + if err != nil { + cmd.PrintErrln(err) + return + } + cmd.Printf("Wiretrustee service has been installed") + }, + } +) + +var ( + uninstallCmd = &cobra.Command{ + Use: "uninstall", + Short: "uninstalls wiretrustee service from system", + Run: func(cmd *cobra.Command, args []string) { + + s, err := newSVC(&program{}, newSVCConfig()) + if err != nil { + cmd.PrintErrln(err) + return + } + + err = s.Uninstall() + if err != nil { + cmd.PrintErrln(err) + return + } + cmd.Printf("Wiretrustee has been uninstalled") + }, + } +) + +func init() { +} diff --git a/cmd/service_test.go b/cmd/service_test.go new file mode 100644 index 000000000..622c4566e --- /dev/null +++ b/cmd/service_test.go @@ -0,0 +1,131 @@ +package cmd + +import ( + "bytes" + "github.com/kardianos/service" + "io/ioutil" + "testing" +) + +func Test_ServiceInstallCMD(t *testing.T) { + b := bytes.NewBufferString("") + rootCmd.SetOut(b) + rootCmd.SetErr(b) + rootCmd.SetArgs([]string{ + "service", + "install", + "--config", + "/tmp/config.json", + }) + err := rootCmd.Execute() + if err != nil { + t.Fatal(err) + } + out, err := ioutil.ReadAll(b) + if err != nil { + t.Fatal(err) + } + expectedMSG := "Wiretrustee service has been installed" + if string(out) != expectedMSG { + t.Fatalf("expected \"%s\" got \"%s\"", expectedMSG, string(out)) + } +} + +func Test_ServiceStartCMD(t *testing.T) { + b := bytes.NewBufferString("") + rootCmd.SetOut(b) + rootCmd.SetErr(b) + rootCmd.SetArgs([]string{"service", "start"}) + err := rootCmd.Execute() + if err != nil { + t.Fatal(err) + } + out, err := ioutil.ReadAll(b) + if err != nil { + t.Fatal(err) + } + expectedMSG := "Wiretrustee service has been started" + if string(out) != expectedMSG { + t.Fatalf("expected \"%s\" got \"%s\"", expectedMSG, string(out)) + } +} + +func Test_ServiceRunCMD(t *testing.T) { + rootCmd.SetArgs([]string{ + "init", + "--stunURLs", + "stun:stun.wiretrustee.com:3468", + "--signalAddr", + "signal.wiretrustee.com:10000", + "--turnURLs", + "foo:bar@turn:stun.wiretrustee.com:3468", + "--wgInterface", + "utun99", + "--wgLocalAddr", + "10.100.100.1/24", + "--config", + "/tmp/config.json", + }) + err := rootCmd.Execute() + if err != nil { + t.Fatal(err) + } + + rootCmd.ResetFlags() + rootCmd.SetArgs([]string{"service", "start"}) + err = rootCmd.Execute() + if err != nil { + t.Fatal(err) + } + s, err := newSVC(&program{}, newSVCConfig()) + if err != nil { + t.Fatal(err) + } + status, err := s.Status() + if err != nil { + t.Fatal(err) + } + + if status != service.StatusRunning { + t.Fatalf("expected running status of \"%d\" got \"%d\"", service.StatusRunning, status) + } +} + +func Test_ServiceStopCMD(t *testing.T) { + b := bytes.NewBufferString("") + rootCmd.SetOut(b) + rootCmd.SetErr(b) + rootCmd.SetArgs([]string{"service", "stop"}) + err := rootCmd.Execute() + if err != nil { + t.Fatal(err) + } + out, err := ioutil.ReadAll(b) + if err != nil { + t.Fatal(err) + } + + expectedMSG := "Wiretrustee service has been stopped" + if string(out) != expectedMSG { + t.Fatalf("expected \"%s\" got \"%s\"", expectedMSG, string(out)) + } +} + +func Test_ServiceUninstallCMD(t *testing.T) { + b := bytes.NewBufferString("") + rootCmd.SetOut(b) + rootCmd.SetErr(b) + rootCmd.SetArgs([]string{"service", "uninstall"}) + err := rootCmd.Execute() + if err != nil { + t.Fatal(err) + } + out, err := ioutil.ReadAll(b) + if err != nil { + t.Fatal(err) + } + expectedMSG := "Wiretrustee has been uninstalled" + if string(out) != expectedMSG { + t.Fatalf("expected \"%s\" got \"%s\"", expectedMSG, string(out)) + } +} diff --git a/cmd/up.go b/cmd/up.go index bb94dbff7..2646c8fd3 100644 --- a/cmd/up.go +++ b/cmd/up.go @@ -48,10 +48,15 @@ var ( //signalClient.WaitConnected() SetupCloseHandler() - select {} + <-stopUP + log.Println("Receive signal to stop running") }, } ) +// Execution control channel for stopUP signal +var stopUP chan int + func init() { + stopUP = make(chan int) } diff --git a/go.mod b/go.mod index 1c7bece58..d1e55eb70 100644 --- a/go.mod +++ b/go.mod @@ -5,14 +5,13 @@ go 1.16 require ( github.com/cenkalti/backoff/v4 v4.1.0 github.com/golang/protobuf v1.5.2 - github.com/google/nftables v0.0.0-20201230142148-715e31cb3c31 + github.com/kardianos/service v1.2.0 github.com/onsi/ginkgo v1.16.4 github.com/onsi/gomega v1.13.0 github.com/pion/ice/v2 v2.1.7 github.com/sirupsen/logrus v1.7.0 github.com/spf13/cobra v1.1.3 github.com/vishvananda/netlink v1.1.0 - github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf golang.org/x/sys v0.0.0-20210510120138-977fb7262007 golang.zx2c4.com/wireguard v0.0.0-20210604143328-f9b48a961cd2 diff --git a/go.sum b/go.sum index 54f3a500e..d5535ffb1 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,6 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/nftables v0.0.0-20201230142148-715e31cb3c31 h1:kyEB9geFhgDyawmvavtNu9iGW9ri/iq54XTSNIEeHxI= -github.com/google/nftables v0.0.0-20201230142148-715e31cb3c31/go.mod h1:cfspEyr/Ap+JDIITA+N9a0ernqG0qZ4W1aqMRgDZa1g= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -137,10 +135,10 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/service v1.2.0 h1:bGuZ/epo3vrt8IPC7mnKQolqFeYJb7Cs8Rk4PSOBB/g= +github.com/kardianos/service v1.2.0/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/koneu/natend v0.0.0-20150829182554-ec0926ea948d h1:MFX8DxRnKMY/2M3H61iSsVbo/n3h0MWGmWNN1UViOU0= -github.com/koneu/natend v0.0.0-20150829182554-ec0926ea948d/go.mod h1:QHb4k4cr1fQikUahfcRVPcEXiUgFsdIstGqlurL0XL4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -159,7 +157,6 @@ github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43/go.mod h1:+t7E0lk github.com/mdlayher/genetlink v1.0.0 h1:OoHN1OdyEIkScEmRgxLEe2M9U8ClMytqA5niynLtfj0= github.com/mdlayher/genetlink v1.0.0/go.mod h1:0rJ0h4itni50A86M2kHcgS85ttZazNt7a8H2a2cw0Gc= github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE4aiYnlUsyGGCOpPETfdQq4Jhsgf1fk3cwQaA= -github.com/mdlayher/netlink v0.0.0-20191009155606-de872b0d824b/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqcnu43w/+M= github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcKp9uZHgmY= github.com/mdlayher/netlink v1.1.1/go.mod h1:WTYpFb/WTvlRJAyKhZL5/uy69TDDpHHu2VZmb2XgV7o= @@ -220,8 +217,6 @@ github.com/pion/udp v0.1.1 h1:8UAPvyqmsxK8oOjloDk4wUt63TzFe9WEJkg5lChlj7o= github.com/pion/udp v0.1.1/go.mod h1:6AFo+CMdKQm7UiA0eUPA8/eVCTx8jBIITLZHc9DWX5M= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -269,7 +264,6 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df h1:OviZH7qLw/7ZovXvuNyL3XQl8UFofeikI1NW1Gypu7k= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= @@ -328,7 +322,6 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -362,7 +355,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -376,12 +368,12 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191029155521-f43be2a4598c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201118182958-a01c418693c7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/iface/iface.go b/iface/iface.go index 5534cd6e4..774c6d0b6 100644 --- a/iface/iface.go +++ b/iface/iface.go @@ -113,7 +113,7 @@ func GetListenPort(iface string) (*int, error) { if err != nil { return nil, err } - log.Debugf("got Wireguard device listen port %s, %d", iface, &d.ListenPort) + log.Debugf("got Wireguard device listen port %s, %d", iface, d.ListenPort) return &d.ListenPort, nil } diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 000000000..392a6f7ff --- /dev/null +++ b/manifest.xml @@ -0,0 +1,17 @@ + + + + Wiretrustee application + + + + + + + + \ No newline at end of file diff --git a/resources.rc b/resources.rc new file mode 100644 index 000000000..5ffef3cff --- /dev/null +++ b/resources.rc @@ -0,0 +1,9 @@ +#include + +#pragma code_page(65001) // UTF-8 + +#define STRINGIZE(x) #x +#define EXPAND(x) STRINGIZE(x) +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST manifest.xml +wintun.dll RCDATA wintun.dll + diff --git a/resources_windows_amd64.syso b/resources_windows_amd64.syso index 20817f733..64d593543 100644 Binary files a/resources_windows_amd64.syso and b/resources_windows_amd64.syso differ