Skip to content

Commit f7727a5

Browse files
committed
v2.17.2
1 parent 91c51f0 commit f7727a5

File tree

195 files changed

+2505
-4764
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

195 files changed

+2505
-4764
lines changed

.gitlab-ci.yml

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,6 @@ variables:
8888
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
8989
--create-dirs -o ${BUILD_LIBS_FOLDER}/openvpn_dco.zip "${NEXUS_PATH_DEPS}/${OS_IDENTIFIER}/openvpn_dco.zip"
9090

91-
.download_dependency_qt:
92-
script:
93-
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
94-
--create-dirs -o ${BUILD_LIBS_FOLDER}/qt.zip "${NEXUS_PATH_DEPS}/${OS_IDENTIFIER}/qt.zip"
95-
96-
.download_dependency_qt_static:
97-
script:
98-
- if ($SKIP_DOWNLOAD -ne "1") { curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem --create-dirs -o ${BUILD_LIBS_FOLDER}/qt-static.zip "${NEXUS_PATH_DEPS}/${OS_IDENTIFIER}/qt-static.zip" }
99-
10091
.download_dependency_wintun:
10192
script:
10293
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
@@ -121,14 +112,12 @@ variables:
121112
script:
122113
- Set-Variable -name SKIP_DOWNLOAD -value "0"
123114
- !reference [.download_dependency_openvpn_dco, script]
124-
- !reference [.download_dependency_qt_static, script]
125115
- !reference [.download_dependency_wintun, script]
126116
- !reference [.download_dependency_wireguard, script]
127117
- !reference [.download_dependency_wstunnel, script]
128118

129119
.download_dependencies_posix:
130120
script:
131-
- !reference [.download_dependency_qt, script]
132121
- !reference [.download_dependency_wireguard, script]
133122
- !reference [.download_dependency_wstunnel, script]
134123
- !reference [.download_vcpkg_cache, script]
@@ -146,14 +135,12 @@ variables:
146135
variables:
147136
GIT_STRATEGY: clone
148137
VCPKG_ROOT: '%VCPKG_ROOT_WINDOWS%'
149-
VCPKG_DEFAULT_BINARY_CACHE: '%VCPKG_DEFAULT_BINARY_CACHE_WINDOWS%'
150138
script:
151139
# Backup OS identifier/build libs values. Set flags to get the x86 Qt libs if on arm64.
152140
- Set-Variable -name OS_IDENTIFIER_BAK -value "${OS_IDENTIFIER}"
153141
- Set-Variable -name BUILD_LIBS_FOLDER_BAK -value "${BUILD_LIBS_FOLDER}"
154142
- if ("${ARCH_FLAG}" -eq "--arm64") { Set-Variable -name OS_IDENTIFIER -value "windows"; Set-Variable -name BUILD_LIBS_FOLDER -value "build-libs" }
155143
- if ("${ARCH_FLAG}" -ne "--arm64") { Set-Variable -name SKIP_DOWNLOAD -value "1" }
156-
- !reference [.download_dependency_qt_static, script]
157144
- IF(Test-Path .\$BUILD_LIBS_FOLDER\) {Get-ChildItem .\$BUILD_LIBS_FOLDER\*.zip | Foreach {.\tools\bin\7z.exe x $_.FullName -o"$BUILD_LIBS_FOLDER\"}}
158145
# Reset to original values
159146
- Set-Variable -name OS_IDENTIFIER -value "${OS_IDENTIFIER_BAK}"
@@ -421,7 +408,6 @@ build:win:arm64:mr:
421408
# Need the x64 Qt package so we can reference it as the QT_HOST_PATH in build_all.
422409
- Set-Variable -name OS_IDENTIFIER -value "windows"
423410
- Set-Variable -name BUILD_LIBS_FOLDER -value "build-libs"
424-
- !reference [.download_dependency_qt_static, script]
425411
- 'IF(Test-Path .\$BUILD_LIBS_FOLDER\) {Get-ChildItem .\$BUILD_LIBS_FOLDER\*.zip | Foreach {.\tools\bin\7z.exe x $_.FullName -o"$BUILD_LIBS_FOLDER\"}}'
426412
- Set-Variable -name OS_IDENTIFIER -value "windows-arm64"
427413
- Set-Variable -name BUILD_LIBS_FOLDER -value "build-libs-arm64"
@@ -528,7 +514,7 @@ build:aarch64_ubuntu:installer:
528514
script:
529515
- OS_IDENTIFIER="linux-arm64"
530516
- !reference [.build_linux_installer_common, script]
531-
- tools/build_all --ci-mode --sign --build-deb --build-rpm
517+
- tools/build_all --ci-mode --sign --arm64 --build-deb --build-rpm
532518
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
533519
--upload-file build-exe/windscribe_${VERSION}_arm64.deb "${NEXUS_PATH_BRANCH_UPLOAD}/${OS_IDENTIFIER}/windscribe_${VERSION}_arm64.deb"
534520
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
@@ -545,7 +531,7 @@ build:aarch64_ubuntu_cli:installer:
545531
script:
546532
- OS_IDENTIFIER="linux-arm64"
547533
- !reference [.build_linux_installer_common, script]
548-
- tools/build_all --ci-mode --sign --build-cli-only --build-deb --build-rpm
534+
- tools/build_all --ci-mode --sign --arm64 --build-cli-only --build-deb --build-rpm
549535
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
550536
--upload-file build-exe/windscribe-cli_${VERSION}_arm64.deb "${NEXUS_PATH_BRANCH_UPLOAD}/${OS_IDENTIFIER}/windscribe-cli_${VERSION}_arm64.deb"
551537
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
@@ -563,7 +549,7 @@ build:aarch64_ubuntu:installer:mr:
563549
script:
564550
- OS_IDENTIFIER="linux-arm64"
565551
- !reference [.build_linux_installer_common, script]
566-
- tools/build_all --ci-mode --sign --build-deb --build-rpm
552+
- tools/build_all --ci-mode --sign --arm64 --build-deb --build-rpm
567553
rules:
568554
- if: $BUILD_LINUX_ARM64 == "y" && $CI_COMMIT_TAG == null && $CI_COMMIT_BRANCH == null && $NIGHTLY_TEST_BUILD != "y"
569555

@@ -575,7 +561,7 @@ build:aarch64_ubuntu_cli:installer:mr:
575561
script:
576562
- OS_IDENTIFIER="linux-arm64"
577563
- !reference [.build_linux_installer_common, script]
578-
- tools/build_all --ci-mode --sign --build-cli-only --build-deb --build-rpm
564+
- tools/build_all --ci-mode --sign --arm64 --build-cli-only --build-deb --build-rpm
579565
rules:
580566
- if: $BUILD_LINUX_ARM64 == "y" && $BUILD_LINUX_CLI == "y" && $CI_COMMIT_TAG == null && $CI_COMMIT_BRANCH == null && $NIGHTLY_TEST_BUILD != "y"
581567

@@ -587,7 +573,7 @@ build:aarch64_ubuntu:installer:tagged:
587573
script:
588574
- OS_IDENTIFIER="linux-arm64"
589575
- !reference [.build_linux_installer_common, script]
590-
- tools/build_all --ci-mode --sign --build-deb --build-rpm
576+
- tools/build_all --ci-mode --sign --arm64 --build-deb --build-rpm
591577
- VERSION_NO_SUFFIX=$(python3 tools/base/extract.py --no-suffix)
592578
- if [[ $CI_COMMIT_TAG =~ ^v[0-9] ]]; then TAG=${CI_COMMIT_TAG:1}; else TAG=${CI_COMMIT_TAG}; fi
593579
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem
@@ -605,7 +591,7 @@ build:aarch64_ubuntu_cli:installer:tagged:
605591
script:
606592
- OS_IDENTIFIER="linux-arm64"
607593
- !reference [.build_linux_installer_common, script]
608-
- tools/build_all --ci-mode --sign --build-cli-only --build-deb --build-rpm
594+
- tools/build_all --ci-mode --sign --arm64 --build-cli-only --build-deb --build-rpm
609595
- VERSION_NO_SUFFIX=$(python3 tools/base/extract.py --no-suffix)
610596
- if [[ $CI_COMMIT_TAG =~ ^v[0-9] ]]; then TAG=${CI_COMMIT_TAG:1}; else TAG=${CI_COMMIT_TAG}; fi
611597
- curl --silent --show-error --fail -u "${NEXUS_USERNAME}:${NEXUS_PASSWORD}" --cacert tools/cacert.pem

README.md

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,12 @@ The Windscribe VPN desktop application hides your physical location, blocks ads
3939
- Windows 10/11 x86_64. We do not currently support building on the WoA (arm64) platform.
4040
- Install [git](https://git-scm.com/downloads). When installing Git, you can stick with all the default options presented to you by the installer.
4141
- Clone the repository.
42-
- Install Visual Studio Community Edition 2019 (run `install_vs.bat` from `/tools/prepare_build_environment/windows`).
42+
- Install Visual Studio Community Edition 2022.
4343
- Install Python 3 via either the Microsoft Store or from [here](https://www.python.org/downloads/). Minimum tested version is 3.6.8.
4444
- Install CMake v3.28.x or newer from [here](https://cmake.org/download/). The project will build with older versions of CMake, but you may encounter some warnings.
4545
- Install Ninja v1.10.2 from [here](https://github.com/ninja-build/ninja/releases)
4646
- Install Windows 11 SDK (10.0.22000) from [here](https://go.microsoft.com/fwlink/?linkid=2173743). Newer versions may work as well.
47-
- Install vcpkg from [here](https://vcpkg.io/en/getting-started.html)
48-
- Create a `VCPKG_ROOT` environment variable referencing the full path to your vcpkg install folder.
49-
- Go to the vcpkg directory and `git checkout 52fc0d8c1e2cbd12c9907284566f5c17e5ef0d12`.
50-
- Do the bootstrap step after the above command.
47+
- Install vcpkg using the script `/tools/vcpkg/install_ci/vcpkg_install.bat`
5148
- 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.
5249
- `C:\Program Files\Git\cmd`
5350
- `C:\[folder containing ninja.exe]`
@@ -88,7 +85,6 @@ pip install "cython<3.0.0" && pip install --no-build-isolation pyyaml==6.0
8885
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]`.
8986

9087
```
91-
install_qt
9288
install_openvpn_dco
9389
install_wintun
9490
install_wireguard
@@ -147,10 +143,7 @@ See `build_all --help` for other build options.
147143
```
148144

149145
- Install CMake v3.28.x or newer from [here](https://cmake.org/download/) 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.
150-
- Install vcpkg from [here](https://vcpkg.io/en/getting-started.html)
151-
- Create a `VCPKG_ROOT` environment variable referencing the full path to your vcpkg install folder.
152-
- Go to the vcpkg directory and `git checkout 52fc0d8c1e2cbd12c9907284566f5c17e5ef0d12`.
153-
- Do the bootstrap step after the above command.
146+
- Install vcpkg using the script `/tools/vcpkg/install_ci/vcpkg_install.sh`
154147
- Clone the repository.
155148
- Install python deps:
156149
```python
@@ -167,7 +160,6 @@ See `build_all --help` for other build options.
167160
Go to subfolder `tools/deps` and run the following scripts in order. Libraries will be placed in `build-libs`.
168161

169162
```
170-
install_qt
171163
install_wireguard
172164
install_wstunnel
173165
```
@@ -200,7 +192,7 @@ The repository contains Dockerfile to simplify building process. Skip all the ot
200192
```
201193
- Install vcpkg:
202194
```bash
203-
sudo docker run --rm -v .:/w ws-builder /bin/bash -c "git clone https://github.com/Microsoft/vcpkg.git && cd vcpkg && git checkout 52fc0d8c1e2cbd12c9907284566f5c17e5ef0d12 && ./bootstrap-vcpkg.sh --disableMetrics"
195+
sudo docker run --rm -v .:/w ws-builder /bin/bash -c "git clone https://github.com/Microsoft/vcpkg.git && cd vcpkg && git checkout 576379156e82da642f8d1834220876759f13534d && ./bootstrap-vcpkg.sh --disableMetrics"
204196
```
205197
- Build all the dependencies:
206198
```bash
@@ -224,10 +216,7 @@ Build process tested on Ubuntu 22.04/24.04.
224216
# Make sure that the cmake executable is in the path and available for execution.
225217
sudo snap install cmake --classic
226218
```
227-
- Install vcpkg from [here](https://vcpkg.io/en/getting-started.html)
228-
- Create a `VCPKG_ROOT` environment variable referencing the full path to your vcpkg install folder.
229-
- Go to the vcpkg directory and `git checkout 52fc0d8c1e2cbd12c9907284566f5c17e5ef0d12`.
230-
- Do the bootstrap step after the above command.
219+
- Install vcpkg using the script `/tools/vcpkg/install_ci/vcpkg_install.sh`
231220
- Install golang (minimum version 1.23): follow instructions from `https://go.dev/doc/install`
232221
- Clone the repository.
233222
- Install Python (if necessary) and Python deps. You may want to use a virtual environment for Python (e.g. with pyenv), but this is up to you (and possibly your distribution). We recommend 3.11 or later.
@@ -237,10 +226,9 @@ Build process tested on Ubuntu 22.04/24.04.
237226

238227
### Build libraries
239228

240-
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.
229+
Go to subfolder `tools/deps` and run the following scripts in order. Libraries will be placed in `build-libs`.
241230

242231
```
243-
install_qt
244232
install_wireguard
245233
install_wstunnel
246234
```

backend/linux/helper/server.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Server::Server()
3030

3131
Server::~Server()
3232
{
33-
service_.stop();
33+
io_context_.stop();
3434

3535
if (acceptor_) {
3636
delete acceptor_;
@@ -46,7 +46,7 @@ bool Server::readAndHandleCommand(socket_ptr sock, boost::asio::streambuf *buf,
4646
return false;
4747
}
4848

49-
const char *bufPtr = boost::asio::buffer_cast<const char*>(buf->data());
49+
const char *bufPtr = static_cast<const char*>(buf->data().data());
5050
size_t headerSize = 0;
5151
int cmdId;
5252
memcpy(&cmdId, bufPtr + headerSize, sizeof(cmdId));
@@ -127,7 +127,7 @@ void Server::acceptHandler(const boost::system::error_code & ec, socket_ptr sock
127127

128128
void Server::startAccept()
129129
{
130-
socket_ptr sock(new boost::asio::local::stream_protocol::socket(service_));
130+
socket_ptr sock(new boost::asio::local::stream_protocol::socket(io_context_));
131131
acceptor_->async_accept(*sock, boost::bind(&Server::acceptHandler, this, boost::asio::placeholders::error, sock));
132132
}
133133

@@ -180,7 +180,7 @@ void Server::run()
180180
::unlink(SOCK_PATH);
181181

182182
boost::asio::local::stream_protocol::endpoint ep(SOCK_PATH);
183-
acceptor_ = new boost::asio::local::stream_protocol::acceptor(service_, ep);
183+
acceptor_ = new boost::asio::local::stream_protocol::acceptor(io_context_, ep);
184184

185185

186186
#ifdef NDEBUG
@@ -203,5 +203,5 @@ void Server::run()
203203

204204
startAccept();
205205

206-
service_.run();
206+
io_context_.run();
207207
}

backend/linux/helper/server.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Server
2424
void run();
2525

2626
private:
27-
boost::asio::io_service service_;
27+
boost::asio::io_context io_context_;
2828
boost::asio::local::stream_protocol::acceptor *acceptor_;
2929

3030
bool readAndHandleCommand(socket_ptr sock, boost::asio::streambuf *buf, std::string &outCmdAnswer);

backend/linux/helper/split_tunneling/hostnames_manager/dns_resolver.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,25 @@ using namespace wsnet;
55

66
DnsResolver::DnsResolver(std::function<void (std::map<std::string, HostInfo>)> resolveDomainsCallback) :
77
resolveDomainsCallback_(resolveDomainsCallback),
8-
work_(boost::asio::make_work_guard(io_service_))
8+
work_(boost::asio::make_work_guard(io_context_))
99
{
1010
if (!WSNet::initialize("", "", "", "", "", "", false, "en", "")) {
1111
spdlog::error("WSNet::initialize failed");
1212
}
1313

14-
thread_ = std::thread([this](){ io_service_.run(); });
14+
thread_ = std::thread([this](){ io_context_.run(); });
1515
}
1616

1717
DnsResolver::~DnsResolver()
1818
{
19-
io_service_.stop();
19+
io_context_.stop();
2020
thread_.join();
2121
WSNet::cleanup();
2222
}
2323

2424
void DnsResolver::onDnsResolved(uint64_t requestId, const std::string &hostname, std::shared_ptr<wsnet::WSNetDnsRequestResult> result)
2525
{
26-
boost::asio::post(io_service_,[this, requestId, hostname, result] {
26+
boost::asio::post(io_context_,[this, requestId, hostname, result] {
2727
auto request = activeRequests_.find(requestId);
2828
if (request == activeRequests_.end())
2929
return;
@@ -45,7 +45,7 @@ void DnsResolver::onDnsResolved(uint64_t requestId, const std::string &hostname,
4545
}
4646
// repeat failed requests if the timeout allows, after 500 ms
4747
if (bWasFailedRequests && sinceHelper(startTime_).count() < kMaxTimeoutMs) {
48-
timer_.emplace(boost::asio::deadline_timer(io_service_, boost::posix_time::millisec(kRetryTimeoutMs)));
48+
timer_.emplace(boost::asio::deadline_timer(io_context_, boost::posix_time::millisec(kRetryTimeoutMs)));
4949
timer_->async_wait(std::bind(&DnsResolver::onTimer, this, std::placeholders::_1));
5050
} else {
5151
resolveDomainsCallback_(results_);
@@ -78,7 +78,7 @@ void DnsResolver::resolveDomains(const std::vector<std::string> &hostnames)
7878
timer_.reset();
7979
cancelAll();
8080

81-
boost::asio::post(io_service_, [this, hostnames] {
81+
boost::asio::post(io_context_, [this, hostnames] {
8282
startTime_ = std::chrono::steady_clock::now();
8383
for (const auto &hostname : hostnames) {
8484
using namespace std::placeholders;
@@ -91,7 +91,7 @@ void DnsResolver::resolveDomains(const std::vector<std::string> &hostnames)
9191

9292
void DnsResolver::cancelAll()
9393
{
94-
boost::asio::post(io_service_, [this] {
94+
boost::asio::post(io_context_, [this] {
9595
for (auto &request : activeRequests_)
9696
request.second->cancel();
9797
activeRequests_.clear();

backend/linux/helper/split_tunneling/hostnames_manager/dns_resolver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class DnsResolver
4343
static constexpr int kRetryTimeoutMs = 500;
4444

4545
std::function<void(std::map<std::string, HostInfo>)> resolveDomainsCallback_;
46-
boost::asio::io_service io_service_;
46+
boost::asio::io_context io_context_;
4747
boost::asio::executor_work_guard<boost::asio::io_context::executor_type> work_;
4848
std::optional<boost::asio::deadline_timer> timer_;
4949
std::thread thread_;

backend/mac/helper/helper-info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<key>CFBundleName</key>
1010
<string>WindscribeHelper</string>
1111
<key>CFBundleVersion</key>
12-
<string>97</string>
12+
<string>98</string>
1313
<key>NSHumanReadableCopyright</key>
1414
<string>Copyright © 2024 Windscribe Limited. All rights reserved.</string>
1515
<key>LSMinimumSystemVersion</key>

backend/windows/windscribe_install_helper/CMakeLists.txt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@ set(CMAKE_CXX_STANDARD 20)
44
set(CMAKE_CXX_STANDARD_REQUIRED ON)
55
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
66

7-
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
8-
set(VCPKG_TARGET_TRIPLET arm64-windows-static)
9-
else()
10-
set(VCPKG_TARGET_TRIPLET x64-windows-static)
11-
endif()
12-
137
add_definitions(-DUNICODE -D_UNICODE)
148

159
project(install_helper)

backend/windows/windscribe_service/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@ set(X_VCPKG_APPLOCAL_DEPS_INSTALL ON)
55

66
set(CMAKE_CXX_STANDARD 17)
77
set(CMAKE_CXX_STANDARD_REQUIRED ON)
8-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
98

9+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
1010
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
11-
set(VCPKG_TARGET_TRIPLET arm64-windows-static)
1211
set(WINDSCRIBE_BUILD_LIBS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../build-libs-arm64)
1312
else()
14-
set(VCPKG_TARGET_TRIPLET x64-windows-static)
1513
set(WINDSCRIBE_BUILD_LIBS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../build-libs)
1614
endif()
1715

0 commit comments

Comments
 (0)