diff --git a/client/amnezia_application.cpp b/client/amnezia_application.cpp
index 4e6bce2b6..229aa7b88 100644
--- a/client/amnezia_application.cpp
+++ b/client/amnezia_application.cpp
@@ -297,7 +297,7 @@ void AmneziaApplication::initModels()
connect(m_containersModel.get(), &ContainersModel::defaultContainerChanged, this, [this]() {
if (m_containersModel->getDefaultContainer() == DockerContainer::WireGuard
&& m_sitesModel->getRouteMode() != Settings::RouteMode::VpnAllSites) {
- m_sitesModel->setRouteMode(Settings::RouteMode::VpnAllSites);
+ m_sitesModel->toggleSplitTunneling(false);
emit m_pageController->showNotificationMessage(
tr("Split tunneling for WireGuard is not implemented, the option was disabled"));
}
diff --git a/client/translations/amneziavpn_ru.ts b/client/translations/amneziavpn_ru.ts
index d3eef8979..14973fbd6 100644
--- a/client/translations/amneziavpn_ru.ts
+++ b/client/translations/amneziavpn_ru.ts
@@ -1471,75 +1471,75 @@ Already installed containers were found on the server. All installed containers
Раздельно VPN-туннелирование
-
+
Mode
Режим
-
+
Remove
Удалить
-
+
Continue
Продолжить
-
+
Cancel
Отменить
-
+
Site or IP
Сайт или IP
-
+
Import/Export Sites
Импорт/экспорт Сайтов
-
+
Import
Импорт
-
+
Save site list
Сохранить список сайтов
-
+
Save sites
Сохранить
-
-
-
+
+
+
Sites files (*.json)
Sites files (*.json)
-
+
Import a list of sites
Импортировать список с сайтами
-
+
Replace site list
Заменить список сайтов
-
-
+
+
Open sites file
Открыть список с сайтами
-
+
Add imported sites to existing ones
Добавление импортированных сайтов к существующим
@@ -2621,6 +2621,16 @@ IKEv2 with IPSec encryption layer. Transmits data over fixed UDP ports 500 and 4
error 0x%1: %2
error 0x%1: %2
+
+
+ WireGuard Configuration Highlighter
+
+
+
+
+ &Randomize colors
+
+
SelectLanguageDrawer
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index be519a917..b439deaae 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -1573,75 +1573,75 @@ And if you don't like the app, all the more support it - the donation will
隧道分离
-
+
Mode
规则
-
+
Remove
移除
-
+
Continue
继续
-
+
Cancel
取消
-
+
Site or IP
网站或IP地址
-
+
Import/Export Sites
导入/导出网站
-
+
Import
导入
-
+
Save site list
保存网址
-
+
Save sites
保存网址
-
-
-
+
+
+
Sites files (*.json)
-
+
Import a list of sites
导入网址列表
-
+
Replace site list
替换网址列表
-
-
+
+
Open sites file
打开网址文件
-
+
Add imported sites to existing ones
将导入的网址添加到现有网址中
@@ -2758,6 +2758,16 @@ IKEv2 with IPSec encryption layer. Transmits data over fixed UDP ports 500 and 4
error 0x%1: %2
错误 0x%1: %2
+
+
+ WireGuard Configuration Highlighter
+
+
+
+
+ &Randomize colors
+
+
SelectLanguageDrawer
diff --git a/client/ui/models/sites_model.cpp b/client/ui/models/sites_model.cpp
index 5fd9a38b3..1e0f16927 100644
--- a/client/ui/models/sites_model.cpp
+++ b/client/ui/models/sites_model.cpp
@@ -3,7 +3,13 @@
SitesModel::SitesModel(std::shared_ptr settings, QObject *parent)
: QAbstractListModel(parent), m_settings(settings)
{
- m_currentRouteMode = m_settings->routeMode();
+ auto routeMode = m_settings->routeMode();
+ if (routeMode == Settings::RouteMode::VpnAllSites) {
+ m_isSplitTunnelingEnabled = false;
+ m_currentRouteMode = Settings::RouteMode::VpnOnlyForwardSites;
+ } else {
+ m_currentRouteMode = routeMode;
+ }
fillSites();
}
@@ -93,6 +99,20 @@ void SitesModel::setRouteMode(int routeMode)
emit routeModeChanged();
}
+bool SitesModel::isSplitTunnelingEnabled()
+{
+ return m_isSplitTunnelingEnabled;
+}
+
+void SitesModel::toggleSplitTunneling(bool enabled)
+{
+ if (enabled) {
+ setRouteMode(m_currentRouteMode);
+ } else {
+ m_settings->setRouteMode(Settings::RouteMode::VpnAllSites);
+ }
+}
+
QVector > SitesModel::getCurrentSites()
{
return m_sites;
diff --git a/client/ui/models/sites_model.h b/client/ui/models/sites_model.h
index 70def0ec5..ad16b7a33 100644
--- a/client/ui/models/sites_model.h
+++ b/client/ui/models/sites_model.h
@@ -31,6 +31,9 @@ public slots:
int getRouteMode();
void setRouteMode(int routeMode);
+ bool isSplitTunnelingEnabled();
+ void toggleSplitTunneling(bool enabled);
+
QVector> getCurrentSites();
signals:
@@ -44,6 +47,7 @@ private:
std::shared_ptr m_settings;
+ bool m_isSplitTunnelingEnabled;
Settings::RouteMode m_currentRouteMode;
QVector> m_sites;
diff --git a/client/ui/qml/Pages2/PageSettingsConnection.qml b/client/ui/qml/Pages2/PageSettingsConnection.qml
index 7f0262f97..b5b1bd97c 100644
--- a/client/ui/qml/Pages2/PageSettingsConnection.qml
+++ b/client/ui/qml/Pages2/PageSettingsConnection.qml
@@ -112,7 +112,7 @@ PageType {
}
LabelWithButtonType {
- visible: !GC.isMobile()
+ visible: false//!GC.isMobile()
Layout.fillWidth: true
diff --git a/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml b/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml
index cc4973f14..d7f778718 100644
--- a/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml
+++ b/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml
@@ -93,22 +93,15 @@ PageType {
SwitcherType {
id: switcher
- property int lastActiveRouteMode: routeMode.onlyForwardSites
-
enabled: root.pageEnabled
Layout.fillWidth: true
Layout.rightMargin: 16
- checked: SitesModel.routeMode !== routeMode.allSites
- onToggled: {
- if (checked) {
- SitesModel.routeMode = lastActiveRouteMode
- } else {
- lastActiveRouteMode = SitesModel.routeMode
- selector.text = root.routeModesModel[getRouteModesModelIndex()].name
- SitesModel.routeMode = routeMode.allSites
- }
+ checked: SitesModel.isSplitTunnelingEnabled()
+ onToggled: {
+ SitesModel.toggleSplitTunneling(checked)
+ selector.text = root.routeModesModel[getRouteModesModelIndex()].name
}
}
}