fixed display of sites on page split tunneling
This commit is contained in:
parent
c7cd8e4c80
commit
7bd1340190
7 changed files with 85 additions and 48 deletions
|
@ -297,7 +297,7 @@ void AmneziaApplication::initModels()
|
||||||
connect(m_containersModel.get(), &ContainersModel::defaultContainerChanged, this, [this]() {
|
connect(m_containersModel.get(), &ContainersModel::defaultContainerChanged, this, [this]() {
|
||||||
if (m_containersModel->getDefaultContainer() == DockerContainer::WireGuard
|
if (m_containersModel->getDefaultContainer() == DockerContainer::WireGuard
|
||||||
&& m_sitesModel->getRouteMode() != Settings::RouteMode::VpnAllSites) {
|
&& m_sitesModel->getRouteMode() != Settings::RouteMode::VpnAllSites) {
|
||||||
m_sitesModel->setRouteMode(Settings::RouteMode::VpnAllSites);
|
m_sitesModel->toggleSplitTunneling(false);
|
||||||
emit m_pageController->showNotificationMessage(
|
emit m_pageController->showNotificationMessage(
|
||||||
tr("Split tunneling for WireGuard is not implemented, the option was disabled"));
|
tr("Split tunneling for WireGuard is not implemented, the option was disabled"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1471,75 +1471,75 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation>Раздельно VPN-туннелирование</translation>
|
<translation>Раздельно VPN-туннелирование</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="128"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="121"/>
|
||||||
<source>Mode</source>
|
<source>Mode</source>
|
||||||
<translation>Режим</translation>
|
<translation>Режим</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="206"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="199"/>
|
||||||
<source>Remove </source>
|
<source>Remove </source>
|
||||||
<translation>Удалить </translation>
|
<translation>Удалить </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="207"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="200"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Продолжить</translation>
|
<translation>Продолжить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="208"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="201"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>Отменить</translation>
|
<translation>Отменить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="255"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="248"/>
|
||||||
<source>Site or IP</source>
|
<source>Site or IP</source>
|
||||||
<translation>Сайт или IP</translation>
|
<translation>Сайт или IP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="299"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="292"/>
|
||||||
<source>Import/Export Sites</source>
|
<source>Import/Export Sites</source>
|
||||||
<translation>Импорт/экспорт Сайтов</translation>
|
<translation>Импорт/экспорт Сайтов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="305"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="298"/>
|
||||||
<source>Import</source>
|
<source>Import</source>
|
||||||
<translation>Импорт</translation>
|
<translation>Импорт</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="310"/>
|
||||||
<source>Save site list</source>
|
<source>Save site list</source>
|
||||||
<translation>Сохранить список сайтов</translation>
|
<translation>Сохранить список сайтов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="324"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
||||||
<source>Save sites</source>
|
<source>Save sites</source>
|
||||||
<translation>Сохранить</translation>
|
<translation>Сохранить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="325"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="318"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="392"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="385"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="407"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="400"/>
|
||||||
<source>Sites files (*.json)</source>
|
<source>Sites files (*.json)</source>
|
||||||
<translation>Sites files (*.json)</translation>
|
<translation>Sites files (*.json)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="382"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="375"/>
|
||||||
<source>Import a list of sites</source>
|
<source>Import a list of sites</source>
|
||||||
<translation>Импортировать список с сайтами</translation>
|
<translation>Импортировать список с сайтами</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="388"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="381"/>
|
||||||
<source>Replace site list</source>
|
<source>Replace site list</source>
|
||||||
<translation>Заменить список сайтов</translation>
|
<translation>Заменить список сайтов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="391"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="384"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="406"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="399"/>
|
||||||
<source>Open sites file</source>
|
<source>Open sites file</source>
|
||||||
<translation>Открыть список с сайтами</translation>
|
<translation>Открыть список с сайтами</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="403"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="396"/>
|
||||||
<source>Add imported sites to existing ones</source>
|
<source>Add imported sites to existing ones</source>
|
||||||
<translation>Добавление импортированных сайтов к существующим</translation>
|
<translation>Добавление импортированных сайтов к существующим</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2621,6 +2621,16 @@ IKEv2 with IPSec encryption layer. Transmits data over fixed UDP ports 500 and 4
|
||||||
<source>error 0x%1: %2</source>
|
<source>error 0x%1: %2</source>
|
||||||
<translation>error 0x%1: %2</translation>
|
<translation>error 0x%1: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="39"/>
|
||||||
|
<source>WireGuard Configuration Highlighter</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="82"/>
|
||||||
|
<source>&Randomize colors</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>SelectLanguageDrawer</name>
|
<name>SelectLanguageDrawer</name>
|
||||||
|
|
|
@ -1573,75 +1573,75 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
<translation>隧道分离</translation>
|
<translation>隧道分离</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="128"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="121"/>
|
||||||
<source>Mode</source>
|
<source>Mode</source>
|
||||||
<translation>规则</translation>
|
<translation>规则</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="206"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="199"/>
|
||||||
<source>Remove </source>
|
<source>Remove </source>
|
||||||
<translation>移除 </translation>
|
<translation>移除 </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="207"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="200"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>继续</translation>
|
<translation>继续</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="208"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="201"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>取消</translation>
|
<translation>取消</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="255"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="248"/>
|
||||||
<source>Site or IP</source>
|
<source>Site or IP</source>
|
||||||
<translation>网站或IP地址</translation>
|
<translation>网站或IP地址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="299"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="292"/>
|
||||||
<source>Import/Export Sites</source>
|
<source>Import/Export Sites</source>
|
||||||
<translation>导入/导出网站</translation>
|
<translation>导入/导出网站</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="305"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="298"/>
|
||||||
<source>Import</source>
|
<source>Import</source>
|
||||||
<translation>导入</translation>
|
<translation>导入</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="310"/>
|
||||||
<source>Save site list</source>
|
<source>Save site list</source>
|
||||||
<translation>保存网址</translation>
|
<translation>保存网址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="324"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
||||||
<source>Save sites</source>
|
<source>Save sites</source>
|
||||||
<translation>保存网址</translation>
|
<translation>保存网址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="325"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="318"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="392"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="385"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="407"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="400"/>
|
||||||
<source>Sites files (*.json)</source>
|
<source>Sites files (*.json)</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="382"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="375"/>
|
||||||
<source>Import a list of sites</source>
|
<source>Import a list of sites</source>
|
||||||
<translation>导入网址列表</translation>
|
<translation>导入网址列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="388"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="381"/>
|
||||||
<source>Replace site list</source>
|
<source>Replace site list</source>
|
||||||
<translation>替换网址列表</translation>
|
<translation>替换网址列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="391"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="384"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="406"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="399"/>
|
||||||
<source>Open sites file</source>
|
<source>Open sites file</source>
|
||||||
<translation>打开网址文件</translation>
|
<translation>打开网址文件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="403"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="396"/>
|
||||||
<source>Add imported sites to existing ones</source>
|
<source>Add imported sites to existing ones</source>
|
||||||
<translation>将导入的网址添加到现有网址中</translation>
|
<translation>将导入的网址添加到现有网址中</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2758,6 +2758,16 @@ IKEv2 with IPSec encryption layer. Transmits data over fixed UDP ports 500 and 4
|
||||||
<source>error 0x%1: %2</source>
|
<source>error 0x%1: %2</source>
|
||||||
<translation>错误 0x%1: %2</translation>
|
<translation>错误 0x%1: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="39"/>
|
||||||
|
<source>WireGuard Configuration Highlighter</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="82"/>
|
||||||
|
<source>&Randomize colors</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>SelectLanguageDrawer</name>
|
<name>SelectLanguageDrawer</name>
|
||||||
|
|
|
@ -3,7 +3,13 @@
|
||||||
SitesModel::SitesModel(std::shared_ptr<Settings> settings, QObject *parent)
|
SitesModel::SitesModel(std::shared_ptr<Settings> settings, QObject *parent)
|
||||||
: QAbstractListModel(parent), m_settings(settings)
|
: 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();
|
fillSites();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,6 +99,20 @@ void SitesModel::setRouteMode(int routeMode)
|
||||||
emit routeModeChanged();
|
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<QPair<QString, QString> > SitesModel::getCurrentSites()
|
QVector<QPair<QString, QString> > SitesModel::getCurrentSites()
|
||||||
{
|
{
|
||||||
return m_sites;
|
return m_sites;
|
||||||
|
|
|
@ -31,6 +31,9 @@ public slots:
|
||||||
int getRouteMode();
|
int getRouteMode();
|
||||||
void setRouteMode(int routeMode);
|
void setRouteMode(int routeMode);
|
||||||
|
|
||||||
|
bool isSplitTunnelingEnabled();
|
||||||
|
void toggleSplitTunneling(bool enabled);
|
||||||
|
|
||||||
QVector<QPair<QString, QString>> getCurrentSites();
|
QVector<QPair<QString, QString>> getCurrentSites();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -44,6 +47,7 @@ private:
|
||||||
|
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
|
|
||||||
|
bool m_isSplitTunnelingEnabled;
|
||||||
Settings::RouteMode m_currentRouteMode;
|
Settings::RouteMode m_currentRouteMode;
|
||||||
|
|
||||||
QVector<QPair<QString, QString>> m_sites;
|
QVector<QPair<QString, QString>> m_sites;
|
||||||
|
|
|
@ -112,7 +112,7 @@ PageType {
|
||||||
}
|
}
|
||||||
|
|
||||||
LabelWithButtonType {
|
LabelWithButtonType {
|
||||||
visible: !GC.isMobile()
|
visible: false//!GC.isMobile()
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
|
|
@ -93,22 +93,15 @@ PageType {
|
||||||
SwitcherType {
|
SwitcherType {
|
||||||
id: switcher
|
id: switcher
|
||||||
|
|
||||||
property int lastActiveRouteMode: routeMode.onlyForwardSites
|
|
||||||
|
|
||||||
enabled: root.pageEnabled
|
enabled: root.pageEnabled
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.rightMargin: 16
|
Layout.rightMargin: 16
|
||||||
|
|
||||||
checked: SitesModel.routeMode !== routeMode.allSites
|
checked: SitesModel.isSplitTunnelingEnabled()
|
||||||
onToggled: {
|
onToggled: {
|
||||||
if (checked) {
|
SitesModel.toggleSplitTunneling(checked)
|
||||||
SitesModel.routeMode = lastActiveRouteMode
|
selector.text = root.routeModesModel[getRouteModesModelIndex()].name
|
||||||
} else {
|
|
||||||
lastActiveRouteMode = SitesModel.routeMode
|
|
||||||
selector.text = root.routeModesModel[getRouteModesModelIndex()].name
|
|
||||||
SitesModel.routeMode = routeMode.allSites
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue