From 17cc053816b5f68741ea623b3ddf93598048db96 Mon Sep 17 00:00:00 2001 From: Moses Narrow <36607567+0pcom@users.noreply.github.com> Date: Sat, 15 Jan 2022 13:17:29 -0800 Subject: [PATCH 01/18] Add files via upload --- scripts/win_installer/LICENSE | 1 + scripts/win_installer/README.md | 30 +++++++++++++++++++ scripts/win_installer/ico.ico | Bin 0 -> 99678 bytes scripts/win_installer/wix.json | 50 ++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 scripts/win_installer/LICENSE create mode 100644 scripts/win_installer/README.md create mode 100644 scripts/win_installer/ico.ico create mode 100644 scripts/win_installer/wix.json diff --git a/scripts/win_installer/LICENSE b/scripts/win_installer/LICENSE new file mode 100644 index 0000000000..09112126ea --- /dev/null +++ b/scripts/win_installer/LICENSE @@ -0,0 +1 @@ +This is the license. diff --git a/scripts/win_installer/README.md b/scripts/win_installer/README.md new file mode 100644 index 0000000000..b8edc75895 --- /dev/null +++ b/scripts/win_installer/README.md @@ -0,0 +1,30 @@ +### Windows installer + +Requires windows host + go-msi and its dependencies (wix, .Net 3.5 sp1) + +**The path to the wix toolset needs to be added to the environmental variables on the system** + +Compile the windows executables into the specified path + +``` +mkdir -p build/amd64 +go build -o build/amd64/skywire-visor.exe ../../cmd/skywire-visor/skywire-visor.go +go build -o build/amd64/skywire-cli.exe ../../cmd/skywire-cli/skywire-cli.go +go build -o build/amd64/skysocks.exe ../../cmd/apps/skysocks/skysocks.go +go build -o build/amd64/skychat.exe ../../cmd/apps/skychat/chat.go +go build -o build/amd64/skysocks-client.exe ../../cmd/apps/skysocks-client/skysocks-client.go +go build -o build/amd64/vpn-server.exe ../../cmd/apps/vpn-server/vpn-server.go +go build -o build/amd64/vpn-client.exe ../../cmd/apps/vpn-client/vpn-client.go +``` + +create the skywire windows installer + +``` + go-msi make --msi skywire.msi --version 0.5.1 --arch amd64 --keep +``` + +doublle click the created installer to install skywire and test the installer function. + +**Note: by default windows does not install executables into the PATH** + +It is required to manually add the directory where the skywire executables are installed to the PATH, as was the case for the wix toolset. diff --git a/scripts/win_installer/ico.ico b/scripts/win_installer/ico.ico new file mode 100644 index 0000000000000000000000000000000000000000..c9c57dae6f463ce4d8021460e6a85bcf4abc9c6c GIT binary patch literal 99678 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 Date: Sat, 15 Jan 2022 17:55:56 -0800 Subject: [PATCH 02/18] configure and launch skywire via batch file. + opens browser to hypervisor UI --- scripts/win_installer/README.md | 14 ++++++++------ scripts/win_installer/skywire.bat | 8 ++++++++ scripts/win_installer/wix.json | 9 +++++---- 3 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 scripts/win_installer/skywire.bat diff --git a/scripts/win_installer/README.md b/scripts/win_installer/README.md index b8edc75895..18e05f8634 100644 --- a/scripts/win_installer/README.md +++ b/scripts/win_installer/README.md @@ -7,14 +7,16 @@ Requires windows host + go-msi and its dependencies (wix, .Net 3.5 sp1) Compile the windows executables into the specified path ``` +rm -rf build mkdir -p build/amd64 go build -o build/amd64/skywire-visor.exe ../../cmd/skywire-visor/skywire-visor.go go build -o build/amd64/skywire-cli.exe ../../cmd/skywire-cli/skywire-cli.go -go build -o build/amd64/skysocks.exe ../../cmd/apps/skysocks/skysocks.go -go build -o build/amd64/skychat.exe ../../cmd/apps/skychat/chat.go -go build -o build/amd64/skysocks-client.exe ../../cmd/apps/skysocks-client/skysocks-client.go -go build -o build/amd64/vpn-server.exe ../../cmd/apps/vpn-server/vpn-server.go -go build -o build/amd64/vpn-client.exe ../../cmd/apps/vpn-client/vpn-client.go +go build -o build/amd64/apps/skysocks.exe ../../cmd/apps/skysocks/skysocks.go +go build -o build/amd64/apps/skychat.exe ../../cmd/apps/skychat/chat.go +go build -o build/amd64/apps/skysocks-client.exe ../../cmd/apps/skysocks-client/skysocks-client.go +go build -o build/amd64/apps/vpn-server.exe ../../cmd/apps/vpn-server/vpn-server.go +go build -o build/amd64/apps/vpn-client.exe ../../cmd/apps/vpn-client/vpn-client.go +cp -b skywire.bat build/amd64/skywire.bat ``` create the skywire windows installer @@ -23,7 +25,7 @@ create the skywire windows installer go-msi make --msi skywire.msi --version 0.5.1 --arch amd64 --keep ``` -doublle click the created installer to install skywire and test the installer function. +double click the created installer to install skywire and test the installer function. **Note: by default windows does not install executables into the PATH** diff --git a/scripts/win_installer/skywire.bat b/scripts/win_installer/skywire.bat new file mode 100644 index 0000000000..b76a43fa13 --- /dev/null +++ b/scripts/win_installer/skywire.bat @@ -0,0 +1,8 @@ +@Echo Off +start "" http://127.0.0.1:8000 +if exist %HOMEPATH%\skywire-config.json ( +skywire-visor.exe -c %HOMEPATH%\skywire-config.json +) else ( +skywire-cli config gen -iro %HOMEPATH%\skywire-config.json +skywire-visor.exe -c %HOMEPATH%\skywire-config.json +) diff --git a/scripts/win_installer/wix.json b/scripts/win_installer/wix.json index 12fe2f287f..0c1c6bb9cb 100644 --- a/scripts/win_installer/wix.json +++ b/scripts/win_installer/wix.json @@ -12,7 +12,8 @@ "build/amd64/apps/skysocks.exe", "build/amd64/apps/skysocks-client.exe", "build/amd64/apps/vpn-server.exe", - "build/amd64/apps/vpn-client.exe" + "build/amd64/apps/vpn-client.exe", + "build/amd64/skywire.bat" ] }, "env": { @@ -32,9 +33,9 @@ "guid": "", "items": [ { - "name": "skywire-cli", - "description": "skywire command-line utility", - "target": "[INSTALLDIR]\\skywire-cli.exe", + "name": "skywire", + "description": "run skywire", + "target": "[INSTALLDIR]\\skywire.bat", "wdir": "INSTALLDIR", "icon":"ico.ico" } From 3f10152b4c837280edc72cead3dbb04af7961871 Mon Sep 17 00:00:00 2001 From: Moses Narrow <36607567+0pcom@users.noreply.github.com> Date: Mon, 17 Jan 2022 13:59:05 -0600 Subject: [PATCH 03/18] fixed executables not in path --- scripts/win_installer/README.md | 12 +++++------- scripts/win_installer/ico.ico | Bin 99678 -> 15086 bytes scripts/win_installer/wix.json | 17 +++++++---------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/scripts/win_installer/README.md b/scripts/win_installer/README.md index 18e05f8634..f64666a627 100644 --- a/scripts/win_installer/README.md +++ b/scripts/win_installer/README.md @@ -11,10 +11,6 @@ rm -rf build mkdir -p build/amd64 go build -o build/amd64/skywire-visor.exe ../../cmd/skywire-visor/skywire-visor.go go build -o build/amd64/skywire-cli.exe ../../cmd/skywire-cli/skywire-cli.go -go build -o build/amd64/apps/skysocks.exe ../../cmd/apps/skysocks/skysocks.go -go build -o build/amd64/apps/skychat.exe ../../cmd/apps/skychat/chat.go -go build -o build/amd64/apps/skysocks-client.exe ../../cmd/apps/skysocks-client/skysocks-client.go -go build -o build/amd64/apps/vpn-server.exe ../../cmd/apps/vpn-server/vpn-server.go go build -o build/amd64/apps/vpn-client.exe ../../cmd/apps/vpn-client/vpn-client.go cp -b skywire.bat build/amd64/skywire.bat ``` @@ -25,8 +21,10 @@ create the skywire windows installer go-msi make --msi skywire.msi --version 0.5.1 --arch amd64 --keep ``` -double click the created installer to install skywire and test the installer function. +double click the created installer to install skywire. -**Note: by default windows does not install executables into the PATH** +to run skywire open a terminal or cmd window and run -It is required to manually add the directory where the skywire executables are installed to the PATH, as was the case for the wix toolset. +``` +skywire +``` diff --git a/scripts/win_installer/ico.ico b/scripts/win_installer/ico.ico index c9c57dae6f463ce4d8021460e6a85bcf4abc9c6c..cc325fd3cb29e15c66be1d29875f842fdc522be0 100644 GIT binary patch literal 15086 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 literal 99678 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 Date: Tue, 25 Jan 2022 18:12:59 +0330 Subject: [PATCH 04/18] add double quotes to paths --- scripts/win_installer/skywire.bat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/win_installer/skywire.bat b/scripts/win_installer/skywire.bat index b76a43fa13..f86ae005a1 100644 --- a/scripts/win_installer/skywire.bat +++ b/scripts/win_installer/skywire.bat @@ -1,8 +1,8 @@ @Echo Off start "" http://127.0.0.1:8000 -if exist %HOMEPATH%\skywire-config.json ( -skywire-visor.exe -c %HOMEPATH%\skywire-config.json +if exist "%HOMEPATH%\skywire-config.json" ( +skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" ) else ( -skywire-cli config gen -iro %HOMEPATH%\skywire-config.json -skywire-visor.exe -c %HOMEPATH%\skywire-config.json +skywire-cli config gen -iro "%HOMEPATH%\skywire-config.json" +skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" ) From 97069016455019021e12fb30c59dd4c76f59ef6a Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Tue, 25 Jan 2022 22:27:57 +0330 Subject: [PATCH 05/18] remove useless function GetAvailPublicVPNServers --- internal/gui/gui.go | 23 ----------------------- internal/gui/gui_test.go | 14 -------------- 2 files changed, 37 deletions(-) diff --git a/internal/gui/gui.go b/internal/gui/gui.go index 111fe2c701..15a686a39b 100644 --- a/internal/gui/gui.go +++ b/internal/gui/gui.go @@ -4,7 +4,6 @@ package gui import ( - "context" "embed" "fmt" "io" @@ -20,7 +19,6 @@ import ( "github.com/skycoin/skycoin/src/util/logging" "github.com/toqueteos/webbrowser" - "github.com/skycoin/skywire/pkg/servicedisc" "github.com/skycoin/skywire/pkg/skyenv" "github.com/skycoin/skywire/pkg/visor/visorconfig" ) @@ -192,27 +190,6 @@ func handleVPNLinkButton(conf *visorconfig.V1) { } } -// GetAvailPublicVPNServers gets all available public VPN server from service discovery URL -func GetAvailPublicVPNServers(conf *visorconfig.V1) []string { - sdClient := servicedisc.NewClient(log, servicedisc.Config{ - Type: servicedisc.ServiceTypeVPN, - PK: conf.PK, - SK: conf.SK, - DiscAddr: conf.Launcher.ServiceDisc, - }) - //ctx, _ := context.WithTimeout(context.Background(), 7*time.Second) - vpnServers, err := sdClient.Services(context.Background(), 0) - if err != nil { - log.Error("Error getting public vpn servers: ", err) - return nil - } - serverAddrs := make([]string, len(vpnServers)) - for idx, server := range vpnServers { - serverAddrs[idx] = server.Addr.PubKey().String() - } - return serverAddrs -} - func initUninstallBtn() { if !checkIsPackage() { mUninstall.Hide() diff --git a/internal/gui/gui_test.go b/internal/gui/gui_test.go index f76f10c8bc..cdde86f2e5 100644 --- a/internal/gui/gui_test.go +++ b/internal/gui/gui_test.go @@ -12,20 +12,6 @@ import ( "github.com/skycoin/skywire/pkg/visor/visorconfig" ) -func TestGetAvailPublicVPNServers(t *testing.T) { - pk, sk := cipher.GenerateKeyPair() - common := &visorconfig.Common{ - Version: "v1.1.0", - SK: sk, - PK: pk, - } - config := visorconfig.MakeBaseConfig(common) - servers := GetAvailPublicVPNServers(config) - require.NotEqual(t, nil, servers) - require.NotEqual(t, []string{}, servers) - t.Logf("Servers: %v", servers) -} - func TestReadEmbeddedIcon(t *testing.T) { b, err := ReadSysTrayIcon() require.NoError(t, err) From b6179abf06601b3c85c75d99964170d49085c03d Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Tue, 25 Jan 2022 23:11:19 +0330 Subject: [PATCH 06/18] add script.ps1 and Makefile command win-installer --- Makefile | 3 +++ scripts/win_installer/script.ps1 | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 scripts/win_installer/script.ps1 diff --git a/Makefile b/Makefile index ef2b71ec15..a5a1024495 100644 --- a/Makefile +++ b/Makefile @@ -260,6 +260,9 @@ mac-installer: ## Create signed and notarized application, run make mac-installe mac-installer-help: ## Show installer creation help ./scripts/mac_installer/create_installer.sh -h +win-installer: + @powershell '.\scripts\win_installer\script.ps1' + help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/scripts/win_installer/script.ps1 b/scripts/win_installer/script.ps1 new file mode 100644 index 0000000000..8c343fb921 --- /dev/null +++ b/scripts/win_installer/script.ps1 @@ -0,0 +1,21 @@ +echo "Building Systray Windows Binaries..." +if (Test-Path ".\skywire.msi") { Remove-Item ".\skywire.msi" -Recurse -Force} +make build-systray-windows > $null +echo "Build Complete!" +echo "Setting go-msi configuration..." +cd .\scripts\win_installer +if (Test-Path ".\build") { Remove-Item ".\build" -Recurse -Force} +mkdir -p ".\build\amd64\apps" > $null +mv ..\..\skywire-visor.exe .\build\amd64\skywire-visor.exe +mv ..\..\skywire-cli.exe .\build\amd64\skywire-cli.exe +mv ..\..\apps\vpn-client .\build\amd64\apps\vpn-client.exe +rm ..\..\setup-node.exe +rm -r -fo ..\..\apps +cp skywire.bat .\build\amd64\skywire.bat +echo "Configuration complete!" +echo "Building msi..." +go-msi make --msi skywire.msi --version 0.5.1 --arch amd64 +mv skywire.msi ../../skywire.msi +Remove-Item ".\build" -Recurse -Force +cd ../../ +echo "Build Complete!" \ No newline at end of file From f713fa73d9c6c41e2b74b8be64f6991f2a1951c2 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Tue, 25 Jan 2022 23:12:04 +0330 Subject: [PATCH 07/18] update skywire.bat | set --os and --disable-apps flags --- scripts/win_installer/skywire.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/win_installer/skywire.bat b/scripts/win_installer/skywire.bat index f86ae005a1..f6c0a479d9 100644 --- a/scripts/win_installer/skywire.bat +++ b/scripts/win_installer/skywire.bat @@ -3,6 +3,6 @@ start "" http://127.0.0.1:8000 if exist "%HOMEPATH%\skywire-config.json" ( skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" ) else ( -skywire-cli config gen -iro "%HOMEPATH%\skywire-config.json" +skywire-cli config gen -iro "%HOMEPATH%\skywire-config.json" --os windows --disable-apps skychat,skysocks,skysocks-client,vpn-servergi skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" ) From f4aed5b2dec2cc3472b80d380d8cc78096df2fc6 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Tue, 25 Jan 2022 23:12:51 +0330 Subject: [PATCH 08/18] update gitignore --- .gitignore | 1 + _apps/skychat | 2 -- _apps/skysocks | 2 -- _apps/skysocks-client | 2 -- _apps/vpn-client | 2 -- _apps/vpn-server | 2 -- 6 files changed, 1 insertion(+), 10 deletions(-) delete mode 100755 _apps/skychat delete mode 100755 _apps/skysocks delete mode 100755 _apps/skysocks-client delete mode 100755 _apps/vpn-client delete mode 100755 _apps/vpn-server diff --git a/.gitignore b/.gitignore index 731ac7fa10..f4ee3a889a 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ Char *.dmg /scripts/mac_installer/icon.iconset/ releaseChangelog.md +skywire.msi diff --git a/_apps/skychat b/_apps/skychat deleted file mode 100755 index 76d099cc34..0000000000 --- a/_apps/skychat +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/bash -go run $HOME/go/src/github.com/skycoin/skywire/cmd/apps/skychat/chat.go diff --git a/_apps/skysocks b/_apps/skysocks deleted file mode 100755 index 6c977f6a40..0000000000 --- a/_apps/skysocks +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/bash -go run $HOME/go/src/github.com/skycoin/skywire/cmd/apps/skysocks/skysocks.go diff --git a/_apps/skysocks-client b/_apps/skysocks-client deleted file mode 100755 index 032d4d206c..0000000000 --- a/_apps/skysocks-client +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/bash -go run $HOME/go/src/github.com/skycoin/skywire/cmd/apps/skysocks-client/skysocks-client.go diff --git a/_apps/vpn-client b/_apps/vpn-client deleted file mode 100755 index 2c700af3b6..0000000000 --- a/_apps/vpn-client +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/bash -go run $HOME/go/src/github.com/skycoin/skywire/cmd/apps/vpn-client/vpn-client.go diff --git a/_apps/vpn-server b/_apps/vpn-server deleted file mode 100755 index cfdd994174..0000000000 --- a/_apps/vpn-server +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/bash -go run $HOME/go/src/github.com/skycoin/skywire/cmd/apps/vpn-server/vpn-server.go From 98ed00fed64712bfeb12bd39283a398cd9b36842 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 00:15:27 +0330 Subject: [PATCH 09/18] Update README.md --- scripts/win_installer/README.md | 47 +++++++++++++++++---------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/scripts/win_installer/README.md b/scripts/win_installer/README.md index f64666a627..dc1871dcc2 100644 --- a/scripts/win_installer/README.md +++ b/scripts/win_installer/README.md @@ -1,30 +1,31 @@ -### Windows installer - -Requires windows host + go-msi and its dependencies (wix, .Net 3.5 sp1) - -**The path to the wix toolset needs to be added to the environmental variables on the system** - -Compile the windows executables into the specified path - +## Windows installer + +### Requirments +- windows machine +- Install **chocolatey** by its instruction [here](https://chocolatey.org/install). +- Install **GNU Make** by choco + ``` + choco install make + ``` +- Install **go-msi** by choco + ``` + choco install go-msi + ``` +- Download and Install **Wix** from [here](https://github.com/wixtoolset/wix3/releases/tag/wix3112rtm). + - Need to add `C:\Program Files (x86)\WiX Toolset v3.11\bin` to path. +- We need to install **.Net Framework 3.5 SP1**, you can download and install from [here](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net35-sp1-web-installer). + +### Build +You can build **skywire.msi** by ``` -rm -rf build -mkdir -p build/amd64 -go build -o build/amd64/skywire-visor.exe ../../cmd/skywire-visor/skywire-visor.go -go build -o build/amd64/skywire-cli.exe ../../cmd/skywire-cli/skywire-cli.go -go build -o build/amd64/apps/vpn-client.exe ../../cmd/apps/vpn-client/vpn-client.go -cp -b skywire.bat build/amd64/skywire.bat +make win-installer ``` -create the skywire windows installer - -``` - go-msi make --msi skywire.msi --version 0.5.1 --arch amd64 --keep -``` - -double click the created installer to install skywire. - -to run skywire open a terminal or cmd window and run +### Install +Double click the created installer to install skywire. +### Run +To run skywire open a terminal or cmd window and run ``` skywire ``` From 2a1e484947c3796ab23e270014aad25aa9284630 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 01:00:12 +0330 Subject: [PATCH 10/18] update README.md --- scripts/win_installer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/win_installer/README.md b/scripts/win_installer/README.md index dc1871dcc2..9c3edcc409 100644 --- a/scripts/win_installer/README.md +++ b/scripts/win_installer/README.md @@ -25,7 +25,7 @@ make win-installer Double click the created installer to install skywire. ### Run -To run skywire open a terminal or cmd window and run +To run skywire open a terminal or cmd window as administrator and run ``` skywire ``` From 8102d9859ba58ed0438ced94f8545937bcd7fda1 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 11:21:51 +0330 Subject: [PATCH 11/18] make skywire.bat run as administrator --- scripts/win_installer/skywire.bat | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/win_installer/skywire.bat b/scripts/win_installer/skywire.bat index f6c0a479d9..4226056952 100644 --- a/scripts/win_installer/skywire.bat +++ b/scripts/win_installer/skywire.bat @@ -1,4 +1,6 @@ @Echo Off +%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit +cd /d "%~dp0" start "" http://127.0.0.1:8000 if exist "%HOMEPATH%\skywire-config.json" ( skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" From dc6464be36933e4ef0e9694ae88fe555db5ae550 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 11:23:19 +0330 Subject: [PATCH 12/18] update README.md --- scripts/win_installer/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/win_installer/README.md b/scripts/win_installer/README.md index 9c3edcc409..a7c865fc7b 100644 --- a/scripts/win_installer/README.md +++ b/scripts/win_installer/README.md @@ -25,7 +25,8 @@ make win-installer Double click the created installer to install skywire. ### Run -To run skywire open a terminal or cmd window as administrator and run +To run skywire open a terminal or cmd window and run ``` skywire ``` +or open `skywire` shortcut on start menu. From cf9a6c72261ebfc0f1da897fa14b7d276e2dc1c1 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 11:28:17 +0330 Subject: [PATCH 13/18] Capitalized skywire to Skywire in start menu shortcut --- scripts/win_installer/wix.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/win_installer/wix.json b/scripts/win_installer/wix.json index c4d3f7f548..d273af19ea 100644 --- a/scripts/win_installer/wix.json +++ b/scripts/win_installer/wix.json @@ -30,7 +30,7 @@ "guid": "", "items": [ { - "name": "skywire", + "name": "Skywire", "description": "run skywire", "target": "[INSTALLDIR]\\skywire.bat", "wdir": "INSTALLDIR", From 3543d561b646035992db1434414ece71c5dd8573 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 13:58:47 +0330 Subject: [PATCH 14/18] make format --- internal/gui/gui_test.go | 3 --- scripts/win_installer/script.ps1 | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/internal/gui/gui_test.go b/internal/gui/gui_test.go index cdde86f2e5..dc997d546a 100644 --- a/internal/gui/gui_test.go +++ b/internal/gui/gui_test.go @@ -6,10 +6,7 @@ package gui import ( "testing" - "github.com/skycoin/dmsg/cipher" "github.com/stretchr/testify/require" - - "github.com/skycoin/skywire/pkg/visor/visorconfig" ) func TestReadEmbeddedIcon(t *testing.T) { diff --git a/scripts/win_installer/script.ps1 b/scripts/win_installer/script.ps1 index 8c343fb921..13ab29adcb 100644 --- a/scripts/win_installer/script.ps1 +++ b/scripts/win_installer/script.ps1 @@ -18,4 +18,4 @@ go-msi make --msi skywire.msi --version 0.5.1 --arch amd64 mv skywire.msi ../../skywire.msi Remove-Item ".\build" -Recurse -Force cd ../../ -echo "Build Complete!" \ No newline at end of file +echo "Build Complete!" From b31af8d37679ffe28b3cdb3506f12debab5bbcd8 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Wed, 26 Jan 2022 14:12:54 +0330 Subject: [PATCH 15/18] disable license for installation process --- scripts/win_installer/LICENSE | 1 - scripts/win_installer/wix.json | 1 - 2 files changed, 2 deletions(-) delete mode 100644 scripts/win_installer/LICENSE diff --git a/scripts/win_installer/LICENSE b/scripts/win_installer/LICENSE deleted file mode 100644 index 09112126ea..0000000000 --- a/scripts/win_installer/LICENSE +++ /dev/null @@ -1 +0,0 @@ -This is the license. diff --git a/scripts/win_installer/wix.json b/scripts/win_installer/wix.json index d273af19ea..ef667d0a2d 100644 --- a/scripts/win_installer/wix.json +++ b/scripts/win_installer/wix.json @@ -1,7 +1,6 @@ { "product": "Skywire", "company": "Skycoin", - "license": "LICENSE", "upgrade-code": "", "files": { "guid": "", From 6e37bc373c702c00b50d17296e7a13ef23dab068 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Thu, 27 Jan 2022 15:34:48 +0330 Subject: [PATCH 16/18] set -b flag --- scripts/win_installer/skywire.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/win_installer/skywire.bat b/scripts/win_installer/skywire.bat index 4226056952..e217e4bbd8 100644 --- a/scripts/win_installer/skywire.bat +++ b/scripts/win_installer/skywire.bat @@ -5,6 +5,6 @@ start "" http://127.0.0.1:8000 if exist "%HOMEPATH%\skywire-config.json" ( skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" ) else ( -skywire-cli config gen -iro "%HOMEPATH%\skywire-config.json" --os windows --disable-apps skychat,skysocks,skysocks-client,vpn-servergi +skywire-cli config gen -biro "%HOMEPATH%\skywire-config.json" --os windows --disable-apps skychat,skysocks,skysocks-client,vpn-servergi skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" ) From 09a62c8a2ae45291c5c13be2f03c0721147cd988 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Thu, 27 Jan 2022 17:51:15 +0330 Subject: [PATCH 17/18] make skywire.bat clear --- scripts/win_installer/skywire.bat | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/win_installer/skywire.bat b/scripts/win_installer/skywire.bat index e217e4bbd8..21f4156339 100644 --- a/scripts/win_installer/skywire.bat +++ b/scripts/win_installer/skywire.bat @@ -1,10 +1,12 @@ @Echo Off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" +if not exist "apps\" ( + mkdir apps + move vpn-client.exe apps +) +if not exist "%HOMEPATH%\skywire-config.json" ( +skywire-cli config gen -biro "%HOMEPATH%\skywire-config.json" --os windows --disable-apps skychat,skysocks,skysocks-client,vpn-server +) start "" http://127.0.0.1:8000 -if exist "%HOMEPATH%\skywire-config.json" ( skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" -) else ( -skywire-cli config gen -biro "%HOMEPATH%\skywire-config.json" --os windows --disable-apps skychat,skysocks,skysocks-client,vpn-servergi -skywire-visor.exe -c "%HOMEPATH%\skywire-config.json" -) From e264ec56920d267e515f528bd47eaa2f50a05d50 Mon Sep 17 00:00:00 2001 From: MohammadReza Palide Date: Sat, 29 Jan 2022 08:05:12 +0330 Subject: [PATCH 18/18] revert deleted function --- internal/gui/gui.go | 23 +++++++++++++++++++++++ internal/gui/gui_test.go | 17 +++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/internal/gui/gui.go b/internal/gui/gui.go index 15a686a39b..111fe2c701 100644 --- a/internal/gui/gui.go +++ b/internal/gui/gui.go @@ -4,6 +4,7 @@ package gui import ( + "context" "embed" "fmt" "io" @@ -19,6 +20,7 @@ import ( "github.com/skycoin/skycoin/src/util/logging" "github.com/toqueteos/webbrowser" + "github.com/skycoin/skywire/pkg/servicedisc" "github.com/skycoin/skywire/pkg/skyenv" "github.com/skycoin/skywire/pkg/visor/visorconfig" ) @@ -190,6 +192,27 @@ func handleVPNLinkButton(conf *visorconfig.V1) { } } +// GetAvailPublicVPNServers gets all available public VPN server from service discovery URL +func GetAvailPublicVPNServers(conf *visorconfig.V1) []string { + sdClient := servicedisc.NewClient(log, servicedisc.Config{ + Type: servicedisc.ServiceTypeVPN, + PK: conf.PK, + SK: conf.SK, + DiscAddr: conf.Launcher.ServiceDisc, + }) + //ctx, _ := context.WithTimeout(context.Background(), 7*time.Second) + vpnServers, err := sdClient.Services(context.Background(), 0) + if err != nil { + log.Error("Error getting public vpn servers: ", err) + return nil + } + serverAddrs := make([]string, len(vpnServers)) + for idx, server := range vpnServers { + serverAddrs[idx] = server.Addr.PubKey().String() + } + return serverAddrs +} + func initUninstallBtn() { if !checkIsPackage() { mUninstall.Hide() diff --git a/internal/gui/gui_test.go b/internal/gui/gui_test.go index dc997d546a..f76f10c8bc 100644 --- a/internal/gui/gui_test.go +++ b/internal/gui/gui_test.go @@ -6,9 +6,26 @@ package gui import ( "testing" + "github.com/skycoin/dmsg/cipher" "github.com/stretchr/testify/require" + + "github.com/skycoin/skywire/pkg/visor/visorconfig" ) +func TestGetAvailPublicVPNServers(t *testing.T) { + pk, sk := cipher.GenerateKeyPair() + common := &visorconfig.Common{ + Version: "v1.1.0", + SK: sk, + PK: pk, + } + config := visorconfig.MakeBaseConfig(common) + servers := GetAvailPublicVPNServers(config) + require.NotEqual(t, nil, servers) + require.NotEqual(t, []string{}, servers) + t.Logf("Servers: %v", servers) +} + func TestReadEmbeddedIcon(t *testing.T) { b, err := ReadSysTrayIcon() require.NoError(t, err)