mirror of
https://github.com/Windscribe/Desktop-App.git
synced 2026-05-07 20:12:44 +00:00
Updated readme, added contributing guide, and removed defunct files. #612
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# Windscribe Desktop App Contributor's Guide
|
||||
|
||||
Please follow this guide for instructions / best practices when reporting issues, proposing new features, and submitting contributions via Pull Requests (PRs).
|
||||
|
||||
## Filing an Issue
|
||||
|
||||
1. Look for a similar issue that may already exist, including closed issues.
|
||||
|
||||
1. If none exists, create a new issue and provide as much description and context as possible.
|
||||
|
||||
1. Apply any relevant labels to the issue.
|
||||
|
||||
### How to notify the Windscribe devs of an interesting thing to consider for inclusion in the app
|
||||
|
||||
Upvote the original issue by clicking its [+😊] button and hitting 👍 (+1) icon or a different one. This allows us to measure how impactful different issues are compared to others. Commenting an issue with "+1", "me too", etc. makes it harder to have a conversation and prioritize requests.
|
||||
|
||||
## Contributing Fixes or Enhancements
|
||||
|
||||
If you are interested in helping to fix an issue and/or implement new features, we'd love your contribution!
|
||||
|
||||
When contributing to the Windscribe Desktop App repository, please first discuss the change you wish to make with the Windscribe development team via an issue. This repository is a mirror of our internal development repository, and is updated only when we make a public release. Therefore it is possible the development team is already working on, or has completed, this change. Further, we want to avoid you investing your time in a change that we may not be able to approve for integration into the app.
|
||||
@@ -1,61 +1,69 @@
|
||||
# Windscribe 2.0 Desktop Application
|
||||
This repo contains the complete source code for the Windscribe 2.0 app. This includes installer, service/helper, and GUI.
|
||||
|
||||
This repo contains the complete source code for the Windscribe 2.0 app. This includes installer, service/helper, and GUI.
|
||||
|
||||
## Windows
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Windows 10/11.
|
||||
- Install git (https://git-scm.com/downloads). When installing Git, you can stick with all the default options presented to you by the installer.
|
||||
- Install [git](https://git-scm.com/downloads). When installing Git, you can stick with all the default options presented to you by the installer.
|
||||
- Clone the repository.
|
||||
- Install Visual Studio Community Edition 2019 (run install_vs.bat from /common/prepare_build_environment/windows).
|
||||
- Install Python 3 via either the Microsoft Store or python.org. Minimum tested version is 3.6.8.
|
||||
- Install Active Perl (install from https://www.activestate.com/products/perl/downloads/ or execute this code snippet).
|
||||
- powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/w20598w01/install.ps1'))) -activate-default ActiveState/Perl-5.32"
|
||||
- Alternately, you can install Strawberry Perl from https://strawberryperl.com/
|
||||
- Install CMake v3.23.x (run install_cmake.bat from common/prepare_build_environment/windows).
|
||||
- Verify the following entries are in your System PATH environment variable. If they are not, add them to the System PATH environment variable. Reboot.
|
||||
- C:\Perl64\site\bin (or equivalent Strawberry Perl site\bin folder)
|
||||
- C:\Perl64\bin (or equivalent Strawberry Perl bin folder)
|
||||
- C:\Program Files\Git\cmd
|
||||
- Verify that python3 is available in your System PATH environment variable.
|
||||
- If you installed Python from the Microsoft Store, enable the python3.exe execution alias.
|
||||
- If you installed Python from python.org, you can mklink /path/to/your/python3.exe /path/to/your/python.exe
|
||||
- Install Visual Studio Community Edition 2019 (run `install_vs.bat` from `/tools/prepare_build_environment/windows`).
|
||||
- Install Python 3 via either the Microsoft Store or from [here](https://www.python.org/downloads/). Minimum tested version is 3.6.8.
|
||||
- Install [Active Perl](https://www.activestate.com/products/perl/downloads/).
|
||||
- Alternately, you can install [Strawberry Perl](https://strawberryperl.com/).
|
||||
- Install CMake v3.23.x or newer from [here](https://cmake.org/download/) (`install_cmake.bat` in `tools/prepare_build_environment/windows` will download and install CMake v3.23.2 for you).
|
||||
- Verify the following entries are in your System `PATH` environment variable. If they are not, add them to the System `PATH` environment variable and reboot.
|
||||
- `C:\Perl64\site\bin` (or equivalent Strawberry Perl `site\bin` folder)
|
||||
- `C:\Perl64\bin` (or equivalent Strawberry Perl `bin` folder)
|
||||
- `C:\Program Files\Git\cmd`
|
||||
- Verify that `python3` is available in your System `PATH` environment variable.
|
||||
- If you installed Python from the Microsoft Store, enable the `python3.exe` execution alias in System Settings `Manage App Execution Aliases`.
|
||||
- If you installed Python from python.org, you can `mklink /path/to/your/python3.exe /path/to/your/python.exe`
|
||||
|
||||
### Install build script dependencies
|
||||
- You will have to go to 'Manage App Execution Aliases' in System Settings and disable app installer for python.exe and python3.exe
|
||||
- python3 -m pip install -r tools/requirements.txt
|
||||
- You will have to go to `Manage App Execution Aliases` in System Settings and disable app installer for `python.exe` and `python3.exe`
|
||||
|
||||
```python
|
||||
python3 -m pip install -r tools/requirements.txt
|
||||
```
|
||||
|
||||
### Install signing certificate (optional)
|
||||
- Copy your PFX code signing file to installer/windows/signing/code_signing.pfx.
|
||||
- Edit (create) tools/notarize.yml and add the following line:
|
||||
- windows-signing-cert-password: password-for-code-signing-pfx
|
||||
- Edit common/utils/executable_signature/executable_signature_defs.h and set the WINDOWS_CERT_SUBJECT_NAME entry to match your certficate's name of signer field.
|
||||
- Copy your PFX code signing file to `installer/windows/signing/code_signing.pfx`.
|
||||
- Edit (create) `tools/notarize.yml` and add the following line:
|
||||
```
|
||||
windows-signing-cert-password: password-for-code-signing-pfx
|
||||
```
|
||||
- Edit `client/common/utils/executable_signature/executable_signature_defs.h` and set the `WINDOWS_CERT_SUBJECT_NAME` entry to match your certficate's name of signer field.
|
||||
|
||||
### Install libraries
|
||||
### Build libraries
|
||||
|
||||
- Create a build-libs folder in the root of the cloned repository.
|
||||
Go to subfolder `tools/deps` and run the following scripts in order. Libraries will be placed in `build-libs`.
|
||||
|
||||
- Download the following dependency zips from https://nexus.int.windscribe.com/#browse/browse:client-desktop:client-desktop/dependencies/current/windows and extract them into the build-libs folder.
|
||||
- boost.zip
|
||||
- cares.zip
|
||||
- curl.zip
|
||||
- lzo.zip
|
||||
- openssl_ech_draft.zip
|
||||
- openvpn_2_6_1.zip
|
||||
- qt.zip
|
||||
- stunnel.zip
|
||||
- wireguard.zip
|
||||
- zlib.zip
|
||||
```
|
||||
install_openssl_ech_draft
|
||||
install_qt
|
||||
install_cares
|
||||
install_zlib
|
||||
install_curl
|
||||
install_boost
|
||||
install_lzo
|
||||
install_openvpn
|
||||
install_wireguard
|
||||
install_stunnel
|
||||
```
|
||||
|
||||
### Build the Windscribe 2.0 app
|
||||
|
||||
Go to subfolder tools and run 'build_all'. Assuming all goes well with the build, the installer will be placed in build-exe. You can run 'build_all --sign --use-local-secrets' for a code-signed build, using the certificate from the 'Install signing certificate' section above, which will perform run-time signature verification checks on the executables. Note that an unsigned build must be installed on your PC if you intend to debug the project using Qt Creator.
|
||||
Go to subfolder `tools` and run `build_all`. Assuming all goes well with the build, the installer will be placed in `build-exe`. You can run `build_all --sign --use-local-secrets` for a code-signed build, using the certificate from the [Install signing certificate](#install-signing-certificate-optional) section above, which will perform run-time signature verification checks on the executables. Note that an unsigned build must be installed on your PC if you intend to debug the project.
|
||||
|
||||
See `build_all --help` for other build options.
|
||||
|
||||
You will find the application logs in C:/Users/USER/AppData/Local/Windscribe/Windscribe2.
|
||||
You will find the application logs in `C:/Users/USER/AppData/Local/Windscribe/Windscribe2`.
|
||||
|
||||
## Mac
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- macOS Big Sur, Monterey, or Ventura
|
||||
@@ -63,97 +71,121 @@ You will find the application logs in C:/Users/USER/AppData/Local/Windscribe/Win
|
||||
- Note: these downloads will require you to first login to your Apple account.
|
||||
- https://download.developer.apple.com/Developer_Tools/Xcode_13.2.1/Xcode_13.2.1.xip
|
||||
- Install brew (brew.sh)
|
||||
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
- Install git (This step is optional, as git is bundled with Xcode)
|
||||
- brew install git
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
- Install git. This step is optional, as git is bundled with Xcode.
|
||||
```bash
|
||||
brew install git
|
||||
```
|
||||
- Install Auto-Tools and 7-Zip:
|
||||
- brew install libtool
|
||||
- brew install automake
|
||||
- brew install p7zip
|
||||
- Install python3:
|
||||
- Minimum tested version is Python 3.6.8. You may do this however you like, however pyenv is recommended:
|
||||
- brew install pyenv
|
||||
- echo 'if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init --path)"; fi"' >> ~/.zshrc
|
||||
- pyenv install 3.11.0
|
||||
- pyenv global 3.11.0
|
||||
```bash
|
||||
brew install libtool
|
||||
brew install automake
|
||||
brew install p7zip
|
||||
```
|
||||
- Install Python 3:
|
||||
- Minimum tested version is Python 3.6.8. You may do this however you like, however `pyenv` is recommended:
|
||||
```bash
|
||||
brew install pyenv
|
||||
echo 'if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init --path)"; fi"' >> ~/.zshrc
|
||||
pyenv install 3.11.0
|
||||
pyenv global 3.11.0
|
||||
```
|
||||
- Install dmgbuild:
|
||||
- python3 -m pip install dmgbuild
|
||||
- Install cmake v3.23.x from: https://cmake.org/download/
|
||||
```bash
|
||||
python3 -m pip install dmgbuild
|
||||
```
|
||||
- Install CMake v3.23.x or newer from [here](https://cmake.org/download/)
|
||||
- Clone the repository.
|
||||
- Install python deps:
|
||||
- python3 -m pip install -r tools/requirements.txt
|
||||
```python
|
||||
python3 -m pip install -r tools/requirements.txt
|
||||
```
|
||||
|
||||
### Install signing certificate (required)
|
||||
- Install your Developer ID Application signing certificate from your Apple Developer account in Keychain Access.
|
||||
- Edit common/utils/executable_signature/executable_signature_defs.h and set the MACOS_CERT_DEVELOPER_ID entry to match your Developer ID Application signing certificate.
|
||||
- Edit `client/common/utils/executable_signature/executable_signature_defs.h` and set the `MACOS_CERT_DEVELOPER_ID` entry to match your Developer ID Application signing certificate.
|
||||
|
||||
### Install libraries
|
||||
### Build libraries
|
||||
|
||||
- Open a terminal in the root folder of the cloned repository.
|
||||
Go to subfolder `tools/deps` and run the following scripts in order. Libraries will be placed in `build-libs`.
|
||||
|
||||
- Create a build-libs folder.
|
||||
|
||||
- Download the following dependency zips using curl, as outlined in the example below. Downloading them from Nexus using your browser will cause GateKeeper to quarantine the executables (protoc, qmake, etc.) and refuse to run them.
|
||||
`curl --show-error --fail --cacert tools/cacert.pem --create-dirs -o build-libs/dependencyname.zip https://nexus.int.windscribe.com/repository/client-desktop/client-desktop/dependencies/current/macos/dependencyname.zip`
|
||||
- boost.zip
|
||||
- cares.zip
|
||||
- curl.zip
|
||||
- lzo.zip
|
||||
- openssl_ech_draft.zip
|
||||
- openvpn_2_6_1.zip
|
||||
- qt.zip
|
||||
- stunnel.zip
|
||||
- wireguard.zip
|
||||
|
||||
- Extract the dependency zips into the build-libs folder.
|
||||
```
|
||||
install_openssl_ech_draft
|
||||
install_qt
|
||||
install_cares
|
||||
install_curl
|
||||
install_boost
|
||||
install_lzo
|
||||
install_openvpn
|
||||
install_wireguard
|
||||
install_stunnel
|
||||
```
|
||||
|
||||
### Build the Windscribe 2.0 app
|
||||
|
||||
Go to subfolder tools and run 'build_all'. Assuming all goes well with the build, the installer will be placed in build-exe.
|
||||
Go to subfolder `tools` and run `build_all`. Assuming all goes well with the build, the installer will be placed in `build-exe`.
|
||||
|
||||
See `build_all --help` for other build options.
|
||||
|
||||
You will find the application logs in ~/Library/Application Support/Windscribe/Windscribe2.
|
||||
You will find the application logs in `~/Library/Application Support/Windscribe/Windscribe2`.
|
||||
|
||||
### Platform Notes:
|
||||
- If you make any changes to the helper source code (backend/mac/helper/src), you must increase the CFBundleVersion in backend/mac/helper/src/helper-info.plist. The installer only updates the helper if this bundle version number has changed.
|
||||
- The IKEv2 protocol will only function in builds produced by Windscribe. It's implementation on macOS utilizes the NEVPNManager API, which requires the 'Personal VPN' entitlement (com.apple.developer.networking.vpn.api) and an embedded provisioning profile file. If you wish to enable IKEv2 functionality, you will have to create an embedded provisioning file in your Apple Developer account and use it in the client project (See 'embedded.provisionprofile' in client/client.pro).
|
||||
- If you make any changes to the helper source code `backend/mac/helper/src`, you must increase the `CFBundleVersion` in `backend/mac/helper/src/helper-info.plist`. The installer only updates the helper if this bundle version number has changed.
|
||||
- The IKEv2 protocol will only function in builds produced by Windscribe. It's implementation on macOS utilizes the NEVPNManager API, which requires the 'Personal VPN' entitlement (`com.apple.developer.networking.vpn.api`) and an embedded provisioning profile file. If you wish to enable IKEv2 functionality, you will have to create an embedded provisioning file in your Apple Developer account and use it in the client project (Search for `embedded.provisionprofile` in `client/CMakeLists.txt` for details on where to place the embedded provisioning profile).
|
||||
|
||||
## Linux
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Build process tested on Ubuntu 20.04/ZorinOS 16 (gcc 9.3.0).
|
||||
|
||||
-Install build requirements:
|
||||
- sudo apt-get install build-essential git curl patchelf ruby-dev rpm libpam0g-dev software-properties-common libgl1-mesa-dev libnl-genl-3-dev libcap-ng-dev
|
||||
- sudo apt-get update
|
||||
- sudo apt-get install wget autoconf libtool cmake fakeroot python
|
||||
- sudo gem i fpm -f
|
||||
|
||||
- Install build requirements:
|
||||
```bash
|
||||
sudo apt-get install install build-essential git curl patchelf libpam0g-dev software-properties-common libgl1-mesa-dev fakeroot python3-pip zip unzip
|
||||
sudo apt-get update
|
||||
sudo apt-get install wget autoconf libtool
|
||||
# install cmake 3.23.x or newer (default for Ubuntu 20.04 is 3.16.3)
|
||||
wget -qO /etc/apt/trusted.gpg.d/kitware-key.asc https://apt.kitware.com/keys/kitware-archive-latest.asc
|
||||
echo "deb https://apt.kitware.com/ubuntu/ focal main" | tee /etc/apt/sources.list.d/kitware.list
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install cmake
|
||||
```
|
||||
- Clone the repository.
|
||||
|
||||
- Install python deps:
|
||||
- python3 -m pip install -r tools/requirements.txt
|
||||
```python
|
||||
python3 -m pip install -r tools/requirements.txt
|
||||
```
|
||||
|
||||
### Install libraries
|
||||
### Build libraries
|
||||
|
||||
- Create a build-libs folder in the root of the cloned repository.
|
||||
Go to subfolder `tools/deps` and run the following scripts in order. Libraries will be placed in `build-libs`.
|
||||
|
||||
- Download the following dependency zips from https://nexus.int.windscribe.com/#browse/browse:client-desktop:client-desktop/dependencies/current/linux and extract them into the build-libs folder.
|
||||
- boost.zip
|
||||
- cares.zip
|
||||
- curl.zip
|
||||
- lzo.zip
|
||||
- openssl_ech_draft.zip
|
||||
- openvpn_2_6_1.zip
|
||||
- qt.zip
|
||||
- stunnel.zip
|
||||
- wireguard.zip
|
||||
```
|
||||
install_openssl_ech_draft
|
||||
install_qt
|
||||
install_cares
|
||||
install_curl
|
||||
install_boost
|
||||
install_lzo
|
||||
install_openvpn
|
||||
install_wireguard
|
||||
install_stunnel
|
||||
```
|
||||
|
||||
### Build the Windscribe 2.0 app
|
||||
|
||||
Go to subfolder tools and run 'build_all'. Assuming all goes well with the build, the installer will be placed in build-exe.
|
||||
Go to subfolder `tools` and run `build_all`. Assuming all goes well with the build, the installer will be placed in `build-exe`.
|
||||
|
||||
See `build_all --help` for other build options.
|
||||
|
||||
The application installs to /opt/windscribe. You will find the application logs in ~/.local/share/Windscribe/Windscribe2.
|
||||
The application installs to `/opt/windscribe`. You will find the application logs in `~/.local/share/Windscribe/Windscribe2`.
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see our [Contributing Guidelines](https://github.com/Windscribe/Desktop-App/blob/master/CONTRIBUTING.md)
|
||||
|
||||
## License
|
||||
|
||||
The Windscribe Desktop Client app [License](https://github.com/Windscribe/Desktop-App/blob/master/LICENSE)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,9 +0,0 @@
|
||||
ECHO off
|
||||
ECHO ===== Installing Active Perl =====
|
||||
|
||||
rd /s /q "c:\perl_temp"
|
||||
|
||||
mkdir c:\perl_temp
|
||||
curl.exe https://downloads.activestate.com/ActivePerl/releases/5.26.3.2603/ActivePerl-5.26.3.2603-MSWin32-x64-a95bce075.exe -o c:\perl_temp\ActivePerl.exe -k -L
|
||||
call c:\perl_temp\ActivePerl.exe /exenoui /qn /norestart
|
||||
rd /s /q "c:\perl_temp"
|
||||
@@ -1,19 +0,0 @@
|
||||
ECHO off
|
||||
ECHO ===== Installing CppCheck =====
|
||||
|
||||
rd /s /q "c:\cppcheck_temp"
|
||||
|
||||
mkdir c:\cppcheck_temp
|
||||
curl.exe https://github.com/danmar/cppcheck/releases/download/2.2/cppcheck-2.2-x64-Setup.msi -o c:\cppcheck_temp\cppcheck-2.2-x64-Setup.msi -k -L
|
||||
call msiexec /i c:\cppcheck_temp\cppcheck-2.2-x64-Setup.msi /passive /norestart
|
||||
|
||||
set CPPCHECK_PATH=c:\Program Files\Cppcheck
|
||||
if exist %CPPCHECK_PATH% (
|
||||
echo %PATH% | findstr /i /c:"%CPPCHECK_PATH%" >nul
|
||||
if ERRORLEVEL 1 (
|
||||
echo Updating PATH environment variable...
|
||||
setx PATH "%PATH%;%CPPCHECK_PATH%" /M
|
||||
)
|
||||
)
|
||||
|
||||
rd /s /q "c:\cppcheck_temp"
|
||||
@@ -1,12 +0,0 @@
|
||||
ECHO off
|
||||
ECHO ===== Installing Python =====
|
||||
|
||||
rd /s /q "c:\python_temp"
|
||||
rd /s /q "c:\python27"
|
||||
|
||||
mkdir c:\python_temp
|
||||
curl.exe https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi -o c:\python_temp\python-2.7.18.msi -k -L
|
||||
call msiexec /i c:\python_temp\python-2.7.18.msi /quiet /qn /norestart ADDLOCAL=ALL
|
||||
if %errorlevel% == 3010 ( echo Success: reboot required ) else (if %errorlevel% == 0 ( echo Success ) else ( echo Installation failed with error code %errorlevel% ) )
|
||||
|
||||
rd /s /q "c:\python_temp"
|
||||
Reference in New Issue
Block a user