Skip to content

Commit

Permalink
v2.8.4
Browse files Browse the repository at this point in the history
  • Loading branch information
bernerdad committed Dec 2, 2023
1 parent c01e916 commit c9ba1b7
Show file tree
Hide file tree
Showing 41 changed files with 70 additions and 189 deletions.
5 changes: 3 additions & 2 deletions backend/linux/helper/firewallcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,9 @@ void FirewallController::disable()
}


void FirewallController::setSplitTunnelingEnabled(bool isEnabled, bool isExclude)
void FirewallController::setSplitTunnelingEnabled(bool isConnected, bool isEnabled, bool isExclude)
{
connected_ = isConnected;
splitTunnelEnabled_ = isEnabled;
splitTunnelExclude_ = isExclude;

Expand All @@ -103,7 +104,7 @@ void FirewallController::removeInclusiveRules()

void FirewallController::setSplitTunnelExceptions(const std::vector<std::string> &ips)
{
if (!splitTunnelEnabled_) {
if (!connected_ || !splitTunnelEnabled_) {
removeInclusiveRules();
removeExclusiveRules();
splitTunnelIps_ = ips;
Expand Down
5 changes: 3 additions & 2 deletions backend/linux/helper/firewallcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ class FirewallController
bool enabled(const std::string &tag);
void getRules(bool ipv6, std::string *outRules);

void setSplitTunnelingEnabled(bool isEnabled, bool isExclude);
void setSplitTunnelingEnabled(bool isConnected, bool isEnabled, bool isExclude);
void setSplitTunnelExceptions(const std::vector<std::string> &ips);

private:
FirewallController() : enabled_(false) {};
FirewallController() : enabled_(false), connected_(false), splitTunnelEnabled_(false), splitTunnelExclude_(true) {};
~FirewallController() { disable(); };

bool enabled_;
bool connected_;
bool splitTunnelEnabled_;
bool splitTunnelExclude_;
std::vector<std::string> splitTunnelIps_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ void HostnamesManager::disable()
isEnabled_ = false;
}
dnsResolver_.cancelAll();
FirewallController::instance().setSplitTunnelExceptions(std::vector<std::string>());
Logger::instance().out("HostnamesManager::disable(), end");
}

Expand Down
2 changes: 1 addition & 1 deletion backend/linux/helper/split_tunneling/split_tunneling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void SplitTunneling::setSplitTunnelingParams(bool isActive, bool isExclude, cons

void SplitTunneling::updateState()
{
FirewallController::instance().setSplitTunnelingEnabled(isSplitTunnelActive_, isExclude_);
FirewallController::instance().setSplitTunnelingEnabled(connectStatus_.isConnected, isSplitTunnelActive_, isExclude_);

if (connectStatus_.isConnected && isSplitTunnelActive_) {
if (isExclude_) {
Expand Down
5 changes: 3 additions & 2 deletions backend/mac/helper/firewallcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ bool FirewallController::enabled()
return (output.find("Status: Enabled") != std::string::npos);
}

void FirewallController::setSplitTunnelingEnabled(bool isEnabled, bool isExclude)
void FirewallController::setSplitTunnelingEnabled(bool isConnected, bool isEnabled, bool isExclude)
{
connected_ = isConnected;
splitTunnelEnabled_ = isEnabled;
splitTunnelExclude_ = isExclude;

Expand All @@ -78,7 +79,7 @@ void FirewallController::setSplitTunnelExceptions(const std::vector<std::string>

std::string ipStr = "table <windscribe_split_tunnel_ips> persist { ";

if (!splitTunnelEnabled_) {
if (!connected_ || !splitTunnelEnabled_) {
// If split tunneling is disabled, treat this table as if there are no IPs
ipStr += " }\n";
} else if (splitTunnelExclude_) {
Expand Down
6 changes: 3 additions & 3 deletions backend/mac/helper/firewallcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ class FirewallController
bool enable(const std::string &rules, const std::string &table, const std::string &group);
bool enabled();
void disable(bool keepPfEnabled = false);
void setSplitTunnelingEnabled(bool isEnabled, bool isExclude);
void setSplitTunnelingEnabled(bool isConnected, bool isEnabled, bool isExclude);
void setSplitTunnelExceptions(const std::vector<std::string> &ips);
void getRules(const std::string &table, const std::string &group, std::string *outRules);

private:
FirewallController() : enabled_(false) {};
FirewallController() : enabled_(false), connected_(false), splitTunnelEnabled_(false), splitTunnelExclude_(true) {};
~FirewallController() { disable(); };

bool enabled_;
bool connected_;
bool splitTunnelEnabled_;
bool splitTunnelExclude_;
std::vector<std::string> splitTunnelIps_;
};

2 changes: 1 addition & 1 deletion backend/mac/helper/helper-info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<key>CFBundleName</key>
<string>WindscribeHelper</string>
<key>CFBundleVersion</key>
<string>56</string>
<string>57</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2023 Windscribe Limited. All rights reserved.</string>
<key>LSMinimumSystemVersion</key>
Expand Down
1 change: 1 addition & 0 deletions backend/mac/helper/ip_hostnames/ip_hostnames_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ void IpHostnamesManager::disable()
return;
}

FirewallController::instance().setSplitTunnelExceptions(std::vector<std::string>());
ipRoutes_.clear();
isEnabled_ = false;
}
Expand Down
2 changes: 1 addition & 1 deletion backend/mac/helper/split_tunneling/split_tunneling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void SplitTunneling::setSplitTunnelingParams(bool isActive, bool isExclude, cons

void SplitTunneling::updateState()
{
FirewallController::instance().setSplitTunnelingEnabled(isSplitTunnelActive_, isExclude_);
FirewallController::instance().setSplitTunnelingEnabled(connectStatus_.isConnected, isSplitTunnelActive_, isExclude_);

if (connectStatus_.isConnected && isSplitTunnelActive_) {
if (isExclude_) {
Expand Down
14 changes: 14 additions & 0 deletions client/common/changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
2.8.4 (28/11/2023)
All:
* Fixed UI issue where search tab may overlay other tabs. #811
* Fixed UI screen transition issues when anti-abuse is triggered. #817
* Upgraded to OpenVPN 2.6.8. #759
Windows:
* Fixed custom OpenVPN configs fail to connect. This was due to a bug in OpenVPN 2.6.7. #759
macOS:
* Fixed firewall not blocking traffic while disconnected in split inclusive mode #748
Linux:
* Fixed firewall not blocking traffic while disconnected in split inclusive mode #748
* Removed "Docked"/"Pinned" feature from preferences. #241


2.8.3 (24/11/2023)
All:
* Improved anti-censorship feature. Feature automatically enabled for first-run users in censored countries. #770
Expand Down
2 changes: 1 addition & 1 deletion client/common/version/windscribe_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#define WINDSCRIBE_MAJOR_VERSION 2
#define WINDSCRIBE_MINOR_VERSION 8
#define WINDSCRIBE_BUILD_VERSION 3
#define WINDSCRIBE_BUILD_VERSION 4

// only one of these should be enabled; neither -> stable
//#define WINDSCRIBE_IS_BETA
Expand Down
5 changes: 5 additions & 0 deletions client/gui/backend/preferences/preferences.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,12 @@ void Preferences::setBackgroundSettings(const types::BackgroundSettings &backgro

bool Preferences::isDockedToTray() const
{
// no longer supported on Linux
#ifdef Q_OS_LINUX
return false;
#else
return guiSettings_.isDockedToTray;
#endif
}

void Preferences::setDockedToTray(bool b)
Expand Down
3 changes: 2 additions & 1 deletion client/gui/generalmessagecontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ void GeneralMessageController::showMessage(const QString &icon, const QString &t
return;
}

MainWindowController::WINDOW_ID source = controller_->currentWindow();
MainWindowController::WINDOW_ID source = controller_->currentWindowAfterAnimation();
if (source == MainWindowController::WINDOW_ID_LOGOUT || source == MainWindowController::WINDOW_ID_EXIT) {
source = controller_->windowBeforeExit();
}
Expand All @@ -42,6 +42,7 @@ void GeneralMessageController::showMessage(const QString &icon, const QString &t
source = MainWindowController::WINDOW_ID_CONNECT;
}
}

showMessage(new GeneralMessage(icon, title, desc, acceptText, rejectText, tertiaryText, acceptFunc, rejectFunc, tertiaryFunc, source, flags, learnMoreUrl));
}

Expand Down
4 changes: 3 additions & 1 deletion client/gui/locationswindow/widgetlocations/locationstab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,9 @@ void LocationsTab::mouseReleaseEvent(QMouseEvent *event)
{
// Currently this should only handle non-search icons
// qCDebug(LOG_USER) << "Clicked tab: " << curTabMouseOver_;
changeTab(curTabMouseOver_);
if (!searchTabSelected_) {
changeTab(curTabMouseOver_);
}
}
}
}
Expand Down
3 changes: 0 additions & 3 deletions client/gui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ MainWindow::MainWindow() :
bMousePressed_(false),
bMoveEnabled_(true),
signOutReason_(SIGN_OUT_UNDEFINED),
bDisconnectFromTrafficExceed_(false),
isInitializationAborted_(false),
isLoginOkAndConnectWindowVisible_(false),
revealingConnectWindow_(false),
Expand Down Expand Up @@ -1782,7 +1781,6 @@ void MainWindow::onBackendSessionStatusChanged(const types::SessionStatus &sessi
if ((!selectedLocation_->locationdId().isCustomConfigsLocation()) &&
(backend_->currentConnectState() == CONNECT_STATE_CONNECTED || backend_->currentConnectState() == CONNECT_STATE_CONNECTING))
{
bDisconnectFromTrafficExceed_ = true;
backend_->sendDisconnect();
mainWindowController_->changeWindow(MainWindowController::WINDOW_ID_UPGRADE);
}
Expand Down Expand Up @@ -3503,7 +3501,6 @@ void MainWindow::setVariablesToInitState()
isLoginOkAndConnectWindowVisible_ = false;
bNotificationConnectedShowed_ = false;
bytesTransferred_ = 0;
bDisconnectFromTrafficExceed_ = false;
backend_->getPreferencesHelper()->setIsExternalConfigMode(false);
}

Expand Down
2 changes: 0 additions & 2 deletions client/gui/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -333,8 +333,6 @@ private slots:
BlockConnect blockConnect_;
FreeTrafficNotificationController *freeTrafficNotificationController_;

bool bDisconnectFromTrafficExceed_;

bool isInitializationAborted_;
bool isLoginOkAndConnectWindowVisible_;
static constexpr int TIME_BEFORE_SHOW_SHUTDOWN_WINDOW = 1500; // ms
Expand Down
17 changes: 16 additions & 1 deletion client/gui/mainwindowcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,15 @@ MainWindowController::WINDOW_ID MainWindowController::currentWindow()
return curWindow_;
}

MainWindowController::WINDOW_ID MainWindowController::currentWindowAfterAnimation()
{
if (queueWindowChanges_.empty()) {
return curWindow_;
}
// Return the final window to be shown after animations
return queueWindowChanges_.last();
}

MainWindowController::WINDOW_ID MainWindowController::windowBeforeExit()
{
return windowBeforeExit_;
Expand Down Expand Up @@ -1885,7 +1894,8 @@ void MainWindowController::gotoUpdateWindow()

void MainWindowController::gotoUpgradeWindow()
{
WS_ASSERT(curWindow_ == WINDOW_ID_CONNECT);
WS_ASSERT(curWindow_ == WINDOW_ID_CONNECT ||
curWindow_ == WINDOW_ID_GENERAL_MESSAGE);

isAtomicAnimationActive_ = true;
curWindow_ = WINDOW_ID_UPGRADE;
Expand All @@ -1898,6 +1908,9 @@ void MainWindowController::gotoUpgradeWindow()
connectWindow_->setClickable(false);
bottomInfoWindow_->setClickable(false);

shadowManager_->setVisible(ShadowManager::SHAPE_ID_GENERAL_MESSAGE, false);
generalMessageWindow_->hide();

functionOnAnimationFinished_ = [this]() {
upgradeAccountWindow_->setOpacity(0.0);
connectWindow_->stackBefore(upgradeAccountWindow_);
Expand Down Expand Up @@ -1929,6 +1942,7 @@ void MainWindowController::gotoGeneralMessageWindow()
curWindow_ == WINDOW_ID_LOGGING_IN ||
curWindow_ == WINDOW_ID_CONNECT ||
curWindow_ == WINDOW_ID_UPDATE ||
curWindow_ == WINDOW_ID_UPGRADE ||
curWindow_ == WINDOW_ID_LOGOUT ||
curWindow_ == WINDOW_ID_EXIT);

Expand Down Expand Up @@ -1977,6 +1991,7 @@ void MainWindowController::gotoGeneralMessageWindow()
loginWindow_->stackBefore(generalMessageWindow_);
initWindow_->stackBefore(generalMessageWindow_);
loggingInWindow_->stackBefore(generalMessageWindow_);
upgradeAccountWindow_->stackBefore(generalMessageWindow_);
generalMessageWindow_->show();

QPropertyAnimation *anim = new QPropertyAnimation(this);
Expand Down
1 change: 1 addition & 0 deletions client/gui/mainwindowcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class MainWindowController : public QObject
bool isPreferencesVisible();
bool isNewsFeedVisible();
WINDOW_ID currentWindow();
WINDOW_ID currentWindowAfterAnimation();
WINDOW_ID windowBeforeExit();
void changeWindow(WINDOW_ID windowId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,15 @@ GeneralWindowItem::GeneralWindowItem(ScalableGraphicsObject *parent, Preferences
addItem(hideFromDockGroup_);
#endif

#ifndef Q_OS_LINUX
dockedGroup_ = new PreferenceGroup(this);
checkBoxDockedToTray_ = new ToggleItem(dockedGroup_);
checkBoxDockedToTray_->setIcon(ImageResourcesSvg::instance().getIndependentPixmap("preferences/DOCKED"));
checkBoxDockedToTray_->setState(preferences->isDockedToTray());
connect(checkBoxDockedToTray_, &ToggleItem::stateChanged, this, &GeneralWindowItem::onDockedToTrayChanged);
dockedGroup_->addItem(checkBoxDockedToTray_);
addItem(dockedGroup_);
#endif

showNotificationsGroup_ = new PreferenceGroup(this);
checkBoxShowNotifications_ = new ToggleItem(showNotificationsGroup_);
Expand Down Expand Up @@ -230,7 +232,9 @@ void GeneralWindowItem::onIsShowNotificationsClicked(bool b)

void GeneralWindowItem::onIsDockedToTrayPreferencesChanged(bool b)
{
#ifndef Q_OS_LINUX
checkBoxDockedToTray_->setState(b);
#endif
}

void GeneralWindowItem::onDockedToTrayChanged(bool b)
Expand Down Expand Up @@ -313,10 +317,7 @@ void GeneralWindowItem::onLanguageChanged()
hideFromDockGroup_->setDescription(tr("Don't show the Windscribe icon in dock."));
checkBoxHideFromDock_->setCaption(tr("Hide from Dock"));
#endif
#if defined(Q_OS_LINUX)
dockedGroup_->setDescription(tr("Do not allow the Windscribe window to be moved."));
checkBoxDockedToTray_->setCaption(tr("Pinned"));
#else
#if !defined(Q_OS_LINUX)
dockedGroup_->setDescription(tr("Pin Windscribe near the system tray or menu bar."));
checkBoxDockedToTray_->setCaption(tr("Docked"));
#endif
Expand Down
8 changes: 0 additions & 8 deletions client/gui/translations/ws_desktop_ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1333,14 +1333,6 @@ If the problem persists after a restart, please send a debug log and open a supp
<source>Tray Icon Color</source>
<translation>لون أيقونة الدرج</translation>
</message>
<message>
<source>Do not allow the Windscribe window to be moved.</source>
<translation>لا تسمح بتحريك نافذة Windscribe.</translation>
</message>
<message>
<source>Pinned</source>
<translation>المثبته</translation>
</message>
</context>
<context>
<name>PreferencesWindow::HelpWindowItem</name>
Expand Down
8 changes: 0 additions & 8 deletions client/gui/translations/ws_desktop_cs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1333,14 +1333,6 @@ Pokud problém přetrvává i po restartování, odešlete protokol ladění, ot
<source>Tray Icon Color</source>
<translation>Barva ikony na hlavním panelu</translation>
</message>
<message>
<source>Do not allow the Windscribe window to be moved.</source>
<translation>Nedovolte, aby se okno Windscribe pohybovalo.</translation>
</message>
<message>
<source>Pinned</source>
<translation>Přišpendlený</translation>
</message>
</context>
<context>
<name>PreferencesWindow::HelpWindowItem</name>
Expand Down
8 changes: 0 additions & 8 deletions client/gui/translations/ws_desktop_de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1333,14 +1333,6 @@ Wenn das Problem nach einem Neustart weiterhin besteht, senden Sie bitte ein Deb
<source>Tray Icon Color</source>
<translation>Farbe des Tray-Symbols</translation>
</message>
<message>
<source>Do not allow the Windscribe window to be moved.</source>
<translation>Lassen Sie nicht zu, dass das Windscribe-Fenster verschoben wird.</translation>
</message>
<message>
<source>Pinned</source>
<translation>Angeheftet</translation>
</message>
</context>
<context>
<name>PreferencesWindow::HelpWindowItem</name>
Expand Down
8 changes: 0 additions & 8 deletions client/gui/translations/ws_desktop_en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1333,14 +1333,6 @@ If the problem persists after a restart, please send a debug log and open a supp
<source>Tray Icon Color</source>
<translation>Tray Icon Color</translation>
</message>
<message>
<source>Do not allow the Windscribe window to be moved.</source>
<translation>Do not allow the Windscribe window to be moved.</translation>
</message>
<message>
<source>Pinned</source>
<translation>Pinned</translation>
</message>
</context>
<context>
<name>PreferencesWindow::HelpWindowItem</name>
Expand Down
8 changes: 0 additions & 8 deletions client/gui/translations/ws_desktop_es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1333,14 +1333,6 @@ Si el problema persiste después de un reinicio, envía un registro de depuraci
<source>Tray Icon Color</source>
<translation>Color del icono de la bandeja</translation>
</message>
<message>
<source>Do not allow the Windscribe window to be moved.</source>
<translation>No permitas que se mueva la ventana de Windscribe.</translation>
</message>
<message>
<source>Pinned</source>
<translation>Fijado</translation>
</message>
</context>
<context>
<name>PreferencesWindow::HelpWindowItem</name>
Expand Down
Loading

0 comments on commit c9ba1b7

Please sign in to comment.