Merge branch 'dev' of github.com:amnezia-vpn/amnezia-client into bugfix/split-tunneling
This commit is contained in:
commit
59bccb1188
33 changed files with 427 additions and 268 deletions
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR)
|
|||
|
||||
set(PROJECT AmneziaVPN)
|
||||
|
||||
project(${PROJECT} VERSION 4.0.8.3
|
||||
project(${PROJECT} VERSION 4.0.8.5
|
||||
DESCRIPTION "AmneziaVPN"
|
||||
HOMEPAGE_URL "https://amnezia.org/"
|
||||
)
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 15b0ff395d9d372339c5ea8ea35cb2715b975ea9
|
||||
Subproject commit ac32d33555bd62f0b0af314b1e5119d6d78a1a4e
|
|
@ -286,6 +286,8 @@ void AmneziaApplication::initModels()
|
|||
m_engine->rootContext()->setContextProperty("ServersModel", m_serversModel.get());
|
||||
connect(m_serversModel.get(), &ServersModel::currentlyProcessedServerIndexChanged, m_containersModel.get(),
|
||||
&ContainersModel::setCurrentlyProcessedServerIndex);
|
||||
connect(m_serversModel.get(), &ServersModel::defaultServerIndexChanged, m_containersModel.get(),
|
||||
&ContainersModel::setCurrentlyProcessedServerIndex);
|
||||
|
||||
m_languageModel.reset(new LanguageModel(m_settings, this));
|
||||
m_engine->rootContext()->setContextProperty("LanguageModel", m_languageModel.get());
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
android:label="-- %%INSERT_APP_NAME%% --"
|
||||
android:screenOrientation="unspecified"
|
||||
android:launchMode="singleInstance"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:exported="true">
|
||||
|
||||
<!-- android:theme="@style/splashScreenTheme"-->
|
||||
|
|
|
@ -138,7 +138,7 @@ android {
|
|||
resConfig "en"
|
||||
minSdkVersion = 24
|
||||
targetSdkVersion = 34
|
||||
versionCode 36 // Change to a higher number
|
||||
versionCode 37 // Change to a higher number
|
||||
versionName "4.0.8" // Change to a higher number
|
||||
|
||||
javaCompileOptions.annotationProcessorOptions.arguments = [
|
||||
|
|
|
@ -17,43 +17,31 @@ QString AwgConfigurator::genAwgConfig(const ServerCredentials &credentials,
|
|||
QString config = WireguardConfigurator::genWireguardConfig(credentials, container, containerConfig, errorCode);
|
||||
|
||||
QJsonObject jsonConfig = QJsonDocument::fromJson(config.toUtf8()).object();
|
||||
QString awgConfig = jsonConfig.value(config_key::config).toString();
|
||||
|
||||
ServerController serverController(m_settings);
|
||||
QString serverConfig = serverController.getTextFileFromContainer(container, credentials, protocols::awg::serverConfigPath, errorCode);
|
||||
|
||||
QMap<QString, QString> serverConfigMap;
|
||||
auto serverConfigLines = serverConfig.split("\n");
|
||||
for (auto &line : serverConfigLines) {
|
||||
QMap<QString, QString> configMap;
|
||||
auto configLines = awgConfig.split("\n");
|
||||
for (auto &line : configLines) {
|
||||
auto trimmedLine = line.trimmed();
|
||||
if (trimmedLine.startsWith("[") && trimmedLine.endsWith("]")) {
|
||||
continue;
|
||||
} else {
|
||||
QStringList parts = trimmedLine.split(" = ");
|
||||
if (parts.count() == 2) {
|
||||
serverConfigMap.insert(parts[0].trimmed(), parts[1].trimmed());
|
||||
configMap.insert(parts[0].trimmed(), parts[1].trimmed());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
config.replace("$JUNK_PACKET_COUNT", serverConfigMap.value(config_key::junkPacketCount));
|
||||
config.replace("$JUNK_PACKET_MIN_SIZE", serverConfigMap.value(config_key::junkPacketMinSize));
|
||||
config.replace("$JUNK_PACKET_MAX_SIZE", serverConfigMap.value(config_key::junkPacketMaxSize));
|
||||
config.replace("$INIT_PACKET_JUNK_SIZE", serverConfigMap.value(config_key::initPacketJunkSize));
|
||||
config.replace("$RESPONSE_PACKET_JUNK_SIZE", serverConfigMap.value(config_key::responsePacketJunkSize));
|
||||
config.replace("$INIT_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::initPacketMagicHeader));
|
||||
config.replace("$RESPONSE_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::responsePacketMagicHeader));
|
||||
config.replace("$UNDERLOAD_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::underloadPacketMagicHeader));
|
||||
config.replace("$TRANSPORT_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::transportPacketMagicHeader));
|
||||
|
||||
jsonConfig[config_key::junkPacketCount] = serverConfigMap.value(config_key::junkPacketCount);
|
||||
jsonConfig[config_key::junkPacketMinSize] = serverConfigMap.value(config_key::junkPacketMinSize);
|
||||
jsonConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize);
|
||||
jsonConfig[config_key::initPacketJunkSize] = serverConfigMap.value(config_key::initPacketJunkSize);
|
||||
jsonConfig[config_key::responsePacketJunkSize] = serverConfigMap.value(config_key::responsePacketJunkSize);
|
||||
jsonConfig[config_key::initPacketMagicHeader] = serverConfigMap.value(config_key::initPacketMagicHeader);
|
||||
jsonConfig[config_key::responsePacketMagicHeader] = serverConfigMap.value(config_key::responsePacketMagicHeader);
|
||||
jsonConfig[config_key::underloadPacketMagicHeader] = serverConfigMap.value(config_key::underloadPacketMagicHeader);
|
||||
jsonConfig[config_key::transportPacketMagicHeader] = serverConfigMap.value(config_key::transportPacketMagicHeader);
|
||||
jsonConfig[config_key::junkPacketCount] = configMap.value(config_key::junkPacketCount);
|
||||
jsonConfig[config_key::junkPacketMinSize] = configMap.value(config_key::junkPacketMinSize);
|
||||
jsonConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize);
|
||||
jsonConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize);
|
||||
jsonConfig[config_key::responsePacketJunkSize] = configMap.value(config_key::responsePacketJunkSize);
|
||||
jsonConfig[config_key::initPacketMagicHeader] = configMap.value(config_key::initPacketMagicHeader);
|
||||
jsonConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader);
|
||||
jsonConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader);
|
||||
jsonConfig[config_key::transportPacketMagicHeader] = configMap.value(config_key::transportPacketMagicHeader);
|
||||
|
||||
return QJsonDocument(jsonConfig).toJson();
|
||||
}
|
||||
|
|
|
@ -16,11 +16,11 @@ namespace amnezia
|
|||
Q_NAMESPACE
|
||||
enum DockerContainer {
|
||||
None = 0,
|
||||
OpenVpn,
|
||||
ShadowSocks,
|
||||
Cloak,
|
||||
WireGuard,
|
||||
Awg,
|
||||
WireGuard,
|
||||
OpenVpn,
|
||||
Cloak,
|
||||
ShadowSocks,
|
||||
Ipsec,
|
||||
|
||||
// non-vpn
|
||||
|
|
|
@ -337,7 +337,7 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c
|
|||
!= newProtoConfig.value(config_key::port).toString(protocols::shadowsocks::defaultPort))
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
if (container == DockerContainer::Awg) {
|
||||
return true;
|
||||
}
|
||||
|
@ -490,8 +490,7 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
|
|||
const QJsonObject &cloakConfig = config.value(ProtocolProps::protoToString(Proto::Cloak)).toObject();
|
||||
const QJsonObject &ssConfig = config.value(ProtocolProps::protoToString(Proto::ShadowSocks)).toObject();
|
||||
const QJsonObject &wireguarConfig = config.value(ProtocolProps::protoToString(Proto::WireGuard)).toObject();
|
||||
const QJsonObject &amneziaWireguarConfig =
|
||||
config.value(ProtocolProps::protoToString(Proto::Awg)).toObject();
|
||||
const QJsonObject &amneziaWireguarConfig = config.value(ProtocolProps::protoToString(Proto::Awg)).toObject();
|
||||
const QJsonObject &sftpConfig = config.value(ProtocolProps::protoToString(Proto::Sftp)).toObject();
|
||||
|
||||
Vars vars;
|
||||
|
@ -591,33 +590,21 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
|
|||
// Amnezia wireguard vars
|
||||
vars.append({ { "$AWG_SERVER_PORT",
|
||||
amneziaWireguarConfig.value(config_key::port).toString(protocols::awg::defaultPort) } });
|
||||
vars.append({ { "$JUNK_PACKET_COUNT",
|
||||
amneziaWireguarConfig.value(config_key::junkPacketCount)
|
||||
.toString(protocols::awg::defaultJunkPacketCount) } });
|
||||
vars.append({ { "$JUNK_PACKET_MIN_SIZE",
|
||||
amneziaWireguarConfig.value(config_key::junkPacketMinSize)
|
||||
.toString(protocols::awg::defaultJunkPacketMinSize) } });
|
||||
vars.append({ { "$JUNK_PACKET_MAX_SIZE",
|
||||
amneziaWireguarConfig.value(config_key::junkPacketMaxSize)
|
||||
.toString(protocols::awg::defaultJunkPacketMaxSize) } });
|
||||
vars.append({ { "$INIT_PACKET_JUNK_SIZE",
|
||||
amneziaWireguarConfig.value(config_key::initPacketJunkSize)
|
||||
.toString(protocols::awg::defaultInitPacketJunkSize) } });
|
||||
|
||||
vars.append({ { "$JUNK_PACKET_COUNT", amneziaWireguarConfig.value(config_key::junkPacketCount).toString() } });
|
||||
vars.append({ { "$JUNK_PACKET_MIN_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMinSize).toString() } });
|
||||
vars.append({ { "$JUNK_PACKET_MAX_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMaxSize).toString() } });
|
||||
vars.append({ { "$INIT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::initPacketJunkSize).toString() } });
|
||||
vars.append({ { "$RESPONSE_PACKET_JUNK_SIZE",
|
||||
amneziaWireguarConfig.value(config_key::responsePacketJunkSize)
|
||||
.toString(protocols::awg::defaultResponsePacketJunkSize) } });
|
||||
amneziaWireguarConfig.value(config_key::responsePacketJunkSize).toString() } });
|
||||
vars.append({ { "$INIT_PACKET_MAGIC_HEADER",
|
||||
amneziaWireguarConfig.value(config_key::initPacketMagicHeader)
|
||||
.toString(protocols::awg::defaultInitPacketMagicHeader) } });
|
||||
amneziaWireguarConfig.value(config_key::initPacketMagicHeader).toString() } });
|
||||
vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER",
|
||||
amneziaWireguarConfig.value(config_key::responsePacketMagicHeader)
|
||||
.toString(protocols::awg::defaultResponsePacketMagicHeader) } });
|
||||
amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).toString() } });
|
||||
vars.append({ { "$UNDERLOAD_PACKET_MAGIC_HEADER",
|
||||
amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader)
|
||||
.toString(protocols::awg::defaultUnderloadPacketMagicHeader) } });
|
||||
amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader).toString() } });
|
||||
vars.append({ { "$TRANSPORT_PACKET_MAGIC_HEADER",
|
||||
amneziaWireguarConfig.value(config_key::transportPacketMagicHeader)
|
||||
.toString(protocols::awg::defaultTransportPacketMagicHeader) } });
|
||||
amneziaWireguarConfig.value(config_key::transportPacketMagicHeader).toString() } });
|
||||
|
||||
QString serverIp = Utils::getIPAddress(credentials.hostName);
|
||||
if (!serverIp.isEmpty()) {
|
||||
|
@ -847,6 +834,34 @@ ErrorCode ServerController::getAlreadyInstalledContainers(const ServerCredential
|
|||
containerConfig.insert(config_key::port, port);
|
||||
containerConfig.insert(config_key::transport_proto, transportProto);
|
||||
|
||||
if (protocol == Proto::Awg) {
|
||||
QString serverConfig = getTextFileFromContainer(container, credentials, protocols::awg::serverConfigPath, &errorCode);
|
||||
|
||||
QMap<QString, QString> serverConfigMap;
|
||||
auto serverConfigLines = serverConfig.split("\n");
|
||||
for (auto &line : serverConfigLines) {
|
||||
auto trimmedLine = line.trimmed();
|
||||
if (trimmedLine.startsWith("[") && trimmedLine.endsWith("]")) {
|
||||
continue;
|
||||
} else {
|
||||
QStringList parts = trimmedLine.split(" = ");
|
||||
if (parts.count() == 2) {
|
||||
serverConfigMap.insert(parts[0].trimmed(), parts[1].trimmed());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
containerConfig[config_key::junkPacketCount] = serverConfigMap.value(config_key::junkPacketCount);
|
||||
containerConfig[config_key::junkPacketMinSize] = serverConfigMap.value(config_key::junkPacketMinSize);
|
||||
containerConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize);
|
||||
containerConfig[config_key::initPacketJunkSize] = serverConfigMap.value(config_key::initPacketJunkSize);
|
||||
containerConfig[config_key::responsePacketJunkSize] = serverConfigMap.value(config_key::responsePacketJunkSize);
|
||||
containerConfig[config_key::initPacketMagicHeader] = serverConfigMap.value(config_key::initPacketMagicHeader);
|
||||
containerConfig[config_key::responsePacketMagicHeader] = serverConfigMap.value(config_key::responsePacketMagicHeader);
|
||||
containerConfig[config_key::underloadPacketMagicHeader] = serverConfigMap.value(config_key::underloadPacketMagicHeader);
|
||||
containerConfig[config_key::transportPacketMagicHeader] = serverConfigMap.value(config_key::transportPacketMagicHeader);
|
||||
}
|
||||
|
||||
config.insert(config_key::container, ContainerProps::containerToString(container));
|
||||
}
|
||||
config.insert(ProtocolProps::protoToString(protocol), containerConfig);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "protocols_defs.h"
|
||||
|
||||
#include <QRandomGenerator>
|
||||
|
||||
using namespace amnezia;
|
||||
|
||||
QDebug operator<<(QDebug debug, const amnezia::ProtocolEnumNS::Proto &p)
|
||||
|
@ -98,15 +100,28 @@ amnezia::ServiceType ProtocolProps::protocolService(Proto p)
|
|||
}
|
||||
}
|
||||
|
||||
int ProtocolProps::getPortForInstall(Proto p)
|
||||
{
|
||||
switch (p) {
|
||||
case Awg:
|
||||
case WireGuard:
|
||||
case ShadowSocks:
|
||||
case OpenVpn:
|
||||
return QRandomGenerator::global()->bounded(30000, 50000);
|
||||
default:
|
||||
return defaultPort(p);
|
||||
}
|
||||
}
|
||||
|
||||
int ProtocolProps::defaultPort(Proto p)
|
||||
{
|
||||
switch (p) {
|
||||
case Proto::Any: return -1;
|
||||
case Proto::OpenVpn: return 1194;
|
||||
case Proto::Cloak: return 443;
|
||||
case Proto::ShadowSocks: return 6789;
|
||||
case Proto::WireGuard: return 51820;
|
||||
case Proto::Awg: return 55424;
|
||||
case Proto::OpenVpn: return QString(protocols::openvpn::defaultPort).toInt();
|
||||
case Proto::Cloak: return QString(protocols::cloak::defaultPort).toInt();
|
||||
case Proto::ShadowSocks: return QString(protocols::shadowsocks::defaultPort).toInt();
|
||||
case Proto::WireGuard: return QString(protocols::wireguard::defaultPort).toInt();
|
||||
case Proto::Awg: return QString(protocols::awg::defaultPort).toInt();
|
||||
case Proto::Ikev2: return -1;
|
||||
case Proto::L2tp: return -1;
|
||||
|
||||
|
|
|
@ -228,6 +228,8 @@ namespace amnezia
|
|||
|
||||
Q_INVOKABLE static ServiceType protocolService(Proto p);
|
||||
|
||||
Q_INVOKABLE static int getPortForInstall(Proto p);
|
||||
|
||||
Q_INVOKABLE static int defaultPort(Proto p);
|
||||
Q_INVOKABLE static bool defaultPortChangeable(Proto p);
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ if ! command -v sudo > /dev/null 2>&1; then $pm update -yq; $pm install -yq sudo
|
|||
if ! command -v fuser > /dev/null 2>&1; then sudo $pm install -yq psmisc; fi;\
|
||||
if ! command -v lsof > /dev/null 2>&1; then sudo $pm install -yq lsof; fi;\
|
||||
if ! command -v docker > /dev/null 2>&1; then sudo $pm update -yq; sudo $pm install -yq $docker_pkg;\
|
||||
if [ "$dist" = "fedora" ] || [ "$dist" = "debian" ]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
|
||||
if [ "$dist" = "fedora" ] || [ "$dist" = "centos" ] || [ "$dist" = "debian" ]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
|
||||
fi;\
|
||||
if [ "$dist" = "debian" ]; then \
|
||||
docker_service=$(systemctl list-units --full --all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<translation type="vanished">Раздельное туннелирование для "Wireguard" не реализовано,опция отключена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../amnezia_application.cpp" line="303"/>
|
||||
<location filename="../amnezia_application.cpp" line="305"/>
|
||||
<source>Split tunneling for %1 is not implemented, the option was disabled</source>
|
||||
<translation>Раздельное туннелирование для %1 не реализовано, опция отключена</translation>
|
||||
</message>
|
||||
|
@ -124,7 +124,7 @@
|
|||
<message>
|
||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="58"/>
|
||||
<source>Unable change protocol while there is an active connection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Невозможно изменить протокол при активном соединении</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="69"/>
|
||||
|
@ -139,7 +139,7 @@
|
|||
<context>
|
||||
<name>ImportController</name>
|
||||
<message>
|
||||
<location filename="../ui/controllers/importController.cpp" line="429"/>
|
||||
<location filename="../ui/controllers/importController.cpp" line="427"/>
|
||||
<source>Scanned %1 of %2.</source>
|
||||
<translation>Отсканировано %1 из%2.</translation>
|
||||
</message>
|
||||
|
@ -147,58 +147,58 @@
|
|||
<context>
|
||||
<name>InstallController</name>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="110"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="161"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="143"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="193"/>
|
||||
<source>%1 installed successfully. </source>
|
||||
<translation>%1 успешно установлен. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="112"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="163"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="145"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="195"/>
|
||||
<source>%1 is already installed on the server. </source>
|
||||
<translation>%1 уже установлен на сервер. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="115"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="148"/>
|
||||
<source>
|
||||
Added containers that were already installed on the server</source>
|
||||
<translation>
|
||||
В приложение добавлены обнаруженные на сервере протоклы и сервисы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="182"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="214"/>
|
||||
<source>
|
||||
Already installed containers were found on the server. All installed containers have been added to the application</source>
|
||||
<translation>
|
||||
На сервере обнаружены установленные протоколы и сервисы, все они добавлены в приложение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="266"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="295"/>
|
||||
<source>Settings updated successfully</source>
|
||||
<translation>Настройки успешно обновлены</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="281"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="310"/>
|
||||
<source>Server '%1' was removed</source>
|
||||
<translation>Сервер '%1' был удален</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="291"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="320"/>
|
||||
<source>All containers from server '%1' have been removed</source>
|
||||
<translation>Все протоклы и сервисы были удалены с сервера '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="308"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="337"/>
|
||||
<source>%1 has been removed from the server '%2'</source>
|
||||
<translation>%1 был удален с сервера '%2'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="454"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="483"/>
|
||||
<source>Please login as the user</source>
|
||||
<translation>Пожалуйста, войдите в систему от имени пользователя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="481"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="511"/>
|
||||
<source>Server added successfully</source>
|
||||
<translation>Сервер успешно добавлен</translation>
|
||||
</message>
|
||||
|
@ -266,19 +266,19 @@ Already installed containers were found on the server. All installed containers
|
|||
<context>
|
||||
<name>PageHome</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="344"/>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="354"/>
|
||||
<source>VPN protocol</source>
|
||||
<translation>VPN протокол</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="388"/>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="398"/>
|
||||
<source>Servers</source>
|
||||
<translation>Серверы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="480"/>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="490"/>
|
||||
<source>Unable change server while there is an active connection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Невозможно изменить сервер при активном соединении</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -350,9 +350,13 @@ Already installed containers were found on the server. All installed containers
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="279"/>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation type="vanished">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="280"/>
|
||||
<source>Continue</source>
|
||||
|
@ -401,195 +405,199 @@ Already installed containers were found on the server. All installed containers
|
|||
<context>
|
||||
<name>PageProtocolOpenVpnSettings</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="76"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="77"/>
|
||||
<source>OpenVPN settings</source>
|
||||
<translation>Настройки OpenVPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="83"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="84"/>
|
||||
<source>VPN Addresses Subnet</source>
|
||||
<translation>VPN Адреса Подсеть</translation>
|
||||
<translation>Подсеть для VPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="97"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="98"/>
|
||||
<source>Network protocol</source>
|
||||
<translation>Сетевой протокол</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="126"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="127"/>
|
||||
<source>Port</source>
|
||||
<translation>Порт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="144"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="145"/>
|
||||
<source>Auto-negotiate encryption</source>
|
||||
<translation>Шифрование с автоматическим согласованием</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="161"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="162"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="163"/>
|
||||
<source>Hash</source>
|
||||
<translation>Хэш</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="170"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
||||
<source>SHA512</source>
|
||||
<translation>SHA512</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
||||
<source>SHA384</source>
|
||||
<translation>SHA384</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
||||
<source>SHA256</source>
|
||||
<translation>SHA256</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
||||
<source>SHA3-512</source>
|
||||
<translation>SHA3-512</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
||||
<source>SHA3-384</source>
|
||||
<translation>SHA3-384</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
||||
<source>SHA3-256</source>
|
||||
<translation>SHA3-256</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
||||
<source>whirlpool</source>
|
||||
<translation>whirlpool</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
||||
<source>BLAKE2b512</source>
|
||||
<translation>BLAKE2b512</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
||||
<source>BLAKE2s256</source>
|
||||
<translation>BLAKE2s256</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="180"/>
|
||||
<source>SHA1</source>
|
||||
<translation>SHA1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="207"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="208"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="209"/>
|
||||
<source>Cipher</source>
|
||||
<translation>Шифрование</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="216"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
||||
<source>AES-256-GCM</source>
|
||||
<translation>AES-256-GCM</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
||||
<source>AES-192-GCM</source>
|
||||
<translation>AES-192-GCM</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
||||
<source>AES-128-GCM</source>
|
||||
<translation>AES-128-GCM</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
||||
<source>AES-256-CBC</source>
|
||||
<translation>AES-256-CBC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
||||
<source>AES-192-CBC</source>
|
||||
<translation>AES-192-CBC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
||||
<source>AES-128-CBC</source>
|
||||
<translation>AES-128-CBC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
||||
<source>ChaCha20-Poly1305</source>
|
||||
<translation>ChaCha20-Poly1305</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
||||
<source>ARIA-256-CBC</source>
|
||||
<translation>ARIA-256-CBC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
||||
<source>CAMELLIA-256-CBC</source>
|
||||
<translation>CAMELLIA-256-CBC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="226"/>
|
||||
<source>none</source>
|
||||
<translation>none</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="258"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="261"/>
|
||||
<source>TLS auth</source>
|
||||
<translation>TLS авторизация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="273"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="276"/>
|
||||
<source>Block DNS requests outside of VPN</source>
|
||||
<translation>Блокировать DNS запросы за пределами VPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="292"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="295"/>
|
||||
<source>Additional client configuration commands</source>
|
||||
<translation>Дополнительные команды конфигурации клиента</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="308"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="340"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="311"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="343"/>
|
||||
<source>Commands:</source>
|
||||
<translation>Commands:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="324"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="327"/>
|
||||
<source>Additional server configuration commands</source>
|
||||
<translation>Дополнительные команды конфигурации сервера</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="359"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
||||
<source>Remove OpenVPN</source>
|
||||
<translation>Удалить OpenVPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="362"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="367"/>
|
||||
<source>Remove OpenVpn from server?</source>
|
||||
<translation>Удалить OpenVpn с сервера?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="363"/>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="368"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation type="vanished">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="369"/>
|
||||
<source>Continue</source>
|
||||
<translation>Продолжить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="365"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="370"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Отменить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="384"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="389"/>
|
||||
<source>Save and Restart Amnezia</source>
|
||||
<translation>Сохранить и перезагрузить</translation>
|
||||
</message>
|
||||
|
@ -612,27 +620,31 @@ Already installed containers were found on the server. All installed containers
|
|||
<translation>Параметры подключения %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="172"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="174"/>
|
||||
<source>Remove </source>
|
||||
<translation>Удалить </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="176"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
||||
<source>Remove %1 from server?</source>
|
||||
<translation>Удалить %1 с сервера?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="177"/>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation type="unfinished">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation type="obsolete">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="180"/>
|
||||
<source>Continue</source>
|
||||
<translation>Продолжить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="181"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Отменить</translation>
|
||||
</message>
|
||||
|
@ -1136,7 +1148,7 @@ Already installed containers were found on the server. All installed containers
|
|||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsConnection.qml" line="41"/>
|
||||
<source>Connection</source>
|
||||
<translation>Подключение</translation>
|
||||
<translation>Соединение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsConnection.qml" line="50"/>
|
||||
|
@ -1282,7 +1294,7 @@ Already installed containers were found on the server. All installed containers
|
|||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="127"/>
|
||||
<source>Save logs to file</source>
|
||||
<translation>Сохранять логи в файл</translation>
|
||||
<translation>Сохранить логи в файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="145"/>
|
||||
|
@ -1444,8 +1456,12 @@ Already installed containers were found on the server. All installed containers
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="117"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation>Все пользователи, которым вы поделились VPN, больше не смогут к нему подключаться.</translation>
|
||||
<translation type="vanished">Все пользователи, которым вы поделились VPN, больше не смогут к нему подключаться.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="118"/>
|
||||
|
@ -1698,7 +1714,7 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<context>
|
||||
<name>PageSetupWizardInstalling</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="57"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="65"/>
|
||||
<source>The server has already been added to the application</source>
|
||||
<translation>Сервер уже был добавлен в приложение</translation>
|
||||
</message>
|
||||
|
@ -1711,28 +1727,28 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<translation type="vanished">занят установкой других протоколов или сервисов. Установка Amnesia </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="62"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="70"/>
|
||||
<source>Amnezia has detected that your server is currently </source>
|
||||
<translation>Amnezia обнаружила, что ваш сервер в настоящее время </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="63"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="71"/>
|
||||
<source>busy installing other software. Amnezia installation </source>
|
||||
<translation>занят установкой другого программного обеспечения. Установка Amnezia </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="64"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="72"/>
|
||||
<source>will pause until the server finishes installing other software</source>
|
||||
<translation>будет приостановлена до тех пор, пока сервер не завершит установку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="121"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="129"/>
|
||||
<source>Installing</source>
|
||||
<translation>Установка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="21"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="67"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="75"/>
|
||||
<source>Usually it takes no more than 5 minutes</source>
|
||||
<translation>Обычно это занимает не более 5 минут</translation>
|
||||
</message>
|
||||
|
@ -1850,27 +1866,27 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<context>
|
||||
<name>PageSetupWizardViewConfig</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="59"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="63"/>
|
||||
<source>New connection</source>
|
||||
<translation>Новое соединение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="86"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="90"/>
|
||||
<source>Do not use connection code from public sources. It could be created to intercept your data.</source>
|
||||
<translation>Не используйте код подключения из публичных источников. Его могли создать, чтобы перехватывать ваши данные.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||
<source>Collapse content</source>
|
||||
<translation>Свернуть</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||
<source>Show content</source>
|
||||
<translation>Показать содержимое ключа</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="144"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="148"/>
|
||||
<source>Connect</source>
|
||||
<translation>Подключиться</translation>
|
||||
</message>
|
||||
|
@ -1888,9 +1904,8 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<translation>WireGuard нативный формат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
||||
<source>VPN Access</source>
|
||||
<translation>VPN-Доступ</translation>
|
||||
<translation type="vanished">VPN-Доступ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="146"/>
|
||||
|
@ -1898,14 +1913,12 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<translation>Соединение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
||||
<source>VPN access without the ability to manage the server</source>
|
||||
<translation>Доступ к VPN, без возможности управления сервером</translation>
|
||||
<translation type="vanished">Доступ к VPN, без возможности управления сервером</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
||||
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.</source>
|
||||
<translation>Доступ к управлению сервером. Пользователь, с которым вы делитесь полным доступом к соединению, сможет добавлять и удалять ваши протоколы и службы на сервере, а также изменять настройки.</translation>
|
||||
<translation type="vanished">Доступ к управлению сервером. Пользователь, с которым вы делитесь полным доступом к соединению, сможет добавлять и удалять ваши протоколы и службы на сервере, а также изменять настройки.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="190"/>
|
||||
|
@ -1948,11 +1961,26 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<source>For the AmneziaVPN app</source>
|
||||
<translation>Для AmneziaVPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
||||
<source>Share VPN Access</source>
|
||||
<translation>Поделиться VPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="158"/>
|
||||
<source>Full access</source>
|
||||
<translation>Полный доступ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
||||
<source>Share VPN access without the ability to manage the server</source>
|
||||
<translation>Поделиться доступом к VPN, без возможности управления сервером</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
||||
<source>Share access to server management. The user with whom you share full access to the server will be able to add and remove any protocols and services to the server, as well as change settings.</source>
|
||||
<translation>Поделиться доступом к управлению сервером. Пользователь, с которым вы делитесь полным доступом к серверу, сможет добавлять и удалять любые протоколы и службы на сервере, а также изменять настройки.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="251"/>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="252"/>
|
||||
|
@ -2575,9 +2603,9 @@ OpenVPN обеспечивает безопасное VPN-соединение
|
|||
|
||||
Cloak защищает OpenVPN от обнаружения и блокировок.
|
||||
|
||||
Cloak может изменять метаданные пакетов. Он полностью маскирует VPN-трафик под обычный веб-трафик, а также защищает VPN от обнаружения с помощью Active Probing. Это делает ее очень устойчивой к обнаружению
|
||||
Cloak может изменять метаданные пакетов. Он полностью маскирует VPN-трафик под обычный веб-трафик, а также защищает VPN от обнаружения с помощью Active Probing. Это делает его очень устойчивым к обнаружению
|
||||
|
||||
Сразу же после получения первого пакета данных Cloak проверяет подлинность входящего соединения. Если аутентификация не проходит, плагин маскирует сервер под поддельный сайт, и ваша VPN становится невидимой для аналитических систем.
|
||||
Сразу же после получения первого пакета данных Cloak проверяет подлинность входящего соединения. Если аутентификация не проходит, плагин маскирует сервер под поддельный сайт, и ваш VPN становится невидимым для аналитических систем.
|
||||
|
||||
Если в вашем регионе существует экстремальный уровень цензуры в Интернете, мы советуем вам при первом подключении использовать только OpenVPN через Cloak
|
||||
|
||||
|
@ -2640,7 +2668,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
|||
<translation>Сервис обмена файлами Sftp - безопасный FTP-сервис</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../protocols/protocols_defs.cpp" line="75"/>
|
||||
<location filename="../protocols/protocols_defs.cpp" line="77"/>
|
||||
<source>Sftp service</source>
|
||||
<translation>Сервис SFTP</translation>
|
||||
</message>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<translation type="vanished">未启用选项,还未实现基于WireGuard协议的VPN分离</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../amnezia_application.cpp" line="303"/>
|
||||
<location filename="../amnezia_application.cpp" line="305"/>
|
||||
<source>Split tunneling for %1 is not implemented, the option was disabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -135,7 +135,7 @@
|
|||
<message>
|
||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="58"/>
|
||||
<source>Unable change protocol while there is an active connection</source>
|
||||
<translation>Невозможно изменить протокол при наличии активного соединения</translation>
|
||||
<translation>已建立连接时无法更改服务器配置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="69"/>
|
||||
|
@ -150,7 +150,7 @@
|
|||
<context>
|
||||
<name>ImportController</name>
|
||||
<message>
|
||||
<location filename="../ui/controllers/importController.cpp" line="429"/>
|
||||
<location filename="../ui/controllers/importController.cpp" line="427"/>
|
||||
<source>Scanned %1 of %2.</source>
|
||||
<translation>扫描 %1 of %2.</translation>
|
||||
</message>
|
||||
|
@ -166,47 +166,47 @@
|
|||
<translation type="obsolete"> 已安装在服务器上</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="110"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="161"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="143"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="193"/>
|
||||
<source>%1 installed successfully. </source>
|
||||
<translation>%1 安装成功。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="112"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="163"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="145"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="195"/>
|
||||
<source>%1 is already installed on the server. </source>
|
||||
<translation>服务器上已经安装 %1。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="115"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="148"/>
|
||||
<source>
|
||||
Added containers that were already installed on the server</source>
|
||||
<translation>添加已安装在服务器上的容器</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="182"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="214"/>
|
||||
<source>
|
||||
Already installed containers were found on the server. All installed containers have been added to the application</source>
|
||||
<translation>
|
||||
在服务上发现已经安装协议并添加至应用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="266"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="295"/>
|
||||
<source>Settings updated successfully</source>
|
||||
<translation>配置更新成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="281"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="310"/>
|
||||
<source>Server '%1' was removed</source>
|
||||
<translation>已移除服务器 '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="291"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="320"/>
|
||||
<source>All containers from server '%1' have been removed</source>
|
||||
<translation>服务器 '%1' 的所有容器已移除</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="308"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="337"/>
|
||||
<source>%1 has been removed from the server '%2'</source>
|
||||
<translation>%1 已从服务器 '%2' 上移除</translation>
|
||||
</message>
|
||||
|
@ -227,12 +227,12 @@ Already installed containers were found on the server. All installed containers
|
|||
<translation type="obsolete"> 协议已从</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="454"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="483"/>
|
||||
<source>Please login as the user</source>
|
||||
<translation>请以用户身份登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/controllers/installController.cpp" line="481"/>
|
||||
<location filename="../ui/controllers/installController.cpp" line="511"/>
|
||||
<source>Server added successfully</source>
|
||||
<translation>增加服务器成功</translation>
|
||||
</message>
|
||||
|
@ -300,19 +300,19 @@ Already installed containers were found on the server. All installed containers
|
|||
<context>
|
||||
<name>PageHome</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="344"/>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="354"/>
|
||||
<source>VPN protocol</source>
|
||||
<translation>VPN协议</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="388"/>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="398"/>
|
||||
<source>Servers</source>
|
||||
<translation>服务器</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="480"/>
|
||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="490"/>
|
||||
<source>Unable change server while there is an active connection</source>
|
||||
<translation>Невозможно изменить сервер при наличии активного соединения</translation>
|
||||
<translation>已建立连接时无法更改服务器配置</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -384,8 +384,12 @@ Already installed containers were found on the server. All installed containers
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="279"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="280"/>
|
||||
|
@ -435,199 +439,203 @@ Already installed containers were found on the server. All installed containers
|
|||
<context>
|
||||
<name>PageProtocolOpenVpnSettings</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="76"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="77"/>
|
||||
<source>OpenVPN settings</source>
|
||||
<translation>OpenVPN 配置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="83"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="84"/>
|
||||
<source>VPN Addresses Subnet</source>
|
||||
<translation>VPN子网掩码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="97"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="98"/>
|
||||
<source>Network protocol</source>
|
||||
<translation>网络协议</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="126"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="127"/>
|
||||
<source>Port</source>
|
||||
<translation>端口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="144"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="145"/>
|
||||
<source>Auto-negotiate encryption</source>
|
||||
<translation>自定义加密方式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="161"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="162"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="163"/>
|
||||
<source>Hash</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="170"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
||||
<source>SHA512</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
||||
<source>SHA384</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
||||
<source>SHA256</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
||||
<source>SHA3-512</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
||||
<source>SHA3-384</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
||||
<source>SHA3-256</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
||||
<source>whirlpool</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
||||
<source>BLAKE2b512</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
||||
<source>BLAKE2s256</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="180"/>
|
||||
<source>SHA1</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="207"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="208"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="209"/>
|
||||
<source>Cipher</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="216"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
||||
<source>AES-256-GCM</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
||||
<source>AES-192-GCM</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
||||
<source>AES-128-GCM</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
||||
<source>AES-256-CBC</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
||||
<source>AES-192-CBC</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
||||
<source>AES-128-CBC</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
||||
<source>ChaCha20-Poly1305</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
||||
<source>ARIA-256-CBC</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
||||
<source>CAMELLIA-256-CBC</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="226"/>
|
||||
<source>none</source>
|
||||
<translation>无</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="258"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="261"/>
|
||||
<source>TLS auth</source>
|
||||
<translation>TLS认证</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="273"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="276"/>
|
||||
<source>Block DNS requests outside of VPN</source>
|
||||
<translation>阻止VPN外的DNS请求</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="292"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="295"/>
|
||||
<source>Additional client configuration commands</source>
|
||||
<translation>附加客户端配置命令</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="308"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="340"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="311"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="343"/>
|
||||
<source>Commands:</source>
|
||||
<translation>命令:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="324"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="327"/>
|
||||
<source>Additional server configuration commands</source>
|
||||
<translation>附加服务器端配置命令</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="359"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
||||
<source>Remove OpenVPN</source>
|
||||
<translation>移除OpenVPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="362"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="367"/>
|
||||
<source>Remove OpenVpn from server?</source>
|
||||
<translation>从服务器移除OpenVPN吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="363"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="368"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it</source>
|
||||
<translation type="obsolete">与您共享连接的所有用户将无法再连接到此链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="369"/>
|
||||
<source>Continue</source>
|
||||
<translation>继续</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="365"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="370"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="384"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="389"/>
|
||||
<source>Save and Restart Amnezia</source>
|
||||
<translation>保存并重启Amnezia</translation>
|
||||
</message>
|
||||
|
@ -654,19 +662,23 @@ Already installed containers were found on the server. All installed containers
|
|||
<translation>%1 连接选项</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="172"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="174"/>
|
||||
<source>Remove </source>
|
||||
<translation>移除 </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="176"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
||||
<source>Remove %1 from server?</source>
|
||||
<translation>从服务器移除 %1 ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="177"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> from server?</source>
|
||||
|
@ -677,12 +689,12 @@ Already installed containers were found on the server. All installed containers
|
|||
<translation type="obsolete">与您共享连接的所有用户将无法再连接到此链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="180"/>
|
||||
<source>Continue</source>
|
||||
<translation>继续</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="181"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
|
@ -1525,8 +1537,12 @@ And if you don't like the app, all the more support it - the donation will
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="117"/>
|
||||
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> from server?</source>
|
||||
|
@ -1805,22 +1821,22 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<name>PageSetupWizardInstalling</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="21"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="67"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="75"/>
|
||||
<source>Usually it takes no more than 5 minutes</source>
|
||||
<translation>通常不超过5分钟</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="57"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="65"/>
|
||||
<source>The server has already been added to the application</source>
|
||||
<translation>服务器已添加到应用软件中</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="62"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="70"/>
|
||||
<source>Amnezia has detected that your server is currently </source>
|
||||
<translation>Amnezia 检测到您的服务器当前</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="63"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="71"/>
|
||||
<source>busy installing other software. Amnezia installation </source>
|
||||
<translation>正安装其他软件。Amnezia安装</translation>
|
||||
</message>
|
||||
|
@ -1833,12 +1849,12 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<translation type="vanished">正安装其他软件。Amnezia安装</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="64"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="72"/>
|
||||
<source>will pause until the server finishes installing other software</source>
|
||||
<translation>将暂停,直到其他软件安装完成。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="121"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="129"/>
|
||||
<source>Installing</source>
|
||||
<translation>安装中</translation>
|
||||
</message>
|
||||
|
@ -1956,27 +1972,27 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<context>
|
||||
<name>PageSetupWizardViewConfig</name>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="59"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="63"/>
|
||||
<source>New connection</source>
|
||||
<translation>新连接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="86"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="90"/>
|
||||
<source>Do not use connection code from public sources. It could be created to intercept your data.</source>
|
||||
<translation>请勿使用公共来源的连接码。它可以被创建来拦截您的数据。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||
<source>Collapse content</source>
|
||||
<translation>折叠内容</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||
<source>Show content</source>
|
||||
<translation>显示内容</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="144"/>
|
||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="148"/>
|
||||
<source>Connect</source>
|
||||
<translation>连接</translation>
|
||||
</message>
|
||||
|
@ -2010,8 +2026,22 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
||||
<source>Share VPN Access</source>
|
||||
<translation>共享 VPN 访问</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
||||
<source>Share VPN access without the ability to manage the server</source>
|
||||
<translation>共享 VPN 访问,无需管理服务器</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
||||
<source>Share access to server management. The user with whom you share full access to the server will be able to add and remove any protocols and services to the server, as well as change settings.</source>
|
||||
<translation>共享服务器管理访问权限。与您共享服务器全部访问权限的用户将可以添加和删除服务器上的任何协议和服务,以及更改设置。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>VPN Access</source>
|
||||
<translation>访问VPN</translation>
|
||||
<translation type="vanished">访问VPN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="146"/>
|
||||
|
@ -2024,14 +2054,12 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<translation>完全访问</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
||||
<source>VPN access without the ability to manage the server</source>
|
||||
<translation>访问VPN,但没有权限管理服务。</translation>
|
||||
<translation type="vanished">访问VPN,但没有权限管理服务。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
||||
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.</source>
|
||||
<translation>除访问VPN外,用户还能添加和删除协议、服务以及更改配置信息</translation>
|
||||
<translation type="vanished">除访问VPN外,用户还能添加和删除协议、服务以及更改配置信息</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the servers, as well as change settings.</source>
|
||||
|
@ -2339,7 +2367,7 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
|||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../protocols/protocols_defs.cpp" line="75"/>
|
||||
<location filename="../protocols/protocols_defs.cpp" line="77"/>
|
||||
<source>Sftp service</source>
|
||||
<translation>Sftp 服务</translation>
|
||||
</message>
|
||||
|
|
|
@ -144,8 +144,6 @@ void ImportController::importConfig()
|
|||
if (credentials.isValid() || m_config.contains(config_key::containers)) {
|
||||
m_serversModel->addServer(m_config);
|
||||
|
||||
m_serversModel->setDefaultServerIndex(m_serversModel->getServersCount() - 1);
|
||||
|
||||
emit importFinished();
|
||||
} else {
|
||||
qDebug() << "Failed to import profile";
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <QEventLoop>
|
||||
#include <QJsonObject>
|
||||
#include <QStandardPaths>
|
||||
#include <QRandomGenerator>
|
||||
|
||||
#include "core/errorstrings.h"
|
||||
#include "core/servercontroller.h"
|
||||
|
@ -73,6 +74,38 @@ void InstallController::install(DockerContainer container, int port, TransportPr
|
|||
containerConfig.insert(config_key::transport_proto,
|
||||
ProtocolProps::transportProtoToString(transportProto, protocol));
|
||||
|
||||
if (container == DockerContainer::Awg) {
|
||||
QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10));
|
||||
QString junkPacketMinSize = QString::number(50);
|
||||
QString junkPacketMaxSize = QString::number(1000);
|
||||
QString initPacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150));
|
||||
QString responsePacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150));
|
||||
|
||||
QSet<QString> headersValue;
|
||||
while (headersValue.size() != 4) {
|
||||
|
||||
auto max = (std::numeric_limits<qint32>::max)();
|
||||
headersValue.insert(QString::number(QRandomGenerator::global()->bounded(1, max)));
|
||||
}
|
||||
|
||||
auto headersValueList = headersValue.values();
|
||||
|
||||
QString initPacketMagicHeader = headersValueList.at(0);
|
||||
QString responsePacketMagicHeader = headersValueList.at(1);
|
||||
QString underloadPacketMagicHeader = headersValueList.at(2);
|
||||
QString transportPacketMagicHeader = headersValueList.at(3);
|
||||
|
||||
containerConfig[config_key::junkPacketCount] = junkPacketCount;
|
||||
containerConfig[config_key::junkPacketMinSize] = junkPacketMinSize;
|
||||
containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
|
||||
containerConfig[config_key::initPacketJunkSize] = initPacketJunkSize;
|
||||
containerConfig[config_key::responsePacketJunkSize] = responsePacketJunkSize;
|
||||
containerConfig[config_key::initPacketMagicHeader] = initPacketMagicHeader;
|
||||
containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader;
|
||||
containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader;
|
||||
containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader;
|
||||
}
|
||||
|
||||
if (container == DockerContainer::Sftp) {
|
||||
containerConfig.insert(config_key::userName, protocols::sftp::defaultUserName);
|
||||
containerConfig.insert(config_key::password, Utils::getRandomString(10));
|
||||
|
@ -132,7 +165,6 @@ void InstallController::installServer(DockerContainer container, QJsonObject &co
|
|||
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
|
||||
|
||||
m_serversModel->addServer(server);
|
||||
m_serversModel->setDefaultServerIndex(m_serversModel->getServersCount() - 1);
|
||||
|
||||
emit installServerFinished(finishMessage);
|
||||
return;
|
||||
|
@ -183,9 +215,6 @@ void InstallController::installContainer(DockerContainer container, QJsonObject
|
|||
"All installed containers have been added to the application");
|
||||
}
|
||||
|
||||
if (ContainerProps::containerService(container) == ServiceType::Vpn) {
|
||||
m_containersModel->setData(m_containersModel->index(container), true, ContainersModel::Roles::IsDefaultRole);
|
||||
}
|
||||
emit installContainerFinished(finishMessage, ContainerProps::containerService(container) == ServiceType::Other);
|
||||
return;
|
||||
}
|
||||
|
@ -475,8 +504,9 @@ void InstallController::addEmptyServer()
|
|||
server.insert(config_key::port, m_currentlyInstalledServerCredentials.port);
|
||||
server.insert(config_key::description, m_settings->nextAvailableServerName());
|
||||
|
||||
server.insert(config_key::defaultContainer, ContainerProps::containerToString(DockerContainer::None));
|
||||
|
||||
m_serversModel->addServer(server);
|
||||
m_serversModel->setDefaultServerIndex(m_serversModel->getServersCount() - 1);
|
||||
|
||||
emit installServerFinished(tr("Server added successfully"));
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ bool ContainersModel::setData(const QModelIndex &index, const QVariant &value, i
|
|||
// return container;
|
||||
case IsInstalledRole:
|
||||
// return m_settings->containers(m_currentlyProcessedServerIndex).contains(container);
|
||||
case IsDefaultRole: {
|
||||
case IsDefaultRole: { //todo remove
|
||||
m_settings->setDefaultContainer(m_currentlyProcessedServerIndex, container);
|
||||
m_defaultContainerIndex = container;
|
||||
emit defaultContainerChanged();
|
||||
|
@ -117,6 +117,14 @@ QString ContainersModel::getDefaultContainerName()
|
|||
return ContainerProps::containerHumanNames().value(m_defaultContainerIndex);
|
||||
}
|
||||
|
||||
void ContainersModel::setDefaultContainer(int index)
|
||||
{
|
||||
auto container = static_cast<DockerContainer>(index);
|
||||
m_settings->setDefaultContainer(m_currentlyProcessedServerIndex, container);
|
||||
m_defaultContainerIndex = container;
|
||||
emit defaultContainerChanged();
|
||||
}
|
||||
|
||||
int ContainersModel::getCurrentlyProcessedContainerIndex()
|
||||
{
|
||||
return m_currentlyProcessedContainerIndex;
|
||||
|
|
|
@ -46,6 +46,7 @@ public:
|
|||
public slots:
|
||||
DockerContainer getDefaultContainer();
|
||||
QString getDefaultContainerName();
|
||||
void setDefaultContainer(int index);
|
||||
|
||||
void setCurrentlyProcessedServerIndex(const int index);
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ void ServersModel::setDefaultServerIndex(const int index)
|
|||
{
|
||||
m_settings->setDefaultServer(index);
|
||||
m_defaultServerIndex = m_settings->defaultServerIndex();
|
||||
emit defaultServerIndexChanged();
|
||||
emit defaultServerIndexChanged(m_defaultServerIndex);
|
||||
}
|
||||
|
||||
const int ServersModel::getDefaultServerIndex()
|
||||
|
|
|
@ -64,7 +64,7 @@ protected:
|
|||
|
||||
signals:
|
||||
void currentlyProcessedServerIndexChanged(const int index);
|
||||
void defaultServerIndexChanged();
|
||||
void defaultServerIndexChanged(const int index);
|
||||
void defaultServerNameChanged();
|
||||
|
||||
private:
|
||||
|
|
|
@ -142,6 +142,7 @@ Button {
|
|||
PageController.setTriggeredBtConnectButton(true)
|
||||
|
||||
ServersModel.currentlyProcessedIndex = ServersModel.getDefaultServerIndex()
|
||||
InstallController.setShouldCreateServer(false)
|
||||
PageController.goToPage(PageEnum.PageSetupWizardEasy)
|
||||
|
||||
return
|
||||
|
|
|
@ -17,9 +17,11 @@ DrawerType {
|
|||
property var noButtonFunction
|
||||
|
||||
width: parent.width
|
||||
height: parent.height * 0.5
|
||||
height: content.implicitHeight + 32
|
||||
|
||||
ColumnLayout {
|
||||
id: content
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
|
||||
import "../Config"
|
||||
|
||||
Drawer {
|
||||
id: drawer
|
||||
property bool needCloseButton: true
|
||||
|
@ -39,6 +41,18 @@ Drawer {
|
|||
|
||||
border.color: "#2C2D30"
|
||||
border.width: 1
|
||||
|
||||
Rectangle {
|
||||
visible: GC.isMobile()
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.topMargin: 10
|
||||
|
||||
width: 20
|
||||
height: 2
|
||||
color: "#2C2D30"
|
||||
}
|
||||
}
|
||||
|
||||
Overlay.modal: Rectangle {
|
||||
|
|
|
@ -30,17 +30,13 @@ Switch {
|
|||
property string hoveredIndicatorBackgroundColor: Qt.rgba(1, 1, 1, 0.08)
|
||||
property string defaultIndicatorBackgroundColor: "transparent"
|
||||
|
||||
implicitWidth: content.implicitWidth + switcher.implicitWidth
|
||||
implicitHeight: content.implicitHeight
|
||||
|
||||
hoverEnabled: enabled ? true : false
|
||||
|
||||
indicator: Rectangle {
|
||||
id: switcher
|
||||
|
||||
anchors.left: content.right
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.leftMargin: 4
|
||||
|
||||
implicitWidth: 52
|
||||
implicitHeight: 32
|
||||
|
@ -90,11 +86,11 @@ Switch {
|
|||
contentItem: ColumnLayout {
|
||||
id: content
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.rightMargin: switcher.implicitWidth
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
ListItemTitleType {
|
||||
Layout.fillWidth: true
|
||||
rightPadding: indicator.width
|
||||
|
||||
text: root.text
|
||||
color: root.enabled ? root.textColor : root.textDisabledColor
|
||||
|
@ -104,6 +100,7 @@ Switch {
|
|||
id: description
|
||||
|
||||
Layout.fillWidth: true
|
||||
rightPadding: indicator.width
|
||||
|
||||
color: root.enabled ? root.descriptionTextColor : root.descriptionTextDisabledColor
|
||||
|
||||
|
|
|
@ -241,8 +241,18 @@ PageType {
|
|||
}
|
||||
]
|
||||
|
||||
DividerType {
|
||||
Layout.topMargin: 10
|
||||
Layout.fillWidth: false
|
||||
Layout.preferredWidth: 20
|
||||
Layout.preferredHeight: 2
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||
|
||||
visible: (buttonContent.collapsedVisibility || buttonContent.expandedVisibility)
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.topMargin: 24
|
||||
Layout.topMargin: 14
|
||||
Layout.leftMargin: 24
|
||||
Layout.rightMargin: 24
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||
|
@ -305,7 +315,7 @@ PageType {
|
|||
|
||||
Header1TextType {
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: 24
|
||||
Layout.topMargin: 14
|
||||
Layout.leftMargin: 16
|
||||
Layout.rightMargin: 16
|
||||
|
||||
|
|
|
@ -276,7 +276,7 @@ PageType {
|
|||
|
||||
onClicked: {
|
||||
questionDrawer.headerText = qsTr("Remove AmneziaWG from server?")
|
||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
||||
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||
questionDrawer.yesButtonText = qsTr("Continue")
|
||||
questionDrawer.noButtonText = qsTr("Cancel")
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import QtQuick.Layouts
|
|||
import SortFilterProxyModel 0.2
|
||||
|
||||
import PageEnum 1.0
|
||||
import ContainerEnum 1.0
|
||||
|
||||
import "./"
|
||||
import "../Controls2"
|
||||
|
@ -252,6 +253,8 @@ PageType {
|
|||
|
||||
ColumnLayout {
|
||||
id: checkboxLayout
|
||||
|
||||
anchors.fill: parent
|
||||
CheckBoxType {
|
||||
Layout.fillWidth: true
|
||||
|
||||
|
@ -351,6 +354,8 @@ PageType {
|
|||
Layout.leftMargin: -8
|
||||
implicitHeight: 32
|
||||
|
||||
visible: ContainersModel.getCurrentlyProcessedContainerIndex() === ContainerEnum.OpenVpn
|
||||
|
||||
defaultColor: "transparent"
|
||||
hoveredColor: Qt.rgba(1, 1, 1, 0.08)
|
||||
pressedColor: Qt.rgba(1, 1, 1, 0.12)
|
||||
|
@ -360,7 +365,7 @@ PageType {
|
|||
|
||||
onClicked: {
|
||||
questionDrawer.headerText = qsTr("Remove OpenVpn from server?")
|
||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
||||
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||
questionDrawer.yesButtonText = qsTr("Continue")
|
||||
questionDrawer.noButtonText = qsTr("Cancel")
|
||||
|
||||
|
|
|
@ -169,12 +169,14 @@ PageType {
|
|||
|
||||
width: parent.width
|
||||
|
||||
visible: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
|
||||
|
||||
text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName()
|
||||
textColor: "#EB5757"
|
||||
|
||||
clickedFunction: function() {
|
||||
questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName())
|
||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
||||
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||
questionDrawer.yesButtonText = qsTr("Continue")
|
||||
questionDrawer.noButtonText = qsTr("Cancel")
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ PageType {
|
|||
|
||||
clickedFunction: function() {
|
||||
questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName())
|
||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
||||
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||
questionDrawer.yesButtonText = qsTr("Continue")
|
||||
questionDrawer.noButtonText = qsTr("Cancel")
|
||||
|
||||
|
|
|
@ -24,6 +24,10 @@ PageType {
|
|||
target: InstallController
|
||||
|
||||
function onInstallContainerFinished(finishedMessage, isServiceInstall) {
|
||||
if (!ConnectionController.isConnected && !isServiceInstall) {
|
||||
ContainersModel.setDefaultContainer(ContainersModel.getCurrentlyProcessedContainerIndex())
|
||||
}
|
||||
|
||||
PageController.goToStartPage()
|
||||
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageHome)) {
|
||||
PageController.restorePageHomeState(true)
|
||||
|
@ -41,6 +45,10 @@ PageType {
|
|||
}
|
||||
|
||||
function onInstallServerFinished(finishedMessage) {
|
||||
if (!ConnectionController.isConnected) {
|
||||
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
|
||||
}
|
||||
|
||||
PageController.goToStartPage()
|
||||
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageSetupWizardStart)) {
|
||||
PageController.replaceStartPage()
|
||||
|
|
|
@ -224,7 +224,7 @@ PageType {
|
|||
if (ProtocolProps.defaultPort(defaultContainerProto) < 0) {
|
||||
port.visible = false
|
||||
} else {
|
||||
port.textFieldText = ProtocolProps.defaultPort(defaultContainerProto)
|
||||
port.textFieldText = ProtocolProps.getPortForInstall(defaultContainerProto)
|
||||
}
|
||||
transportProtoSelector.currentIndex = ProtocolProps.defaultTransportProto(defaultContainerProto)
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ PageType {
|
|||
|
||||
text: qsTr("I have nothing")
|
||||
|
||||
onClicked: Qt.openUrlExternally("https://ru-docs.amnezia.org/guides/hosting-instructions")
|
||||
onClicked: Qt.openUrlExternally("https://amnezia.org/instructions/0_starter-guide")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,10 @@ PageType {
|
|||
}
|
||||
|
||||
function onImportFinished() {
|
||||
if (ConnectionController.isConnected) {
|
||||
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
|
||||
}
|
||||
|
||||
PageController.goToStartPage()
|
||||
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageSetupWizardStart)) {
|
||||
PageController.replaceStartPage()
|
||||
|
|
|
@ -118,7 +118,7 @@ PageType {
|
|||
Layout.fillWidth: true
|
||||
Layout.topMargin: 24
|
||||
|
||||
headerText: qsTr("VPN Access")
|
||||
headerText: qsTr("Share VPN Access")
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
@ -171,8 +171,8 @@ PageType {
|
|||
Layout.topMargin: 24
|
||||
Layout.bottomMargin: 24
|
||||
|
||||
text: accessTypeSelector.currentIndex === 0 ? qsTr("VPN access without the ability to manage the server") :
|
||||
qsTr("Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.")
|
||||
text: accessTypeSelector.currentIndex === 0 ? qsTr("Share VPN access without the ability to manage the server") :
|
||||
qsTr("Share access to server management. The user with whom you share full access to the server will be able to add and remove any protocols and services to the server, as well as change settings.")
|
||||
color: "#878B91"
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue