Giter Club home page Giter Club logo

desktop-app's Introduction

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.

Windows

Prerequisites

  • Windows 10/11.
  • Install git. 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 /tools/prepare_build_environment/windows).
  • Install Python 3 via either the Microsoft Store or from here. Minimum tested version is 3.6.8.
  • Install CMake v3.28.x or newer from here. The project will build with older versions of CMake, but you may encounter some warnings.
  • Install Ninja v1.10.2 from here
  • Install vcpkg from [here]((https://vcpkg.io/en/getting-started.html)
    • Create a VCPKG_ROOT environment variable referencing the full path to your vcpkg install folder.
    • Go to the vcpkg directory and git checkout 576379156e82da642f8d1834220876759f13534d.
    • Do the bootstrap step after the above command.
  • 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:\Program Files\Git\cmd
    • C:\[folder containing ninja.exe]
    • C:\[folder containing cmake.exe]
  • 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

In case of pyyaml building issue on Windows, execute the following:

pip install "cython<3.0.0" && pip install --no-build-isolation pyyaml==6.0
pip install setuptools wheel

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 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.

Build libraries

Go to subfolder tools/deps and run the following scripts in order. Append --arm64 to the command to build a library for Windows arm64. Libraries will be placed in build-libs[-arm64].

install_qt
install_openvpn_dco
install_wintun
install_wireguard
install_wstunnel

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. Append --arm64 to the command to build for Windows arm64.

See build_all --help for other build options.

Logs

  • Client app, location pings and installer helper: C:/Users/<user_name>/AppData/Local/Windscribe/Windscribe2
  • Service: <Windscribe_installation_path>/windscribeservice.log
  • Installer: <Windscribe_installation_path>/log_installer.txt
  • Uninstaller: system Debug View
  • <Windscribe_installation_path> defaults to C:/Program Files/Windscribe

Mac

Prerequisites

  • macOS Big Sur or newer, but preferably at least Monterey.
  • Install Xcode 14.2 (If on MacOS 11 Big Sur, you may use Xcode 13.2.1, but this is deprecated and not maintained going forward)
    • Xcode 15 is not currently supported. You may install a copy of Xcode 14.2 and use sudo xcode-select --switch /path/to/your/xcode to have both Xcode 13/14 and 15 simultaneously.
    • You must agree to the Xcode license (sudo xcodebuild -license)
    • You may need to run xcodebuild -runFirstLaunch or the Xcode GUI once if CMake complains that it can't find the compiler when building using the Xcode generator.
    • Note: these downloads will require you to first login to your Apple account.
  • 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
  • Install Auto-Tools:
  brew install libtool
  brew install automake
  • Install Python 3:
    • Minimum tested version is Python 3.6.8. 3.12.0 seems to have some issues with the python deps, so 3.11.6 is the latest recommended version. 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.6
  pyenv global 3.11.6
  • Install dmgbuild:
  python3 -m pip install dmgbuild
  • Install CMake v3.28.x or newer from here and make sure that the cmake executable is in the path and available for execution. The project will build with older versions of CMake, but you may encounter some warnings.
  • Install vcpkg from here
    • Create a VCPKG_ROOT environment variable referencing the full path to your vcpkg install folder.
    • Go to the vcpkg directory and git checkout 576379156e82da642f8d1834220876759f13534d.
    • Do the bootstrap step after the above command.
  • Clone the repository.
  • Install python deps:
  python3 -m pip install -r tools/requirements.txt
  • Install golang (minimum version 1.18): follow instructions from https://go.dev/doc/install

Install signing certificate (required)

  • Install your Developer ID Application signing certificate from your Apple Developer account in Keychain Access.
  • 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.

Build libraries

Go to subfolder tools/deps and run the following scripts in order. Libraries will be placed in build-libs.

install_qt
install_wireguard
install_wstunnel

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.

See build_all --help for other build options.

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. Its 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).

Logs

  • Client app and location pings: /Users/<user_name>/Library/Application Support/Windscribe/Windscribe2
  • Installer: /Users/<user_name>/Library/Application Support/Windscribe/Windscribe/log_installer.txt
  • Helper: /Library/Logs/com.windscribe.helper.macos/helper_log.txt

Linux

Build with Docker

The repository contains Dockerfile to simplify building process. Skip all the other sections of this manual if you decide to use Docker.

  • Generate builder image:
  sudo docker build -t ws-builder .
  • Install vcpkg:
  sudo docker run --rm -v .:/w ws-builder /bin/bash -c "git clone https://github.com/Microsoft/vcpkg.git && git checkout 576379156e82da642f8d1834220876759f13534d && ./vcpkg/bootstrap-vcpkg.sh --disableMetrics"
  • Build all the dependencies:
  for i in qt wireguard wstunnel; do sudo docker run --rm -v .:/w ws-builder /bin/bash -c "cd /w/tools/deps/ && ./install_$i"; done
  • Build the application:
  sudo docker run --rm -v .:/w ws-builder /bin/bash -c "export VCPKG_ROOT=/w/vcpkg  && cd /w/tools/ && ./build_all"

Prerequisites

Build process tested on Ubuntu 20.04/ZorinOS 16 (gcc 9.3.0).

  • Install build requirements:
  sudo apt-get update
  sudo apt-get install build-essential git curl patchelf libpam0g-dev software-properties-common libgl1-mesa-dev fakeroot python3-pip zip unzip libnl-genl-3-dev pkg-config libcap-ng-dev wget autoconf libtool libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev

  # install CMake 3.28.x or newer (default for Ubuntu 20.04 is 3.16.3).
  # Make sure that the cmake executable is in the path and available for execution.
  sudo snap install cmake --classic
  • Install vcpkg from here
    • Create a VCPKG_ROOT environment variable referencing the full path to your vcpkg install folder.
    • Go to the vcpkg directory and git checkout 576379156e82da642f8d1834220876759f13534d.
    • Do the bootstrap step after the above command.
  • Install golang (minimum version 1.18): follow instructions from https://go.dev/doc/install
  • Clone the repository.
  • Install python deps:
  python3 -m pip install -r tools/requirements.txt

Build libraries

Go to subfolder tools/deps and run the following scripts in order. Libraries will be placed in build-libs. When building Qt6, you may encounter an error relating to check_for_ulimit. If so, downgrade to CMake version 3.24.

install_qt
install_wireguard
install_wstunnel

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.

See build_all --help for other build options.

The application installs to /opt/windscribe.

Logs

  • Client app and location pings: ~/.local/share/Windscribe/Windscribe2
  • Helper: /opt/windscribe/helper_log.txt

Contributing

Please see our Contributing Guidelines

License

The Windscribe Desktop Client app License

desktop-app's People

Contributors

bernerdad avatar clayton-windscribe avatar gitcomit8 avatar jaxu avatar kudroma1 avatar m2jest1c avatar raspin0 avatar w1redch4d avatar wndscr avatar yegors avatar yerongai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

desktop-app's Issues

Not Working on MX Linux

Windscribe GUI is not working on MX Linux 21, debian based Linux OS, that uses sysvinit instead of systemd.
https://mxlinux.org/

Windscribe helper initialize error. Please reinstall the application or contact support.

GUI App 2.3.15_beta_x86_64 on openSUSE failed to connect

Operating System: openSUSE Leap 15.3
KDE Plasma Version: 5.18.6
KDE Frameworks Version: 5.76.0
Qt Version: 5.12.7
Kernel Version: 5.3.18-150300.59.54-default
OS Type: 64-bit
Processors: 12 ร— Intelยฎ Coreโ„ข i7-8700 CPU @ 3.20GHz
Memory: 15.5 GiB of RAM

> rpm -aq | grep windscribe
windscribe-2.3.15-1.x86_64
windscribe-cli-1.4-52.x86_64

When I click on connect button with every protocol, windscribe can't connect.

> sudo journalctl
...skipping...
Mar 29 16:41:24 cli-1-83 helper[22925]: <14>Mar 29 16:41:24 update-systemd-resolved: Adding IPv4 DNS Server 10.255.255.3
Mar 29 16:41:24 cli-1-83 update-systemd-resolved[22925]: Adding IPv4 DNS Server 10.255.255.3
Mar 29 16:41:24 cli-1-83 NetworkManager[1371]: <info>  [1648555884.9921] device (tun0): state change: unavailable -> disconnected (reaso>
Mar 29 16:41:24 cli-1-83 update-systemd-resolved[22927]: SetLinkDNS(15 1 2 4 10 255 255 3)
Mar 29 16:41:24 cli-1-83 helper[22927]: <14>Mar 29 16:41:24 update-systemd-resolved: SetLinkDNS(15 1 2 4 10 255 255 3)
Mar 29 16:41:24 cli-1-83 NetworkManager[1371]: <info>  [1648555884.9930] device (tun0): Activation: starting connection 'tun0' (ece4dbd5>
Mar 29 16:41:24 cli-1-83 NetworkManager[1371]: <info>  [1648555884.9935] device (tun0): state change: disconnected -> prepare (reason 'n>
Mar 29 16:41:24 cli-1-83 NetworkManager[1371]: <info>  [1648555884.9940] device (tun0): state change: prepare -> config (reason 'none', >
Mar 29 16:41:24 cli-1-83 NetworkManager[1371]: <info>  [1648555884.9944] device (tun0): state change: config -> ip-config (reason 'none'>
Mar 29 16:41:24 cli-1-83 NetworkManager[1371]: <info>  [1648555884.9947] device (tun0): state change: ip-config -> ip-check (reason 'non>
Mar 29 16:41:25 cli-1-83 dbus-daemon[1335]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org>
Mar 29 16:41:25 cli-1-83 dbus-daemon[1335]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.free>
Mar 29 16:41:25 cli-1-83 dbus-daemon[1335]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Uni>
Mar 29 16:41:25 cli-1-83 helper[22928]: Call failed: Unit dbus-org.freedesktop.resolve1.service not found.
Mar 29 16:41:25 cli-1-83 systemd[1]: Starting Network Manager Script Dispatcher Service...
Mar 29 16:41:25 cli-1-83 update-systemd-resolved[22929]: 'busctl' exited with status 1
Mar 29 16:41:25 cli-1-83 helper[22929]: <8>Mar 29 16:41:25 update-systemd-resolved: 'busctl' exited with status 1
Mar 29 16:41:25 cli-1-83 dbus-daemon[1335]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Mar 29 16:41:25 cli-1-83 systemd[1]: Started Network Manager Script Dispatcher Service.
Mar 29 16:41:25 cli-1-83 NetworkManager[1371]: <info>  [1648555885.0287] device (tun0): state change: ip-check -> unmanaged (reason 'unm>
Mar 29 16:41:25 cli-1-83 wickedd[1518]: error retrieving tun attribute from sysfs
Mar 29 16:41:25 cli-1-83 kded5[7262]: plasma-nm: virtual void SecretAgent::DeleteSecrets(const NMVariantMapMap&, const QDBusObjectPath&)
Mar 29 16:41:25 cli-1-83 kded5[7262]: plasma-nm: Path: "/org/freedesktop/NetworkManager/Settings"
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4458] manager: (tun0): new Tun device (/org/freedesktop/NetworkManage>
Mar 29 16:41:28 cli-1-83 systemd-udevd[22977]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
Mar 29 16:41:28 cli-1-83 update-systemd-resolved[22983]: Link 'tun0' coming up
Mar 29 16:41:28 cli-1-83 helper[22983]: <14>Mar 29 16:41:28 update-systemd-resolved: Link 'tun0' coming up
Mar 29 16:41:28 cli-1-83 update-systemd-resolved[22985]: Adding DNS Routed Domain .
Mar 29 16:41:28 cli-1-83 helper[22985]: <14>Mar 29 16:41:28 update-systemd-resolved: Adding DNS Routed Domain .
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4780] device (tun0): state change: unmanaged -> unavailable (reason '>
Mar 29 16:41:28 cli-1-83 update-systemd-resolved[22986]: Adding IPv4 DNS Server 10.255.255.3
Mar 29 16:41:28 cli-1-83 helper[22986]: <14>Mar 29 16:41:28 update-systemd-resolved: Adding IPv4 DNS Server 10.255.255.3
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4825] device (tun0): state change: unavailable -> disconnected (reaso>
Mar 29 16:41:28 cli-1-83 update-systemd-resolved[22988]: SetLinkDNS(16 1 2 4 10 255 255 3)
Mar 29 16:41:28 cli-1-83 helper[22988]: <14>Mar 29 16:41:28 update-systemd-resolved: SetLinkDNS(16 1 2 4 10 255 255 3)
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4841] device (tun0): Activation: starting connection 'tun0' (54bc3b1c>
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4848] device (tun0): state change: disconnected -> prepare (reason 'n>
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4854] device (tun0): state change: prepare -> config (reason 'none', >
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4857] device (tun0): state change: config -> ip-config (reason 'none'>
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.4863] device (tun0): state change: ip-config -> ip-check (reason 'non>
Mar 29 16:41:28 cli-1-83 dbus-daemon[1335]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.free>
Mar 29 16:41:28 cli-1-83 dbus-daemon[1335]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Uni>
Mar 29 16:41:28 cli-1-83 helper[22989]: Call failed: Unit dbus-org.freedesktop.resolve1.service not found.
Mar 29 16:41:28 cli-1-83 update-systemd-resolved[22990]: 'busctl' exited with status 1
Mar 29 16:41:28 cli-1-83 helper[22990]: <8>Mar 29 16:41:28 update-systemd-resolved: 'busctl' exited with status 1
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.5133] device (tun0): state change: ip-check -> secondaries (reason 'n>
Mar 29 16:41:28 cli-1-83 NetworkManager[1371]: <info>  [1648555888.5140] device (tun0): state change: secondaries -> unmanaged (reason '>
Mar 29 16:41:28 cli-1-83 wickedd[1518]: error retrieving tun attribute from sysfs
Mar 29 16:41:28 cli-1-83 kded5[7262]: plasma-nm: virtual void SecretAgent::DeleteSecrets(const NMVariantMapMap&, const QDBusObjectPath&)
Mar 29 16:41:28 cli-1-83 kded5[7262]: plasma-nm: Path: "/org/freedesktop/NetworkManager/Settings"
lines 35983-36032/36032 (END)

Windows: Can filters with a hard permit on a higher weight sublayer override blocks by Windscribe's?

A while ago, simplewall, basically a front-end for the WFP, had an issue that allowed specific filters (i.e. hard permit, higher weight sublayer) to override its block rules: henrypp/simplewall#689

For simplewall, this has been fixed by using a high sublayer weight and Veto filters (which cannot be overridden). This was done by adding the FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT flag to the block filters, which in effect clears the FWPS_RIGHT_ACTION_WRITE flag (see henrypp/simplewall@2b7a4a8).

I was wondering whether the (block) rules created for Windscribe's sublayer could be vulnerable to the same overrides that plagued simplewall.

I found some things that might need to be revisited:

  1. The applied weight to the sublayer is 0x100


    In comparision, simplewall uses the highest possible weight of 0xFFFF.

  2. The only flag applied to Windscribe's filter is FWPM_SUBLAYER_FLAG_PERSISTENT

    filter.flags = FWPM_SUBLAYER_FLAG_PERSISTENT;

    1. First off, it seems strange to apply a sublayer's flag to a filter. Is this even correct? Should it in fact be FWPM_FILTER_FLAG_PERSISTENT?
    2. FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT is not applied, so no Veto filters.

Inside the simplewall issue, you can find a piece of code that allowed for easy testing (it may be rewritten for testing Windscribe's sublayer).

Linker Error CLI [MacOS]

dyld_info -dependents ./windscribe-cli
./windscribe-cli [x86_64]:
    -dependents:
        attributes     load path
                       /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
                       /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
                       /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
                       /System/Library/Frameworks/Security.framework/Versions/A/Security
                       /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
                       /Users/aaa/Documents/client-desktop/build-libs/protobuf/lib/libprotobuf.28.dylib
                       @rpath/QtGui.framework/Versions/5/QtGui
                       @rpath/QtNetwork.framework/Versions/5/QtNetwork
                       @rpath/QtCore.framework/Versions/5/QtCore
                       /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
                       /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
                       /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
                       /System/Library/Frameworks/AGL.framework/Versions/A/AGL
                       /usr/lib/libc++.1.dylib
                       /usr/lib/libSystem.B.dylib
                       /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
                       /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
                       /usr/lib/libobjc.A.dylib

Notice a couple lines in: /Users/aaa/Documents/client-desktop/build-libs/protobuf/lib/libprotobuf.28.dylib.

I was able to fix it but I had to remove the code signature.

If anyone else is running into this problem you can jerry-rig it to work with:

install_name_tool -change "/Users/aaa/Documents/client-desktop/build-libs/protobuf/lib/libprotobuf.28.dylib" "/Applications/Windscribe.app/Contents/Frameworks/libprotobuf.28.dylib" ./windscribe-cli
codesign --remove-signature ./windscribe-cli

Fix minimize bug on ubuntu

Hi dear windscribe developers
thanks for new gui app for linux

this app has a bug and that is that we can't minimize this app to system tray.
it should always be open and when we want to just close the app, it ask us if we want to close windscribe and then it completely quit and stopped the app.
we have a similar "start minimized" section in settings but I don't know what is it!

It was great if when we click on close arrow in the app, it just minimized the app to tray and if we want to quit the app we do it by right click on tray icon and press "Exit"

best regards

Build windscribe for arm64

I want to install windscribe on ubuntu 20.04 arm64, I suppose the source code on this repository is only for amd64 as I can't seem to complete ./build_all. The error looks like this:

INFO: Creating Debian package...
dpkg-deb: building package 'windscribe' in '/home/parallels/Desktop-App/temp/installer/InstallerFiles/../windscribe_2.4.1_amd64.deb'.
Traceback (most recent call last):
  File "./build_all.py", line 855, in <module>
    pre_checks_and_build_all()
  File "./build_all.py", line 811, in pre_checks_and_build_all
    build_all(win_cert_password)
  File "./build_all.py", line 718, in build_all
    build_installer_linux(configdata, qt_root)
  File "./build_all.py", line 654, in build_installer_linux
    dest_package_path + ".deb"])
  File "/home/parallels/Desktop-App/tools/deps/installutils.py", line 180, in RunCommand
    proc.ExecuteWithRealtimeOutput(command_and_args, env=env, shell=shell)
  File "/home/parallels/Desktop-App/tools/base/process.py", line 27, in ExecuteWithRealtimeOutput
    process_handle = subprocess.Popen(command_and_args, stdout=subprocess.PIPE, env=env, shell=shell)
  File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

It would be awesome to be able to install windscribe on arm64 linux platforms.

Thank you !

Accessibility

Hello and thank you for building this great VPN and app but there are accessibility issues with nvda screen reader on Windows with this app we cannot access locations or maybe by even connecting and disconnecting the VPN NZ is not working because nvda 10 not read anything at all all for us can you please make it accessible with nvda screen reader thank you

Build Windscribe for `sysvinit`

I have MX Linux with sysvinit (non-systemd) boot.
Following is the message I get when installing .deb file

$ sudo dpkg -i windscribe_2.3.15_beta_amd64.deb 
Selecting previously unselected package windscribe.
(Reading database ... 348625 files and directories currently installed.)
Preparing to unpack windscribe_2.3.15_beta_amd64.deb ...
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
Finish pre-install script
Unpacking windscribe (2.3.15) ...
Setting up windscribe (2.3.15) ...
Created symlink /etc/systemd/system/multi-user.target.wants/windscribe-helper.service โ†’ /etc/systemd/system/windscribe-helper.service.
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
dpkg: error processing package windscribe (--install):
 installed windscribe package post-installation script subprocess returned error exit status 1
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for desktop-file-utils (0.26-1) ...
Processing triggers for mailcap (3.69) ...
Errors were encountered while processing:
 windscribe

Please let me know how to proceed.

Error when creating the Debian package

When running ./build_all --no-sign, it gets through most of it before spitting out a few errors and failing:

INFO: Copying wstunnel...
windscribewstunnel
INFO: Copying license files...
open_source_licenses.txt
INFO: Creating Debian package...
dpkg-deb: error: maintainer script 'preinst' has bad permissions 664 (must be >=0555 and <=0775)
ERROR: Command failed: "['fakeroot', 'dpkg-deb', '--build', '/home/builduser/src/desktop-v2/temp/installer/InstallerFiles/../windscribe_2.3.11_beta_amd64']"
All done: 3 minutes 42 seconds elapsed

I'm doing this in a fresh ubuntu Docker image with this increasingly-messy script that I created as per the README. I was originally doing all of this as root and assumed it to be the source of the errors, so I changed the script to run the build process as a normal user, but this didn't change anything.

[Arch] AttributeError: module 'messages' has no attribute 'Verbose'

I'm attempting to compile on Arch and i get this error with python:

Traceback (most recent call last):
  File "/home/gingka/Builds/Windscribe-desktop/tools/deps/./install_openssl.py", line 117, in <module>
    current_os = utl.GetCurrentOS()
  File "/home/gingka/Builds/Windscribe-desktop/tools/base/utils.py", line 27, in GetCurrentOS
    msg.Verbose("Detected OS: \"{}\"".format(_OS_CURRENT_NAME))
AttributeError: module 'messages' has no attribute 'Verbose'

This was after installing messages, as its not in the requirements.txt.

System info:
Kernel: 5.14.13-1mbp-16.1-linux-wifi
Python version: 3.10.1

[Request] Official build for Opensuse

There is literally no official VPN app for Opensuse apart from NordVPN, yikes!

Opensuse has been around as long as Ubuntu and us users have to go by using openvpn from every other major VPN provider.

Its also supports .rpm builds. So, please build an official app for Opensuse, if its only for the Tumbleweed version its good enough!

Error when running install_qt

I'm getting an error when running install_qt. I'm on an Arch system, I have all the dependencies installed as per the documentation. I am using Python 2.7.18 and I can't find any exact reason why the build is failing. Everything else builds fine. I attached a text file containing the output of install_qt. Let me know if there's any other logs that can help resolve this. Thanks!
output.txt

Linux(Arch): OSError: [Errno 2] No such file or directory when attempting to build rpm and deb images with build_all

INFO: Creating Debian package...
dpkg-deb: building package 'windscribe' in '/home/daniel/Documents/RandomClones/desktop-v2/temp/installer/InstallerFiles/../windscribe_2.3.11_beta_amd64.deb'.
Traceback (most recent call last):
  File "./build_all.py", line 747, in <module>
    BuildAll()
  File "./build_all.py", line 685, in BuildAll
    BuildInstallerLinux(configdata, qt_root)
  File "./build_all.py", line 619, in BuildInstallerLinux
    iutl.RunCommand(["fpm", "-s", "deb", "-p", rpm_package_name, "-t", "rpm", dest_package_path + ".deb"])
  File "/home/daniel/Documents/RandomClones/desktop-v2/tools/deps/installutils.py", line 180, in RunCommand
    proc.ExecuteWithRealtimeOutput(command_and_args, env=env, shell=shell)
  File "/home/daniel/Documents/RandomClones/desktop-v2/tools/base/process.py", line 27, in ExecuteWithRealtimeOutput
    process_handle = subprocess.Popen(command_and_args, stdout=subprocess.PIPE, env=env, shell=shell)
  File "/home/daniel/.pyenv/versions/2.7.18/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/home/daniel/.pyenv/versions/2.7.18/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

I am getting the output above when running ./build_all --no-sign. I am on Arch and I have dpkg and fpm installed. Not sure what the issue is here, everything seems fine.

GUI broken on wayland

On wayland the GUI has is quite unusable, some buttons do not work (eg close, minimize), parts of the gui freeze, very difficult to drag the window.

Investigating I have noticed that on my system it uses xwayland.

So I tried launching it with QT_QPA_PLATFORM=wayland, it shows:

QT_QPA_PLATFORM=wayland /opt/windscribe/Windscribe
[{gmt_time}      0.000] [qt.qpa.plugin]	Could not find the Qt platform plugin "wayland" in ""
[{gmt_time}      0.000] [default]	This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

zsh: IOT instruction (core dumped)  QT_QPA_PLATFORM=wayland /opt/windscribe/Windscribe

Other QT apps like dolphin work fine for me and natively under wayland.

OpenVPN --up script failure

Built for linux, Ubuntu 21.04,and am unable to connect. log shows the below message, unsure how to proceed. The update-resolv-conf.sh is executable, not sure what other permissions would have an effect. Windscribe-cli connects without issue.

E [011221 04:10:07:015 45.932] [connection] OpenVPN version: "2.5.4"
E [011221 04:10:07:015 45.932] [default] "cd '%HOMELOCATION%/.local/share/Windscribe/Windscribe2' && /usr/local/windscribe//windscribeopenvpn --config "%HOMELOCATION%/.local/share/Windscribe/Windscribe2/config.ovpn" --management 127.0.0.1 33099 --management-query-passwords --management-hold"
E [011221 04:10:07:015 45.933] [connection] openvpn process runned: 33099
E [011221 04:10:07:019 45.936] [connection] openvpn process finished before connected to openvpn socket
E [011221 04:10:07:019 45.936] [connection] answer from openvpn process, answer = "2021-11-30 23:10:07 Note: Treating option '--ncp-ciphers' as '--data-ciphers' (renamed in OpenVPN 2.5).\nOptions error: --up script fails with '/etc/windscribe/update-resolv-conf': Permission denied (errno=13)\nOptions error: Please correct this error.\nUse --help for more information.\n"

Windscribe preventing Internet access - Latest Update 2.3.16 or whatever

Yesterday, I updated my Windscribe to 3.1.6. Then, when I got home, I could not access the internet. When I uninstalled Windscribe, I magically had internet again. I don't know what is going on here but unless you know the problem I'm going to switch to Nord for the times being. Sorry, I did refer three friends to you guys though! Love you still!

Linux (Ubuntu) : No Internet Connectivity

Hi,
I compiled the application on Linux (Ubuntu 21.10), and it looks like there's an issue when logging in :
Screenshot from 2021-11-12 12-21-20

I did not find any useful information in the logs, any idea where the issue could come from ? (My network isn't proxified, restricted or firewalled, and other applications have no trouble connecting to internet)

logs.txt

Connection Problem in Ubuntu 22.04

I had Ubuntu 21.10 and Windscribe v2.3.15(Beta) work fine and fast.
After upgrade to 22.04 Windscribe not connecting at all and after trying and fail my OS internet is brake and noting work and show DNS error in chrome. I have to reboot the system to work internet again.
I remove Windscribe and install again, but not working.

Consider releasing binaries

Could you please provide binaries (stating what dependencies these may have)? Not everyone can build this, and to be honest using things like Python 2, which is deprecated, does not make it easier...

Invalid Signatures with 2.3.15

I am given a "Can't start the engine" error when attempting to open Windscribe on Arch Linux. I looked at ~/.local/share/Windscribe/Windscribe2/log_gui.txt and found the following output:

[231221 22:54:49:715      0.342] [basic]	 "Calling Engine at: /usr/local/windscribe/WindscribeEngine"
[231221 22:54:49:715      0.342] [basic]	 Verifying  "/usr/local/windscribe/WindscribeEngine"  with  "/usr/local/windscribe/signatures/WindscribeEngine.sig"  and  ":/keys/linux/key.pub"
[231221 22:54:49:735      0.361] [basic]	 Executable's signature does not match signature file
[231221 22:54:49:735      0.362] [basic]	 Engine signature invalid

This error is not present when running a binary installed via compiling from source, but is present when installing from the deb binary on the releases page.
Is this on your guys' end, or my end? Thanks!

Prevent launching of Windscribe if `-silent` is passed on the command-line

Currently, the installer launches Windscribe after the installation process has completed even when the -silent flag was passed on the command-line. This prevents the installer from easily being used in package managers such as chocolatey (I am the maintainer of the Windscribe chocolatey package): The installation process hangs as the Windscribe application is still open.

Not launching the application after the installation process when -silent is provided would prevent ugly hacks such as waiting for a set period of time and then killing the Windscribe application.

Windscribe doesn't create a new network interface

Windscribe doesn't create a new network interface, which can be proved by checking the qbittorrent network settings and also the kde network settings, which usually shows if a network is created(like protonvpn creates a proton0)

OS : Arch Linux
App : tried on both windscribe-cli and windscribe-gui(AUR)

windscribe-cli: wrong library location

on macOS, windscribe-cli won't start (both for v2.3.16 DMG from the website and v2.4.1 from GithHub) because the directory for the protobuf library is wrong.

 % otool -L windscribe-cli
windscribe-cli:
	/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1894.60.100)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1677.104.0)
	/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 1069.24.0)
	/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 59306.140.5)
	/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 1061.141.1)
	/Users/aaa/Documents/client-desktop/build-libs/protobuf/lib/libprotobuf.28.dylib (compatibility version 29.0.0, current version 29.3.0)
	@rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.12.0, current version 5.12.11)
	@rpath/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.12.0, current version 5.12.11)
	@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.12.0, current version 5.12.11)
	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
	/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 902.1.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 52.0.0)
	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1677.104.0)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

instead of /Users/aaa/Documents/client-desktop/build-libs/protobuf/lib/libprotobuf.28.dylib this should probably be @executable_path/../Frameworks/libprotobuf.28.dylib as it is for the Windscribe executable.

Skip programs, domains or ips traffic to being routed in the VPN

Hello,

Thanks for the new application version looks very cool!

I want AWS Workspace to run directly, without route its traffic through the VPN. Is there an option to configure Windscribe for that?

I have also a similar case, where I cannot reach my router configuration at 192.168.x.x when I have Windscribe activated. Is there a way to put a allow list for selected ips / domains?

[Feature request] CSV import split tunneling hosts

Split tunneling is a great feature. It allows work around censorship and comply with corporate policies. However, this is not a case for a large scale censorship/filtering policy (e.g. Russian Roskomnadzor) where you need to workaround for thousands of hosts.

Please allow load hosts from any computer-generated file, for example CSV.

๐Ÿš€ `Feature Request` Connect on Boot

Hello, I would like to suggest adding a Connect on Boot function to Windscribe Desktop App.

But first, let me give a drill-down on what is Connect on Boot.

What is Connect on Boot?

  • This allows the VPN app to load and connect before the user successfully login on the Computer Login Screen.
  • This is completely different from Connect on Login which requires the user successfully logged in to the computer and for the VPN app to successfully load on the program startup queue before it starts connecting.
  • Connect on Boot is the perfect companion for users who have Killswitch turned on

Benefits of Connect on Boot?

  • User who is using the Windscribe App doesn't have to wait it to load and connect after successfully logged in to the computer, thus they're able to browse immediately on VPN-connected state.
  • User doesn't have to use a Startup Optimizer program to forcefully re-arrange the program startup queue by delaying other startup programs to give way to the Windscribe Desktop app to ensure it loads first.
  • User can fully enjoy using the Killswitch feature on without the sacrifice of waiting time for the Windscribe Desktop app to connect to be able to start browsing the internet.

Which VPN or VPN program currently has Connect on Boot feature on?

  • WireGuard Official app
  • Mullvad Desktop App
  • VyprVPN Desktop App

For your kind consideration.

Close to tray feature request

Hi there.

The Windscribe app on Ubuntu doesn't have a "Close to tray" feature, so you have to keep the window opened and if you try to close it, the process will end and it won't continue in the background. Can you add it to the program?

Thank you for developing this app.

Change /usr/local/bin/windscribe to /usr/bin/windscribe

Currently, the Linux binary gets installed to /usr/local/bin. This is less than ideal for a variety of reasons:

  • It's not where it's supposed to be in the Filesystem Heirachy. /usr/local/bin is supposed to be used for binaries compiled by the user themselves, not binaries distributed by a vendor like Windscribe.
  • /usr/local/bin does not play well with immutable distributions. This directory does not work with rpm-ostree at all, and as such it would be impossible for Silverblue/Kinoite users to use Windscribe's VPN app. I haven't tested if this works on openSUSE MicroOS yet, but it is guaranteed to break transactional updates on all openSUSE variants. /usr/local/bin is in its own BTRFS subvolume and does not get rolled back along with the rest of the system by Snapper. If a user does a snapper rollback, they will end up with a system where the binary in /usr/local/bin is newer than whatever zypper thinks it is.
  • This also does not play well with Qubes OS's TemplateVMs. /usr/local/bin is not a persistent directory on Qubes TemplateVMs, and will get lost when the user creates an AppVM based on it.

[Bug] iptables conflict with Docker

Hi team,

I have recently installed the GUI app on Ubuntu 20.04 alongside Docker (20.10.12, build e91ed57). When started, Docker defines a bunch of iptables rules which Windscribe resets when connected. I have uninstalled Windscribe GUI and tried using the CLI which seems to correctly restore the iptables rules when disconnected.

Let me know if further details are needed here.

Deyan

[Bug] Always-on firewall Xorg issue in Pop OS

When leaving the always-on firewall and having it auto-start on boot, in Xorg the login screen just hangs (breaks). This issue doesn't happen on Wayland.

I have completely disabled Gufw by the way.

I didn't get to test this on another Ubuntu based distribution.

Stunnel not extracting

(Building from latest Master)

Currently building dependencies for Windscribe and when running ./install_stunnel stunnel fails to extract:

Installing stunnel...
Loading: "vars/stunnel.yml"
Cleaning: "/home/yaslam/.gitcloned/Desktop-App/temp/stunnel"...
Downloading: "stunnel-5.62.tar.gz"
####################################################################################### 100.0%
Extracting: "stunnel-5.62.tar.gz"

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
ERROR: Error extracting archive file.
All done: 0 seconds elapsed

When checking temp/stunnel it does appear to be in the correct format though:

stunnel-5.62.tar.gz

When running ./build_all it fails because stunnel was not built in the first place.

ERROR: Library "stunnel" is not installed.
Deleting secrets...

[Bug?] Not working at all on Debian

Opening this issue because I didn't find the answer on other issues. Also I'm labelling this as a "bug?" because I don't really know if it's only on my machines.

So, when I try to connect to any location, it fails everytime. I tried UDP, Ike and TCP, both via automatic and manual mode. I also tried with the Docked mode on and off.

OS & app verison I have this issue

  • Debian 11 Bullseye & Windscribe v2.4.1
  • Q4OS Centaurus (based on Debian 10 Buster) & Windscribe v2.3.15 (latest release)

Below the steps I made:

Q4OS

  • Download file from Windscribe website
  • Installed via dpkg command
  • Log In
  • Can't connect
  • Tried with Windscribe CLI (already installed): worked on Switzerland server (not on US server, it was the day US servers didn't work)
  • Uninstalled both version (GUI and CLI) as it was suggested not to keep the CLI version
  • Re-install of GUI version
  • Still can't connect

Debian

  • Cloned the repository
  • Followed istruction for build
  • Installed the brand new .deb file
  • Log In
  • Can't connect either
  • Recover and install the old CLI, as in Q4OS worked
  • API error and can't connect, followed by uninstall of CLI version

To be fair, on Q4OS I also tried the browser extension on Brave (Chrome based) and autopilot mode worked, but I still couldn't connect to "chosen" server.

If you need more informations, reach me out!

WStunnel not working on Linux

I successfully compiled and installed the app on Linux Mint 20.2. Manually I set connection protocol to each available ones (UDP, TCP, Stealth, WStunnel, and WireGuard) and tested, They all worked except WStunnel.

There was this error message in the log file:
[wstunnel] wstunnel process error: "execvp: Permission denied"
Looked into /usr/local/windscribe folder, and I found windscribewstunnel was not set executable. After I did chmod +x /usr/local/windscribe/windscribewstunnel, WStunnel protocol also works now.

By the way, IKEv2 isn't available at all. Is it not supported on Linux?

Cannot skip TAP driver installation during silent install

Version: 2.3.16, Windows

When I invoke the installer with the -silent command-line argument, a dialog is still shown prompting the user to allow installation of the TAP driver:

image

This poses a challenge for completely automated installations, as the installer will block on this step and requires human intervention to accept the driver install.

In pre-2.0 versions, there was a /NODRIVER command-line argument that effectively delayed the install of the TAP driver until runtime. Are there any plans to reintroduce this feature?

Windscribe stops and disables firewalld

Why does Windscribe stop and disable the firewalld during installation?

I'm running Fedora 36 KDE.
According to Fedora docs considering the benefits of firewalld, I don't think Windscribe completly nuking it is a good thing.

I have had connection problems (the exclamation mark saying "limited connectivity") after installing the Windscribe rpm and I couldn't connect to internet without enabling Windscribe first.

Since then I've manually enabled firewalld again and everything has been okay, and Windscribe does still work (surprisingly).

So it is really necessary to stop and disable firewalld?

I think this issues might be related as well:
#2
#56

https://www.reddit.com/r/Windscribe/comments/k0s4r8/windscribe_ruins_opensuse_install/

๐Ÿš€ `Feature Request` Server Selection Enhancement

Hello, I would like to suggest a UX enhancement when user selects their preferred VPN server location.

If the user wants to connect to Canada East, then they are able to connect through the following method.

Server Option

  • Canada East
    • Halifax - Crosby
    • Montreal - Bagel Poutine
    • Montreal - Expo 67
    • Toronto - Comfort Zone
    • Toronto - The 6

Connection UX Experience:

  • If the user doesn't have any specific POP to connect to and just wanted to connect to the best POP available in the country, they can select Canada East and Windscribe app will connect with any of the POP option with the fastest ping at the time of connecting.

  • If the user wants to connect to a specific POP. They can select any of the POP option (e.g. Halifax - Crosby) and they will be connected to that specific POP.

Why is this beneficial?

  • The select any server in the Country option is a perfect alternative for Best Location option, wherein if the user doesn't like to connect to the suggested country due to any reason, and they have a preferred country they want to connect to. They can use this option to give the best experience for the user based on their individual preferences.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.