From 9ad3ace7e7a612cbcbd0b7ef8a9621099f221af9 Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Sun, 15 Jun 2025 08:29:18 +0200
Subject: [PATCH 1/9] feat: add special handshake params to ui
---
.../server_scripts/awg/configure_container.sh | 10 +
client/server_scripts/awg/template.conf | 9 +
.../Pages2/PageProtocolAwgClientSettings.qml | 100 +++++++++-
.../ui/qml/Pages2/PageProtocolAwgSettings.qml | 187 +++++++++++++++++-
4 files changed, 300 insertions(+), 6 deletions(-)
diff --git a/client/server_scripts/awg/configure_container.sh b/client/server_scripts/awg/configure_container.sh
index 2000c965..06209ce8 100644
--- a/client/server_scripts/awg/configure_container.sh
+++ b/client/server_scripts/awg/configure_container.sh
@@ -23,4 +23,14 @@ H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER
H3 = $UNDERLOAD_PACKET_MAGIC_HEADER
H4 = $TRANSPORT_PACKET_MAGIC_HEADER
+I1 = $I1
+I2 = $I2
+I3 = $I3
+I4 = $I4
+I5 = $I5
+J1 = $J1
+J2 = $J2
+J3 = $J3
+Itime = $I_TIME
+
EOF
diff --git a/client/server_scripts/awg/template.conf b/client/server_scripts/awg/template.conf
index 79932806..b452990b 100644
--- a/client/server_scripts/awg/template.conf
+++ b/client/server_scripts/awg/template.conf
@@ -11,6 +11,15 @@ H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER
H3 = $UNDERLOAD_PACKET_MAGIC_HEADER
H4 = $TRANSPORT_PACKET_MAGIC_HEADER
+I1 = $I1
+I2 = $I2
+I3 = $I3
+I4 = $I4
+I5 = $I5
+J1 = $J1
+J2 = $J2
+J3 = $J3
+Itime = $I_TIME
[Peer]
PublicKey = $WIREGUARD_SERVER_PUBLIC_KEY
diff --git a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
index b8cf5f93..24dd60a9 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
@@ -171,7 +171,6 @@ PageType {
}
checkEmptyText: true
-
}
Header2TextType {
@@ -257,6 +256,105 @@ PageType {
headerText: "H4 - Transport packet magic header"
textField.text: serverTransportPacketMagicHeader
}
+
+ TextFieldWithHeaderType {
+ id: i1JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "I1 - First special junk packet"
+ textField.text: serverI1JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: i2JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "I2 - Second special junk packet"
+ textField.text: serverI2JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: i3JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "I3 - Third special junk packet"
+ textField.text: serverI3JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: i4JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "I4 - Fourth special junk packet"
+ textField.text: serverI4JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: i5JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "I5 - Fifth special junk packet"
+ textField.text: serverI5JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: j1JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "J1 - First controlled junk packet"
+ textField.text: serverJ1JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: j2JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "J2 - Second controlled junk packet"
+ textField.text: serverJ2JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: j3JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "J3 - Third controlled junk packet"
+ textField.text: serverJ3JunkPacket
+ }
+
+ TextFieldWithHeaderType {
+ id: iTimeTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ enabled: false
+
+ headerText: "Itime - Special handshake timeout"
+ textField.text: serverSepciaHandshaketIntervalTime
+ }
}
}
}
diff --git a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
index e8fd2b94..93455f97 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
@@ -280,6 +280,24 @@ PageType {
checkEmptyText: true
}
+ TextFieldWithHeaderType {
+ id: underloadPacketMagicHeaderTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("H3 - Underload packet magic header")
+ textField.text: serverUnderloadPacketMagicHeader
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverUnderloadPacketMagicHeader) {
+ serverUnderloadPacketMagicHeader = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
TextFieldWithHeaderType {
id: transportPacketMagicHeaderTextField
Layout.fillWidth: true
@@ -299,23 +317,173 @@ PageType {
}
TextFieldWithHeaderType {
- id: underloadPacketMagicHeaderTextField
+ id: I1JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
- headerText: qsTr("H3 - Underload packet magic header")
- textField.text: serverUnderloadPacketMagicHeader
+ headerText: qsTr("I1 - First special junk packet")
+ textField.text: serverI1JunkPacket
textField.validator: IntValidator { bottom: 0 }
textField.onEditingFinished: {
- if (textField.text !== serverUnderloadPacketMagicHeader) {
- serverUnderloadPacketMagicHeader = textField.text
+ if (textField.text !== serverI1JunkPacket) {
+ serverI1JunkPacket = textField.text
}
}
checkEmptyText: true
}
+ TextFieldWithHeaderType {
+ id: I2JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I2 - Second special junk packet")
+ textField.text: serverI2JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverI2JunkPacket) {
+ serverI2JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: I3JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I3 - Third special junk packet")
+ textField.text: serverI3JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverI3JunkPacket) {
+ serverI3JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: I4JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I4 - Fourth special junk packet")
+ textField.text: serverI4JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverI4JunkPacket) {
+ serverI4JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: I5JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I5 - Fifth special junk packet")
+ textField.text: serverI5JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverI5JunkPacket) {
+ serverI5JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: J1JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("J1 - First controlled junk packet")
+ textField.text: serverJ1JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverJ1JunkPacket) {
+ serverJ1JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: J2JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("J2 - Second controlled junk packet")
+ textField.text: serverJ2JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverJ2JunkPacket) {
+ serverJ2JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: J3JunkPacketTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("J3 - Third controlled junk packet")
+ textField.text: serverJ3JunkPacket
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverJ3JunkPacket) {
+ serverJ3JunkPacket = textField.text
+ }
+ }
+
+ checkEmptyText: true
+ }
+
+ TextFieldWithHeaderType {
+ id: ItimeTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("Itime - Special handshake timeout")
+ textField.text: serverSepciaHandshaketIntervalTime
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== serverSepcialHandshakeIntervalTime) {
+ serverSepcialHandshakeIntervalTime = textField.text
+ }
+ }
+
+ checkEmptyText: true
+
+ onActiveFocusChanged: {
+ if(activeFocus) {
+ listview.positionViewAtEnd()
+ }
+ }
+ }
+
BasicButtonType {
id: saveRestartButton
@@ -332,6 +500,15 @@ PageType {
junkPacketMaxSizeTextField.errorText === "" &&
junkPacketMinSizeTextField.errorText === "" &&
junkPacketCountTextField.errorText === "" &&
+ I1JunkPacketTextField.errorText === "" &&
+ I2JunkPacketTextField.errorText === "" &&
+ I3JunkPacketTextField.errorText === "" &&
+ I4JunkPacketTextField.errorText === "" &&
+ I5JunkPacketTextField.errorText === "" &&
+ J1JunkPacketTextField.errorText === "" &&
+ J2JunkPacketTextField.errorText === "" &&
+ J3JunkPacketTextField.errorText === "" &&
+ ItimeTextField.errorText === "" &&
portTextField.errorText === "" &&
vpnAddressSubnetTextField.errorText === ""
From 89ed4d03a3c53646c560c4ed426eb99900928d97 Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Wed, 18 Jun 2025 20:00:49 +0200
Subject: [PATCH 2/9] feat: finish adding params
---
client/configurators/awg_configurator.cpp | 9 +
client/core/controllers/serverController.cpp | 34 +-
client/daemon/daemon.cpp | 28 +
client/daemon/interfaceconfig.cpp | 10 +
client/daemon/interfaceconfig.h | 3 +
client/mozilla/localsocketcontroller.cpp | 33 +-
.../linux/daemon/wireguardutilslinux.cpp | 10 +
client/protocols/protocols_defs.h | 18 +
client/server_scripts/awg/Dockerfile | 6 +-
.../server_scripts/awg/configure_container.sh | 18 +-
client/server_scripts/awg/template.conf | 18 +-
client/translations/amneziavpn_ar_EG.ts | 903 ++++++++++++-----
client/translations/amneziavpn_fa_IR.ts | 919 ++++++++++++-----
client/translations/amneziavpn_hi_IN.ts | 907 ++++++++++++-----
client/translations/amneziavpn_my_MM.ts | 903 ++++++++++++-----
client/translations/amneziavpn_ru_RU.ts | 121 ++-
client/translations/amneziavpn_uk_UA.ts | 953 ++++++++++++-----
client/translations/amneziavpn_ur_PK.ts | 911 ++++++++++++-----
client/translations/amneziavpn_zh_CN.ts | 959 +++++++++++++-----
.../controllers/api/apiConfigsController.cpp | 9 +
client/ui/controllers/importController.cpp | 29 +-
client/ui/controllers/installController.cpp | 29 +
client/ui/models/protocols/awgConfigModel.cpp | 217 +++-
client/ui/models/protocols/awgConfigModel.h | 15 +-
.../Pages2/PageProtocolAwgClientSettings.qml | 99 --
.../ui/qml/Pages2/PageProtocolAwgSettings.qml | 90 +-
26 files changed, 5249 insertions(+), 2002 deletions(-)
diff --git a/client/configurators/awg_configurator.cpp b/client/configurators/awg_configurator.cpp
index 21b61ba4..f5e21cf0 100644
--- a/client/configurators/awg_configurator.cpp
+++ b/client/configurators/awg_configurator.cpp
@@ -39,6 +39,15 @@ QString AwgConfigurator::createConfig(const ServerCredentials &credentials, Dock
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);
+ jsonConfig[config_key::specialJunk1] = configMap.value(amnezia::config_key::specialJunk1);
+ jsonConfig[config_key::specialJunk2] = configMap.value(amnezia::config_key::specialJunk2);
+ jsonConfig[config_key::specialJunk3] = configMap.value(amnezia::config_key::specialJunk3);
+ jsonConfig[config_key::specialJunk4] = configMap.value(amnezia::config_key::specialJunk4);
+ jsonConfig[config_key::specialJunk5] = configMap.value(amnezia::config_key::specialJunk5);
+ jsonConfig[config_key::controlledJunk1] = configMap.value(amnezia::config_key::controlledJunk1);
+ jsonConfig[config_key::controlledJunk2] = configMap.value(amnezia::config_key::controlledJunk2);
+ jsonConfig[config_key::controlledJunk3] = configMap.value(amnezia::config_key::controlledJunk3);
+ jsonConfig[config_key::specialHandshakeTimeout] = configMap.value(amnezia::config_key::specialHandshakeTimeout);
jsonConfig[config_key::mtu] =
containerConfig.value(ProtocolProps::protoToString(Proto::Awg)).toObject().value(config_key::mtu).toString(protocols::awg::defaultMtu);
diff --git a/client/core/controllers/serverController.cpp b/client/core/controllers/serverController.cpp
index 8ff6b6c8..0f88e370 100644
--- a/client/core/controllers/serverController.cpp
+++ b/client/core/controllers/serverController.cpp
@@ -366,8 +366,27 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c
!= newProtoConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader))
|| (oldProtoConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader)
!= newProtoConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader))
- || (oldProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)
- != newProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)))
+ || (oldProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader))
+ != newProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)
+ || (oldProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1))
+ != newProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1)
+ || (oldProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2))
+ != newProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2)
+ || (oldProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3))
+ != newProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3)
+ || (oldProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4))
+ != newProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4)
+ || (oldProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5))
+ != newProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5)
+ || (oldProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1))
+ != newProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1)
+ || (oldProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2))
+ != newProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2)
+ || (oldProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3))
+ != newProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3)
+ || (oldProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout))
+ != newProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout))
+
return true;
}
@@ -455,7 +474,7 @@ ErrorCode ServerController::buildContainerWorker(const ServerCredentials &creden
runScript(credentials,
replaceVars(amnezia::scriptData(SharedScriptType::build_container), genVarsForScript(credentials, container, config)),
cbReadStdOut, cbReadStdErr);
-
+
if (stdOut.contains("doesn't work on cgroups v2"))
return ErrorCode::ServerDockerOnCgroupsV2;
if (stdOut.contains("cgroup mountpoint does not exist"))
@@ -638,6 +657,15 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).toString() } });
vars.append({ { "$UNDERLOAD_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader).toString() } });
vars.append({ { "$TRANSPORT_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::transportPacketMagicHeader).toString() } });
+ vars.append({ { "$SPECIAL_JUNK_1", amneziaWireguarConfig.value(config_key::specialJunk1).toString() } });
+ vars.append({ { "$SPECIAL_JUNK_2", amneziaWireguarConfig.value(config_key::specialJunk2).toString() } });
+ vars.append({ { "$SPECIAL_JUNK_3", amneziaWireguarConfig.value(config_key::specialJunk3).toString() } });
+ vars.append({ { "$SPECIAL_JUNK_4", amneziaWireguarConfig.value(config_key::specialJunk4).toString() } });
+ vars.append({ { "$SPECIAL_JUNK_5", amneziaWireguarConfig.value(config_key::specialJunk5).toString() } });
+ vars.append({ { "$CONTROLLED_JUNK_1", amneziaWireguarConfig.value(config_key::controlledJunk1).toString() } });
+ vars.append({ { "$CONTROLLED_JUNK_2", amneziaWireguarConfig.value(config_key::controlledJunk2).toString() } });
+ vars.append({ { "$CONTROLLED_JUNK_3", amneziaWireguarConfig.value(config_key::controlledJunk3).toString() } });
+ vars.append({ { "$SPECIAL_HANDSHAKE_TIMEOUT", amneziaWireguarConfig.value(config_key::specialHandshakeTimeout).toString() } });
// Socks5 proxy vars
vars.append({ { "$SOCKS5_PROXY_PORT", socks5ProxyConfig.value(config_key::port).toString(protocols::socks5Proxy::defaultPort) } });
diff --git a/client/daemon/daemon.cpp b/client/daemon/daemon.cpp
index 24e72629..390cf641 100644
--- a/client/daemon/daemon.cpp
+++ b/client/daemon/daemon.cpp
@@ -404,6 +404,34 @@ bool Daemon::parseConfig(const QJsonObject& obj, InterfaceConfig& config) {
config.m_transportPacketMagicHeader = obj.value("H4").toString();
}
+ if (!obj.value("I1").isNull()) {
+ config.m_specialJunk["I1"] = obj.value("I1").toString();
+ }
+ if (!obj.value("I2").isNull()) {
+ config.m_specialJunk["I2"] = obj.value("I2").toString();
+ }
+ if (!obj.value("I3").isNull()) {
+ config.m_specialJunk["I3"] = obj.value("I3").toString();
+ }
+ if (!obj.value("I4").isNull()) {
+ config.m_specialJunk["I4"] = obj.value("I4").toString();
+ }
+ if (!obj.value("I5").isNull()) {
+ config.m_specialJunk["I5"] = obj.value("I5").toString();
+ }
+ if (!obj.value("J1").isNull()) {
+ config.m_controlledJunk["J1"] = obj.value("J1").toString();
+ }
+ if (!obj.value("J2").isNull()) {
+ config.m_controlledJunk["J2"] = obj.value("J2").toString();
+ }
+ if (!obj.value("J3").isNull()) {
+ config.m_controlledJunk["J3"] = obj.value("J3").toString();
+ }
+ if (!obj.value("Itime").isNull()) {
+ config.m_specialHandshakeTimeout = obj.value("Itime").toString();
+ }
+
return true;
}
diff --git a/client/daemon/interfaceconfig.cpp b/client/daemon/interfaceconfig.cpp
index f0adcc92..c02d19f9 100644
--- a/client/daemon/interfaceconfig.cpp
+++ b/client/daemon/interfaceconfig.cpp
@@ -138,6 +138,16 @@ QString InterfaceConfig::toWgConf(const QMap& extra) const {
out << "H4 = " << m_transportPacketMagicHeader << "\n";
}
+ for (const QString& key : m_specialJunk.keys()) {
+ out << key << " = " << m_specialJunk[key] << "\n";
+ }
+ for (const QString& key : m_controlledJunk.keys()) {
+ out << key << " = " << m_controlledJunk[key] << "\n";
+ }
+ if (!m_specialHandshakeTimeout.isNull()) {
+ out << "Itime = " << m_specialHandshakeTimeout << "\n";
+ }
+
// If any extra config was provided, append it now.
for (const QString& key : extra.keys()) {
out << key << " = " << extra[key] << "\n";
diff --git a/client/daemon/interfaceconfig.h b/client/daemon/interfaceconfig.h
index ee43a253..1cb432a0 100644
--- a/client/daemon/interfaceconfig.h
+++ b/client/daemon/interfaceconfig.h
@@ -53,6 +53,9 @@ class InterfaceConfig {
QString m_responsePacketMagicHeader;
QString m_underloadPacketMagicHeader;
QString m_transportPacketMagicHeader;
+ QMap m_specialJunk;
+ QMap m_controlledJunk;
+ QString m_specialHandshakeTimeout;
QJsonObject toJson() const;
QString toWgConf(
diff --git a/client/mozilla/localsocketcontroller.cpp b/client/mozilla/localsocketcontroller.cpp
index afa29c47..db7295a5 100644
--- a/client/mozilla/localsocketcontroller.cpp
+++ b/client/mozilla/localsocketcontroller.cpp
@@ -38,7 +38,7 @@ LocalSocketController::LocalSocketController() {
m_socket = new QLocalSocket(this);
connect(m_socket, &QLocalSocket::connected, this,
&LocalSocketController::daemonConnected);
- connect(m_socket, &QLocalSocket::disconnected, this,
+ connect(m_socket, &QLocalSocket::disconnected, this,
[&] { errorOccurred(QLocalSocket::PeerClosedError); });
connect(m_socket, &QLocalSocket::errorOccurred, this,
&LocalSocketController::errorOccurred);
@@ -135,7 +135,7 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
// set up IPv6 unique-local-address, ULA, with "fd00::/8" prefix, not globally routable.
// this will be default IPv6 gateway, OS recognizes that IPv6 link is local and switches to IPv4.
- // Otherwise some OSes (Linux) try IPv6 forever and hang.
+ // Otherwise some OSes (Linux) try IPv6 forever and hang.
// https://en.wikipedia.org/wiki/Unique_local_address (RFC 4193)
// https://man7.org/linux/man-pages/man5/gai.conf.5.html
json.insert("deviceIpv6Address", "fd58:baa6:dead::1"); // simply "dead::1" is globally-routable, don't use it
@@ -241,6 +241,15 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
json.insert(amnezia::config_key::responsePacketMagicHeader, wgConfig.value(amnezia::config_key::responsePacketMagicHeader));
json.insert(amnezia::config_key::underloadPacketMagicHeader, wgConfig.value(amnezia::config_key::underloadPacketMagicHeader));
json.insert(amnezia::config_key::transportPacketMagicHeader, wgConfig.value(amnezia::config_key::transportPacketMagicHeader));
+ json.insert(amnezia::config_key::specialJunk1, wgConfig.value(amnezia::config_key::specialJunk1));
+ json.insert(amnezia::config_key::specialJunk2, wgConfig.value(amnezia::config_key::specialJunk2));
+ json.insert(amnezia::config_key::specialJunk3, wgConfig.value(amnezia::config_key::specialJunk3));
+ json.insert(amnezia::config_key::specialJunk4, wgConfig.value(amnezia::config_key::specialJunk4));
+ json.insert(amnezia::config_key::specialJunk5, wgConfig.value(amnezia::config_key::specialJunk5));
+ json.insert(amnezia::config_key::controlledJunk1, wgConfig.value(amnezia::config_key::controlledJunk1));
+ json.insert(amnezia::config_key::controlledJunk2, wgConfig.value(amnezia::config_key::controlledJunk2));
+ json.insert(amnezia::config_key::controlledJunk3, wgConfig.value(amnezia::config_key::controlledJunk3));
+ json.insert(amnezia::config_key::specialHandshakeTimeout, wgConfig.value(amnezia::config_key::specialHandshakeTimeout));
} else if (!wgConfig.value(amnezia::config_key::junkPacketCount).isUndefined()
&& !wgConfig.value(amnezia::config_key::junkPacketMinSize).isUndefined()
&& !wgConfig.value(amnezia::config_key::junkPacketMaxSize).isUndefined()
@@ -249,7 +258,16 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
&& !wgConfig.value(amnezia::config_key::initPacketMagicHeader).isUndefined()
&& !wgConfig.value(amnezia::config_key::responsePacketMagicHeader).isUndefined()
&& !wgConfig.value(amnezia::config_key::underloadPacketMagicHeader).isUndefined()
- && !wgConfig.value(amnezia::config_key::transportPacketMagicHeader).isUndefined()) {
+ && !wgConfig.value(amnezia::config_key::transportPacketMagicHeader).isUndefined()
+ && !wgConfig.value(amnezia::config_key::specialJunk1).isUndefined()
+ && !wgConfig.value(amnezia::config_key::specialJunk2).isUndefined()
+ && !wgConfig.value(amnezia::config_key::specialJunk3).isUndefined()
+ && !wgConfig.value(amnezia::config_key::specialJunk4).isUndefined()
+ && !wgConfig.value(amnezia::config_key::specialJunk5).isUndefined()
+ && !wgConfig.value(amnezia::config_key::controlledJunk1).isUndefined()
+ && !wgConfig.value(amnezia::config_key::controlledJunk2).isUndefined()
+ && !wgConfig.value(amnezia::config_key::controlledJunk3).isUndefined()
+ && !wgConfig.value(amnezia::config_key::specialHandshakeTimeout).isUndefined()) {
json.insert(amnezia::config_key::junkPacketCount, wgConfig.value(amnezia::config_key::junkPacketCount));
json.insert(amnezia::config_key::junkPacketMinSize, wgConfig.value(amnezia::config_key::junkPacketMinSize));
json.insert(amnezia::config_key::junkPacketMaxSize, wgConfig.value(amnezia::config_key::junkPacketMaxSize));
@@ -259,6 +277,15 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
json.insert(amnezia::config_key::responsePacketMagicHeader, wgConfig.value(amnezia::config_key::responsePacketMagicHeader));
json.insert(amnezia::config_key::underloadPacketMagicHeader, wgConfig.value(amnezia::config_key::underloadPacketMagicHeader));
json.insert(amnezia::config_key::transportPacketMagicHeader, wgConfig.value(amnezia::config_key::transportPacketMagicHeader));
+ json.insert(amnezia::config_key::specialJunk1, wgConfig.value(amnezia::config_key::specialJunk1));
+ json.insert(amnezia::config_key::specialJunk2, wgConfig.value(amnezia::config_key::specialJunk2));
+ json.insert(amnezia::config_key::specialJunk3, wgConfig.value(amnezia::config_key::specialJunk3));
+ json.insert(amnezia::config_key::specialJunk4, wgConfig.value(amnezia::config_key::specialJunk4));
+ json.insert(amnezia::config_key::specialJunk5, wgConfig.value(amnezia::config_key::specialJunk5));
+ json.insert(amnezia::config_key::controlledJunk1, wgConfig.value(amnezia::config_key::controlledJunk1));
+ json.insert(amnezia::config_key::controlledJunk2, wgConfig.value(amnezia::config_key::controlledJunk2));
+ json.insert(amnezia::config_key::controlledJunk3, wgConfig.value(amnezia::config_key::controlledJunk3));
+ json.insert(amnezia::config_key::specialHandshakeTimeout, wgConfig.value(amnezia::config_key::specialHandshakeTimeout));
}
write(json);
diff --git a/client/platforms/linux/daemon/wireguardutilslinux.cpp b/client/platforms/linux/daemon/wireguardutilslinux.cpp
index 0fbb65a8..58227581 100644
--- a/client/platforms/linux/daemon/wireguardutilslinux.cpp
+++ b/client/platforms/linux/daemon/wireguardutilslinux.cpp
@@ -134,6 +134,16 @@ bool WireguardUtilsLinux::addInterface(const InterfaceConfig& config) {
out << "h4=" << config.m_transportPacketMagicHeader << "\n";
}
+ for (const QString& key : config.m_specialJunk.keys()) {
+ out << key.toLower() << "=" << config.m_specialJunk.value(key) << "\n";
+ }
+ for (const QString& key : config.m_controlledJunk.keys()) {
+ out << key.toLower() << "=" << config.m_controlledJunk.value(key) << "\n";
+ }
+ if (!config.m_specialHandshakeTimeout.isEmpty()) {
+ out << "itime=" << config.m_specialHandshakeTimeout << "\n";
+ }
+
int err = uapiErrno(uapiCommand(message));
if (err != 0) {
logger.error() << "Interface configuration failed:" << strerror(err);
diff --git a/client/protocols/protocols_defs.h b/client/protocols/protocols_defs.h
index feeabb2f..e29201cb 100644
--- a/client/protocols/protocols_defs.h
+++ b/client/protocols/protocols_defs.h
@@ -76,6 +76,15 @@ namespace amnezia
constexpr char responsePacketMagicHeader[] = "H2";
constexpr char underloadPacketMagicHeader[] = "H3";
constexpr char transportPacketMagicHeader[] = "H4";
+ constexpr char specialJunk1[] = "I1";
+ constexpr char specialJunk2[] = "I2";
+ constexpr char specialJunk3[] = "I3";
+ constexpr char specialJunk4[] = "I4";
+ constexpr char specialJunk5[] = "I5";
+ constexpr char controlledJunk1[] = "J1";
+ constexpr char controlledJunk2[] = "J2";
+ constexpr char controlledJunk3[] = "J3";
+ constexpr char specialHandshakeTimeout[] = "Itime";
constexpr char openvpn[] = "openvpn";
constexpr char wireguard[] = "wireguard";
@@ -218,6 +227,15 @@ namespace amnezia
constexpr char defaultResponsePacketMagicHeader[] = "3288052141";
constexpr char defaultTransportPacketMagicHeader[] = "2528465083";
constexpr char defaultUnderloadPacketMagicHeader[] = "1766607858";
+ constexpr char defaultSpecialJunk1[] = "";
+ constexpr char defaultSpecialJunk2[] = "";
+ constexpr char defaultSpecialJunk3[] = "";
+ constexpr char defaultSpecialJunk4[] = "";
+ constexpr char defaultSpecialJunk5[] = "";
+ constexpr char defaultControlledJunk1[] = "";
+ constexpr char defaultControlledJunk2[] = "";
+ constexpr char defaultControlledJunk3[] = "";
+ constexpr char defaultSpecialHandshakeTimeout[] = "0";
}
namespace socks5Proxy
diff --git a/client/server_scripts/awg/Dockerfile b/client/server_scripts/awg/Dockerfile
index 8c536fc7..4d87e6a4 100644
--- a/client/server_scripts/awg/Dockerfile
+++ b/client/server_scripts/awg/Dockerfile
@@ -1,4 +1,4 @@
-FROM amneziavpn/amnezia-wg:latest
+FROM marko1777/awg:latest
LABEL maintainer="AmneziaVPN"
@@ -10,7 +10,7 @@ RUN mkdir -p /opt/amnezia
RUN echo -e "#!/bin/bash\ntail -f /dev/null" > /opt/amnezia/start.sh
RUN chmod a+x /opt/amnezia/start.sh
-# Tune network
+# Tune network
RUN echo -e " \n\
fs.file-max = 51200 \n\
\n\
@@ -40,7 +40,7 @@ RUN echo -e " \n\
echo -e " \n\
* soft nofile 51200 \n\
* hard nofile 51200 \n\
- " | sed -e 's/^\s\+//g' | tee -a /etc/security/limits.conf
+ " | sed -e 's/^\s\+//g' | tee -a /etc/security/limits.conf
ENTRYPOINT [ "dumb-init", "/opt/amnezia/start.sh" ]
CMD [ "" ]
diff --git a/client/server_scripts/awg/configure_container.sh b/client/server_scripts/awg/configure_container.sh
index 06209ce8..2cf61923 100644
--- a/client/server_scripts/awg/configure_container.sh
+++ b/client/server_scripts/awg/configure_container.sh
@@ -23,14 +23,14 @@ H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER
H3 = $UNDERLOAD_PACKET_MAGIC_HEADER
H4 = $TRANSPORT_PACKET_MAGIC_HEADER
-I1 = $I1
-I2 = $I2
-I3 = $I3
-I4 = $I4
-I5 = $I5
-J1 = $J1
-J2 = $J2
-J3 = $J3
-Itime = $I_TIME
+I1 = $SPECIAL_JUNK_1
+I2 = $SPECIAL_JUNK_2
+I3 = $SPECIAL_JUNK_3
+I4 = $SPECIAL_JUNK_4
+I5 = $SPECIAL_JUNK_5
+J1 = $CONTROLLED_JUNK_1
+J2 = $CONTROLLED_JUNK_2
+J3 = $CONTROLLED_JUNK_3
+Itime = $SPECIAL_HANDSHAKE_TIMEOUT
EOF
diff --git a/client/server_scripts/awg/template.conf b/client/server_scripts/awg/template.conf
index b452990b..9c158a17 100644
--- a/client/server_scripts/awg/template.conf
+++ b/client/server_scripts/awg/template.conf
@@ -11,15 +11,15 @@ H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER
H3 = $UNDERLOAD_PACKET_MAGIC_HEADER
H4 = $TRANSPORT_PACKET_MAGIC_HEADER
-I1 = $I1
-I2 = $I2
-I3 = $I3
-I4 = $I4
-I5 = $I5
-J1 = $J1
-J2 = $J2
-J3 = $J3
-Itime = $I_TIME
+I1 = $SPECIAL_JUNK_1
+I2 = $SPECIAL_JUNK_2
+I3 = $SPECIAL_JUNK_3
+I4 = $SPECIAL_JUNK_4
+I5 = $SPECIAL_JUNK_5
+J1 = $CONTROLLED_JUNK_1
+J2 = $CONTROLLED_JUNK_2
+J3 = $CONTROLLED_JUNK_3
+Itime = $SPECIAL_HANDSHAKE_TIMEOUT
[Peer]
PublicKey = $WIREGUARD_SERVER_PUBLIC_KEY
diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts
index 4b84502b..ba246090 100644
--- a/client/translations/amneziavpn_ar_EG.ts
+++ b/client/translations/amneziavpn_ar_EG.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ لا يمكن فتح ملف: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ فشل قراءه بيانات JSON من الملف: %1
+
+
+
+ The JSON data is not an array in file: %1
+ بيانات ال JSON ليست مصفوفة في الملف: %1
+
+
+
+ Import completed
+ اكتمل الاستيراد
+
+
+
+ Export completed
+ اكتمل التصدير
+
+ApiAccountInfoModel
@@ -33,39 +81,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.تم تحميل %1 بنجاح
-
+ API config reloadedتمت إعادة تحميل تكوين API
-
+ Successfully changed the country of connection to %1تم تغيير بلد الاتصال بنجاح إلى %1
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+ واصل
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+ إلغاء
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -97,7 +237,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -115,6 +255,11 @@
%1 days%1 ايام
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -272,7 +417,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connectionغير قادر علي تغيير البروتوكول اثناء تواجد اتصال
@@ -335,17 +480,17 @@ Can't be disabled for current server
ملف تكوين غير صحيح
-
+ Scanned %1 of %2.تم فحص%1 من %2.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -357,24 +502,24 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 تم التثبيت بنجاح.
-
+ %1 is already installed on the server. %1 بالفعل مٌثبت علي الخادم.
-
+
Added containers that were already installed on the server
تمت إضافة الحاويات التي كانت مٌثبتة بالفعل علي الخادم
-
+
Already installed containers were found on the server. All installed containers have been added to the application
@@ -382,47 +527,47 @@ Already installed containers were found on the server. All installed containers
تمت إضافة جميع الحاويات المٌثبتة إلي التطبيق
-
+ Settings updated successfullyتم تحديث الاعدادات بنجاح
-
+ Server '%1' was rebootedتمت إعادة تشغيل الخادم%1
-
+ Server '%1' was removedتمت إزالة الخادم '%1'
-
+ All containers from server '%1' have been removedقد تم حذفها '%1' جميع الحاويات من الخادم
-
+ %1 has been removed from the server '%2'%1 تم حدف '%2' اسم الخادم
-
+ Api config removedتم حذف تكوين Api
-
+ %1 cached profile clearedتم مسح ملف تعريف %1 المخزن مؤقتًا
-
+ Please login as the userمن فضلك قم بتسجيل الدخول كمستخدم
-
+ Server added successfullyتمت إضافة الخادم بنجاح
@@ -504,6 +649,24 @@ Already installed containers were found on the server. All installed containers
تم العثور علي شبكة غير مؤمنة:
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+ واصل
+
+PageDeinstalling
@@ -533,27 +696,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+ واصل
+
+
+ Logging enabledتم تمكين التسجيل
-
+ Split tunneling enabledتقسيم الانفاق مٌفعل
-
+ Split tunneling disabledتقسيم الانفاق مٌعطل
-
+ VPN protocolبروتوكول VPN
-
+ Serversالخوادم
@@ -575,42 +754,42 @@ Already installed containers were found on the server. All installed containers
-
+ Server settings
-
+ Portمنفذ
-
+ Saveاحفظ
-
+ Save settings?احفظ الإعدادات؟
-
+ Only the settings for this device will be changed
-
+ Continueواصل
-
+ Cancelإلغاء
-
+ Unable change settings while there is an active connectionلا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
@@ -628,12 +807,12 @@ Already installed containers were found on the server. All installed containers
منفذ
-
+ All users with whom you shared a connection with will no longer be able to connect to it.جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.
-
+ Saveاحفظ
@@ -678,42 +857,87 @@ Already installed containers were found on the server. All installed containers
H2 - رأس حزمة الاستجابة السحرية
-
+ H4 - Transport packet magic headerH4 - رأس حزمة النقل السحرية
-
+ H3 - Underload packet magic headerH3 - رأس حزمة السحر غير المحمل
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be uniqueيجب أن تكون قيم الحقول H1-H4 فريدة
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)
-
+ Save settings?احفظ الإعدادات؟
-
+ Continueواصل
-
+ Cancelإلغاء
-
+ Unable change settings while there is an active connectionلا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
@@ -1114,12 +1338,17 @@ Already installed containers were found on the server. All installed containers
متنكراً في حركة مرور من
-
+
+ Port
+ منفذ
+
+
+ Saveاحفظ
-
+ Unable change settings while there is an active connectionلا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
@@ -1532,7 +1761,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1849,7 +2078,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1885,31 +2114,16 @@ Already installed containers were found on the server. All installed containers
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- Websiteموقع
-
-
- amnezia.org
-
- Support
@@ -1921,12 +2135,12 @@ Already installed containers were found on the server. All installed containers
-
+ Support tagعلامة الدعم
-
+ Copied
@@ -1954,37 +2168,37 @@ Already installed containers were found on the server. All installed containers
تقسيم نفق التطبيق
-
+ Modeوضع
-
+ Remove احذف
-
+ Continueواصل
-
+ Cancelإلغاء
-
+ application nameاسم التطبيق
-
+ Open executable fileافتح ملف قابل للتنفيذ
-
+ Executable files (*.*)ملفات قابلة للتنفيذ (*.*)
@@ -2184,7 +2398,7 @@ Already installed containers were found on the server. All installed containers
عندما يكون AmneziaDNS غير مٌثبت او غير مستخدم
-
+ Allows you to use the VPN only for certain Appsيسمح لك بأستخدام ال VPN علي تطبيقات معينة
@@ -2214,24 +2428,23 @@ Already installed containers were found on the server. All installed containers
يسمح لك بتحديد اي موقع تريد الوصول له عن طريق ال VPN
-
+ App-based split tunnelingانقسام الانفاق القائم علي التطبيق
-
+ KillSwitch
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
- يعطل اتصال الإنترنت الخاص بك إذا انقطع اتصال VPN المشفر لأي سبب من الأسباب.
+
+ Blocks network connections without VPN
+
-
- Cannot change KillSwitch settings during active connection
-
+ Disables your internet if your encrypted VPN connection drops out for any reason.
+ يعطل اتصال الإنترنت الخاص بك إذا انقطع اتصال VPN المشفر لأي سبب من الأسباب.Cannot change killSwitch settings during active connection
@@ -2301,6 +2514,155 @@ Already installed containers were found on the server. All installed containers
تم حفظ الإعدادات
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+ واصل
+
+
+
+ Cancel
+ إلغاء
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+ واصل
+
+
+
+ Cancel
+ إلغاء
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ استرد
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2430,11 +2792,6 @@ Already installed containers were found on the server. All installed containers
Do you want to clear server from Amnezia software?هل تريد حذف الخادم من Amnezia?
-
-
-
-
-
@@ -2516,6 +2873,11 @@ Already installed containers were found on the server. All installed containers
Cannot reset API config during active connectionلا يمكن إعادة تعيين تكوين API أثناء الاتصال النشط
+
+
+ Switch to the new Amnezia Premium subscription
+
+ All installed AmneziaVPN services will still remain on the server.
@@ -2569,11 +2931,6 @@ Already installed containers were found on the server. All installed containers
Clear %1 profile?مسح ملف تعريف %1؟
-
-
-
-
- Unable to clear %1 profile while there is an active connection
@@ -2658,27 +3015,27 @@ Already installed containers were found on the server. All installed containers
لا يجب الولوج للعنواين المذكورة هنا من خلال ال VPN
-
+ Split tunnelingتقسيم الانفاق
-
+ Modeوضع
-
+ Remove احذف
-
+ Continueواصل
-
+ Cancelإلغاء
@@ -2693,55 +3050,55 @@ Already installed containers were found on the server. All installed containers
لا يمكن تغير إعدادات تقسيم الانفاق بينما هناك اتصال مٌفعل
-
+ website or IPموقع او IP
-
+ Import / Export Sites
-
+ Importاسترد
-
+ Save site listاحفظ قائمة المواقع
-
+ Save sitesاحفظ المواقع
-
-
-
+
+
+ Sites files (*.json)
-
+ Import a list of sitesاسترد قائمة من المواقع
-
+ Replace site listتبديل قائمة المواقع
-
-
+
+ Open sites fileافتح ملف المواقع
-
+ Add imported sites to existing onesإضافة المواقع المستردة للمواقع الموجودة
@@ -2795,117 +3152,140 @@ Already installed containers were found on the server. All installed containers
PageSetupWizardConfigSource
-
+ Connectionالاتصال
-
+ Settingsإعدادات
-
+ Enable logs
+ Export client logs
+
+
+
+
+ Save
+ احفظ
+
+
+
+ Logs files (*.log)
+ ملفات الولوج (*.log)
+
+
+
+ Logs file saved
+ تم حفظ ملف السجل
+
+
+ Support tagعلامة الدعم
-
+ Copied
-
+ Insert the key, add a configuration file or scan the QR-codeأدخل المفتاح، أضف ملف تكوين أو امسح رمز الاستجابة السريعة
-
+ Insert keyأدخل مفتاح
-
+ Insertأدخل
-
+ Continueواصل
-
+ Other connection optionsاختيارات اتصال اخري
-
+ Site Amnezia
-
+ VPN by AmneziaVPN بواسطة Amnezia
-
+ Connect to classic paid and free VPN services from Amneziaاتصل بخدمات VPN الكلاسيكية المدفوعة والمجانية من Amnezia
-
+ Self-hosted VPNVPN ذاتية الاستضافة
-
+ Configure Amnezia VPN on your own serverقم بتكوين Amnezia VPN على الخادم الخاص بك
-
+ Restore from backupاسترجاع من ملف يحتوي علي نسخة احتياطية
-
+
+
+
+
-
+ Open backup fileافتح ملف نسخ احتياطي
-
+ Backup files (*.backup)ملفات نٌسخ احتياطية (*.backup)
-
+ File with connection settingsملف إعدادات اتصال
-
+ Open config fileافتح ملف تكوين
-
+ QR codeرمز QR
-
+ I have nothingليس لدي اي شئ
@@ -3718,7 +4098,7 @@ Already installed containers were found on the server. All installed containers
-
+ SOCKS5 proxy server
@@ -3769,58 +4149,58 @@ Already installed containers were found on the server. All installed containers
المستخدم ليس عضوًا في مجموعة sudo
-
+ SSH request was deniedطلب SSH محظو
-
+ SSH request was interruptedإنقطع طلب SSH
-
+ SSH internal errorمشكلة داخلية SSH
-
+ Invalid private key or invalid passphrase enteredمفتا ح خاص غير صحيح او عبارة مرور غير صحيحة
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key typesالتنسيق المٌحدد للمفتاح الخاص غير مدعوم, استخدم نوع مفتاح openssh ED25519 او نوع مفتاح PEM
-
+ Timeout connecting to serverانتهت مدة الاتصال بالخادم
-
+ VPN connection error
-
-
+
+ Error when retrieving configuration from APIخطأ عند استرداد التكوين من API
-
+ This config has already been added to the applicationهذا التكوين بالفعل تمت إضافتة للبرنامج
-
+ ErrorCode: %1.
-
+ OpenVPN config missingOpenVPN تكوين مفقود
@@ -3860,138 +4240,158 @@ Already installed containers were found on the server. All installed containers
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SCP error: Generic failureخطأ SCP: فشل عام
-
+ OpenVPN management server errorOpenVPN خطأ في إدارة الخادم
-
+ OpenVPN executable missingOpenVPN executable مفقود
-
+ Shadowsocks (ss-local) executable missingShadowsocks (ss-local) executable مفقود
-
+ Cloak (ck-client) executable missingCloak (ck-client) executable مفقود
-
+ Amnezia helper service errorخطأ في خدمة مٌساعد Amnezia
-
+ OpenSSL failedفشل OpenSSL
-
+ Can't connect: another VPN connection is activeلا يمكن الاتصال: هناك اتصال VPN اخر بالفعل يعمل
-
+ Can't setup OpenVPN TAP network adapterلا يمك نتثبيت محول شبكة OpenVPN TAP
-
+ VPN pool error: no available addressesVPN pool error: لا يوجد عنواين مٌتاحة
-
+ The config does not contain any containers and credentials for connecting to the serverالتكوين لا يحتوي علي اي حاويات و اعتماد للأتصال بالخادم
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at firstلم يتم تثبيت بروتوكولات VPN, من فضلك قم بتنزيل حاوية VPN اولاً
-
+ In the response from the server, an empty config was receivedفي الاستجابة من الخادم، تم تلقي تكوين فارغ
-
+ SSL error occurredحدث خطأ SSL
-
+ Server response timeout on api requestانتهت مهلة استجابة الخادم عند طلب واجهة برمجة التطبيقات
-
+ Missing AGW public keyمفتاح AGW عام مفقود
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
+ A migration error has occurred. Please contact our technical support
+
+
+
+
+ Please update the application to use this feature
+
+
+
+ QFile error: The file could not be openedخطأ QFile: لا يمكن فتح الملف
-
+ QFile error: An error occurred when reading from the fileخطأ QFile: ظهر خطأ اثناء القراءه من الملف
-
+ QFile error: The file could not be accessedخطأ QFile: لا يمكن الوصول للملف
-
+ QFile error: An unspecified error occurredخطأ QFile: ظهر خطأ غير محدد
-
+ QFile error: A fatal error occurredخطأ QFile: حدث خطأ فادح
-
+ QFile error: The operation was abortedخطأ QFile: تم إحباط العملية
-
+ Internal errorخطأ داخلي
@@ -4002,7 +4402,7 @@ Already installed containers were found on the server. All installed containers
-
+ Website in Tor networkموقع في شبكة Tor
@@ -4047,69 +4447,100 @@ Already installed containers were found on the server. All installed containers
-
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
-
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
+
+
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
+
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
@@ -4207,7 +4638,7 @@ Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REAL
على عكس البروتوكولات القديمة مثل VMess وVLESS ونقل XTLS-Vision، فإن التعرف المبتكر على "الصديق أو العدو" من REALITY عند مصافحة TLS يعزز الأمان ويتحايل على الكشف بواسطة أنظمة DPI المتطورة التي تستخدم تقنيات التحقيق النشطة. وهذا يجعل من REALITY حلاً قويًا للحفاظ على حرية الإنترنت في البيئات التي تخضع لرقابة صارمة.
-
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4262,14 +4693,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* يمكن ان يعمل علي بروتوكولات شبكة TCP و UDP.
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- Shadowsocks, مستوحي من بروتوكول SOCKS5, يحمي الاتصال بأستعمال شفرة AEAD. كذلك Shadowsocks صٌمم كي يكون متحفظاً ويصعب تحديدة, إنه ليس مطابقًا لاتصال HTTPS القياسي. عمتاُ. بعض انظمة تحليل حركات المرور قد تتعرف علي اتصال Shadowsocks. بسبب الدعم المحدود في Amnezia, يٌنصح بأستخدام بروتوكول AmneziaWG.
+ Shadowsocks, مستوحي من بروتوكول SOCKS5, يحمي الاتصال بأستعمال شفرة AEAD. كذلك Shadowsocks صٌمم كي يكون متحفظاً ويصعب تحديدة, إنه ليس مطابقًا لاتصال HTTPS القياسي. عمتاُ. بعض انظمة تحليل حركات المرور قد تتعرف علي اتصال Shadowsocks. بسبب الدعم المحدود في Amnezia, يٌنصح بأستخدام بروتوكول AmneziaWG.
* مٌتاح في AmneziaVPN عبر جميع المنصات
* بروتوكول تشفير قابل للتكوين
@@ -4297,7 +4727,6 @@ This means that AmneziaWG keeps the fast performance of the original while addin
* يعمل عبر بروتوكول شبكة UDP.
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4307,7 +4736,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- IKEv2, مقترن مع طبقة التشفير IPSec, يبقا بروتوكول VPN مستقر و حديث.
+ IKEv2, مقترن مع طبقة التشفير IPSec, يبقا بروتوكول VPN مستقر و حديث.
من مميزاتةقدرته على التبديل بسرعة بين الشبكات والأجهزة، مما يجعله قابلاً للتكيف بشكل خاص في بيئات الشبكات الديناميكية.
*. مٌتاح في AmneziaVPN فقط علي منصة وندوز
@@ -4317,7 +4746,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* يعمل عبر بروتوكول شبكة UDP, منفذ 500 و منفذ 4500.
-
+ DNS Serviceخدمة ال DNS
@@ -4554,12 +4983,12 @@ While it offers a blend of security, stability, and speed, it's essential t
SettingsController
-
+ Backup file is corruptedملف النسخه الاحتياطيه تالف
-
+ All settings have been reset to default valuesتم استرجاع جميع الإعدادات للإعدادات الافتراضية
@@ -4691,7 +5120,7 @@ While it offers a blend of security, stability, and speed, it's essential t
VpnConnection
-
+ Mbps
@@ -4758,12 +5187,12 @@ While it offers a blend of security, stability, and speed, it's essential t
أريد تجاوز الرقابة. يوصى بهذا الخيار في معظم الحالات.
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/translations/amneziavpn_fa_IR.ts b/client/translations/amneziavpn_fa_IR.ts
index c1155b9b..720bbbfa 100644
--- a/client/translations/amneziavpn_fa_IR.ts
+++ b/client/translations/amneziavpn_fa_IR.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ فایل باز نشد: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ مشکل در تحلیل دادههای JSON در فایل: %1
+
+
+
+ The JSON data is not an array in file: %1
+ دادههای JSON در فایل به صورت آرایه نیستند: %1
+
+
+
+ Import completed
+ بارگذاری کامل شد
+
+
+
+ Export completed
+ خروجی گرفتن کامل شد
+
+ApiAccountInfoModel
@@ -33,39 +81,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.%1 با موفقیت نصب شد.
-
+ API config reloadedپیکربندی API دوباره بارگذاری شد.
-
+ Successfully changed the country of connection to %1کشور اتصال با موفقیت به %1 تغییر یافت.
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -97,7 +237,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -115,6 +255,11 @@
%1 days%1 روز
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -274,7 +419,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connectionامکان تغییر پروتکل در هنگام متصل بودن وجود ندارد
@@ -340,17 +485,17 @@ Can't be disabled for current server
فایل پیکربندی نامعتبر است.
-
+ Scanned %1 of %2.ارزیابی %1 از %2.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -362,71 +507,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 با موفقیت نصب شد.
-
+ %1 is already installed on the server. %1 در حال حاضر بر روی سرور نصب شده است.
-
+
Added containers that were already installed on the server
کانتینرهایی که بر روی سرور موجود بودند اضافه شدند
-
+
Already installed containers were found on the server. All installed containers have been added to the application
کانتینرهای نصب شده بر روی سرور شناسایی شدند. تمام کانتینترهای نصب شده به نرم افزار اضافه شدند
-
+ Settings updated successfullyتنظیمات با موفقیت بهروزرسانی شدند
-
+ Server '%1' was rebootedسرور %1 راه اندازی مجدد شد
-
+ Server '%1' was removedسرور %1 حذف شد
-
+ All containers from server '%1' have been removedتمام کانتینترها از سرور %1 حذف شدند
-
+ %1 has been removed from the server '%2'%1 از سرور %2 حذف شد
-
+ Api config removedپیکربندی API حذف شد.
-
+ %1 cached profile cleared%1 پروفایل ذخیره شده پاک شد.
-
+ Please login as the userلطفا به عنوان کاربر وارد شوید
-
+ Server added successfullyسرور با موفقیت اضافه شد
@@ -508,6 +653,24 @@ Already installed containers were found on the server. All installed containers
شبکه ناامن شناسایی شد:
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+
+
+PageDeinstalling
@@ -537,27 +700,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+
+
+
+ Logging enabledلاگبرداری فعال شد
-
+ Split tunneling enabledفعال شدن تونل تقسیمشده
-
+ Split tunneling disabledتونل تقسیمشده غیرفعال شده
-
+ VPN protocolپروتکل ویپیان
-
+ Serversسرورها
@@ -579,42 +758,42 @@ Already installed containers were found on the server. All installed containers
-
+ Server settings
-
+ Portپورت
-
+ Saveذخیره
-
+ Save settings?تنظیمات را ذخیره کن?
-
+ Only the settings for this device will be changed
-
+ Continue
-
+ Cancel
-
+ Unable change settings while there is an active connectionنمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
@@ -640,12 +819,12 @@ Already installed containers were found on the server. All installed containers
آیا میخواهید AmneziaWG از سرور حذف شود؟
-
+ All users with whom you shared a connection with will no longer be able to connect to it.همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.
-
+ Saveذخیره
@@ -690,42 +869,87 @@ Already installed containers were found on the server. All installed containers
-
+ H4 - Transport packet magic header
-
+ H3 - Underload packet magic header
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be unique
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
-
+ Save settings?تنظیمات را ذخیره کن?
-
+ Continueادامه
-
+ Cancelکنسل
-
+ Unable change settings while there is an active connectionنمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
@@ -1154,12 +1378,17 @@ Already installed containers were found on the server. All installed containers
بهعنوان ترافیک از طرف زیر نمایش داده میشود
-
+
+ Port
+ پورت
+
+
+ Saveذخیره
-
+ Unable change settings while there is an active connectionنمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
@@ -1619,7 +1848,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1932,7 +2161,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1968,31 +2197,16 @@ Already installed containers were found on the server. All installed containers
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- Websiteوب سایت
-
-
- amnezia.org
-
- Support
@@ -2004,12 +2218,12 @@ Already installed containers were found on the server. All installed containers
-
+ Support tag
-
+ Copiedکپی شد
@@ -2037,37 +2251,37 @@ Already installed containers were found on the server. All installed containers
تقسیم تونلینگ برنامهها
-
+ Modeحالت
-
+ Remove حذف
-
+ Continueادامه دهید
-
+ Cancelکنسل
-
+ application nameنام برنامه
-
+ Open executable fileفایل اجرایی را باز کنید
-
+ Executable files (*.*)فایلهای اجرایی (*.*)
@@ -2282,24 +2496,23 @@ Already installed containers were found on the server. All installed containers
وقتی AmneziaDNS استفاده نشده یا نصب نشده است
-
+ Allows you to use the VPN only for certain Appsبه شما امکان می دهد از VPN فقط برای برخی برنامه ها استفاده کنید
-
+ KillSwitchKillSwitch
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
- اگر به هر دلیلی اتصال VPN رمزگذاری شده شما قطع شود، اینترنت شما را غیرفعال میکند.
+
+ Blocks network connections without VPN
+
-
- Cannot change KillSwitch settings during active connection
-
+ Disables your internet if your encrypted VPN connection drops out for any reason.
+ اگر به هر دلیلی اتصال VPN رمزگذاری شده شما قطع شود، اینترنت شما را غیرفعال میکند.Cannot change killSwitch settings during active connection
@@ -2316,7 +2529,7 @@ Already installed containers were found on the server. All installed containers
میتوانید مشخص کنید که چه سایتهایی از ویپیان استفاده کنند
-
+ App-based split tunnelingجداسازی ترافیک بر اساس نرمافزار
@@ -2384,6 +2597,155 @@ Already installed containers were found on the server. All installed containers
ذخیره تنظیمات
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+ KillSwitch
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+
+
+
+
+ Cancel
+
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+
+
+
+
+ Cancel
+
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ بارگذاری
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2515,11 +2877,6 @@ Already installed containers were found on the server. All installed containers
No new installed containers foundکانتینر نصب شده جدیدی پیدا نشد
-
-
-
-
-
@@ -2606,6 +2963,11 @@ Already installed containers were found on the server. All installed containers
Cannot reset API config during active connectionنمیتوان پیکربندی API را در حین اتصال فعال بازنشانی کرد.
+
+
+ Switch to the new Amnezia Premium subscription
+
+ Remove server from application
@@ -2664,11 +3026,6 @@ Already installed containers were found on the server. All installed containers
Clear %1 profile?آیا میخواهید پروفایل %1 را پاک کنید؟
-
-
-
-
- Unable to clear %1 profile while there is an active connection
@@ -2753,27 +3110,27 @@ Already installed containers were found on the server. All installed containers
دسترسی به آدرسهای لیست بدون ویپیان
-
+ Split tunnelingجداسازی ترافیک
-
+ Modeحالت
-
+ Remove حذف
-
+ Continueادامه
-
+ Cancelکنسل
@@ -2788,55 +3145,55 @@ Already installed containers were found on the server. All installed containers
تنها سایتهای موجود در اینجا از طریق VPN دسترسی داده خواهند شد
-
+ website or IPوبسایت یا آدرس IP
-
+ Import / Export Sitesوارد کردن / صادر کردن وبسایتها
-
+ Importبارگذاری
-
+ Save site listذخیره لیست سایتها
-
+ Save sitesذخیره سایتها
-
-
-
+
+
+ Sites files (*.json)Sites files (*.json)
-
+ Import a list of sitesبارگذاری لیست سایتها
-
+ Replace site listجایگزین کردن لیست سایت
-
-
+
+ Open sites fileباز کردن فایل سایتها
-
+ Add imported sites to existing onesاضافه کردن سایتهای بارگذاری شده به سایتهای موجود
@@ -2910,7 +3267,7 @@ It's okay as long as it's from someone you trust.
چی داری؟
-
+ File with connection settingsفایل شامل تنظیمات اتصال
@@ -2919,112 +3276,135 @@ It's okay as long as it's from someone you trust.
فایل شامل تنظیمات اتصال یا بکآپ
-
+ Connectionارتباط
-
+ Settingsتنظیمات
-
+ Enable logs
+ Export client logs
+
+
+
+
+ Save
+ ذخیره
+
+
+
+ Logs files (*.log)
+ Logs files (*.log)
+
+
+
+ Logs file saved
+ فایل گزارشات ذخیره شد
+
+
+ Support tag
-
+ Copiedکپی شد
-
+ Insert the key, add a configuration file or scan the QR-codeکلید را وارد کنید، فایل پیکربندی را اضافه کنید یا کد QR را اسکن کنید
-
+ Insert keyکلید را وارد کنید
-
+ Insertوارد کردن
-
+ Continueادامه دهید
-
+ Other connection optionsگزینههای اتصال دیگر
-
+ Site Amnezia
-
+ VPN by AmneziaVPN توسط Amnezia
-
+ Connect to classic paid and free VPN services from Amneziaاتصال به سرویسهای VPN کلاسیک پولی و رایگان از Amnezia
-
+ Self-hosted VPNSelf-hosted VPN
-
+ Configure Amnezia VPN on your own serverپیکربندی VPN Amnezia بر روی سرور خودتان
-
+ Restore from backupبازیابی از پشتیبان
-
+
+
+
+
-
+ Open backup fileباز کردن فایل پشتیبان
-
+ Backup files (*.backup)Backup files (*.backup)
-
+ Open config fileباز کردن فایل تنظیمات
-
+ QR codeQR-Code
-
+ I have nothingمن هیچی ندارم
@@ -3903,32 +4283,32 @@ It's okay as long as it's from someone you trust.
کاربر عضو گروه sudo نیست
-
+ SSH request was deniedSSH request was denied
-
+ SSH request was interruptedSSH request was interrupted
-
+ SSH internal errorSSH internal error
-
+ Invalid private key or invalid passphrase enteredInvalid private key or invalid passphrase entered
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key typesThe selected private key format is not supported, use openssh ED25519 key types or PEM key types
-
+ Timeout connecting to serverTimeout connecting to server
@@ -3985,33 +4365,33 @@ It's okay as long as it's from someone you trust.
Sftp error: No media was in remote drive
-
+ The config does not contain any containers and credentials for connecting to the serverتنظیمات شامل هیچ کانتینر یا اعتبارنامهای برای اتصال به سرور نیست
-
+ VPN connection errorخطای اتصال VPN
-
-
+
+ Error when retrieving configuration from APIخطا هنگام بازیابی پیکربندی از API
-
+ This config has already been added to the applicationاین پیکربندی قبلاً به برنامه اضافه شده است
-
+ ErrorCode: %1. کد خطا: %1.
-
+ OpenVPN config missingOpenVPN config missing
@@ -4051,134 +4431,154 @@ It's okay as long as it's from someone you trust.
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SCP error: Generic failureSCP error: Generic failure
-
+ OpenVPN management server errorOpenVPN management server error
-
+ OpenVPN executable missingOpenVPN executable missing
-
+ Shadowsocks (ss-local) executable missingShadowsocks (ss-local) executable missing
-
+ Cloak (ck-client) executable missingCloak (ck-client) executable missing
-
+ Amnezia helper service errorAmnezia helper service error
-
+ OpenSSL failedOpenSSL failed
-
+ Can't connect: another VPN connection is activeCan't connect: another VPN connection is active
-
+ Can't setup OpenVPN TAP network adapterCan't setup OpenVPN TAP network adapter
-
+ VPN pool error: no available addressesVPN pool error: no available addresses
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at firstپروتکل ویپیان نصب نشده است
لطفا کانتینر ویپیان را نصب کنید
-
+ In the response from the server, an empty config was receivedدر پاسخ از سرور، پیکربندی خالی دریافت شد
-
+ SSL error occurredSSL error occurred
-
+ Server response timeout on api requestServer response timeout on api request
-
+ Missing AGW public key
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
- QFile error: The file could not be opened
+ A migration error has occurred. Please contact our technical support
- QFile error: An error occurred when reading from the file
-
-
-
-
- QFile error: The file could not be accessed
-
-
-
-
- QFile error: An unspecified error occurred
+ Please update the application to use this feature
- QFile error: A fatal error occurred
+ QFile error: The file could not be opened
- QFile error: The operation was aborted
+ QFile error: An error occurred when reading from the file
+
+
+
+
+ QFile error: The file could not be accessed
+
+
+
+
+ QFile error: An unspecified error occurred
+
+
+
+
+ QFile error: A fatal error occurred
+ QFile error: The operation was aborted
+
+
+
+ Internal errorInternal error
@@ -4279,7 +4679,6 @@ REALITY بهطور منحصربهفردی سانسورچیان را در
این قابلیت پیشرفته، REALITY را از فناوریهای مشابه متمایز میکند، زیرا میتواند ترافیک وب را بدون نیاز به پیکربندیهای خاص، بهعنوان ترافیک از سایتهای تصادفی و معتبر جا بزند. برخلاف پروتکلهای قدیمیتر مانند VMess، VLESS و انتقال XTLS-Vision، تشخیص نوآورانه "دوست یا دشمن" REALITY در مرحله دستدهی TLS امنیت را افزایش داده و از شناسایی توسط سیستمهای پیشرفته DPI که از تکنیکهای پروب فعال استفاده میکنند، جلوگیری میکند. این ویژگی REALITY را به یک راهحل قوی برای حفظ آزادی اینترنت در محیطهایی با سانسور شدید تبدیل میکند.
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4289,7 +4688,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- پروتکل IKEv2 به همراه لایه رمزنگاری IPSec به عنوان پروتکل ویپیان مدرن و پایدار است.
+ پروتکل IKEv2 به همراه لایه رمزنگاری IPSec به عنوان پروتکل ویپیان مدرن و پایدار است.
یکی از قابلیتهای متمایز این پروتکل قابلیت سوییچ بین شبکهها و دستگاههاست که قابلیت انطباق بالایی در محیط شبکههای دینامیک را دارد
در حالیکه ترکیبی از امنیت، پایداری و سرعت را ارائه میدهد اما مهم است که اشاره کنیم IKEv2 به راحتی قابل تشخیص در شبکه و بلاک شدن میباشد.
@@ -4300,7 +4699,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* روی پروتکل شبکه UDP، پورتهای 500 و 4500 کار میکند.
-
+ DNS Serviceسرویس DNS
@@ -4311,7 +4710,7 @@ While it offers a blend of security, stability, and speed, it's essential t
-
+ Website in Tor networkوب سایت در شبکه Tor
@@ -4351,69 +4750,100 @@ While it offers a blend of security, stability, and speed, it's essential t
-
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
-
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
+
+
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
+
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
@@ -4461,14 +4891,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* امکان کار بر روی دو پروتکل TCP و UDP
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- پروتکل Shadowsocks، الهام گرفته از پروتکل Socks5، اتصال را با استفاده از رمزگذاری AEAD امن میکند. اگرچه Shadowsocks طوری طراحی شده که برای شناسایی در شبکه چالشبرانگیز باشد و محتاط عمل کند اما این پروتکل مانند یک اتصال استاندارد HTTPS نیست و برخی از سیستمهای تحلیل ترافیک مشخص ممکن است بتوانند اتصال Shadowsocks را شناسایی کنند. به دلیل محدودیت پشتیبانی در Amnezia پیشنهاد میشود که از َAmneziaWG استفاده شود.
+ پروتکل Shadowsocks، الهام گرفته از پروتکل Socks5، اتصال را با استفاده از رمزگذاری AEAD امن میکند. اگرچه Shadowsocks طوری طراحی شده که برای شناسایی در شبکه چالشبرانگیز باشد و محتاط عمل کند اما این پروتکل مانند یک اتصال استاندارد HTTPS نیست و برخی از سیستمهای تحلیل ترافیک مشخص ممکن است بتوانند اتصال Shadowsocks را شناسایی کنند. به دلیل محدودیت پشتیبانی در Amnezia پیشنهاد میشود که از َAmneziaWG استفاده شود.
* فقط بر روی پلتفرم دسکتاپ بر روی Amnezia قابل دسترس است
* پروتکل رمزنگاری قابل پیکربندی
@@ -4496,7 +4925,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
* کار بر روی پروتکل شبکه UDP
-
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4522,7 +4951,7 @@ For more detailed information, you can
-
+ SOCKS5 proxy serverسرور پروکسی SOCKS5
@@ -4759,7 +5188,7 @@ For more detailed information, you can
SettingsController
-
+ All settings have been reset to default valuesتمام تنظیمات به مقادیر پیش فرض ریست شد
@@ -4768,7 +5197,7 @@ For more detailed information, you can
پروفایل ذخیره شده پاک شد
-
+ Backup file is corruptedفایل بکآپ خراب شده است
@@ -4900,7 +5329,7 @@ For more detailed information, you can
VpnConnection
-
+ MbpsMbps
@@ -4975,12 +5404,12 @@ For more detailed information, you can
اکثر پروتکلهای ویپیان مسدود شدهاند. در مواردی که بقیه گزینهها کار نمیکنند توصی میشود.
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/translations/amneziavpn_hi_IN.ts b/client/translations/amneziavpn_hi_IN.ts
index 18dcfc65..045c8704 100644
--- a/client/translations/amneziavpn_hi_IN.ts
+++ b/client/translations/amneziavpn_hi_IN.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ फ़ाइल नहीं खुल सकती: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ फ़ाइल से JSON डेटा पार्स करने में विफल:%1
+
+
+
+ The JSON data is not an array in file: %1
+ JSON डेटा फ़ाइल में कोई सरणी नहीं है: %1
+
+
+
+ Import completed
+ आयात पूरा हुआ
+
+
+
+ Export completed
+ निर्यात पूरा हुआ
+
+ApiAccountInfoModel
@@ -33,39 +81,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.
-
+ API config reloaded
-
+ Successfully changed the country of connection to %1
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+ जारी रखना
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+ रद्द करना
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -81,7 +221,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -99,6 +239,11 @@
%1 days
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -257,7 +402,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connectionसक्रिय कनेक्शन होने पर प्रोटोकॉल बदलने में असमर्थ
@@ -320,17 +465,17 @@ Can't be disabled for current server
अमान्य कॉन्फ़िगरेशन फ़ाइल
-
+ Scanned %1 of %2.%2 में से %1 स्कैन किया गया.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -338,71 +483,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 सफलतापूर्वक स्थापित हुआ.
-
+ %1 is already installed on the server. %1 पहले से ही सर्वर पर स्थापित है.
-
+
Added containers that were already installed on the server
सर्वर पर पहले से स्थापित कंटेनर जोड़े गए
-
+
Already installed containers were found on the server. All installed containers have been added to the application
सर्वर पर पहले से स्थापित कंटेनर पाए गए। सभी स्थापित कंटेनरों को एप्लिकेशन में जोड़ दिया गया है
-
+ Settings updated successfullyसेटिंग्स सफलतापूर्वक अपडेट हो गईं
-
+ Server '%1' was rebootedसर्वर '%1' रीबूट किया गया था
-
+ Server '%1' was removedसर्वर '%1' रीबूट किया गया था
-
+ All containers from server '%1' have been removedसर्वर '%1' से सभी कंटेनर हटा दिए गए हैं
-
+ %1 has been removed from the server '%2'%1 को सर्वर '%2' से हटा दिया गया है
-
+ Api config removed
-
+ %1 cached profile cleared%1 कैश्ड प्रोफ़ाइल साफ़ की गई
-
+ Please login as the userकृपया उपयोगकर्ता के रूप में लॉगिन करें
-
+ Server added successfullyसर्वर सफलतापूर्वक जोड़ा गया
@@ -472,6 +617,24 @@ Already installed containers were found on the server. All installed containers
असुरक्षित नेटवर्क का पता चला:
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+ जारी रखना
+
+PageDeinstalling
@@ -501,27 +664,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+ जारी रखना
+
+
+ Logging enabledलॉगिंग सक्षम
-
+ Split tunneling enabledस्प्लिट टनलिंग सक्षम
-
+ Split tunneling disabledस्प्लिट टनलिंग अक्षम
-
+ VPN protocolVPN प्रोटोकॉल
-
+ Serversसर्वर
@@ -543,42 +722,42 @@ Already installed containers were found on the server. All installed containers
एमटीयू
-
+ Server settings
-
+ Port
-
+ Saveसहेजें
-
+ Save settings?सेटिंग्स सेव करें?
-
+ Only the settings for this device will be changed
-
+ Continueजारी रखना
-
+ Cancelरद्द करना
-
+ Unable change settings while there is an active connectionसक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
@@ -640,52 +819,97 @@ Already installed containers were found on the server. All installed containers
-
+ H4 - Transport packet magic header
-
+ H3 - Underload packet magic header
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Saveसहेजें
-
+ The values of the H1-H4 fields must be uniqueH1-H4 फ़ील्ड का मान अद्वितीय होना चाहिए
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)फ़ील्ड S1 + संदेश आरंभ आकार (148) का मान S2 + संदेश प्रतिक्रिया आकार (92) के बराबर नहीं होना चाहिए
-
+ Save settings?सेटिंग्स सेव करें?
-
+ All users with whom you shared a connection with will no longer be able to connect to it.वे सभी उपयोगकर्ता जिनके साथ आपने कनेक्शन साझा किया था, वे अब इससे कनेक्ट नहीं हो पाएंगे.
-
+ Unable change settings while there is an active connectionसक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
-
+ Continueजारी रखना
-
+ Cancelरद्द करना
@@ -1090,12 +1314,17 @@ Already installed containers were found on the server. All installed containers
से यातायात के रूप में प्रच्छन्न
-
+
+ Port
+
+
+
+ Saveसहेजें
-
+ Unable change settings while there is an active connectionसक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
@@ -1544,7 +1773,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1841,7 +2070,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1877,31 +2106,16 @@ Already installed containers were found on the server. All installed containers
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- Websiteवेबसाइट
-
-
- amnezia.org
-
- Support
@@ -1913,12 +2127,12 @@ Already installed containers were found on the server. All installed containers
-
+ Support tag
-
+ Copiedकॉपी किया गया
@@ -1954,37 +2168,37 @@ Already installed containers were found on the server. All installed containers
ऐप स्प्लिट टनलिंग
-
+ Modeतरीका
-
+ Remove निकालना
-
+ Continueजारी रखना
-
+ Cancelरद्द करना
-
+ application nameआवेदन का नाम
-
+ Open executable fileनिष्पादन योग्य फ़ाइल खोलें
-
+ Executable files (*.*)निष्पादनीय फाइल (*.*)
@@ -2184,7 +2398,7 @@ Already installed containers were found on the server. All installed containers
जब AmneziaDNS का उपयोग या स्थापित नहीं किया जाता है
-
+ Allows you to use the VPN only for certain Appsआपको केवल कुछ ऐप्स के लिए वीपीएन का उपयोग करने की अनुमति देता है
@@ -2214,24 +2428,23 @@ Already installed containers were found on the server. All installed containers
आपको यह चुनने की अनुमति देता है कि आप वीपीएन के माध्यम से किन साइटों तक पहुंचना चाहते हैं
-
+ App-based split tunnelingऐप-आधारित स्प्लिट टनलिंग
-
+ KillSwitchस्विच बन्द कर दो
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
- यदि आपका एन्क्रिप्टेड वीपीएन कनेक्शन किसी भी कारण से बंद हो जाता है तो आपका इंटरनेट अक्षम कर देता है.
+
+ Blocks network connections without VPN
+
-
- Cannot change KillSwitch settings during active connection
-
+ Disables your internet if your encrypted VPN connection drops out for any reason.
+ यदि आपका एन्क्रिप्टेड वीपीएन कनेक्शन किसी भी कारण से बंद हो जाता है तो आपका इंटरनेट अक्षम कर देता है.Cannot change killSwitch settings during active connection
@@ -2301,6 +2514,155 @@ Already installed containers were found on the server. All installed containers
सेटिंग्स को सहेजा गया
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+ स्विच बन्द कर दो
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+ जारी रखना
+
+
+
+ Cancel
+ रद्द करना
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+ जारी रखना
+
+
+
+ Cancel
+ रद्द करना
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ आयात
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2430,11 +2792,6 @@ Already installed containers were found on the server. All installed containers
Do you want to clear server from Amnezia software?क्या आप एमनेज़िया सॉफ़्टवेयर से सर्वर साफ़ करना चाहते हैं?
-
-
-
-
-
@@ -2516,6 +2873,11 @@ Already installed containers were found on the server. All installed containers
Cannot reset API config during active connectionसक्रिय कनेक्शन के दौरान एपीआई कॉन्फिगरेशन को रीसेट नहीं किया जा सकता
+
+
+ Switch to the new Amnezia Premium subscription
+
+ All installed AmneziaVPN services will still remain on the server.
@@ -2569,11 +2931,6 @@ Already installed containers were found on the server. All installed containers
Clear %1 profile?%1 प्रोफ़ाइल साफ़ करें?
-
-
-
-
- Unable to clear %1 profile while there is an active connection
@@ -2658,27 +3015,27 @@ Already installed containers were found on the server. All installed containers
सूची के पतों को वीपीएन के माध्यम से एक्सेस नहीं किया जाना चाहिए
-
+ Split tunnelingविभाजित सुरंग
-
+ Modeतरीका
-
+ Remove निकालना
-
+ Continueजारी रखना
-
+ Cancelरद्द करना
@@ -2693,55 +3050,55 @@ Already installed containers were found on the server. All installed containers
सक्रिय कनेक्शन के दौरान स्प्लिट टनलिंग सेटिंग्स को नहीं बदला जा सकता
-
+ website or IPवेबसाइट या आईपी
-
+ Import / Export Sitesआयात/निर्यात साइटें
-
+ Importआयात
-
+ Save site listसाइट सूची सहेजें
-
+ Save sitesसाइटें सहेजें
-
-
-
+
+
+ Sites files (*.json)
-
+ Import a list of sitesसाइटों की सूची आयात करें
-
+ Replace site listसाइट सूची बदलें
-
-
+
+ Open sites fileसाइट फ़ाइल खोलें
-
+ Add imported sites to existing onesआयातित साइटों को मौजूदा साइटों में जोड़ें
@@ -2811,117 +3168,140 @@ Already installed containers were found on the server. All installed containers
कनेक्शन सेटिंग्स वाली फ़ाइल
-
+ Connectionकनेक्शन
-
+ Settingsसमायोजन
-
+ Enable logs
+ Export client logs
+
+
+
+
+ Save
+ सहेजें
+
+
+
+ Logs files (*.log)
+ लॉग फ़ाइलें (*.log)
+
+
+
+ Logs file saved
+ लॉग फ़ाइल सहेजी गई
+
+
+ Support tag
-
+ Copiedकॉपी किया गया
-
+ Insert the key, add a configuration file or scan the QR-code
-
+ Insert key
-
+ Insertडालना
-
+ Continueजारी रखना
-
+ Other connection options
-
+ Site Amnezia
-
+ VPN by Amnezia
-
+ Connect to classic paid and free VPN services from Amnezia
-
+ Self-hosted VPN
-
+ Configure Amnezia VPN on your own server
-
+ Restore from backupबैकअप से बहाल करना
-
+
+
+
+
-
+ Open backup fileबैकअप फ़ाइल खोलें
-
+ Backup files (*.backup)बैकअप फ़ाइलें (*.backup)
-
+ File with connection settingsकनेक्शन सेटिंग्स वाली फ़ाइल
-
+ Open config fileकॉन्फ़िग फ़ाइल खोलें
-
+ QR codeक्यू आर संहिता
-
+ I have nothingमेरे पास कुछ नहीं है
@@ -3765,7 +4145,7 @@ Already installed containers were found on the server. All installed containers
-
+ SOCKS5 proxy server
@@ -3851,195 +4231,215 @@ Already installed containers were found on the server. All installed containers
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SSH request was deniedSSH अनुरोध अस्वीकार कर दिया गया
-
+ SSH request was interruptedSSH अनुरोध बाधित हो गया था
-
+ SSH internal errorSSH आंतरिक त्रुटि
-
+ Invalid private key or invalid passphrase enteredअमान्य निजी कुंजी या अमान्य पासफ़्रेज़ दर्ज किया गया
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key typesचयनित निजी कुंजी प्रारूप समर्थित नहीं है, ओपनश ED25519 कुंजी प्रकार या PEM कुंजी प्रकार का उपयोग करें
-
+ Timeout connecting to serverसर्वर से कनेक्ट होने का समय समाप्त
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at firstपीएन प्रोटोकॉल स्थापित नहीं है.
कृपया पहले वीपीएन कंटेनर स्थापित करें
-
+ VPN connection errorVPN कनेक्शन त्रुटि
-
-
+
+ Error when retrieving configuration from APIएपीआई से कॉन्फ़िगरेशन पुनर्प्राप्त करते समय त्रुटि
-
+ This config has already been added to the applicationयह कॉन्फ़िगरेशन पहले ही एप्लिकेशन में जोड़ा जा चुका है
-
+ In the response from the server, an empty config was received
-
+ SSL error occurred
-
+ Server response timeout on api request
-
+ Missing AGW public key
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
-
+
+ A migration error has occurred. Please contact our technical support
+
+
+
+
+ Please update the application to use this feature
+
+
+
+ ErrorCode: %1. ErrorCode: %1.
-
+ OpenVPN config missingOpenVPN प्रबंधन सर्वर त्रुटि
-
+ SCP error: Generic failureएससीपी त्रुटि: सामान्य विफलता
-
+ OpenVPN management server errorOpenVPN प्रबंधन सर्वर त्रुटि
-
+ OpenVPN executable missingOpenVPN निष्पादन योग्य गायब है
-
+ Shadowsocks (ss-local) executable missingशैडोसॉक्स (एसएस-स्थानीय) निष्पादन योग्य गायब है
-
+ Cloak (ck-client) executable missingक्लोक (सीके-क्लाइंट) निष्पादन योग्य गायब है
-
+ Amnezia helper service errorAmnezia भूलने की बीमारी सहायक सेवा त्रुटि
-
+ OpenSSL failedओपनएसएसएल विफल रहा
-
+ Can't connect: another VPN connection is activeकनेक्ट नहीं हो सकता: कोई अन्य वीपीएन कनेक्शन सक्रिय है
-
+ Can't setup OpenVPN TAP network adapterOpenVPN TAP नेटवर्क एडाप्टर सेटअप नहीं कर सकता
-
+ VPN pool error: no available addressesVPN pool error: لا يوجد عنواين مٌتاحة
-
+ The config does not contain any containers and credentials for connecting to the serverकॉन्फ़िगरेशन में सर्वर से कनेक्ट करने के लिए कोई कंटेनर और क्रेडेंशियल नहीं है
-
+ QFile error: The file could not be openedQफ़ाइल त्रुटि: फ़ाइल खोली नहीं जा सकी
-
+ QFile error: An error occurred when reading from the fileQफ़ाइल त्रुटि: फ़ाइल से पढ़ते समय एक त्रुटि उत्पन्न हुई
-
+ QFile error: The file could not be accessedQफ़ाइल त्रुटि: फ़ाइल तक नहीं पहुंचा जा सका
-
+ QFile error: An unspecified error occurredQफ़ाइल त्रुटि: एक अनिर्दिष्ट त्रुटि उत्पन्न हुई
-
+ QFile error: A fatal error occurredQफ़ाइल त्रुटि: एक घातक त्रुटि उत्पन्न हुई
-
+ QFile error: The operation was abortedQफ़ाइल त्रुटि: ऑपरेशन निरस्त कर दिया गया था
-
+ Internal errorआंतरिक त्रुटि
@@ -4050,7 +4450,7 @@ Already installed containers were found on the server. All installed containers
-
+ Website in Tor networkटोर नेटवर्क में वेबसाइट
@@ -4095,69 +4495,100 @@ Already installed containers were found on the server. All installed containers
-
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
-
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
+
+
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
+
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
@@ -4241,7 +4672,7 @@ WireGuard is very susceptible to blocking due to its distinct packet signatures.
* यूडीपी नेटवर्क प्रोटोकॉल पर काम करता है।.
-
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4300,14 +4731,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* टीसीपी और यूडीपी दोनों नेटवर्क प्रोटोकॉल पर काम कर सकता है।.
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- शैडोसॉक्स, SOCKS5 प्रोटोकॉल से प्रेरित होकर, AEAD सिफर का उपयोग करके कनेक्शन की सुरक्षा करता है। हालाँकि शैडोसॉक्स को विवेकपूर्ण और पहचानने में चुनौतीपूर्ण बनाया गया है, यह एक मानक HTTPS कनेक्शन के समान नहीं है। हालाँकि, कुछ ट्रैफ़िक विश्लेषण प्रणालियाँ अभी भी शैडोसॉक्स कनेक्शन का पता लगा सकती हैं। Amnezia में सीमित समर्थन के कारण, AmneziaWG प्रोटोकॉल का उपयोग करने की अनुशंसा की जाती है।
+ शैडोसॉक्स, SOCKS5 प्रोटोकॉल से प्रेरित होकर, AEAD सिफर का उपयोग करके कनेक्शन की सुरक्षा करता है। हालाँकि शैडोसॉक्स को विवेकपूर्ण और पहचानने में चुनौतीपूर्ण बनाया गया है, यह एक मानक HTTPS कनेक्शन के समान नहीं है। हालाँकि, कुछ ट्रैफ़िक विश्लेषण प्रणालियाँ अभी भी शैडोसॉक्स कनेक्शन का पता लगा सकती हैं। Amnezia में सीमित समर्थन के कारण, AmneziaWG प्रोटोकॉल का उपयोग करने की अनुशंसा की जाती है।
* AmneziaVPN केवल डेस्कटॉप प्लेटफ़ॉर्म पर उपलब्ध है
* कॉन्फ़िगर करने योग्य एन्क्रिप्शन प्रोटोकॉल
@@ -4345,7 +4775,6 @@ Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REAL
VMess, VLESS और XTLS-Vision ट्रांसपोर्ट जैसे पुराने प्रोटोकॉल के विपरीत, TLS हैंडशेक पर REALITY की अभिनव "दोस्त या दुश्मन" पहचान सुरक्षा को बढ़ाती है और सक्रिय जांच तकनीकों को नियोजित करने वाले परिष्कृत DPI सिस्टम द्वारा पहचान को रोकती है। यह REALITY को कठोर सेंसरशिप वाले वातावरण में इंटरनेट की स्वतंत्रता बनाए रखने के लिए एक मजबूत समाधान बनाता है.
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4355,7 +4784,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- IKEv2, IPSec एन्क्रिप्शन परत के साथ मिलकर, एक आधुनिक और स्थिर वीपीएन प्रोटोकॉल के रूप में खड़ा है।
+ IKEv2, IPSec एन्क्रिप्शन परत के साथ मिलकर, एक आधुनिक और स्थिर वीपीएन प्रोटोकॉल के रूप में खड़ा है।
इसकी विशिष्ट विशेषताओं में से एक नेटवर्क और उपकरणों के बीच तेजी से स्विच करने की क्षमता है, जो इसे गतिशील नेटवर्क वातावरण में विशेष रूप से अनुकूली बनाती है।
हालाँकि यह सुरक्षा, स्थिरता और गति का मिश्रण प्रदान करता है, यह ध्यान रखना आवश्यक है कि IKEv2 को आसानी से पहचाना जा सकता है और अवरुद्ध होने की संभावना है।
@@ -4366,7 +4795,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* यूडीपी नेटवर्क प्रोटोकॉल, पोर्ट 500 और 4500 पर काम करता है.
-
+ DNS ServiceDNS सेवाएँ
@@ -4603,12 +5032,12 @@ While it offers a blend of security, stability, and speed, it's essential t
SettingsController
-
+ Backup file is corruptedबैकअप फ़ाइल दूषित है
-
+ All settings have been reset to default valuesसभी सेटिंग्स को डिफ़ॉल्ट मानों पर रीसेट कर दिया गया है
@@ -4740,7 +5169,7 @@ While it offers a blend of security, stability, and speed, it's essential t
VpnConnection
-
+ Mbps
@@ -4815,12 +5244,12 @@ While it offers a blend of security, stability, and speed, it's essential t
अधिकांश वीपीएन प्रोटोकॉल अवरुद्ध हैं। यदि अन्य विकल्प काम नहीं कर रहे हों तो अनुशंसित.
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/translations/amneziavpn_my_MM.ts b/client/translations/amneziavpn_my_MM.ts
index 1e81c5aa..8c8d2e39 100644
--- a/client/translations/amneziavpn_my_MM.ts
+++ b/client/translations/amneziavpn_my_MM.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ ဖိုင်ကိုဖွင့်၍မရပါ: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ JSON ဒေတာကို ဖိုင်မှ ခွဲခြမ်းထုပ်ယူမှု မအောင်မြင်ပါ: %1
+
+
+
+ The JSON data is not an array in file: %1
+ JSON ဒေတာသည် ဖိုင်ထဲရှိ array တစ်ခုမဟုတ်ပါ: %1
+
+
+
+ Import completed
+ တင်သွင်းခြင်းပြီးဆုံးသွားပါပြီ
+
+
+
+ Export completed
+ ထုတ်ယူခြင်းပြီးဆုံးသွားပါပြီ
+
+ApiAccountInfoModel
@@ -33,39 +81,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.%1 ခုကို အောင်မြင်စွာ ထည့်သွင်းပြီးပါပြီ.
-
+ API config reloadedAPI config ကို ပြန်လည်စတင်လိုက်ပါပြီ
-
+ Successfully changed the country of connection to %1ချိတ်ဆက်မှုနိုင်ငံကို %1 သို့ အောင်မြင်စွာ ပြောင်းလဲလိုက်ပါပြီ
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+ ဆက်လက်လုပ်ဆောင်မည်
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+ ပယ်ဖျက်မည်
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -97,7 +237,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -115,6 +255,11 @@
%1 days%1 ရက်
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -273,7 +418,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ပရိုတိုကောကို ပြောင်းလဲ၍မရပါ။
@@ -336,17 +481,17 @@ Can't be disabled for current server
Configuration ဖိုင် မမှန်ကန်ပါ
-
+ Scanned %1 of %2.%2 ၏ %1 ကို စကင်န်ဖတ်ထားသည်.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -358,71 +503,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 ကို အောင်မြင်စွာ ထည့်သွင်းပြီးပါပြီ.
-
+ %1 is already installed on the server. %1 ကို ဆာဗာတွင် ထည့်သွင်းပြီးဖြစ်သည်.
-
+
Added containers that were already installed on the server
ဆာဗာတွင် ထည့်သွင်းပြီးသား ကွန်တိန်နာများကို ပေါင်းထည့်ပြီးပါပြီ။
-
+
Already installed containers were found on the server. All installed containers have been added to the application
ထည့်သွင်းပြီးသား ကွန်တိန်နာများကို ဆာဗာပေါ်တွင် တွေ့ရှိခဲ့သည်။ ထည့်သွင်းထားသည့် ကွန်တိန်နာအားလုံးကို အပလီကေးရှင်းထဲသို့ ပေါင်းထည့်ပြီးပါပြီ။
-
+ Settings updated successfullyဆက်တင်များကို အောင်မြင်စွာ အပ်ဒိတ်လုပ်ပြီးပါပြီ။
-
+ Server '%1' was rebootedဆာဗာ '%1' ကို ပြန်လည်စတင်ခဲ့သည်။
-
+ Server '%1' was removedဆာဗာ '%1' ကို ဖယ်ရှားခဲ့သည်။
-
+ All containers from server '%1' have been removedဆာဗာ '%1' မှ ကွန်တိန်နာအားလုံးကို ဖယ်ရှားလိုက်ပါပြီ။
-
+ %1 has been removed from the server '%2'%1 ကို ဆာဗာ '%2' မှ ဖယ်ရှားလိုက်ပါပြီ
-
+ Api config removedApi config ကိုဖယ်ရှားလိုက်သည်
-
+ %1 cached profile clearedကက်ရှ်လုပ်ထားတဲ့ ပရိုဖိုင် %1 ခုကို ရှင်းပြီးပါပြီ
-
+ Please login as the userအသုံးပြုသူအဖြစ် log in ဝင်ရောက်ပါ
-
+ Server added successfullyဆာဗာကို အောင်မြင်စွာ ထည့်သွင်းပြီးပါပြီ
@@ -504,6 +649,24 @@ Already installed containers were found on the server. All installed containers
လုံခြုံမှုမရှိသောကွန်ရက်မှန်း ထောက်လှန်းမိသည်:
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+ ဆက်လက်လုပ်ဆောင်မည်
+
+PageDeinstalling
@@ -533,27 +696,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+ ဆက်လက်လုပ်ဆောင်မည်
+
+
+ Logging enabledLogging ဖွင့်ထားပါသည်
-
+ Split tunneling enabledsplit tunnelling ဖွင့်ထားပါသည်
-
+ Split tunneling disabledsplit tunnelling ပိတ်ထားပါသည်
-
+ VPN protocolVPN ပရိုတိုကော
-
+ Serversဆာဗာများ
@@ -575,42 +754,42 @@ Already installed containers were found on the server. All installed containers
MTU
-
+ Server settings
-
+ PortPort
-
+ Saveသိမ်းဆည်းမည်
-
+ Save settings?ဆက်တင်များကို သိမ်းဆည်းမည်လား?
-
+ Only the settings for this device will be changed
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ Unable change settings while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
@@ -632,12 +811,12 @@ Already installed containers were found on the server. All installed containers
MTU
-
+ All users with whom you shared a connection with will no longer be able to connect to it.သင်နှင့်အတူချိတ်ဆက်မှုတစ်ခုကို မျှဝေထားသည့် အသုံးပြုသူအားလုံး ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
-
+ Saveသိမ်းဆည်းမည်
@@ -682,42 +861,87 @@ Already installed containers were found on the server. All installed containers
H2 - Response packet magic header
-
+ H4 - Transport packet magic headerH4 - Transport packet magic header
-
+ H3 - Underload packet magic headerH3 - Underload packet magic header
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be uniqueH1-H4 အကွက်များ၏ တန်ဖိုးများသည် အခြားတန်ဖိုးများနှင့်မတူ တမူထူးခြားနေရပါမည်
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)အကွက် S1 + မက်ဆေ့ချ် စတင်ခြင်း အရွယ်အစား (148) ၏ တန်ဖိုးသည် S2 + မက်ဆေ့ချ် တုံ့ပြန်မှု အရွယ်အစား (92) နှင့် မညီမျှရပါ
-
+ Save settings?ဆက်တင်များကို သိမ်းဆည်းမည်လား?
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ Unable change settings while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
@@ -1122,12 +1346,17 @@ Already installed containers were found on the server. All installed containers
traffic အဖြစ် အသွင်ယူထားသည်
-
+
+ Port
+ Port
+
+
+ Saveသိမ်းဆည်းမည်
-
+ Unable change settings while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
@@ -1544,7 +1773,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1861,7 +2090,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1897,31 +2126,16 @@ Already installed containers were found on the server. All installed containers
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- Websiteဝဘ်ဆိုက်
-
-
- amnezia.org
-
- Support
@@ -1933,12 +2147,12 @@ Already installed containers were found on the server. All installed containers
-
+ Support tagကူညီပံ့ပိုးမှု tag
-
+ Copiedကူးယူပြီးပါပြီ
@@ -1966,37 +2180,37 @@ Already installed containers were found on the server. All installed containers
App split tunneling
-
+ ModeMode
-
+ Remove ဖယ်ရှားမည်
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ application nameအပလီကေးရှင်းအမည်
-
+ Open executable fileစီမံလုပ်ဆောင်နိုင်မှုဖိုင်ကိုဖွင့်မည်
-
+ Executable files (*.*)စီမံလုပ်ဆောင်နိုင်မှုဖိုင်များ (*.*)
@@ -2211,24 +2425,23 @@ Already installed containers were found on the server. All installed containers
AmneziaDNS ကို အသုံးမပြု သို့မဟုတ် ထည့်သွင်းခြင်းမပြုသည့်အခါ
-
+ Allows you to use the VPN only for certain Appsအချို့သောအက်ပ်များအတွက်သာ VPN ကို အသုံးပြုခွင့်ပေးသည်
-
+ KillSwitchKillSwitch
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
- အကြောင်းတစ်ခုခုကြောင့် VPN ချိတ်ဆက်မှု ပျက်သွားပါက သင့်အင်တာနက်ကို ချက်ချင်းရပ်ဆိုင်းပေးသည်.
+
+ Blocks network connections without VPN
+
-
- Cannot change KillSwitch settings during active connection
-
+ Disables your internet if your encrypted VPN connection drops out for any reason.
+ အကြောင်းတစ်ခုခုကြောင့် VPN ချိတ်ဆက်မှု ပျက်သွားပါက သင့်အင်တာနက်ကို ချက်ချင်းရပ်ဆိုင်းပေးသည်.Cannot change killSwitch settings during active connection
@@ -2245,7 +2458,7 @@ Already installed containers were found on the server. All installed containers
VPN မှတဆင့် သင်ဝင်ရောက်လိုသည့်ဆိုဒ်များကို ရွေးချယ်စေနိုင်သည်
-
+ App-based split tunnelingApp အခြေပြု split tunneling
@@ -2313,6 +2526,155 @@ Already installed containers were found on the server. All installed containers
ဆက်တင်များကို သိမ်းဆည်းပြီးပြီ
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+ KillSwitch
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+ ဆက်လက်လုပ်ဆောင်မည်
+
+
+
+ Cancel
+ ပယ်ဖျက်မည်
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+ ဆက်လက်လုပ်ဆောင်မည်
+
+
+
+ Cancel
+ ပယ်ဖျက်မည်
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ တင်သွင်းမည်
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2433,11 +2795,6 @@ Already installed containers were found on the server. All installed containers
No new installed containers foundအသစ်ထည့်သွင်းထားသော ကွန်တိန်နာများ မတွေ့ရှိပါ
-
-
-
-
-
@@ -2524,6 +2881,11 @@ Already installed containers were found on the server. All installed containers
Cannot reset API config during active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် API config ကို ပြန်လည်သတ်မှတ်၍မရပါ
+
+
+ Switch to the new Amnezia Premium subscription
+
+ Remove server from application
@@ -2582,11 +2944,6 @@ Already installed containers were found on the server. All installed containers
Clear %1 profile?%1 ပရိုဖိုင်ကို ရှင်းလင်းမည်လား?
-
-
-
-
- Unable to clear %1 profile while there is an active connection
@@ -2671,32 +3028,32 @@ Already installed containers were found on the server. All installed containers
စာရင်းတွင်ဖော်ပြထားသောလိပ်စာများကို VPN ဖြင့် ဝင်ရောက်ခြင်းပြုနိုင်လိမ့်မည် မဟုတ်ပေ
-
+ Split tunnelingSplit tunneling
-
+ ModeMode
-
+ Remove ဖယ်ရှားမည်
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ Import / Export Sitesဆိုက်များ သွင်း/ထုတ်မည်
@@ -2711,50 +3068,50 @@ Already installed containers were found on the server. All installed containers
လက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် split tunneling ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
-
+ website or IPဝဘ်ဆိုက် သို့မဟုတ် IP
-
+ Importတင်သွင်းမည်
-
+ Save site listဆိုက်စာရင်းကို သိမ်းဆည်းမည်
-
+ Save sitesဆိုက်များသိမ်းဆည်းမည်
-
-
-
+
+
+ Sites files (*.json)ဆိုက်ဖိုင်များ (*.json)
-
+ Import a list of sitesဆိုက်စာရင်းတစ်ခု တင်သွင်းမည်
-
+ Replace site listဆိုက်စာရင်းကို အစားထိုးမည်
-
-
+
+ Open sites fileဆိုက်ဖိုင်များ ဖွင့်မည်
-
+ Add imported sites to existing onesတင်သွင်းထားသော ဆိုက်များကို ရှိပြီးသားဆိုက်များထဲသို့ ထည့်မည်
@@ -2808,117 +3165,140 @@ Already installed containers were found on the server. All installed containers
PageSetupWizardConfigSource
-
+ File with connection settingsချိတ်ဆက်မှုဆက်တင်များပါဝင်သောဖိုင်
-
+ Connectionချိတ်ဆက်မှု
-
+ Settingsဆက်တင်များ
-
+ Enable logs
+ Export client logs
+
+
+
+
+ Save
+ သိမ်းဆည်းမည်
+
+
+
+ Logs files (*.log)
+ မှတ်တမ်းဖိုင်များ (*.log)
+
+
+
+ Logs file saved
+ မှတ်တမ်းဖိုင်များသိမ်းဆည်းပြီးပါပြီ
+
+
+ Support tagကူညီပံ့ပိုးမှု tag
-
+ Copiedကူးယူပြီးပါပြီ
-
+ Insert the key, add a configuration file or scan the QR-codeKey ကိုထည့်မည်၊ ဖွဲ့စည်းမှုဖိုင်တစ်ခုကိုထည့်မည် သို့မဟုတ် QR-ကုဒ်ကို စကင်န်ဖတ်မည်
-
+ Insert keyKey ကိုထည့်သွင်းမည်
-
+ Insertထည့်သွင်းမည်
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Other connection optionsအခြားချိတ်ဆက်မှုရွေးချယ်စရာများ
-
+ Site Amnezia
-
+ VPN by AmneziaAmnezia မှ VPN
-
+ Connect to classic paid and free VPN services from AmneziaAmnezia မှ အခပေးနှင့် အခမဲ့ မူလ VPN ဝန်ဆောင်မှုများသို့ ချိတ်ဆက်မည်
-
+ Self-hosted VPNကိုယ်တိုင် host လုပ်ထားသော VPN
-
+ Configure Amnezia VPN on your own serverAmnezia VPN ကို သင်၏ကိုယ်ပိုင်ဆာဗာပေါ်တွင် စီစဥ်ချိန်ညှိမည်
-
+ Restore from backupအရံဖိုင်မှ ပြန်လည်ရယူမည်
-
+
+
+
+
-
+ Open backup fileအရံဖိုင်ကို ဖွင့်မည်
-
+ Backup files (*.backup)အရံဖိုင်များ (*.backup)
-
+ Open config fileconfig ဖိုင်ကိုဖွင့်မည်
-
+ QR codeQR-ကုဒ်
-
+ I have nothingကျွန်ုပ်တွင်ဘာမှမရှိပါ
@@ -3769,58 +4149,58 @@ Already installed containers were found on the server. All installed containers
ဤအသုံးပြုသူသည် sudo အုပ်စု၏အဖွဲ့ဝင်မဟုတ်ပါ
-
+ SSH request was deniedSSH တောင်းဆိုမှု ငြင်းဆိုခံလိုက်ရပါသည်
-
+ SSH request was interruptedSSH တောင်းဆိုမှု အနှောက်အယက်ခံလိုက်ရပါသည်
-
+ SSH internal errorစက်တွင်းဖြစ်သော SSH မှားယွင်းမှု
-
+ Invalid private key or invalid passphrase enteredမမှန်ကန်သော ကိုယ်ပိုင် key သို့မဟုတ် မမှန်ကန်သော စကားဝှက်ကို ထည့်သွင်းထားသည်
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key typesရွေးချယ်ထားသော ကိုယ်ပိုင် key ဖော်မတ်ကို ထောက်ပံ့မှုမပေးပါ၊ openssh ED25519 key အမျိုးအစားများ သို့မဟုတ် PEM သော့အမျိုးအစားများကို အသုံးပြုပါ
-
+ Timeout connecting to serverဆာဗာသို့ ချိတ်ဆက်ခြင်း အချိန်ကုန်သွားသည်
-
+ The config does not contain any containers and credentials for connecting to the serverConfig တွင် ဆာဗာသို့ချိတ်ဆက်ရန်အတွက် ကွန်တိန်နာများနှင့် အထောက်အထားများ မပါဝင်ပါ
-
-
+
+ Error when retrieving configuration from APIAPI မှ စီစဉ်သတ်မှတ်မှုကို ရယူသည့်အခါ အမှားအယွင်းဖြစ်ပေါ်နေသည်
-
+ This config has already been added to the applicationဤ config ကို အပလီကေးရှင်းထဲသို့ ထည့်သွင်းပြီးဖြစ်သည်
-
+ ErrorCode: %1. မှားယွင်းမှုကုတ်: %1.
-
+ OpenVPN config missingOpenVPN config ပျောက်ဆုံးနေပါသည်
@@ -3860,139 +4240,159 @@ Already installed containers were found on the server. All installed containers
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SCP error: Generic failureSCP မှားယွင်းမှု: ယေဘုယ မအောင်မြင်ခြင်း
-
+ OpenVPN management server errorOpenVPN စီမံခန့်ခွဲမှုဆာဗာ အမှားအယွင်း
-
+ OpenVPN executable missingOpenVPN စီမံလုပ်ဆောင်နိုင်မှု ပျောက်ဆုံးနေပါသည်
-
+ Shadowsocks (ss-local) executable missingShadowsocks (ss-local) executable ပျောက်နေပါသည်
-
+ Cloak (ck-client) executable missingCloak (ck-client) စီမံလုပ်ဆောင်နိုင်မှု ပျောက်ဆုံးနေပါသည်
-
+ Amnezia helper service errorAmnezia helper ဝန်ဆောင်မှု မှားယွင်းမှု
-
+ OpenSSL failedOpenSSL မအောင်မြင်ပါ
-
+ Can't connect: another VPN connection is activeချိတ်ဆက်၍မရပါ: အခြား VPN ချိတ်ဆက်မှုတစ်ခုရှိနေပါသည်
-
+ Can't setup OpenVPN TAP network adapterOpenVPN TAP ကွန်ရက် adapter ကို စနစ်တည်ဆောက်၍မရပါ
-
+ VPN pool error: no available addressesVPN pool မှားယွင်းမှု: ရရှိနိုင်သောလိပ်စာများမရှိပါ
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at firstVPN ပရိုတိုကောများကို မထည့်သွင်းရသေးပါ။
ကျေးဇူးပြု၍ VPN ကွန်တိန်နာကို အရင်ထည့်သွင်းပါ။
-
+ VPN connection errorVPN ချိတ်ဆက်မှုမှားယွင်းနေပါသည်
-
+ In the response from the server, an empty config was receivedဆာဗာမှ တုံ့ပြန်မှုတွင်၊ config အလွတ်တစ်ခုကို လက်ခံရရှိခဲ့သည်
-
+ SSL error occurredSSL မှားယွင်းမှုဖြစ်သွားသည်
-
+ Server response timeout on api requestApi တောင်းဆိုမှုတွင် ဆာဗာတုံ့ပြန်မှု အချိန်ကုန်သွားသည်
-
+ Missing AGW public keyAGW public key ပျောက်ဆုံးနေသည်
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
+ A migration error has occurred. Please contact our technical support
+
+
+
+
+ Please update the application to use this feature
+
+
+
+ QFile error: The file could not be openedQFile မှားယွင်းမှု: ဖိုင်ကို ဖွင့်၍မရပါ
-
+ QFile error: An error occurred when reading from the fileQFile မှားယွင်းမှု: ဖိုင်ကိုဖတ်နေစဥ်အတွင်း မှားယွင်းမှုဖြစ်သွားသည်
-
+ QFile error: The file could not be accessedQFile မှားယွင်းမှု: ဖိုင်ကို ဝင်၍မရပါ
-
+ QFile error: An unspecified error occurredQFile မှားယွင်းမှု: သတ်မှတ်မထားသော မှားယွင်းမှုတစ်ခု ဖြစ်ပွားခဲ့သည်
-
+ QFile error: A fatal error occurredQFile မှားယွင်းမှု: ကြီးမားသော မှားယွင်းမှုတစ်ခု ဖြစ်ပွားခဲ့သည်
-
+ QFile error: The operation was abortedQFile မှားယွင်းမှု: လုပ်ငန်းစဥ်ကို ဖျက်သိမ်းလိုက်ရသည်
-
+ Internal errorစက်တွင်းဖြစ်သော မှားယွင်းမှု
@@ -4092,7 +4492,6 @@ This advanced capability differentiates REALITY from similar technologies by its
Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security and circumvents detection by sophisticated DPI systems employing active probing techniques. This makes REALITY a robust solution for maintaining internet freedom in environments with stringent censorship.
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4102,7 +4501,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- IPSec ကုဒ်ဝှက်ခြင်းအလွှာနှင့်တွဲဆက်ထားသည့် IKEv2 သည် ခေတ်မီပြီး တည်ငြိမ်သော VPN ပရိုတိုကောဖြစ်သည်။
+ IPSec ကုဒ်ဝှက်ခြင်းအလွှာနှင့်တွဲဆက်ထားသည့် IKEv2 သည် ခေတ်မီပြီး တည်ငြိမ်သော VPN ပရိုတိုကောဖြစ်သည်။
၎င်း၏ထူးခြားသောအင်္ဂါရပ်များထဲမှတစ်ခုမှာ ကွန်ရက်များနှင့် စက်ပစ္စည်းများကြား လျင်မြန်စွာပြောင်းလဲနိုင်သည့်စွမ်းရည်ဖြစ်ပြီး ဤစွမ်းရည်ကပင် dynamic ဖြစ်သောကွန်ရက်ပတ်ဝန်းကျင်များတွင် လိုက်လျောညီထွေဖြစ်စေရန်အကူအညီပေးပါသည်။
IKEv2 သည် လုံခြုံရေး၊ တည်ငြိမ်မှု၊ နှင့် အမြန်နှုန်းတို့ ပေးစွမ်းနိုင်သော်လည်း၊ အလွယ်တကူ ထောက်လှန်းသိရှိခံရနိုင်ပြီး ပိတ်ဆို့ခြင်း ခံရနိုင်သည်ကို သတိပြုရန် အရေးကြီးပါသည်။
@@ -4113,7 +4512,7 @@ IKEv2 သည် လုံခြုံရေး၊ တည်ငြိမ်မှ
* UDP ကွန်ရက်ပရိုတိုကော၊ port 500 နှင့် 4500 ကျော်တွင် အလုပ်လုပ်သည်။.
-
+ DNS ServiceDNS ဝန်ဆောင်မှု
@@ -4124,7 +4523,7 @@ IKEv2 သည် လုံခြုံရေး၊ တည်ငြိမ်မှ
-
+ Website in Tor networkTor ကွန်ရက်ထဲရှိ ဝဘ်ဆိုဒ်
@@ -4164,69 +4563,100 @@ IKEv2 သည် လုံခြုံရေး၊ တည်ငြိမ်မှ
-
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
-
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
+
+
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
+
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
@@ -4266,14 +4696,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* TCP နှင့် UDP ကွန်ရက် ပရိုတိုကော နှစ်ခုလုံးတွင် လည်ပတ်နိုင်သည်။.
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- SOCKS5 ပရိုတိုကောကို အတုယူအခြေခံတည်ဆောက်ထားသော Shadowsocks သည် AEAD cipher ကိုအသုံးပြု၍ ချိတ်ဆက်မှုကိုကာကွယ်ပေးသည်။ Shadowsocks သည် ထောက်လှန်းသိရှိခံရခြင်းမှရှောင်ရှားနိုင်ရန်နှင့် ထောက်လှန်းသည့်သူများခက်ခဲစေရန် ဒီဇိုင်းထုတ်ထားသော်လည်း စံသတ်မှတ်ထားသည့် HTTPS ချိတ်ဆက်မှုနှင့် ထပ်တူမကျပါ။ သို့သော်၊ အချို့သောလမ်းကြောင်းဆိုင်ရာ ခွဲခြမ်းစိတ်ဖြာမှုစနစ်များသည် Shadowsocks ချိတ်ဆက်မှုကို ရှာဖွေတွေ့ရှိနိုင်သေးသည်။ Amnezia တွင် ထောက်ပံ့မှုအကန့်အသတ်ရှိသောကြောင့် AmneziaWG ပရိုတိုကောကို အသုံးပြုရန် အကြံပြုထားသည်။
+ SOCKS5 ပရိုတိုကောကို အတုယူအခြေခံတည်ဆောက်ထားသော Shadowsocks သည် AEAD cipher ကိုအသုံးပြု၍ ချိတ်ဆက်မှုကိုကာကွယ်ပေးသည်။ Shadowsocks သည် ထောက်လှန်းသိရှိခံရခြင်းမှရှောင်ရှားနိုင်ရန်နှင့် ထောက်လှန်းသည့်သူများခက်ခဲစေရန် ဒီဇိုင်းထုတ်ထားသော်လည်း စံသတ်မှတ်ထားသည့် HTTPS ချိတ်ဆက်မှုနှင့် ထပ်တူမကျပါ။ သို့သော်၊ အချို့သောလမ်းကြောင်းဆိုင်ရာ ခွဲခြမ်းစိတ်ဖြာမှုစနစ်များသည် Shadowsocks ချိတ်ဆက်မှုကို ရှာဖွေတွေ့ရှိနိုင်သေးသည်။ Amnezia တွင် ထောက်ပံ့မှုအကန့်အသတ်ရှိသောကြောင့် AmneziaWG ပရိုတိုကောကို အသုံးပြုရန် အကြံပြုထားသည်။
* Desktop ပလပ်ဖောင်းများတွင်ရှိသော AmneziaVPN တွင်သာအသုံးပြုနိုင်ပါသည်။
* ပြင်ဆင်သတ်မှတ်နိုင်သော စာဝှက်စနစ် ပရိုတိုကော
@@ -4301,7 +4730,7 @@ WireGuard သည် ၎င်း၏ စွမ်းဆောင်ရည်အ
* UDP ကွန်ရက်ပရိုတိုကောပေါ်တွင် အလုပ်လုပ်သည်။.
-
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4327,7 +4756,7 @@ For more detailed information, you can
-
+ SOCKS5 proxy serverSOCKS5 proxy ဆာဗာ
@@ -4564,12 +4993,12 @@ For more detailed information, you can
SettingsController
-
+ All settings have been reset to default valuesဆက်တင်အားလုံးကို မူရင်းတန်ဖိုးများအဖြစ် ပြန်လည်သတ်မှတ်ထားသည်
-
+ Backup file is corruptedအရံဖိုင်ပျက်ဆီးနေသည်
@@ -4701,7 +5130,7 @@ For more detailed information, you can
VpnConnection
-
+ MbpsMbps
@@ -4768,12 +5197,12 @@ For more detailed information, you can
ဆင်ဆာဖြတ်တောက်ခြင်းကို ကျော်ဖြတ်ချင်ပါသည်. ဤရွေးချယ်မှုကို ကိစ္စအများစုအတွက် အကြံပြုထားသည်.
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts
index 1d8766ac..da6eadba 100644
--- a/client/translations/amneziavpn_ru_RU.ts
+++ b/client/translations/amneziavpn_ru_RU.ts
@@ -358,7 +358,7 @@
ContextMenuType
-
+ C&utВырезать
@@ -368,12 +368,12 @@
Копировать
-
+ &PasteВставить
-
+ &SelectAllВыбрать всё
@@ -436,17 +436,17 @@ Can't be disabled for current server
ImportController
-
+ Scanned %1 of %2.Отсканировано %1 из %2.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config. Эта конфигурация содержит настройки OpenVPN. Конфигурации OpenVPN могут содержать вредоносные скрипты, поэтому добавляйте их только в том случае, если полностью доверяете источнику этого файла.
-
+ <br>In the imported configuration, potentially dangerous lines were found:<br>В импортированной конфигурации обнаружены потенциально опасные строки:
@@ -454,71 +454,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 успешно установлен.
-
+ %1 is already installed on the server. %1 уже установлен на сервер.
-
+
Added containers that were already installed on the server
Добавлены сервисы и протоколы, которые были ранее установлены на сервер
-
+
Already installed containers were found on the server. All installed containers have been added to the application
На сервере обнаружены установленные протоколы и сервисы. Все они были добавлены в приложение
-
+ Settings updated successfullyНастройки успешно обновлены
-
+ Server '%1' was rebootedСервер '%1' был перезагружен
-
+ Server '%1' was removedСервер '%1' был удален
-
+ All containers from server '%1' have been removedВсе протоколы и сервисы были удалены с сервера '%1'
-
+ %1 has been removed from the server '%2'%1 был удален с сервера '%2'
-
+ Api config removedКонфигурация API удалена
-
+ %1 cached profile cleared%1 закэшированный профиль очищен
-
+ Please login as the userПожалуйста, войдите в систему от имени пользователя
-
+ Server added successfullyСервер успешно добавлен
@@ -690,42 +690,42 @@ Thank you for staying with us!
MTU
-
+ Server settingsНастройки сервера
-
+ PortПорт
-
+ SaveСохранить
-
+ Save settings?Сохранить настройки?
-
+ Only the settings for this device will be changedБудут изменены настройки только для этого устройства
-
+ ContinueПродолжить
-
+ CancelОтменить
-
+ Unable change settings while there is an active connectionНевозможно изменить настройки во время активного соединения
@@ -743,12 +743,12 @@ Thank you for staying with us!
Порт
-
+ All users with whom you shared a connection with will no longer be able to connect to it.Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.
-
+ SaveСохранить
@@ -793,42 +793,87 @@ Thank you for staying with us!
H2 - Response packet magic header
-
+ H4 - Transport packet magic headerH4 - Transport packet magic header
-
+ H3 - Underload packet magic headerH3 - Underload packet magic header
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be uniqueЗначения в полях H1-H4 должны быть уникальными
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)
-
+ Save settings?Сохранить настройки?
-
+ ContinueПродолжить
-
+ CancelОтменить
-
+ Unable change settings while there is an active connectionНевозможно изменить настройки во время активного соединения
@@ -4766,12 +4811,12 @@ For more detailed information, you can
SettingsController
-
+ All settings have been reset to default valuesВсе настройки сброшены до значений по умолчанию
-
+ Backup file is corruptedФайл резервной копии поврежден
diff --git a/client/translations/amneziavpn_uk_UA.ts b/client/translations/amneziavpn_uk_UA.ts
index 3fa42c9f..eacac054 100644
--- a/client/translations/amneziavpn_uk_UA.ts
+++ b/client/translations/amneziavpn_uk_UA.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ Неможливо відкрити файл: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ Не вдалося розібрати JSON-данні із файлу: %1
+
+
+
+ The JSON data is not an array in file: %1
+ Данні JSON не являються масивом в файлі: %1
+
+
+
+ Import completed
+ Імпорт завершено
+
+
+
+ Export completed
+ Експорт завершено
+
+AmneziaApplication
@@ -56,39 +104,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.%1 встановлено успішно.
-
+ API config reloadedКонфігурацію API перезавантажено
-
+ Successfully changed the country of connection to %1Успішно змінено країну підключення на %1
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+ Продовжити
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+ Відмінити
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -120,7 +260,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -138,6 +278,11 @@
%1 days%1 днів
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -296,7 +441,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connectionНеможливо змінити протокол при активному підключенні
@@ -367,17 +512,17 @@ Can't be disabled for current server
Недійсний файл конфігурації
-
+ Scanned %1 of %2.Відскановано %1 з %2.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -389,70 +534,70 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 встановлено.
-
+ %1 is already installed on the server. %1 вже встановлено на сервері.
-
+
Added containers that were already installed on the serverДодані сервіси і протоколи, які були раніше встановлені на сервері
-
+
Already installed containers were found on the server. All installed containers have been added to the application
На сервері знайдені сервіси та протоколи, всі вони додані в застосунок
-
+ Settings updated successfullyНалаштування оновлено
-
+ Server '%1' was rebootedСервер '%1' перезавантажено
-
+ Server '%1' was removedСервер '%1' був видалений
-
+ All containers from server '%1' have been removedВсі сервіси та протоколи були видалені з сервера '%1'
-
+ %1 has been removed from the server '%2'%1 був видалений з сервера '%2'
-
+ Api config removedКонфігурацію API видалено
-
+ %1 cached profile clearedКешований профіль %1 очищено
-
+ Please login as the userБуль-ласка, увійдіть в систему від імені користувача
-
+ Server added successfullyСервер додано
@@ -534,6 +679,24 @@ Already installed containers were found on the server. All installed containers
Знайдена не захищена мережа:
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+ Продовжити
+
+PageDeinstalling
@@ -563,27 +726,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+ Продовжити
+
+
+ Logging enabledЛогування увімкнено
-
+ Split tunneling enabledРоздільне тунелювання увімкнено
-
+ Split tunneling disabledРоздільне тунелювання вимкнено
-
+ VPN protocolVPN протокол
-
+ ServersСервери
@@ -605,42 +784,42 @@ Already installed containers were found on the server. All installed containers
MTU
-
+ Server settings
-
+ PortПорт
-
+ SaveЗберегти
-
+ Save settings?Зберегти налаштування?
-
+ Only the settings for this device will be changed
-
+ ContinueПродовжити
-
+ CancelВідмінити
-
+ Unable change settings while there is an active connectionНеможливо змінити налаштування, поки є активне підключення
@@ -698,42 +877,87 @@ Already installed containers were found on the server. All installed containers
-
+ H4 - Transport packet magic header
-
+ H3 - Underload packet magic header
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ SaveЗберегти
-
+ The values of the H1-H4 fields must be uniqueЗначення полів H1-H4 мають бути унікальними
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)
-
+ Save settings?Зберегти налаштування?
-
+ All users with whom you shared a connection with will no longer be able to connect to it.Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.
-
+ Unable change settings while there is an active connectionНеможливо змінити налаштування, поки є активне підключення
@@ -754,12 +978,12 @@ Already installed containers were found on the server. All installed containers
Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.
-
+ ContinueПродовжити
-
+ CancelВідмінити
@@ -1216,12 +1440,17 @@ Already installed containers were found on the server. All installed containers
Замаскувати трафік під
-
+
+ Port
+ Порт
+
+
+ SaveЗберегти
-
+ Unable change settings while there is an active connectionНеможливо змінити налаштування, поки є активне підключення
@@ -1713,7 +1942,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -2026,7 +2255,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -2062,31 +2291,16 @@ Already installed containers were found on the server. All installed containers
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- WebsiteВеб-сайт
-
-
- amnezia.org
-
- Support
@@ -2098,12 +2312,12 @@ Already installed containers were found on the server. All installed containers
-
+ Support tag
-
+ CopiedСкопійовано
@@ -2131,37 +2345,37 @@ Already installed containers were found on the server. All installed containers
Split tunneling для додатка
-
+ ModeРежим
-
+ Remove Видалити
-
+ ContinueПродовжити
-
+ CancelВідмінити
-
+ application nameназва додатка
-
+ Open executable fileВідкрити виконуваний файл
-
+ Executable files (*.*)Виконувані файли (*.*)
@@ -2392,24 +2606,23 @@ Already installed containers were found on the server. All installed containers
Ці адреси будуть використовуватись коли вимкнений AmneziaDNS
-
+ Allows you to use the VPN only for certain AppsДозволяє використовувати VPN тільки для вибраних застосунків
-
+ KillSwitchKillSwitch
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
- Вимикає ваш інтернет, якщо ваше захищене VPN-підключення зникає з будь-якої причини.
+
+ Blocks network connections without VPN
+
-
- Cannot change KillSwitch settings during active connection
-
+ Disables your internet if your encrypted VPN connection drops out for any reason.
+ Вимикає ваш інтернет, якщо ваше захищене VPN-підключення зникає з будь-якої причини.Cannot change killSwitch settings during active connection
@@ -2426,7 +2639,7 @@ Already installed containers were found on the server. All installed containers
Дозволяє доступ до одних сайтів через VPN, а для інших в обхід VPN
-
+ App-based split tunnelingРоздільне VPN-тунелювання застосунків
@@ -2502,6 +2715,155 @@ Already installed containers were found on the server. All installed containers
Зберегти налаштування
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+ KillSwitch
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+ Продовжити
+
+
+
+ Cancel
+ Відмінити
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+ Продовжити
+
+
+
+ Cancel
+ Відмінити
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ Імпорт
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2633,11 +2995,6 @@ Already installed containers were found on the server. All installed containers
No new installed containers foundНові встановлені протоколи і сервіси не виявлені
-
-
-
-
-
@@ -2724,6 +3081,11 @@ Already installed containers were found on the server. All installed containers
Cannot reset API config during active connectionНеможливо скинути конфігурацію API під час активного підключення
+
+
+ Switch to the new Amnezia Premium subscription
+
+ Do you want to clear server Amnezia-installed services?Ви хочете очистити сервер від сервісів Amnezia?
@@ -2845,11 +3207,6 @@ Already installed containers were found on the server. All installed containers
Cannot remove active containerНеможливо видалити активний контейнер
-
-
-
-
- Remove
@@ -2902,27 +3259,27 @@ Already installed containers were found on the server. All installed containers
Адреси із списку не повинні відкриватись через VPN
-
+ Split tunnelingРоздільне VPN-тунелювання
-
+ ModeРежим
-
+ Remove Видалити
-
+ ContinueПродовжити
-
+ CancelВідмінити
@@ -2931,7 +3288,7 @@ Already installed containers were found on the server. All installed containers
Сайт чи IP
-
+ Import / Export SitesІмпорт / Експорт Сайтів
@@ -2951,50 +3308,50 @@ Already installed containers were found on the server. All installed containers
-
+ website or IPвебсайт або IP
-
+ ImportІмпорт
-
+ Save site listЗберегти список сайтів
-
+ Save sitesЗберегти
-
-
-
+
+
+ Sites files (*.json)Sites files (*.json)
-
+ Import a list of sitesІмпортувати список із сайтами
-
+ Replace site listЗамінити список із сайтами
-
-
+
+ Open sites fileВідкрити список із сайтами
-
+ Add imported sites to existing onesДодати імпортовані сайти до існуючих
@@ -3068,7 +3425,7 @@ It's okay as long as it's from someone you trust.
Виберіть що у вас є
-
+ File with connection settingsФайл з налаштуваннями підключення
@@ -3077,112 +3434,135 @@ It's okay as long as it's from someone you trust.
Файл з налаштуваннями підключення або бекап
-
+ ConnectionПідключення
-
+ SettingsНалаштування
-
+ Enable logs
+ Export client logs
+
+
+
+
+ Save
+ Зберегти
+
+
+
+ Logs files (*.log)
+ Logs files (*.log)
+
+
+
+ Logs file saved
+ Файл з логами збережено
+
+
+ Support tag
-
+ CopiedСкопійовано
-
+ Insert the key, add a configuration file or scan the QR-codeВставте ключ, додайте файл конфігурації або відскануйте QR-код
-
+ Insert keyВставити ключ
-
+ InsertВставити
-
+ ContinueПродовжити
-
+ Other connection optionsІнші параметри підключення
-
+ Site Amnezia
-
+ VPN by AmneziaVPN від Amnezia
-
+ Connect to classic paid and free VPN services from AmneziaПідключайтеся до звичайних платних та безкоштовних VPN-сервісів від Amnezia
-
+ Self-hosted VPNSelf-hosted VPN
-
+ Configure Amnezia VPN on your own serverНалаштуйте Amnezia VPN на власному сервері
-
+ Restore from backupВідновити із бекапа
-
+
+
+
+
-
+ Open backup fileВідкрити бекап файл
-
+ Backup files (*.backup)Файли резервної копії (*.backup)
-
+ Open config fileВідкрити файл з конфігурацією
-
+ QR codeQR-код
-
+ I have nothingУ мене нічого нема
@@ -4165,37 +4545,47 @@ and will not be shared or disclosed to the Amnezia or any third parties
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SSH request was deniedSSH request was denied
-
+ SSH request was interruptedSSH request was interrupted
-
+ SSH internal errorSSH internal error
-
+ Invalid private key or invalid passphrase enteredInvalid private key or invalid passphrase entered
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key typesThe selected private key format is not supported, use openssh ED25519 key types or PEM key types
-
+ Timeout connecting to serverTimeout connecting to server
-
+ SCP error: Generic failure
@@ -4252,23 +4642,23 @@ and will not be shared or disclosed to the Amnezia or any third parties
Sftp error: No media was in remote drive
-
+ The config does not contain any containers and credentials for connecting to the serverКонфігурація не містить контейнерів і облікових даних для підключення до серверу
-
-
+
+ Error when retrieving configuration from API
-
+ This config has already been added to the applicationЦя конфігурація вже була додана в застосунок
-
+ ErrorCode: %1.
@@ -4277,139 +4667,149 @@ and will not be shared or disclosed to the Amnezia or any third parties
Failed to save config to disk
-
+ OpenVPN config missingOpenVPN config missing
-
+ OpenVPN management server errorOpenVPN management server error
-
+ OpenVPN executable missingOpenVPN executable missing
-
+ Shadowsocks (ss-local) executable missingShadowsocks (ss-local) executable missing
-
+ Cloak (ck-client) executable missingCloak (ck-client) executable missing
-
+ Amnezia helper service errorAmnezia helper service error
-
+ OpenSSL failedOpenSSL failed
-
+ Can't connect: another VPN connection is activeCan't connect: another VPN connection is active
-
+ Can't setup OpenVPN TAP network adapterCan't setup OpenVPN TAP network adapter
-
+ VPN pool error: no available addressesVPN pool error: no available addresses
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at firstVPN протоколи не встановлено.
Будь-ласка, встановіть VPN контейнер
-
+ VPN connection error
-
+ In the response from the server, an empty config was received
-
+ SSL error occurred
-
+ Server response timeout on api request
-
+ Missing AGW public key
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
- QFile error: The file could not be opened
+ A migration error has occurred. Please contact our technical support
- QFile error: An error occurred when reading from the file
-
-
-
-
- QFile error: The file could not be accessed
-
-
-
-
- QFile error: An unspecified error occurred
+ Please update the application to use this feature
- QFile error: A fatal error occurred
+ QFile error: The file could not be opened
- QFile error: The operation was aborted
+ QFile error: An error occurred when reading from the file
+
+
+
+
+ QFile error: The file could not be accessed
+
+
+
+
+ QFile error: An unspecified error occurred
+
+
+
+
+ QFile error: A fatal error occurred
+ QFile error: The operation was aborted
+
+
+
+ Internal errorInternal error
@@ -4506,7 +4906,6 @@ REALITY унікально ідентифікує цензорів під час
На відміну від старіших протоколів, таких як VMess, VLESS та XTLS-Vision transport, продвиуте розпізнавання "Свій — Чужий" REALITY під час TLS-handshake підвищує безпеку та протидіє виявленню складними системами DPI, що використовують активні техніки аналізу. Це робить REALITY надійним рішенням для підтримання інтернет-свободи в середовищах з жорсткою цензурою.
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4516,7 +4915,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- IKEv2 разом з шифруванням IPSec -- це сучасний та стабільний протокол VPN.
+ IKEv2 разом з шифруванням IPSec -- це сучасний та стабільний протокол VPN.
Він може швидко переключись між мережами та пристроями, що робить його осболиво адаптованим під динамічні мережеві середовища.
Потрібно зазначити, що незважаючи на стабільність та швидкість, IKEv2 легко розпізнається та вразливий до блокувань.
@@ -4527,7 +4926,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Працює по мережевому протоколу UDP, порти 500 і 4500.
-
+ DNS ServiceDNS Сервіс
@@ -4538,7 +4937,7 @@ While it offers a blend of security, stability, and speed, it's essential t
-
+ Website in Tor networkВеб-сайт в мережі Tor
@@ -4577,16 +4976,101 @@ While it offers a blend of security, stability, and speed, it's essential t
XRay with REALITY masks VPN traffic as web traffic and protects against active probing. It is highly resistant to detection and offers high speed.
+
+
+
+
+
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
+
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
+
+
+
+
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
+
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
+
+
+
+
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
+
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
+
+
+
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
@@ -4634,14 +5118,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* Може працювати за протоколом TCP і UDP.
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- Shadowsocks, створений на основі протоколу SOCKS5, захищає з'єднання AEAD шифруванням. Незважаючи на те, що протокол Shadowsocks розроблений таким чином, щоб бути незаметним і складним для ідентифікації, він не ідентичний стандартному HTTPS-з'єднанню. Однак деякі системи аналізу трафіку все-таки можуть знайти підключення Shadowsocks. У зв’язку з обмеженою підтримкою в Amnezia рекомендується використовувати протокол AmneziaWG або OpenVPN через Cloak.
+ Shadowsocks, створений на основі протоколу SOCKS5, захищає з'єднання AEAD шифруванням. Незважаючи на те, що протокол Shadowsocks розроблений таким чином, щоб бути незаметним і складним для ідентифікації, він не ідентичний стандартному HTTPS-з'єднанню. Однак деякі системи аналізу трафіку все-таки можуть знайти підключення Shadowsocks. У зв’язку з обмеженою підтримкою в Amnezia рекомендується використовувати протокол AmneziaWG або OpenVPN через Cloak.
* Доступний в AmneziaVPN тільки на ПК.
* Гнучке налаштування протоколу шифрування
@@ -4649,61 +5132,7 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* Працює по мережевому протоколу TCP.
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
-
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
-
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
-
-
-
-
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
-
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
-
-
-
-
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
-
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
-
-
-
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
-
-
-
-
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4814,7 +5243,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
-
+ SOCKS5 proxy serverSOCKS5 proxy server
@@ -5051,7 +5480,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
SettingsController
-
+ All settings have been reset to default valuesВсі налаштування були скинуті до значення "По замовчуванню"
@@ -5060,7 +5489,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
Кеш профілю очищено
-
+ Backup file is corruptedBackup файл пошкодженно
@@ -5192,7 +5621,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
VpnConnection
-
+ MbpsMbps
@@ -5283,12 +5712,12 @@ This means that AmneziaWG keeps the fast performance of the original while addin
Я просто хочу підвищити свій рівень безпеки в інтернеті.
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/translations/amneziavpn_ur_PK.ts b/client/translations/amneziavpn_ur_PK.ts
index 3a8b8172..f76be8ab 100644
--- a/client/translations/amneziavpn_ur_PK.ts
+++ b/client/translations/amneziavpn_ur_PK.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ فائل نہیں کھول سکتا: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ فائل سے JSON ڈیٹا پارس کرنے میں ناکامی: %1
+
+
+
+ The JSON data is not an array in file: %1
+ فائل میں JSON ڈیٹا ایک ایرے نہیں ہے: %1
+
+
+
+ Import completed
+ واردات مکمل ہوگئی ہے
+
+
+
+ Export completed
+ ایکسپورٹ مکمل ہوگیا
+
+ApiAccountInfoModel
@@ -33,39 +81,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.
-
+ API config reloaded
-
+ Successfully changed the country of connection to %1
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -81,7 +221,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -99,6 +239,11 @@
%1 days
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -256,7 +401,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connectionموجودہ کنکشن ہونے کے دوران پروٹوکول کو تبدیل کرنے سے قاصر ہے
@@ -318,17 +463,17 @@ Can't be disabled for current server
غلط کنفیگریشن فائل
-
+ Scanned %1 of %2.سکین%1 کی%2.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -336,71 +481,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 کامیابی سےنصب.
-
+ %1 is already installed on the server. %1 پہلے ہی سرور پر انسٹال ہے.
-
+
Added containers that were already installed on the server
وہ کنٹینرز شامل کیے گئے جو پہلے سے سرور پر نصب تھے
-
+
Already installed containers were found on the server. All installed containers have been added to the application
سرور پر پہلے سے نصب کنٹینرز پائے گئے۔ تمام نصب کنٹینرز کو ایپلی کیشن میں شامل کر دیا گیا ہے
-
+ Settings updated successfullyترتیب کامیابی کے ساتھ اپ ڈیٹ ہو گئی
-
+ Server '%1' was rebootedسرور %1 دوبارہ چالو کیا گیا تھا
-
+ Server '%1' was removedسرور %1 ہٹا دیا گیا تھا
-
+ All containers from server '%1' have been removedسرور '%1' سے تمام کنٹینرز ہٹا دیے گئے ہیں
-
+ %1 has been removed from the server '%2'سرور '%2' سے %1 ہٹا دیا گیا ہے
-
+ Api config removed
-
+ %1 cached profile cleared%1 کیش کردہ پروفائل ختم کر دی گئی
-
+ Please login as the userبراہ کرم صارف کے طور پر لاگ ان کریں
-
+ Server added successfullyسرور کامیابی سے شامل کیا گیا
@@ -472,6 +617,24 @@ Already installed containers were found on the server. All installed containers
غیر محفوظ نیٹ ورک کا پتہ لگایا گیا ہے:
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+
+
+PageDeinstalling
@@ -501,27 +664,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+
+
+
+ Logging enabledلاگنگ فعال ہے
-
+ Split tunneling enabledسپلٹ ٹنلنگ فعال ہے
-
+ Split tunneling disabledسپلٹ ٹنلنگ غیر فعال ہے
-
+ VPN protocolوی پی این پروٹوکول
-
+ Serversسرور
@@ -543,42 +722,42 @@ Already installed containers were found on the server. All installed containers
ام ٹی یو
-
+ Server settings
-
+ Portپورٹ
-
+ Save
-
+ Save settings?ترتیبات محفوظ کریں?
-
+ Only the settings for this device will be changed
-
+ Continue
-
+ Cancel
-
+ Unable change settings while there is an active connectionجب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
@@ -600,12 +779,12 @@ Already installed containers were found on the server. All installed containers
ام ٹی یو
-
+ All users with whom you shared a connection with will no longer be able to connect to it.آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔
-
+ Saveمحفوظ کریں
@@ -650,42 +829,87 @@ Already installed containers were found on the server. All installed containers
-
+ H4 - Transport packet magic header
-
+ H3 - Underload packet magic header
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be uniqueH1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے
-
+ Save settings?ترتیبات محفوظ کریں?
-
+ Continueجاری رکھیں
-
+ Cancelمنسوخ کریں
-
+ Unable change settings while there is an active connectionجب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
@@ -1090,12 +1314,17 @@ Already installed containers were found on the server. All installed containers
کے طور پر ٹریفک کی طرح
-
+
+ Port
+ پورٹ
+
+
+ Saveمحفوظ
-
+ Unable change settings while there is an active connectionجب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
@@ -1544,7 +1773,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1837,7 +2066,7 @@ Already installed containers were found on the server. All installed containers
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1873,31 +2102,16 @@ Already installed containers were found on the server. All installed containers
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- Websiteویب سائٹ
-
-
- amnezia.org
-
- Support
@@ -1909,12 +2123,12 @@ Already installed containers were found on the server. All installed containers
-
+ Support tag
-
+ Copied
@@ -1950,37 +2164,37 @@ Already installed containers were found on the server. All installed containers
ایپ اسپلٹ ٹنلنگ
-
+ Modeموڈ
-
+ Remove ہٹائیں
-
+ Continueجاری رکھیں
-
+ Cancelمنسوخ
-
+ application nameایپ کا نام
-
+ Open executable fileقابل اجراء فائل کو کھولیں
-
+ Executable files (*.*)قابل اجراء فائل (*.*)
@@ -2180,7 +2394,7 @@ Already installed containers were found on the server. All installed containers
ایمنیزیا ڈی این ایس کو استعمال نہیں کیا گیا ہو یا اسے انسٹال نہیں کیا گیاہے
-
+ Allows you to use the VPN only for certain Appsآپ کو صرف مخصوص ایپلیکیشنز کے لئے وی پی این استعمال کرنے کی اجازت دیتا ہے
@@ -2210,23 +2424,18 @@ Already installed containers were found on the server. All installed containers
آپ کو یہ امکان فراہم کرتا ہے کہ آپ وی پی این کے ذریعہ کس سائٹ کو دسترس دینا چاہتے ہیں وہ منتخب کریں
-
+ App-based split tunnelingایپ کے بنیاد پر سپلٹ ٹنلنگ
-
+ KillSwitch
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
-
-
-
-
- Cannot change KillSwitch settings during active connection
+
+ Blocks network connections without VPN
@@ -2293,6 +2502,155 @@ Already installed containers were found on the server. All installed containers
ترتیبات محفوظ ہوگئیں
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+
+
+
+
+ Cancel
+
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+
+
+
+
+ Cancel
+
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ درآمد
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2422,11 +2780,6 @@ Already installed containers were found on the server. All installed containers
Do you want to clear server from Amnezia software?هل تريد حذف الخادم من Amnezia?کیا آپ سرور کو Amnezia سافٹ ویئر سے صاف کرنا چاہتے ہیں؟
-
-
-
-
-
@@ -2508,6 +2861,11 @@ Already installed containers were found on the server. All installed containers
Cannot reset API config during active connectionچالو کنکشن کے دوران API ترتیبات کو دوبارہ ترتیب نہیں دی جا سکتی
+
+
+ Switch to the new Amnezia Premium subscription
+
+ All installed AmneziaVPN services will still remain on the server.
@@ -2571,11 +2929,6 @@ Already installed containers were found on the server. All installed containers
Cannot remove active containerفعال کنٹینر کو ہٹانا ممکن نہیں
-
-
-
-
- Remove
@@ -2650,27 +3003,27 @@ Already installed containers were found on the server. All installed containers
اس فہرست سے پتوں کا وی پی این کے ذریعے دسترس حاصل نہیں کیا جانا چاہئے
-
+ Split tunnelingاسپلٹ ٹنلنگ
-
+ Modeموڈ
-
+ Remove ہٹائیں
-
+ Continueبراہ کرم جاری رکھیں
-
+ Cancelمنسوخ
@@ -2685,55 +3038,55 @@ Already installed containers were found on the server. All installed containers
فعال کنکشن کے دوران سپلٹ ٹنلنگ کی ترتیبات تبدیل نہیں کی جا سکتیں
-
+ website or IPویب سائٹ یا آئی پی
-
+ Import / Export Sitesسائٹس درآمد / برآمد
-
+ Importدرآمد
-
+ Save site listسائٹ کی فہرست کو محفوظ کریں
-
+ Save sitesسائٹس کو محفوظ کریں
-
-
-
+
+
+ Sites files (*.json)سائٹس فائلیں (*.json)
-
+ Import a list of sitesایک فہرست کو درآمد کریں
-
+ Replace site listسائٹ کی فہرست کو بدلیں
-
-
+
+ Open sites fileسائٹس فائل کو کھولیں
-
+ Add imported sites to existing onesآمدہ سائٹس کو موجودہ میں شامل کریں
@@ -2803,117 +3156,140 @@ Already installed containers were found on the server. All installed containers
کنکشن کی ترتیبات یا بیک اپ والی فائل
-
+ Connectionکنکشن
-
+ Settingsترتیبات
-
+ Enable logs
- Support tag
+ Export client logs
+
+
+
+
+ Save
- Copied
-
+ Logs files (*.log)
+ لاگ فائلیں (*.log)
+
+
+
+ Logs file saved
+ لاگ فائل محفوظ ہوگئی
- Insert the key, add a configuration file or scan the QR-code
-
-
-
-
- Insert key
+ Support tag
+ Copied
+
+
+
+
+ Insert the key, add a configuration file or scan the QR-code
+
+
+
+
+ Insert key
+
+
+
+ Insertداخل کریں
-
+ Continue
-
+ Other connection options
-
+ Site Amnezia
-
+ VPN by Amnezia
-
+ Connect to classic paid and free VPN services from Amnezia
-
+ Self-hosted VPN
-
+ Configure Amnezia VPN on your own server
-
+ Restore from backupبیک اپ سے بحال کریں
-
+
+
+
+
-
+ Open backup fileبیک اپ فائل کو کھولیں
-
+ Backup files (*.backup)بیک اپ فائلیں (*.backup)
-
+ File with connection settingsکنکشن کی ترتیبات والی فائل
-
+ Open config fileکنفیگ فائل کو کھولیں
-
+ QR codeQR کوڈ
-
+ I have nothingمیرے پاس کچھ نہیں ہے
@@ -3757,7 +4133,7 @@ Already installed containers were found on the server. All installed containers
-
+ SOCKS5 proxy server
@@ -3808,58 +4184,58 @@ Already installed containers were found on the server. All installed containers
صارف sudo گروپ کا رکن نہیں ہے
-
+ SSH request was deniedSSH درخواست مسترد کر دی گئی
-
+ SSH request was interruptedSSH درخواست میں خلل پڑ
-
+ SSH internal errorSSH اندرونی خرابی
-
+ Invalid private key or invalid passphrase enteredغلط نجی کلید یا غلط پاسفریز درج کیا گیا
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key typesمنتخب کردہ پرائیویٹ کلیدی فارمیٹ تعاون یافتہ نہیں ہے، openssh ED25519 کلیدی اقسام یا PEM کلیدی اقسام استعمال کریں
-
+ Timeout connecting to serverسرور سے منسلک ہونے کا ٹائم آؤٹ
-
+ VPN connection errorVPN کنکشن کی خرابی
-
-
+
+ Error when retrieving configuration from APIآپی سے کنفیگریشن بازیافت کرتے وقت خرابی
-
+ This config has already been added to the applicationیہ تشکیل پہلے ہی ایپلی کیشن میں شامل کی جا چکی ہے
-
+ ErrorCode: %1. ایرر کوڈ: %1.
-
+ OpenVPN config missingOpenVPN تشکیل غائب ہے
@@ -3899,138 +4275,158 @@ Already installed containers were found on the server. All installed containers
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SCP error: Generic failureایس سی پی کی خرابی: عام ناکامی
-
+ OpenVPN management server errorOpenVPN مینجمنٹ سرور کی خرابی
-
+ OpenVPN executable missingOpenVPN قابل عمل غائب ہے
-
+ Shadowsocks (ss-local) executable missingشیڈو ساکس (ss-local) قابل عمل غائب
-
+ Cloak (ck-client) executable missingCloak (ck-client) قابل عمل غائب
-
+ Amnezia helper service errorایمنیزیا مددگار سروس کی خرابی
-
+ OpenSSL failedOpenSSL ناکام ہوگیا
-
+ Can't connect: another VPN connection is activeمنسلک نہیں ہو سکتا: دوسرا VPN کنکشن فعال ہے
-
+ Can't setup OpenVPN TAP network adapterOpenVPN TAP نیٹ ورک اڈاپٹر سیٹ اپ نہیں کر سکتے
-
+ VPN pool error: no available addressesVPN پول کی خرابی: کوئی پتہ دستیاب نہیں ہے
-
+ The config does not contain any containers and credentials for connecting to the serverترتیب میں سرور سے منسلک ہونے کے لیے کوئی کنٹینرز اور اسناد نہیں ہیں
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at firstوی پی این پروٹوکول انسٹال نہیں ہے,براہ کرم پہلےوی پی این کنٹینر انسٹال کریں
-
+ In the response from the server, an empty config was received
-
+ SSL error occurred
-
+ Server response timeout on api request
-
+ Missing AGW public key
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
+ A migration error has occurred. Please contact our technical support
+
+
+
+
+ Please update the application to use this feature
+
+
+
+ QFile error: The file could not be openedQFile کی خرابی: فائل کو نہیں کھولا جا سکا
-
+ QFile error: An error occurred when reading from the fileکیو فائل کی خرابی: فائل سے پڑھتے وقت ایک خرابی پیش آگئی
-
+ QFile error: The file could not be accessedQFile کی خرابی: فائل تک رسائی نہیں ہو سکی
-
+ QFile error: An unspecified error occurredکیو فائل میں خرابی: ایک غیر متعینہ خرابی پیش آگئی
-
+ QFile error: A fatal error occurredکیو فائل میں خرابی: ایک مہلک خرابی پیش آگئی
-
+ QFile error: The operation was abortedکیو فائل کی خرابی: آپریشن روک دیا گیا تھا
-
+ Internal errorداخلی خامی
@@ -4041,7 +4437,7 @@ Already installed containers were found on the server. All installed containers
-
+ Website in Tor networkٹور نیٹ ورک میں ویب سائٹ
@@ -4086,69 +4482,100 @@ Already installed containers were found on the server. All installed containers
-
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
-
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
+
+
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
+
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
@@ -4219,7 +4646,7 @@ Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REAL
یہ REALITY کو سخت سینسرشپ والے ماحولوں میں انٹرنیٹ کی آزادی کو برقرار رکھنے کے لئے ایک مضبوط حل بناتا ہے۔
-
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4264,14 +4691,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
OpenVPN دستیاب سب سے زیادہ مقبول اور وقتی آزمائشی VPN پروٹوکولز میں سے ایک ہے۔ یہ انکرپشن اور کلیدی تبادلے کے لیے SSL/TLS کی طاقت کا فائدہ اٹھاتے ہوئے اپنا منفرد سیکیورٹی پروٹوکول استعمال کرتا ہے۔ مزید برآں، توثیق کے بہت سے طریقوں کے لیے OpenVPN کی حمایت اسے ورسٹائل اور قابل موافق بناتی ہے، جو آلات اور آپریٹنگ سسٹم کی ایک وسیع رینج کو پورا کرتی ہے۔ اوپن سورس کی نوعیت کی وجہ سے، اوپن وی پی این کو عالمی برادری کی طرف سے وسیع جانچ سے فائدہ ہوتا ہے، جو اس کی سلامتی کو مسلسل تقویت دیتا ہے۔ کارکردگی، سیکورٹی اور مطابقت کے مضبوط توازن کے ساتھ، OpenVPN رازداری کے بارے میں شعور رکھنے والے افراد اور کاروباروں کے لیے یکساں انتخاب ہے۔ * تمام پلیٹ فارمز پر AmneziaVPN میں دستیاب ہے * موبائل آلات پر بجلی کی عام کھپت * صارف کو مختلف آپریٹنگ سسٹمز اور ڈیوائسز کے ساتھ کام کرنے کی ضرورت کے مطابق لچکدار تخصیص * DPI تجزیہ سسٹمز کے ذریعہ پہچانا جاتا ہے اور اس وجہ سے بلاک کرنے کا خطرہ ہوتا ہے * TCP اور UDP دونوں نیٹ ورک پر کام کر سکتا ہے۔ پروٹوکول
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- شیڈو ساکس، SOCKS5 پروٹوکول سے متاثر، AEAD سائفر کا استعمال کرتے ہوئے کنکشن کی حفاظت کرتا ہے۔ اگرچہ شیڈو ساکس کو سمجھدار اور شناخت کرنے کے لیے چیلنج کرنے کے لیے ڈیزائن کیا گیا ہے، لیکن یہ معیاری HTTPS کنکشن سے مماثل نہیں ہے۔ تاہم، کچھ ٹریفک تجزیہ نظام اب بھی شیڈو ساکس کنکشن کا پتہ لگا سکتے ہیں۔ Amnezia میں محدود تعاون کی وجہ سے، AmneziaWG پروٹوکول استعمال کرنے کی سفارش کی جاتی ہے۔ * صرف ڈیسک ٹاپ پلیٹ فارمز پر AmneziaVPN میں دستیاب ہے * قابل ترتیب انکرپشن پروٹوکول * کچھ DPI سسٹمز کے ذریعے قابل شناخت * TCP نیٹ ورک پروٹوکول پر کام کرتا ہے.
+ شیڈو ساکس، SOCKS5 پروٹوکول سے متاثر، AEAD سائفر کا استعمال کرتے ہوئے کنکشن کی حفاظت کرتا ہے۔ اگرچہ شیڈو ساکس کو سمجھدار اور شناخت کرنے کے لیے چیلنج کرنے کے لیے ڈیزائن کیا گیا ہے، لیکن یہ معیاری HTTPS کنکشن سے مماثل نہیں ہے۔ تاہم، کچھ ٹریفک تجزیہ نظام اب بھی شیڈو ساکس کنکشن کا پتہ لگا سکتے ہیں۔ Amnezia میں محدود تعاون کی وجہ سے، AmneziaWG پروٹوکول استعمال کرنے کی سفارش کی جاتی ہے۔ * صرف ڈیسک ٹاپ پلیٹ فارمز پر AmneziaVPN میں دستیاب ہے * قابل ترتیب انکرپشن پروٹوکول * کچھ DPI سسٹمز کے ذریعے قابل شناخت * TCP نیٹ ورک پروٹوکول پر کام کرتا ہے.A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
@@ -4286,7 +4712,6 @@ This means that AmneziaWG keeps the fast performance of the original while addin
ایک معاصر اشارہ جاتا ہے مقبول وی پی این پروٹوکول کا امنیزیہ ڈبلیو جی۔ امنیزیہ ڈبلیو جی وائر گارڈ کے بنیادی ڈھانچے پر مبنی ہے، جس نے اس کی آسانی سے معماری اور ایکسیلنٹ کارکردگی کی خصوصیات کو برقرار رکھا۔ جبکہ وائر گارڈ کو اس کی کارآمدی کے لئے جانا جاتا ہے، اس میں اپنے ممتاز پیکٹ سائنیچرز کی وجہ سے آسانی سے پہچان میں مسائل پیش آتے تھے۔ امنیزیہ ڈبلیو جی اس مسئلے کا حل پیش کرتا ہے بہتر اوبفسکیشن میتھڈس کے ذریعے، جس سے اس کی ٹریفک عام انٹرنیٹ ٹریفک کے ساتھ مل جل کر رہتی ہے۔ اس سے مطلب یہ ہے کہ امنیزیہ ڈبلیو جی نے اصل وائر گارڈ کی تیزی کارکردگی کو برقرار رکھا جبکہ اس میں ایک اضافی پردہ شامل کیا، جو اسے ایک تیز اور پرانے طریقہ سے وی پی این کنکشن کی درخواست کرنے والوں کے لئے ایک عمدہ چوئس بناتا ہے۔ * تمام پلیٹ فارمز پر دستیاب ہے * کم بجلی کی استعمال * کم سیٹنگز کی تعداد * ڈی پی آئی تجزیہ سسٹمز سے پہچانا نہیں جاتا، بند کرنے کے لئے مزید مضبوط ہے * یو ڈی پی نیٹ ورک پروٹوکول پر کام کرتا ہے۔
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4296,10 +4721,10 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- IKEv2، IPSec انکرپشن پرت کے ساتھ جوڑا، ایک جدید اور مستحکم VPN پروٹوکول کے طور پر کھڑا ہے۔ اس کی امتیازی خصوصیات میں سے ایک نیٹ ورکس اور ڈیوائسز کے درمیان تیزی سے سوئچ کرنے کی صلاحیت ہے، جو اسے متحرک نیٹ ورک کے ماحول میں خاص طور پر موافق بناتی ہے۔ اگرچہ یہ سیکیورٹی، استحکام اور رفتار کا امتزاج پیش کرتا ہے، لیکن یہ نوٹ کرنا ضروری ہے کہ IKEv2 کا آسانی سے پتہ لگایا جا سکتا ہے اور یہ بلاک کرنے کے لیے حساس ہے۔ * صرف ونڈوز پر AmneziaVPN میں دستیاب ہے * کم بجلی کی کھپت، موبائل ڈیوائسز پر * کم سے کم کنفیگریشن * DPI تجزیہ سسٹمز کے ذریعے پہچانا جاتا ہے * UDP نیٹ ورک پروٹوکول، پورٹ 500 اور 4500 پر کام .کرتا ہے
+ IKEv2، IPSec انکرپشن پرت کے ساتھ جوڑا، ایک جدید اور مستحکم VPN پروٹوکول کے طور پر کھڑا ہے۔ اس کی امتیازی خصوصیات میں سے ایک نیٹ ورکس اور ڈیوائسز کے درمیان تیزی سے سوئچ کرنے کی صلاحیت ہے، جو اسے متحرک نیٹ ورک کے ماحول میں خاص طور پر موافق بناتی ہے۔ اگرچہ یہ سیکیورٹی، استحکام اور رفتار کا امتزاج پیش کرتا ہے، لیکن یہ نوٹ کرنا ضروری ہے کہ IKEv2 کا آسانی سے پتہ لگایا جا سکتا ہے اور یہ بلاک کرنے کے لیے حساس ہے۔ * صرف ونڈوز پر AmneziaVPN میں دستیاب ہے * کم بجلی کی کھپت، موبائل ڈیوائسز پر * کم سے کم کنفیگریشن * DPI تجزیہ سسٹمز کے ذریعے پہچانا جاتا ہے * UDP نیٹ ورک پروٹوکول، پورٹ 500 اور 4500 پر کام .کرتا ہے
-
+ DNS ServiceDNS سروس
@@ -4536,12 +4961,12 @@ While it offers a blend of security, stability, and speed, it's essential t
SettingsController
-
+ Backup file is corruptedبیک اپ فائل خراب ہو گئی ہے
-
+ All settings have been reset to default valuesتمام ترتیبات کو ڈیفالٹ اقدار پر دوبارہ ترتیب دیا گیا ہے
@@ -4673,7 +5098,7 @@ While it offers a blend of security, stability, and speed, it's essential t
VpnConnection
-
+ Mbpsایم بی پی ایس
@@ -4748,12 +5173,12 @@ While it offers a blend of security, stability, and speed, it's essential t
زیادہ تر وی پی این پروٹوکولز بلاک ہوتے ہیں۔ اگر دوسرے اختیارات کام نہیں کر رہے ہیں تو یہ تجویز کی جاتی ہے.
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index 2b0cf848..7a360b1b 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -9,6 +9,54 @@
+
+ AllowedDnsController
+
+
+ The address does not look like a valid IP address
+
+
+
+
+ New DNS server added: %1
+
+
+
+
+ DNS server already exists: %1
+
+
+
+
+ DNS server removed: %1
+
+
+
+
+ Can't open file: %1
+ 无法打开文件: %1
+
+
+
+ Failed to parse JSON data from file: %1
+ JSON解析失败,文件: %1
+
+
+
+ The JSON data is not an array in file: %1
+ 文件中的JSON数据不是一个数组,文件: %1
+
+
+
+ Import completed
+ 完成导入
+
+
+
+ Export completed
+ 完成导出
+
+ApiAccountInfoModel
@@ -33,39 +81,131 @@
-
+ Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and more. YouTube is not included in the free plan.
-
-
- amnezia_free_support_bot
-
-
-
-
- amnezia_premium_support_bot
-
- ApiConfigsController
-
+ %1 installed successfully.
-
+ API config reloaded
-
+ Successfully changed the country of connection to %1
+
+ ApiPremV1MigrationDrawer
+
+
+ Switch to the new Amnezia Premium subscription
+
+
+
+
+ We'll preserve all remaining days of your current subscription and give you an extra month as a thank you.
+
+
+
+
+ This new subscription type will be actively developed with more locations and features added regularly. Currently available:
+
+
+
+
+ <li>13 locations (with more coming soon)</li>
+
+
+
+
+ <li>Easier switching between countries in the app</li>
+
+
+
+
+ <li>Personal dashboard to manage your subscription</li>
+
+
+
+
+ Old keys will be deactivated after switching.
+
+
+
+
+ Email
+
+
+
+
+ mail@example.com
+
+
+
+
+ No old format subscriptions for a given email
+
+
+
+
+ Enter the email you used for your current subscription
+
+
+
+
+
+ Continue
+ 继续
+
+
+
+ Remind me later
+
+
+
+
+ Don't remind me again
+
+
+
+
+ No more reminders? You can always switch to the new format in the server settings
+
+
+
+
+ Cancel
+ 取消
+
+
+
+ ApiPremV1SubListDrawer
+
+
+ Choose Subscription
+
+
+
+
+ Order ID:
+
+
+
+
+ Purchase Date:
+
+
+ApiServicesModel
@@ -81,7 +221,7 @@
- AmneziaFree provides free unlimited access to a basic set of web sites, such as Facebook, Instagram, Twitter (X), Discord, Telegram, and others. YouTube is not included in the free plan.
+ Amnezia Free provides unlimited, free access to a basic set of websites and apps, including Facebook, Instagram, Twitter (X), Discord, Telegram, and more. YouTube is not included in the free plan.
@@ -99,6 +239,11 @@
%1 days
+
+
+
+
+ VPN will open only popular sites blocked in your region, such as Instagram, Facebook, Twitter and others. Other sites will be opened from your real IP address, <a href="%1/free" style="color: #FBB26A;">more details on the website.</a>
@@ -252,7 +397,7 @@
HomeContainersListView
-
+ Unable change protocol while there is an active connection已建立连接时无法更改服务器配置
@@ -311,17 +456,17 @@ Can't be disabled for current server
ImportController
-
+ Scanned %1 of %2.扫描 %1 of %2.
-
+ This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config.
-
+ <br>In the imported configuration, potentially dangerous lines were found:
@@ -337,60 +482,60 @@ Can't be disabled for current server
已安装在服务器上
-
+ %1 installed successfully. %1 安装成功。
-
+ %1 is already installed on the server. 服务器上已经安装 %1。
-
+
Added containers that were already installed on the server添加已安装在服务器上的容器
-
+
Already installed containers were found on the server. All installed containers have been added to the application
在服务上发现已经安装协议并添加至应用
-
+ Settings updated successfully配置更新成功
-
+ Server '%1' was rebooted服务器 '%1' 已重新启动
-
+ Server '%1' was removed已移除服务器 '%1'
-
+ All containers from server '%1' have been removed服务器 '%1' 的所有容器已移除
-
+ %1 has been removed from the server '%2'%1 已从服务器 '%2' 上移除
-
+ Api config removed
-
+ %1 cached profile cleared
@@ -411,12 +556,12 @@ Already installed containers were found on the server. All installed containers
协议已从
-
+ Please login as the user请以用户身份登录
-
+ Server added successfully增加服务器成功
@@ -486,6 +631,24 @@ Already installed containers were found on the server. All installed containers
发现不安全网络
+
+ OtpCodeDrawer
+
+
+ OTP code was sent to your email
+
+
+
+
+ OTP Code
+
+
+
+
+ Continue
+ 继续
+
+PageDeinstalling
@@ -515,27 +678,43 @@ Already installed containers were found on the server. All installed containers
PageHome
-
+
+ You've successfully switched to the new Amnezia Premium subscription!
+
+
+
+
+ Old keys will no longer work. Please use your new subscription key to connect.
+Thank you for staying with us!
+
+
+
+
+ Continue
+ 继续
+
+
+ Logging enabled
-
+ Split tunneling enabled用户分隔隧道已启用
-
+ Split tunneling disabled分隔隧道已禁用
-
+ VPN protocolVPN协议
-
+ Servers服务器
@@ -557,42 +736,42 @@ Already installed containers were found on the server. All installed containers
-
+ Server settings
-
+ Port端口
-
+ Save保存
-
+ Save settings?保存设置?
-
+ Only the settings for this device will be changed
-
+ Continue继续
-
+ Cancel取消
-
+ Unable change settings while there is an active connection
@@ -618,12 +797,12 @@ Already installed containers were found on the server. All installed containers
从服务上移除AmneziaWG?
-
+ All users with whom you shared a connection with will no longer be able to connect to it.与您共享连接的所有用户将无法再连接到该连接。
-
+ Save保存
@@ -668,42 +847,87 @@ Already installed containers were found on the server. All installed containers
-
+ H4 - Transport packet magic header
-
+ H3 - Underload packet magic header
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be unique
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
-
+ Save settings?保存设置?
-
+ Continue继续
-
+ Cancel取消
-
+ Unable change settings while there is an active connection
@@ -1144,12 +1368,17 @@ Already installed containers were found on the server. All installed containers
伪装流量为
-
+
+ Port
+ 端口
+
+
+ Save保存
-
+ Unable change settings while there is an active connection
@@ -1604,7 +1833,7 @@ And if you don't like the app, all the more support it - the donation will
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1897,7 +2126,7 @@ And if you don't like the app, all the more support it - the donation will
- This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.
+ This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device.
@@ -1933,31 +2162,16 @@ And if you don't like the app, all the more support it - the donation will
Email
-
-
- support@amnezia.org
-
- Email Billing & Orders
-
-
- help@vpnpay.io
-
- Website官网
-
-
- amnezia.org
-
- Support
@@ -1969,12 +2183,12 @@ And if you don't like the app, all the more support it - the donation will
-
+ Support tag
-
+ Copied
@@ -2002,37 +2216,37 @@ And if you don't like the app, all the more support it - the donation will
-
+ Mode规则
-
+ Remove
-
+ Continue继续
-
+ Cancel取消
-
+ application name
-
+ Open executable file
-
+ Executable files (*.*)
@@ -2244,23 +2458,18 @@ And if you don't like the app, all the more support it - the donation will
当未使用或未安装AmneziaDNS时
-
+ Allows you to use the VPN only for certain Apps只允许在某些应用程序中使用 VPN
-
+ KillSwitch
-
- Disables your internet if your encrypted VPN connection drops out for any reason.
-
-
-
-
- Cannot change KillSwitch settings during active connection
+
+ Blocks network connections without VPN
@@ -2297,7 +2506,7 @@ And if you don't like the app, all the more support it - the donation will
配置想要通过VPN访问网站
-
+ App-based split tunneling基于应用的隧道分离
@@ -2381,6 +2590,155 @@ And if you don't like the app, all the more support it - the donation will
配置已保存
+
+ PageSettingsKillSwitch
+
+
+ KillSwitch
+
+
+
+
+ Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops
+
+
+
+
+ KillSwitch settings cannot be changed during an active connection
+
+
+
+
+ Soft KillSwitch
+
+
+
+
+ Internet access is blocked if the VPN disconnects unexpectedly
+
+
+
+
+ Strict KillSwitch
+
+
+
+
+ Internet connection is blocked even when VPN is turned off manually or hasn't started
+
+
+
+
+ Just a little heads-up
+
+
+
+
+ If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch.
+
+
+
+
+ Continue
+ 继续
+
+
+
+ Cancel
+ 取消
+
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active.
+
+
+
+
+ PageSettingsKillSwitchExceptions
+
+
+ DNS Exceptions
+
+
+
+
+ DNS servers listed here will remain accessible when KillSwitch is active
+
+
+
+
+ Delete
+
+
+
+
+ Continue
+ 继续
+
+
+
+ Cancel
+ 取消
+
+
+
+ IPv4 address
+
+
+
+
+ Import / Export addresses
+
+
+
+
+ Import
+ 导入
+
+
+
+ Save address list
+
+
+
+
+ Save addresses
+
+
+
+
+
+
+ Address files (*.json)
+
+
+
+
+ Import address list
+
+
+
+
+ Replace address list
+
+
+
+
+
+ Open address file
+
+
+
+
+ Add imported addresses to existing ones
+
+
+PageSettingsLogging
@@ -2518,11 +2876,6 @@ And if you don't like the app, all the more support it - the donation will
Do you want to clear server from Amnezia software?您要清除服务器上的Amnezia软件吗?
-
-
-
-
-
@@ -2604,6 +2957,11 @@ And if you don't like the app, all the more support it - the donation will
Cannot reset API config during active connection
+
+
+ Switch to the new Amnezia Premium subscription
+
+ Remove server?移除本地服务器信息?
@@ -2669,11 +3027,6 @@ And if you don't like the app, all the more support it - the donation will
Clear %1 profile?
-
-
-
-
- connection settings
@@ -2786,27 +3139,27 @@ And if you don't like the app, all the more support it - the donation will
不使用VPN访问
-
+ Split tunneling隧道分离
-
+ Mode规则
-
+ Remove 移除
-
+ Continue继续
-
+ Cancel取消
@@ -2829,55 +3182,55 @@ And if you don't like the app, all the more support it - the donation will
只有这里列出的网站将通过VPN访问
-
+ website or IP网站或IP
-
+ Import / Export Sites导入/导出网站
-
+ Import导入
-
+ Save site list保存网址
-
+ Save sites保存网址
-
-
-
+
+
+ Sites files (*.json)
-
+ Import a list of sites导入网址列表
-
+ Replace site list替换网址列表
-
-
+
+ Open sites file打开网址文件
-
+ Add imported sites to existing ones将导入的网址添加到现有网址中
@@ -2954,117 +3307,140 @@ It's okay as long as it's from someone you trust.
包含连接配置或备份的文件
-
+ Connection连接
-
+ Settings设置
-
+ Enable logs
+ Export client logs
+
+
+
+
+ Save
+ 保存
+
+
+
+ Logs files (*.log)
+
+
+
+
+ Logs file saved
+ 日志文件已保存
+
+
+ Support tag
-
+ Copied
-
+ Insert the key, add a configuration file or scan the QR-code
-
+ Insert key
-
+ Insert插入
-
+ Continue继续
-
+ Other connection options
-
+ Site Amnezia
-
+ VPN by Amnezia
-
+ Connect to classic paid and free VPN services from Amnezia
-
+ Self-hosted VPN
-
+ Configure Amnezia VPN on your own server
-
+ Restore from backup从备份还原
-
+
+
+
+
-
+ Open backup file打开备份文件
-
+ Backup files (*.backup)
-
+ File with connection settings包含连接配置的文件
-
+ Open config file打开配置文件
-
+ QR code二维码
-
+ I have nothing我没有
@@ -3990,7 +4366,7 @@ and will not be shared or disclosed to the Amnezia or any third parties
-
+ SOCKS5 proxy server
@@ -4076,47 +4452,57 @@ and will not be shared or disclosed to the Amnezia or any third parties
-
+
+ Docker error: runc doesn't work on cgroups v2
+
+
+
+
+ Server error: cgroup mountpoint does not exist
+
+
+
+ SSH request was deniedSSH请求被拒绝
-
+ SSH request was interruptedSSH请求中断
-
+ SSH internal errorSSH内部错误
-
+ Invalid private key or invalid passphrase entered输入的私钥或密码无效
-
+ The selected private key format is not supported, use openssh ED25519 key types or PEM key types不支持所选私钥格式,请使用 openssh ED25519 密钥类型或 PEM 密钥类型
-
+ Timeout connecting to server连接服务器超时
-
+ SCP error: Generic failure
-
+ Unable to open config file
-
+ VPN Protocols is not installed.
Please install VPN container at first请先安装VPN协议
@@ -4174,88 +4560,98 @@ and will not be shared or disclosed to the Amnezia or any third parties
Sftp 错误: 远程驱动器中没有媒介
-
+ VPN connection errorVPN 连接错误
-
-
+
+ Error when retrieving configuration from API从 API 检索配置时出错
-
+ This config has already been added to the application该配置已添加到应用程序中
-
+ In the response from the server, an empty config was received
-
+ SSL error occurred
-
+ Server response timeout on api request
-
+ Missing AGW public key
-
+ Failed to decrypt response payload
-
+ Missing list of available services
-
+ The limit of allowed configurations per subscription has been exceeded
- QFile error: The file could not be opened
+ A migration error has occurred. Please contact our technical support
- QFile error: An error occurred when reading from the file
-
-
-
-
- QFile error: The file could not be accessed
-
-
-
-
- QFile error: An unspecified error occurred
+ Please update the application to use this feature
- QFile error: A fatal error occurred
+ QFile error: The file could not be opened
+ QFile error: An error occurred when reading from the file
+
+
+
+
+ QFile error: The file could not be accessed
+
+
+
+
+ QFile error: An unspecified error occurred
+
+
+
+
+ QFile error: A fatal error occurred
+
+
+
+ QFile error: The operation was aborted
-
+ ErrorCode: %1. 错误代码: %1.
@@ -4264,57 +4660,57 @@ and will not be shared or disclosed to the Amnezia or any third parties
配置保存到磁盘失败
-
+ OpenVPN config missingOpenVPN配置丢失
-
+ OpenVPN management server errorOpenVPN 管理服务器错误
-
+ OpenVPN executable missingOpenVPN 可执行文件丢失
-
+ Shadowsocks (ss-local) executable missingShadowsocks (ss-local) 执行文件丢失
-
+ Cloak (ck-client) executable missingCloak (ck-client) 执行文件丢失
-
+ Amnezia helper service errorAmnezia 服务连接失败
-
+ OpenSSL failedOpenSSL错误
-
+ Can't connect: another VPN connection is active无法连接:另一个VPN连接处于活跃状态
-
+ Can't setup OpenVPN TAP network adapter无法设置 OpenVPN TAP 网络适配器
-
+ VPN pool error: no available addressesVPN 池错误:没有可用地址
-
+ The config does not contain any containers and credentials for connecting to the server配置不包含任何用于连接服务器的容器和凭据
@@ -4323,7 +4719,7 @@ and will not be shared or disclosed to the Amnezia or any third parties
该配置不包含任何用于连接到服务器的容器和凭据。
-
+ Internal error
@@ -4334,7 +4730,7 @@ and will not be shared or disclosed to the Amnezia or any third parties
-
+ Website in Tor network在 Tor 网络中架设网站
@@ -4378,72 +4774,6 @@ and will not be shared or disclosed to the Amnezia or any third parties
XRay with REALITY masks VPN traffic as web traffic and protects against active probing. It is highly resistant to detection and offers high speed.
-
-
- OpenVPN stands as one of the most popular and time-tested VPN protocols available.
-It employs its unique security protocol, leveraging the strength of SSL/TLS for encryption and key exchange. Furthermore, OpenVPN's support for a multitude of authentication methods makes it versatile and adaptable, catering to a wide range of devices and operating systems. Due to its open-source nature, OpenVPN benefits from extensive scrutiny by the global community, which continually reinforces its security. With a strong balance of performance, security, and compatibility, OpenVPN remains a top choice for privacy-conscious individuals and businesses alike.
-
-* Available in the AmneziaVPN across all platforms
-* Normal power consumption on mobile devices
-* Flexible customisation to suit user needs to work with different operating systems and devices
-* Recognised by DPI systems and therefore susceptible to blocking
-* Can operate over both TCP and UDP network protocols.
-
-
-
-
- This is a combination of the OpenVPN protocol and the Cloak plugin designed specifically for protecting against detection.
-
-OpenVPN provides a secure VPN connection by encrypting all internet traffic between the client and the server.
-
-Cloak protects OpenVPN from detection.
-
-Cloak can modify packet metadata so that it completely masks VPN traffic as normal web traffic, and also protects the VPN from detection by Active Probing. This makes it very resistant to being detected
-
-Immediately after receiving the first data packet, Cloak authenticates the incoming connection. If authentication fails, the plugin masks the server as a fake website and your VPN becomes invisible to analysis systems.
-
-* Available in the AmneziaVPN across all platforms
-* High power consumption on mobile devices
-* Flexible settings
-* Not recognised by detection systems
-* Works over TCP network protocol, 443 port.
-
-
-
-
-
- A relatively new popular VPN protocol with a simplified architecture.
-WireGuard provides stable VPN connection and high performance on all devices. It uses hard-coded encryption settings. WireGuard compared to OpenVPN has lower latency and better data transfer throughput.
-WireGuard is very susceptible to detection and blocking due to its distinct packet signatures. Unlike some other VPN protocols that employ obfuscation techniques, the consistent signature patterns of WireGuard packets can be more easily identified and thus blocked by advanced Deep Packet Inspection (DPI) systems and other network monitoring tools.
-
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Easily recognised by DPI analysis systems, susceptible to blocking
-* Works over UDP network protocol.
-
-
-
-
- A modern iteration of the popular VPN protocol, AmneziaWG builds upon the foundation set by WireGuard, retaining its simplified architecture and high-performance capabilities across devices.
-While WireGuard is known for its efficiency, it had issues with being easily detected due to its distinct packet signatures. AmneziaWG solves this problem by using better obfuscation methods, making its traffic blend in with regular internet traffic.
-This means that AmneziaWG keeps the fast performance of the original while adding an extra layer of stealth, making it a great choice for those wanting a fast and discreet VPN connection.
-
-* Available in the AmneziaVPN across all platforms
-* Low power consumption
-* Minimum number of settings
-* Not recognised by traffic analysis systems
-* Works over UDP network protocol.
-
-
-
-
- The REALITY protocol, a pioneering development by the creators of XRay, is designed to provide the highest level of protection against detection through its innovative approach to security and privacy.
-It uniquely identifies attackers during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting attackers to genuine websites, thus presenting an authentic TLS certificate and data.
-This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations.
-Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security. This makes REALITY a robust solution for maintaining internet freedom.
-
- Shadowsocks - masks VPN traffic, making it similar to normal web traffic, but it may be recognized by analysis systems in some highly censored regions.Shadowsocks - 掩盖VPN流量,使其类似于正常的网络流量,但在一些高度审查的地区可能会被分析系统识别.
@@ -4454,7 +4784,104 @@ Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REAL
-
+
+
+
+
+
+
+ OpenVPN is one of the most popular and reliable VPN protocols. It uses SSL/TLS encryption, supports a wide variety of devices and operating systems, and is continuously improved by the community due to its open-source nature. It provides a good balance between speed and security but is easily recognized by DPI systems, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Normal battery consumption on mobile devices
+* Flexible customization for various devices and OS
+* Operates over both TCP and UDP protocols
+
+
+
+
+ Shadowsocks is based on the SOCKS5 protocol and encrypts connections using AEAD cipher. Although designed to be discreet, it doesn't mimic a standard HTTPS connection and can be detected by some DPI systems. Due to limited support in Amnezia, we recommend using the AmneziaWG protocol.
+
+Features:
+* Available in AmneziaVPN only on desktop platforms
+* Customizable encryption protocol
+* Detectable by some DPI systems
+* Operates over TCP protocol
+
+
+
+
+
+ This combination includes the OpenVPN protocol and the Cloak plugin, specifically designed to protect against blocking.
+
+OpenVPN securely encrypts all internet traffic between your device and the server.
+
+The Cloak plugin further protects the connection from DPI detection. It modifies traffic metadata to disguise VPN traffic as regular web traffic and prevents detection through active probing. If an incoming connection fails authentication, Cloak serves a fake website, making your VPN invisible to traffic analysis systems.
+
+In regions with heavy internet censorship, we strongly recommend using OpenVPN with Cloak from your first connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* High power consumption on mobile devices
+* Flexible configuration options
+* Undetectable by DPI systems
+* Operates over TCP protocol on port 443
+
+
+
+
+ WireGuard is a modern, streamlined VPN protocol offering stable connectivity and excellent performance across all devices. It uses fixed encryption settings, delivering lower latency and higher data transfer speeds compared to OpenVPN. However, WireGuard is easily identifiable by DPI systems due to its distinctive packet signatures, making it susceptible to blocking.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low power consumption on mobile devices
+* Minimal configuration required
+* Easily detected by DPI systems (susceptible to blocking)
+* Operates over UDP protocol
+
+
+
+
+ AmneziaWG is a modern VPN protocol based on WireGuard, combining simplified architecture with high performance across all devices. It addresses WireGuard's main vulnerability (easy detection by DPI systems) through advanced obfuscation techniques, making VPN traffic indistinguishable from regular internet traffic.
+
+AmneziaWG is an excellent choice for those seeking a fast, stealthy VPN connection.
+
+Features:
+* Available on all AmneziaVPN platforms
+* Low battery consumption on mobile devices
+* Minimal settings required
+* Undetectable by traffic analysis systems (DPI)
+* Operates over UDP protocol
+
+
+
+
+ REALITY is an innovative protocol developed by the creators of XRay, designed specifically to combat high levels of internet censorship. REALITY identifies censorship systems during the TLS handshake, redirecting suspicious traffic seamlessly to legitimate websites like google.com while providing genuine TLS certificates. This allows VPN traffic to blend indistinguishably with regular web traffic without special configuration.
+Unlike older protocols such as VMess, VLESS, and XTLS-Vision, REALITY incorporates an advanced built-in "friend-or-foe" detection mechanism, effectively protecting against DPI and other traffic analysis methods.
+
+Features:
+* Resistant to active probing and DPI detection
+* No special configuration required to disguise traffic
+* Highly effective in heavily censored regions
+* Minimal battery consumption on devices
+* Operates over TCP protocol
+
+
+
+
+ IKEv2, combined with IPSec encryption, is a modern and reliable VPN protocol. It reconnects quickly when switching networks or devices, making it ideal for dynamic network environments. While it provides good security and speed, it's easily recognized by DPI systems and susceptible to blocking.
+
+Features:
+* Available in AmneziaVPN only on Windows
+* Low battery consumption on mobile devices
+* Minimal configuration required
+* Detectable by DPI analysis systems(easily blocked)
+* Operates over UDP protocol(ports 500 and 4500)
+
+
+
+ After installation, Amnezia will create a
file storage on your server. You will be able to access it using
@@ -4554,14 +4981,13 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
* 可以通过 TCP 和 UDP 网络协议运行.
- Shadowsocks, inspired by the SOCKS5 protocol, safeguards the connection using the AEAD cipher. Although Shadowsocks is designed to be discreet and challenging to identify, it isn't identical to a standard HTTPS connection.However, certain traffic analysis systems might still detect a Shadowsocks connection. Due to limited support in Amnezia, it's recommended to use AmneziaWG protocol.
* Available in the AmneziaVPN only on desktop platforms
* Configurable encryption protocol
* Detectable by some DPI systems
* Works over TCP network protocol.
- Shadowsocks 受到 SOCKS5 协议的启发,使用 AEAD 密码保护连接。尽管 Shadowsocks 设计得谨慎且难以识别,但它与标准 HTTPS 连接并不相同。但是,某些流量分析系统可能仍会检测到 Shadowsocks 连接。由于Amnezia支持有限,建议使用AmneziaWG协议。
+ Shadowsocks 受到 SOCKS5 协议的启发,使用 AEAD 密码保护连接。尽管 Shadowsocks 设计得谨慎且难以识别,但它与标准 HTTPS 连接并不相同。但是,某些流量分析系统可能仍会检测到 Shadowsocks 连接。由于Amnezia支持有限,建议使用AmneziaWG协议。
* 仅在桌面平台上的 AmneziaVPN 中可用
* 可配置的加密协议
@@ -4646,7 +5072,6 @@ This means that AmneziaWG keeps the fast performance of the original while addin
* 通过 UDP 网络协议工作。
- IKEv2, paired with the IPSec encryption layer, stands as a modern and stable VPN protocol.
One of its distinguishing features is its ability to swiftly switch between networks and devices, making it particularly adaptive in dynamic network environments.
While it offers a blend of security, stability, and speed, it's essential to note that IKEv2 can be easily detected and is susceptible to blocking.
@@ -4656,7 +5081,7 @@ While it offers a blend of security, stability, and speed, it's essential t
* Minimal configuration
* Recognised by DPI analysis systems
* Works over UDP network protocol, ports 500 and 4500.
- IKEv2 与 IPSec 加密层配合使用,是一种现代且稳定的 VPN 协议。
+ IKEv2 与 IPSec 加密层配合使用,是一种现代且稳定的 VPN 协议。
其显着特征之一是能够在网络和设备之间快速切换,使其特别适应动态网络环境。
虽然 IKEv2 兼具安全性、稳定性和速度,但必须注意的是,IKEv2 很容易被检测到,并且容易受到阻止。
@@ -4687,7 +5112,7 @@ While it offers a blend of security, stability, and speed, it's essential t
IPsec 容器
-
+ DNS ServiceDNS 服务
@@ -4928,12 +5353,12 @@ While it offers a blend of security, stability, and speed, it's essential t
SettingsController
-
+ Backup file is corrupted备份文件已损坏
-
+ All settings have been reset to default values所配置恢复为默认值
@@ -5073,7 +5498,7 @@ While it offers a blend of security, stability, and speed, it's essential t
VpnConnection
-
+ Mbps
@@ -5164,12 +5589,12 @@ While it offers a blend of security, stability, and speed, it's essential t
一些国外网站被屏蔽,但VPN提供商未被屏蔽
-
+ Automatic
-
+ AmneziaWG protocol will be installed. It provides high connection speed and ensures stable operation even in the most challenging network conditions.
diff --git a/client/ui/controllers/api/apiConfigsController.cpp b/client/ui/controllers/api/apiConfigsController.cpp
index 1b70315a..a89ba5c1 100644
--- a/client/ui/controllers/api/apiConfigsController.cpp
+++ b/client/ui/controllers/api/apiConfigsController.cpp
@@ -483,6 +483,15 @@ void ApiConfigsController::fillServerConfig(const QString &protocol, const ApiPa
containerConfig[config_key::responsePacketMagicHeader] = protocolConfig.value(config_key::responsePacketMagicHeader);
containerConfig[config_key::underloadPacketMagicHeader] = protocolConfig.value(config_key::underloadPacketMagicHeader);
containerConfig[config_key::transportPacketMagicHeader] = protocolConfig.value(config_key::transportPacketMagicHeader);
+ containerConfig[config_key::specialJunk1] = protocolConfig.value(config_key::specialJunk1);
+ containerConfig[config_key::specialJunk2] = protocolConfig.value(config_key::specialJunk2);
+ containerConfig[config_key::specialJunk3] = protocolConfig.value(config_key::specialJunk3);
+ containerConfig[config_key::specialJunk4] = protocolConfig.value(config_key::specialJunk4);
+ containerConfig[config_key::specialJunk5] = protocolConfig.value(config_key::specialJunk5);
+ containerConfig[config_key::controlledJunk1] = protocolConfig.value(config_key::controlledJunk1);
+ containerConfig[config_key::controlledJunk2] = protocolConfig.value(config_key::controlledJunk2);
+ containerConfig[config_key::controlledJunk3] = protocolConfig.value(config_key::controlledJunk3);
+ containerConfig[config_key::specialHandshakeTimeout] = protocolConfig.value(config_key::specialHandshakeTimeout);
container[containerName] = containerConfig;
containers.replace(0, container);
newServerConfig[config_key::containers] = containers;
diff --git a/client/ui/controllers/importController.cpp b/client/ui/controllers/importController.cpp
index fdc06120..c414f3df 100644
--- a/client/ui/controllers/importController.cpp
+++ b/client/ui/controllers/importController.cpp
@@ -285,6 +285,15 @@ void ImportController::processNativeWireGuardConfig()
clientProtocolConfig[config_key::responsePacketMagicHeader] = "2";
clientProtocolConfig[config_key::underloadPacketMagicHeader] = "3";
clientProtocolConfig[config_key::transportPacketMagicHeader] = "4";
+ clientProtocolConfig[config_key::specialJunk1] = "";
+ clientProtocolConfig[config_key::specialJunk2] = "";
+ clientProtocolConfig[config_key::specialJunk3] = "";
+ clientProtocolConfig[config_key::specialJunk4] = "";
+ clientProtocolConfig[config_key::specialJunk5] = "";
+ clientProtocolConfig[config_key::controlledJunk1] = "";
+ clientProtocolConfig[config_key::controlledJunk2] = "";
+ clientProtocolConfig[config_key::controlledJunk3] = "";
+ clientProtocolConfig[config_key::specialHandshakeTimeout] = "0";
clientProtocolConfig[config_key::isObfuscationEnabled] = true;
@@ -443,7 +452,16 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
&& !configMap.value(config_key::responsePacketJunkSize).isEmpty() && !configMap.value(config_key::initPacketMagicHeader).isEmpty()
&& !configMap.value(config_key::responsePacketMagicHeader).isEmpty()
&& !configMap.value(config_key::underloadPacketMagicHeader).isEmpty()
- && !configMap.value(config_key::transportPacketMagicHeader).isEmpty()) {
+ && !configMap.value(config_key::transportPacketMagicHeader).isEmpty()
+ && !configMap.value(config_key::specialJunk1).isEmpty()
+ && !configMap.value(config_key::specialJunk2).isEmpty()
+ && !configMap.value(config_key::specialJunk3).isEmpty()
+ && !configMap.value(config_key::specialJunk4).isEmpty()
+ && !configMap.value(config_key::specialJunk5).isEmpty()
+ && !configMap.value(config_key::controlledJunk1).isEmpty()
+ && !configMap.value(config_key::controlledJunk2).isEmpty()
+ && !configMap.value(config_key::controlledJunk3).isEmpty()
+ && !configMap.value(config_key::specialHandshakeTimeout).isEmpty()) {
lastConfig[config_key::junkPacketCount] = configMap.value(config_key::junkPacketCount);
lastConfig[config_key::junkPacketMinSize] = configMap.value(config_key::junkPacketMinSize);
lastConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize);
@@ -453,6 +471,15 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader);
lastConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader);
lastConfig[config_key::transportPacketMagicHeader] = configMap.value(config_key::transportPacketMagicHeader);
+ lastConfig[config_key::specialJunk1] = configMap.value(config_key::specialJunk1);
+ lastConfig[config_key::specialJunk2] = configMap.value(config_key::specialJunk2);
+ lastConfig[config_key::specialJunk3] = configMap.value(config_key::specialJunk3);
+ lastConfig[config_key::specialJunk4] = configMap.value(config_key::specialJunk4);
+ lastConfig[config_key::specialJunk5] = configMap.value(config_key::specialJunk5);
+ lastConfig[config_key::controlledJunk1] = configMap.value(config_key::controlledJunk1);
+ lastConfig[config_key::controlledJunk2] = configMap.value(config_key::controlledJunk2);
+ lastConfig[config_key::controlledJunk3] = configMap.value(config_key::controlledJunk3);
+ lastConfig[config_key::specialHandshakeTimeout] = configMap.value(config_key::specialHandshakeTimeout);
protocolName = "awg";
m_configType = ConfigTypes::Awg;
}
diff --git a/client/ui/controllers/installController.cpp b/client/ui/controllers/installController.cpp
index eab8979a..775390be 100755
--- a/client/ui/controllers/installController.cpp
+++ b/client/ui/controllers/installController.cpp
@@ -99,6 +99,16 @@ void InstallController::install(DockerContainer container, int port, TransportPr
QString underloadPacketMagicHeader = headersValueList.at(2);
QString transportPacketMagicHeader = headersValueList.at(3);
+ const QString specialJunk1 = headersValueList.at(4);
+ const QString specialJunk2 = headersValueList.at(5);
+ const QString specialJunk3 = headersValueList.at(6);
+ const QString specialJunk4 = headersValueList.at(7);
+ const QString specialJunk5 = headersValueList.at(8);
+ const QString controlledJunk1 = headersValueList.at(9);
+ const QString controlledJunk2 = headersValueList.at(10);
+ const QString controlledJunk3 = headersValueList.at(11);
+ const QString specialHandshakeTimeout = headersValueList.at(12);
+
containerConfig[config_key::junkPacketCount] = junkPacketCount;
containerConfig[config_key::junkPacketMinSize] = junkPacketMinSize;
containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
@@ -108,6 +118,15 @@ void InstallController::install(DockerContainer container, int port, TransportPr
containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader;
containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader;
containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader;
+ containerConfig[config_key::specialJunk1] = specialJunk1;
+ containerConfig[config_key::specialJunk2] = specialJunk2;
+ containerConfig[config_key::specialJunk3] = specialJunk3;
+ containerConfig[config_key::specialJunk4] = specialJunk4;
+ containerConfig[config_key::specialJunk5] = specialJunk5;
+ containerConfig[config_key::controlledJunk1] = controlledJunk1;
+ containerConfig[config_key::controlledJunk2] = controlledJunk2;
+ containerConfig[config_key::controlledJunk3] = controlledJunk3;
+ containerConfig[config_key::specialHandshakeTimeout] = specialHandshakeTimeout;
} else if (container == DockerContainer::Sftp) {
containerConfig.insert(config_key::userName, protocols::sftp::defaultUserName);
containerConfig.insert(config_key::password, Utils::getRandomString(16));
@@ -400,6 +419,16 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia
serverConfigMap.value(config_key::underloadPacketMagicHeader);
containerConfig[config_key::transportPacketMagicHeader] =
serverConfigMap.value(config_key::transportPacketMagicHeader);
+ containerConfig[config_key::specialJunk1] = serverConfigMap.value(config_key::specialJunk1);
+ containerConfig[config_key::specialJunk2] = serverConfigMap.value(config_key::specialJunk2);
+ containerConfig[config_key::specialJunk3] = serverConfigMap.value(config_key::specialJunk3);
+ containerConfig[config_key::specialJunk4] = serverConfigMap.value(config_key::specialJunk4);
+ containerConfig[config_key::specialJunk5] = serverConfigMap.value(config_key::specialJunk5);
+ containerConfig[config_key::controlledJunk1] = serverConfigMap.value(config_key::controlledJunk1);
+ containerConfig[config_key::controlledJunk2] = serverConfigMap.value(config_key::controlledJunk2);
+ containerConfig[config_key::controlledJunk3] = serverConfigMap.value(config_key::controlledJunk3);
+ containerConfig[config_key::specialHandshakeTimeout] = serverConfigMap.value(config_key::specialHandshakeTimeout);
+
} else if (protocol == Proto::WireGuard) {
QString serverConfig = serverController->getTextFileFromContainer(container, credentials,
diff --git a/client/ui/models/protocols/awgConfigModel.cpp b/client/ui/models/protocols/awgConfigModel.cpp
index 860c8395..b43767a8 100644
--- a/client/ui/models/protocols/awgConfigModel.cpp
+++ b/client/ui/models/protocols/awgConfigModel.cpp
@@ -25,18 +25,34 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in
case Roles::PortRole: m_serverProtocolConfig.insert(config_key::port, value.toString()); break;
case Roles::ClientMtuRole: m_clientProtocolConfig.insert(config_key::mtu, value.toString()); break;
- case Roles::ClientJunkPacketCountRole: m_clientProtocolConfig.insert(config_key::junkPacketCount, value.toString()); break;
- case Roles::ClientJunkPacketMinSizeRole: m_clientProtocolConfig.insert(config_key::junkPacketMinSize, value.toString()); break;
- case Roles::ClientJunkPacketMaxSizeRole: m_clientProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString()); break;
+ case Roles::ClientJunkPacketCountRole:
+ m_clientProtocolConfig.insert(config_key::junkPacketCount, value.toString());
+ break;
+ case Roles::ClientJunkPacketMinSizeRole:
+ m_clientProtocolConfig.insert(config_key::junkPacketMinSize, value.toString());
+ break;
+ case Roles::ClientJunkPacketMaxSizeRole:
+ m_clientProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString());
+ break;
- case Roles::ServerJunkPacketCountRole: m_serverProtocolConfig.insert(config_key::junkPacketCount, value.toString()); break;
- case Roles::ServerJunkPacketMinSizeRole: m_serverProtocolConfig.insert(config_key::junkPacketMinSize, value.toString()); break;
- case Roles::ServerJunkPacketMaxSizeRole: m_serverProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString()); break;
- case Roles::ServerInitPacketJunkSizeRole: m_serverProtocolConfig.insert(config_key::initPacketJunkSize, value.toString()); break;
+ case Roles::ServerJunkPacketCountRole:
+ m_serverProtocolConfig.insert(config_key::junkPacketCount, value.toString());
+ break;
+ case Roles::ServerJunkPacketMinSizeRole:
+ m_serverProtocolConfig.insert(config_key::junkPacketMinSize, value.toString());
+ break;
+ case Roles::ServerJunkPacketMaxSizeRole:
+ m_serverProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString());
+ break;
+ case Roles::ServerInitPacketJunkSizeRole:
+ m_serverProtocolConfig.insert(config_key::initPacketJunkSize, value.toString());
+ break;
case Roles::ServerResponsePacketJunkSizeRole:
m_serverProtocolConfig.insert(config_key::responsePacketJunkSize, value.toString());
break;
- case Roles::ServerInitPacketMagicHeaderRole: m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString()); break;
+ case Roles::ServerInitPacketMagicHeaderRole:
+ m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString());
+ break;
case Roles::ServerResponsePacketMagicHeaderRole:
m_serverProtocolConfig.insert(config_key::responsePacketMagicHeader, value.toString());
break;
@@ -46,6 +62,33 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in
case Roles::ServerTransportPacketMagicHeaderRole:
m_serverProtocolConfig.insert(config_key::transportPacketMagicHeader, value.toString());
break;
+ case Roles::ServerSpecialJunk1Role:
+ m_serverProtocolConfig.insert(config_key::specialJunk1, value.toString());
+ break;
+ case Roles::ServerSpecialJunk2Role:
+ m_serverProtocolConfig.insert(config_key::specialJunk2, value.toString());
+ break;
+ case Roles::ServerSpecialJunk3Role:
+ m_serverProtocolConfig.insert(config_key::specialJunk3, value.toString());
+ break;
+ case Roles::ServerSpecialJunk4Role:
+ m_serverProtocolConfig.insert(config_key::specialJunk4, value.toString());
+ break;
+ case Roles::ServerSpecialJunk5Role:
+ m_serverProtocolConfig.insert(config_key::specialJunk5, value.toString());
+ break;
+ case Roles::ServerControlledJunk1Role:
+ m_serverProtocolConfig.insert(config_key::controlledJunk1, value.toString());
+ break;
+ case Roles::ServerControlledJunk2Role:
+ m_serverProtocolConfig.insert(config_key::controlledJunk2, value.toString());
+ break;
+ case Roles::ServerControlledJunk3Role:
+ m_serverProtocolConfig.insert(config_key::controlledJunk3, value.toString());
+ break;
+ case Roles::ServerSpecialHandshakeTimeoutRole:
+ m_serverProtocolConfig.insert(config_key::specialHandshakeTimeout, value.toString());
+ break;
}
emit dataChanged(index, index, QList { role });
@@ -71,11 +114,25 @@ QVariant AwgConfigModel::data(const QModelIndex &index, int role) const
case Roles::ServerJunkPacketMinSizeRole: return m_serverProtocolConfig.value(config_key::junkPacketMinSize);
case Roles::ServerJunkPacketMaxSizeRole: return m_serverProtocolConfig.value(config_key::junkPacketMaxSize);
case Roles::ServerInitPacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::initPacketJunkSize);
- case Roles::ServerResponsePacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::responsePacketJunkSize);
+ case Roles::ServerResponsePacketJunkSizeRole:
+ return m_serverProtocolConfig.value(config_key::responsePacketJunkSize);
case Roles::ServerInitPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::initPacketMagicHeader);
- case Roles::ServerResponsePacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader);
- case Roles::ServerUnderloadPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::underloadPacketMagicHeader);
- case Roles::ServerTransportPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::transportPacketMagicHeader);
+ case Roles::ServerResponsePacketMagicHeaderRole:
+ return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader);
+ case Roles::ServerUnderloadPacketMagicHeaderRole:
+ return m_serverProtocolConfig.value(config_key::underloadPacketMagicHeader);
+ case Roles::ServerTransportPacketMagicHeaderRole:
+ return m_serverProtocolConfig.value(config_key::transportPacketMagicHeader);
+ case Roles::ServerSpecialJunk1Role: return m_serverProtocolConfig.value(config_key::specialJunk1);
+ case Roles::ServerSpecialJunk2Role: return m_serverProtocolConfig.value(config_key::specialJunk2);
+ case Roles::ServerSpecialJunk3Role: return m_serverProtocolConfig.value(config_key::specialJunk3);
+ case Roles::ServerSpecialJunk4Role: return m_serverProtocolConfig.value(config_key::specialJunk4);
+ case Roles::ServerSpecialJunk5Role: return m_serverProtocolConfig.value(config_key::specialJunk5);
+ case Roles::ServerControlledJunk1Role: return m_serverProtocolConfig.value(config_key::controlledJunk1);
+ case Roles::ServerControlledJunk2Role: return m_serverProtocolConfig.value(config_key::controlledJunk2);
+ case Roles::ServerControlledJunk3Role: return m_serverProtocolConfig.value(config_key::controlledJunk3);
+ case Roles::ServerSpecialHandshakeTimeoutRole:
+ return m_serverProtocolConfig.value(config_key::specialHandshakeTimeout);
}
return QVariant();
@@ -90,12 +147,15 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
QJsonObject serverProtocolConfig = config.value(config_key::awg).toObject();
- auto defaultTransportProto = ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(Proto::Awg), Proto::Awg);
+ auto defaultTransportProto =
+ ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(Proto::Awg), Proto::Awg);
m_serverProtocolConfig.insert(config_key::transport_proto,
serverProtocolConfig.value(config_key::transport_proto).toString(defaultTransportProto));
m_serverProtocolConfig[config_key::last_config] = serverProtocolConfig.value(config_key::last_config);
- m_serverProtocolConfig[config_key::subnet_address] = serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress);
- m_serverProtocolConfig[config_key::port] = serverProtocolConfig.value(config_key::port).toString(protocols::awg::defaultPort);
+ m_serverProtocolConfig[config_key::subnet_address] =
+ serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress);
+ m_serverProtocolConfig[config_key::port] =
+ serverProtocolConfig.value(config_key::port).toString(protocols::awg::defaultPort);
m_serverProtocolConfig[config_key::junkPacketCount] =
serverProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount);
m_serverProtocolConfig[config_key::junkPacketMinSize] =
@@ -105,25 +165,51 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
m_serverProtocolConfig[config_key::initPacketJunkSize] =
serverProtocolConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize);
m_serverProtocolConfig[config_key::responsePacketJunkSize] =
- serverProtocolConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize);
+ serverProtocolConfig.value(config_key::responsePacketJunkSize)
+ .toString(protocols::awg::defaultResponsePacketJunkSize);
m_serverProtocolConfig[config_key::initPacketMagicHeader] =
- serverProtocolConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader);
+ serverProtocolConfig.value(config_key::initPacketMagicHeader)
+ .toString(protocols::awg::defaultInitPacketMagicHeader);
m_serverProtocolConfig[config_key::responsePacketMagicHeader] =
- serverProtocolConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader);
+ serverProtocolConfig.value(config_key::responsePacketMagicHeader)
+ .toString(protocols::awg::defaultResponsePacketMagicHeader);
m_serverProtocolConfig[config_key::underloadPacketMagicHeader] =
- serverProtocolConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader);
+ serverProtocolConfig.value(config_key::underloadPacketMagicHeader)
+ .toString(protocols::awg::defaultUnderloadPacketMagicHeader);
m_serverProtocolConfig[config_key::transportPacketMagicHeader] =
- serverProtocolConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader);
+ serverProtocolConfig.value(config_key::transportPacketMagicHeader)
+ .toString(protocols::awg::defaultTransportPacketMagicHeader);
+ m_serverProtocolConfig[config_key::specialJunk1] =
+ serverProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
+ m_serverProtocolConfig[config_key::specialJunk2] =
+ serverProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
+ m_serverProtocolConfig[config_key::specialJunk3] =
+ serverProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
+ m_serverProtocolConfig[config_key::specialJunk4] =
+ serverProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
+ m_serverProtocolConfig[config_key::specialJunk5] =
+ serverProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
+ m_serverProtocolConfig[config_key::controlledJunk1] =
+ serverProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
+ m_serverProtocolConfig[config_key::controlledJunk2] =
+ serverProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
+ m_serverProtocolConfig[config_key::controlledJunk3] =
+ serverProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
+ m_serverProtocolConfig[config_key::specialHandshakeTimeout] =
+ serverProtocolConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout);
auto lastConfig = m_serverProtocolConfig.value(config_key::last_config).toString();
QJsonObject clientProtocolConfig = QJsonDocument::fromJson(lastConfig.toUtf8()).object();
m_clientProtocolConfig[config_key::mtu] = clientProtocolConfig[config_key::mtu].toString(protocols::awg::defaultMtu);
m_clientProtocolConfig[config_key::junkPacketCount] =
- clientProtocolConfig.value(config_key::junkPacketCount).toString(m_serverProtocolConfig[config_key::junkPacketCount].toString());
+ clientProtocolConfig.value(config_key::junkPacketCount)
+ .toString(m_serverProtocolConfig[config_key::junkPacketCount].toString());
m_clientProtocolConfig[config_key::junkPacketMinSize] =
- clientProtocolConfig.value(config_key::junkPacketMinSize).toString(m_serverProtocolConfig[config_key::junkPacketMinSize].toString());
+ clientProtocolConfig.value(config_key::junkPacketMinSize)
+ .toString(m_serverProtocolConfig[config_key::junkPacketMinSize].toString());
m_clientProtocolConfig[config_key::junkPacketMaxSize] =
- clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(m_serverProtocolConfig[config_key::junkPacketMaxSize].toString());
+ clientProtocolConfig.value(config_key::junkPacketMaxSize)
+ .toString(m_serverProtocolConfig[config_key::junkPacketMaxSize].toString());
endResetModel();
}
@@ -189,6 +275,16 @@ QHash AwgConfigModel::roleNames() const
roles[ServerUnderloadPacketMagicHeaderRole] = "serverUnderloadPacketMagicHeader";
roles[ServerTransportPacketMagicHeaderRole] = "serverTransportPacketMagicHeader";
+ roles[ServerSpecialJunk1Role] = "specialJunk1";
+ roles[ServerSpecialJunk2Role] = "specialJunk2";
+ roles[ServerSpecialJunk3Role] = "specialJunk3";
+ roles[ServerSpecialJunk4Role] = "specialJunk4";
+ roles[ServerSpecialJunk5Role] = "specialJunk5";
+ roles[ServerControlledJunk1Role] = "controlledJunk1";
+ roles[ServerControlledJunk2Role] = "controlledJunk2";
+ roles[ServerControlledJunk3Role] = "controlledJunk3";
+ roles[ServerSpecialHandshakeTimeoutRole] = "specialHandshakeTimeout";
+
return roles;
}
@@ -197,37 +293,67 @@ AwgConfig::AwgConfig(const QJsonObject &serverProtocolConfig)
auto lastConfig = serverProtocolConfig.value(config_key::last_config).toString();
QJsonObject clientProtocolConfig = QJsonDocument::fromJson(lastConfig.toUtf8()).object();
clientMtu = clientProtocolConfig[config_key::mtu].toString(protocols::awg::defaultMtu);
- clientJunkPacketCount = clientProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount);
- clientJunkPacketMinSize = clientProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize);
- clientJunkPacketMaxSize = clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize);
+ clientJunkPacketCount =
+ clientProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount);
+ clientJunkPacketMinSize =
+ clientProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize);
+ clientJunkPacketMaxSize =
+ clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize);
- subnetAddress = serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress);
+ subnetAddress =
+ serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress);
port = serverProtocolConfig.value(config_key::port).toString(protocols::awg::defaultPort);
- serverJunkPacketCount = serverProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount);
- serverJunkPacketMinSize = serverProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize);
- serverJunkPacketMaxSize = serverProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize);
- serverInitPacketJunkSize = serverProtocolConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize);
- serverResponsePacketJunkSize =
- serverProtocolConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize);
- serverInitPacketMagicHeader =
- serverProtocolConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader);
- serverResponsePacketMagicHeader =
- serverProtocolConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader);
- serverUnderloadPacketMagicHeader =
- serverProtocolConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader);
- serverTransportPacketMagicHeader =
- serverProtocolConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader);
+ serverJunkPacketCount =
+ serverProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount);
+ serverJunkPacketMinSize =
+ serverProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize);
+ serverJunkPacketMaxSize =
+ serverProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize);
+ serverInitPacketJunkSize =
+ serverProtocolConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize);
+ serverResponsePacketJunkSize = serverProtocolConfig.value(config_key::responsePacketJunkSize)
+ .toString(protocols::awg::defaultResponsePacketJunkSize);
+ serverInitPacketMagicHeader = serverProtocolConfig.value(config_key::initPacketMagicHeader)
+ .toString(protocols::awg::defaultInitPacketMagicHeader);
+ serverResponsePacketMagicHeader = serverProtocolConfig.value(config_key::responsePacketMagicHeader)
+ .toString(protocols::awg::defaultResponsePacketMagicHeader);
+ serverUnderloadPacketMagicHeader = serverProtocolConfig.value(config_key::underloadPacketMagicHeader)
+ .toString(protocols::awg::defaultUnderloadPacketMagicHeader);
+ serverTransportPacketMagicHeader = serverProtocolConfig.value(config_key::transportPacketMagicHeader)
+ .toString(protocols::awg::defaultTransportPacketMagicHeader);
+ serverSpecialJunk[config_key::specialJunk1] =
+ serverProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
+ serverSpecialJunk[config_key::specialJunk2] =
+ serverProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
+ serverSpecialJunk[config_key::specialJunk3] =
+ serverProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
+ serverSpecialJunk[config_key::specialJunk4] =
+ serverProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
+ serverSpecialJunk[config_key::specialJunk5] =
+ serverProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
+ serverControlledJunk[config_key::controlledJunk1] =
+ serverProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
+ serverControlledJunk[config_key::controlledJunk2] =
+ serverProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
+ serverControlledJunk[config_key::controlledJunk3] =
+ serverProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
+ serverSpecialHandshakeTimeout = serverProtocolConfig.value(config_key::specialHandshakeTimeout)
+ .toString(protocols::awg::defaultSpecialHandshakeTimeout);
}
bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const
{
if (subnetAddress != other.subnetAddress || port != other.port || serverJunkPacketCount != other.serverJunkPacketCount
- || serverJunkPacketMinSize != other.serverJunkPacketMinSize || serverJunkPacketMaxSize != other.serverJunkPacketMaxSize
- || serverInitPacketJunkSize != other.serverInitPacketJunkSize || serverResponsePacketJunkSize != other.serverResponsePacketJunkSize
+ || serverJunkPacketMinSize != other.serverJunkPacketMinSize
+ || serverJunkPacketMaxSize != other.serverJunkPacketMaxSize
+ || serverInitPacketJunkSize != other.serverInitPacketJunkSize
+ || serverResponsePacketJunkSize != other.serverResponsePacketJunkSize
|| serverInitPacketMagicHeader != other.serverInitPacketMagicHeader
|| serverResponsePacketMagicHeader != other.serverResponsePacketMagicHeader
|| serverUnderloadPacketMagicHeader != other.serverUnderloadPacketMagicHeader
- || serverTransportPacketMagicHeader != other.serverTransportPacketMagicHeader) {
+ || serverTransportPacketMagicHeader != other.serverTransportPacketMagicHeader
+ || serverSpecialJunk != other.serverSpecialJunk || serverControlledJunk != other.serverControlledJunk
+ || serverSpecialHandshakeTimeout != other.serverSpecialHandshakeTimeout) {
return false;
}
return true;
@@ -236,7 +362,8 @@ bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const
bool AwgConfig::hasEqualClientSettings(const AwgConfig &other) const
{
if (clientMtu != other.clientMtu || clientJunkPacketCount != other.clientJunkPacketCount
- || clientJunkPacketMinSize != other.clientJunkPacketMinSize || clientJunkPacketMaxSize != other.clientJunkPacketMaxSize) {
+ || clientJunkPacketMinSize != other.clientJunkPacketMinSize
+ || clientJunkPacketMaxSize != other.clientJunkPacketMaxSize) {
return false;
}
return true;
diff --git a/client/ui/models/protocols/awgConfigModel.h b/client/ui/models/protocols/awgConfigModel.h
index c1f8bb27..50daf765 100644
--- a/client/ui/models/protocols/awgConfigModel.h
+++ b/client/ui/models/protocols/awgConfigModel.h
@@ -33,6 +33,10 @@ struct AwgConfig
QString serverUnderloadPacketMagicHeader;
QString serverTransportPacketMagicHeader;
+ QMap serverSpecialJunk;
+ QMap serverControlledJunk;
+ QString serverSpecialHandshakeTimeout;
+
bool hasEqualServerSettings(const AwgConfig &other) const;
bool hasEqualClientSettings(const AwgConfig &other) const;
@@ -60,7 +64,16 @@ public:
ServerInitPacketMagicHeaderRole,
ServerResponsePacketMagicHeaderRole,
ServerUnderloadPacketMagicHeaderRole,
- ServerTransportPacketMagicHeaderRole
+ ServerTransportPacketMagicHeaderRole,
+ ServerSpecialJunk1Role,
+ ServerSpecialJunk2Role,
+ ServerSpecialJunk3Role,
+ ServerSpecialJunk4Role,
+ ServerSpecialJunk5Role,
+ ServerControlledJunk1Role,
+ ServerControlledJunk2Role,
+ ServerControlledJunk3Role,
+ ServerSpecialHandshakeTimeoutRole,
};
explicit AwgConfigModel(QObject *parent = nullptr);
diff --git a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
index 24dd60a9..96662c20 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
@@ -256,105 +256,6 @@ PageType {
headerText: "H4 - Transport packet magic header"
textField.text: serverTransportPacketMagicHeader
}
-
- TextFieldWithHeaderType {
- id: i1JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "I1 - First special junk packet"
- textField.text: serverI1JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: i2JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "I2 - Second special junk packet"
- textField.text: serverI2JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: i3JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "I3 - Third special junk packet"
- textField.text: serverI3JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: i4JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "I4 - Fourth special junk packet"
- textField.text: serverI4JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: i5JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "I5 - Fifth special junk packet"
- textField.text: serverI5JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: j1JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "J1 - First controlled junk packet"
- textField.text: serverJ1JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: j2JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "J2 - Second controlled junk packet"
- textField.text: serverJ2JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: j3JunkPacketTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "J3 - Third controlled junk packet"
- textField.text: serverJ3JunkPacket
- }
-
- TextFieldWithHeaderType {
- id: iTimeTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- enabled: false
-
- headerText: "Itime - Special handshake timeout"
- textField.text: serverSepciaHandshaketIntervalTime
- }
}
}
}
diff --git a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
index 93455f97..fa818ab6 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
@@ -317,169 +317,137 @@ PageType {
}
TextFieldWithHeaderType {
- id: I1JunkPacketTextField
+ id: i1JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I1 - First special junk packet")
- textField.text: serverI1JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverSpecialJunk["I1"]
textField.onEditingFinished: {
if (textField.text !== serverI1JunkPacket) {
serverI1JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: I2JunkPacketTextField
+ id: i2JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I2 - Second special junk packet")
- textField.text: serverI2JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverSpecialJunk["I2"]
textField.onEditingFinished: {
if (textField.text !== serverI2JunkPacket) {
serverI2JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: I3JunkPacketTextField
+ id: i3JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I3 - Third special junk packet")
- textField.text: serverI3JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverSpecialJunk["I3"]
textField.onEditingFinished: {
if (textField.text !== serverI3JunkPacket) {
serverI3JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: I4JunkPacketTextField
+ id: i4JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I4 - Fourth special junk packet")
- textField.text: serverI4JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverSpecialJunk["I4"]
textField.onEditingFinished: {
if (textField.text !== serverI4JunkPacket) {
serverI4JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: I5JunkPacketTextField
+ id: i5JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I5 - Fifth special junk packet")
- textField.text: serverI5JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverSpecialJunk["I5"]
textField.onEditingFinished: {
if (textField.text !== serverI5JunkPacket) {
serverI5JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: J1JunkPacketTextField
+ id: j1JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("J1 - First controlled junk packet")
- textField.text: serverJ1JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverControlledJunk["J1"]
textField.onEditingFinished: {
if (textField.text !== serverJ1JunkPacket) {
serverJ1JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: J2JunkPacketTextField
+ id: j2JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("J2 - Second controlled junk packet")
- textField.text: serverJ2JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverControlledJunk[J2]
textField.onEditingFinished: {
if (textField.text !== serverJ2JunkPacket) {
serverJ2JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: J3JunkPacketTextField
+ id: j3JunkPacketTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("J3 - Third controlled junk packet")
- textField.text: serverJ3JunkPacket
- textField.validator: IntValidator { bottom: 0 }
+ textField.text: serverControlledJunk[J3]
textField.onEditingFinished: {
if (textField.text !== serverJ3JunkPacket) {
serverJ3JunkPacket = textField.text
}
}
-
- checkEmptyText: true
}
TextFieldWithHeaderType {
- id: ItimeTextField
+ id: iTimeTextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("Itime - Special handshake timeout")
- textField.text: serverSepciaHandshaketIntervalTime
+ textField.text: serverSpeciaHandshakeIntervalTime
textField.validator: IntValidator { bottom: 0 }
textField.onEditingFinished: {
- if (textField.text !== serverSepcialHandshakeIntervalTime) {
- serverSepcialHandshakeIntervalTime = textField.text
- }
- }
-
- checkEmptyText: true
-
- onActiveFocusChanged: {
- if(activeFocus) {
- listview.positionViewAtEnd()
+ if (textField.text !== serverSepcialHandshakeTimeout) {
+ serverSepcialHandshakeTimeout = textField.text
}
}
}
@@ -500,15 +468,15 @@ PageType {
junkPacketMaxSizeTextField.errorText === "" &&
junkPacketMinSizeTextField.errorText === "" &&
junkPacketCountTextField.errorText === "" &&
- I1JunkPacketTextField.errorText === "" &&
- I2JunkPacketTextField.errorText === "" &&
- I3JunkPacketTextField.errorText === "" &&
- I4JunkPacketTextField.errorText === "" &&
- I5JunkPacketTextField.errorText === "" &&
- J1JunkPacketTextField.errorText === "" &&
- J2JunkPacketTextField.errorText === "" &&
- J3JunkPacketTextField.errorText === "" &&
- ItimeTextField.errorText === "" &&
+ i1JunkPacketTextField.errorText === "" &&
+ i2JunkPacketTextField.errorText === "" &&
+ i3JunkPacketTextField.errorText === "" &&
+ i4JunkPacketTextField.errorText === "" &&
+ i5JunkPacketTextField.errorText === "" &&
+ j1JunkPacketTextField.errorText === "" &&
+ j2JunkPacketTextField.errorText === "" &&
+ j3JunkPacketTextField.errorText === "" &&
+ iTimeTextField.errorText === "" &&
portTextField.errorText === "" &&
vpnAddressSubnetTextField.errorText === ""
From 23be2749f7bb9f654feb23a20ab94b01ccf04da5 Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Fri, 20 Jun 2025 19:09:22 +0200
Subject: [PATCH 3/9] feat: android/ios & fix qml
---
.../vpn/protocol/wireguard/Wireguard.kt | 9 ++
.../vpn/protocol/wireguard/WireguardConfig.kt | 18 +++
client/platforms/ios/WGConfig.swift | 16 ++-
client/translations/amneziavpn_ar_EG.ts | 105 +++-----------
client/translations/amneziavpn_fa_IR.ts | 127 ++---------------
client/translations/amneziavpn_hi_IN.ts | 123 ++---------------
client/translations/amneziavpn_my_MM.ts | 105 +++-----------
client/translations/amneziavpn_ru_RU.ts | 105 +++-----------
client/translations/amneziavpn_uk_UA.ts | 123 ++---------------
client/translations/amneziavpn_ur_PK.ts | 123 ++---------------
client/translations/amneziavpn_zh_CN.ts | 129 ++----------------
client/ui/models/protocols/awgConfigModel.cpp | 42 +++---
client/ui/models/protocols/awgConfigModel.h | 12 +-
.../ui/qml/Pages2/PageProtocolAwgSettings.qml | 86 ++++++------
14 files changed, 227 insertions(+), 896 deletions(-)
diff --git a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt
index 80cab96d..32f15908 100644
--- a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt
+++ b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt
@@ -124,6 +124,15 @@ open class Wireguard : Protocol() {
configData.optStringOrNull("H2")?.let { setH2(it.toLong()) }
configData.optStringOrNull("H3")?.let { setH3(it.toLong()) }
configData.optStringOrNull("H4")?.let { setH4(it.toLong()) }
+ configData.optStringOrNull("I1")?.let { setI1(it.toString()) }
+ configData.optStringOrNull("I2")?.let { setI2(it.toString()) }
+ configData.optStringOrNull("I3")?.let { setI3(it.toString()) }
+ configData.optStringOrNull("I4")?.let { setI4(it.toString()) }
+ configData.optStringOrNull("I5")?.let { setI5(it.toString()) }
+ configData.optStringOrNull("J1")?.let { setJ1(it.toString()) }
+ configData.optStringOrNull("J2")?.let { setJ2(it.toString()) }
+ configData.optStringOrNull("J3")?.let { setJ3(it.toString()) }
+ configData.optStringOrNull("Itime")?.let { setItime(it.Int()) }
}
private fun start(config: WireguardConfig, vpnBuilder: Builder, protect: (Int) -> Boolean) {
diff --git a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt
index 7ae3d43b..65dfb34e 100644
--- a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt
+++ b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt
@@ -121,6 +121,15 @@ open class WireguardConfig protected constructor(
internal var h2: Long? = null
internal var h3: Long? = null
internal var h4: Long? = null
+ internal var i1: String? = null
+ internal var i2: String? = null
+ internal var i3: String? = null
+ internal var i4: String? = null
+ internal var i5: String? = null
+ internal var j1: String? = null
+ internal var j2: String? = null
+ internal var j3: String? = null
+ internal var itime: Int? = null
fun setEndpoint(endpoint: InetEndpoint) = apply { this.endpoint = endpoint }
@@ -143,6 +152,15 @@ open class WireguardConfig protected constructor(
fun setH2(h2: Long) = apply { this.h2 = h2 }
fun setH3(h3: Long) = apply { this.h3 = h3 }
fun setH4(h4: Long) = apply { this.h4 = h4 }
+ fun setI1(i1: String) = apply { this.i1 = i1 }
+ fun setI2(i2: String) = apply { this.i2 = i2 }
+ fun setI3(i3: String) = apply { this.i3 = i3 }
+ fun setI4(i4: String) = apply { this.i4 = i4 }
+ fun setI5(i5: String) = apply { this.i5 = i5 }
+ fun setJ1(j1: String) = apply { this.j1 = j1 }
+ fun setJ2(j2: String) = apply { this.j2 = j2 }
+ fun setJ3(j3: String) = apply { this.j3 = j3 }
+ fun setItime(itime: Int) = apply { this.itime = itime }
override fun build(): WireguardConfig = configBuild().run { WireguardConfig(this@Builder) }
}
diff --git a/client/platforms/ios/WGConfig.swift b/client/platforms/ios/WGConfig.swift
index e3b67efe..0146950d 100644
--- a/client/platforms/ios/WGConfig.swift
+++ b/client/platforms/ios/WGConfig.swift
@@ -5,6 +5,9 @@ struct WGConfig: Decodable {
let underloadPacketMagicHeader, transportPacketMagicHeader: String?
let junkPacketCount, junkPacketMinSize, junkPacketMaxSize: String?
let initPacketJunkSize, responsePacketJunkSize: String?
+ let specialJunk1, specialJunk2, specialJunk3, specialJunk4, specialJunk5: String?
+ let controlledJunk1, controlledJunk2, controlledJunk3: String?
+ let specialHandshakeTimeout: String?
let dns1: String
let dns2: String
let mtu: String
@@ -24,6 +27,9 @@ struct WGConfig: Decodable {
case underloadPacketMagicHeader = "H3", transportPacketMagicHeader = "H4"
case junkPacketCount = "Jc", junkPacketMinSize = "Jmin", junkPacketMaxSize = "Jmax"
case initPacketJunkSize = "S1", responsePacketJunkSize = "S2"
+ case specialJunk1 = "I1", specialJunk2 = "I2", specialJunk3 = "I3", specialJunk4 = "I4", specialJunk5 = "I5"
+ case controlledJunk1 = "J1", controlledJunk2 = "J2", controlledJunk3 = "J3"
+ case specialHandshakeTimeout = "Itime"
case dns1
case dns2
case mtu
@@ -51,7 +57,15 @@ struct WGConfig: Decodable {
H2 = \(responsePacketMagicHeader!)
H3 = \(underloadPacketMagicHeader!)
H4 = \(transportPacketMagicHeader!)
-
+ I1 = \(specialJunk1!)
+ I2 = \(specialJunk2!)
+ I3 = \(specialJunk3!)
+ I4 = \(specialJunk4!)
+ I5 = \(specialJunk5!)
+ J1 = \(controlledJunk1!)
+ J2 = \(controlledJunk2!)
+ J3 = \(controlledJunk3!)
+ Itime = \(specialHandshakeTimeout!)
"""
}
diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts
index ba246090..02a08c96 100644
--- a/client/translations/amneziavpn_ar_EG.ts
+++ b/client/translations/amneziavpn_ar_EG.ts
@@ -797,149 +797,84 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- اعدادات AmneziaWG
+ اعدادات AmneziaWG
- Port
- منفذ
+ منفذ
- All users with whom you shared a connection with will no longer be able to connect to it.
- جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.
+ جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.
- Save
- احفظ
+ احفظ
- VPN address subnet
- الشبكة الفرعية لعنوان VPN
+ الشبكة الفرعية لعنوان VPN
- Jc - Junk packet count
- Jc - عدد الحزم غير المرغوب فيها
+ Jc - عدد الحزم غير المرغوب فيها
- Jmin - Junk packet minimum size
- Jmin - الحجم الادني للحزم الغير مرغوب فيها
+ Jmin - الحجم الادني للحزم الغير مرغوب فيها
- Jmax - Junk packet maximum size
- Jmax - الحجم الاقصي للحزم الغير مرغوب فيها
+ Jmax - الحجم الاقصي للحزم الغير مرغوب فيها
- S1 - Init packet junk size
- S1 - حجم حزمة البيانات العشوائية الأولية
+ S1 - حجم حزمة البيانات العشوائية الأولية
- S2 - Response packet junk size
- S2 - حجم حزمة الاستجابة غير المرغوب فيها
+ S2 - حجم حزمة الاستجابة غير المرغوب فيها
- H1 - Init packet magic header
- H1 - حزمة رأس سحرية مبدئية
+ H1 - حزمة رأس سحرية مبدئية
- H2 - Response packet magic header
- H2 - رأس حزمة الاستجابة السحرية
+ H2 - رأس حزمة الاستجابة السحرية
- H4 - Transport packet magic header
- H4 - رأس حزمة النقل السحرية
+ H4 - رأس حزمة النقل السحرية
- H3 - Underload packet magic header
- H3 - رأس حزمة السحر غير المحمل
+ H3 - رأس حزمة السحر غير المحمل
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
- The values of the H1-H4 fields must be unique
- يجب أن تكون قيم الحقول H1-H4 فريدة
+ يجب أن تكون قيم الحقول H1-H4 فريدة
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)
+ يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)
- Save settings?
- احفظ الإعدادات؟
+ احفظ الإعدادات؟
- Continue
- واصل
+ واصل
- Cancel
- إلغاء
+ إلغاء
- Unable change settings while there is an active connection
- لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
+ لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
diff --git a/client/translations/amneziavpn_fa_IR.ts b/client/translations/amneziavpn_fa_IR.ts
index 720bbbfa..80bc3a58 100644
--- a/client/translations/amneziavpn_fa_IR.ts
+++ b/client/translations/amneziavpn_fa_IR.ts
@@ -801,14 +801,12 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- تنظیمات AmneziaWG
+ تنظیمات AmneziaWG
- Port
- پورت
+ پورتRemove AmneziaWG
@@ -819,139 +817,32 @@ Thank you for staying with us!
آیا میخواهید AmneziaWG از سرور حذف شود؟
- All users with whom you shared a connection with will no longer be able to connect to it.
- همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.
+ همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.
- Save
- ذخیره
+ ذخیره
- VPN address subnet
- زیرشبکه آدرس VPN
+ زیرشبکه آدرس VPN
-
- Jc - Junk packet count
-
-
-
-
- Jmin - Junk packet minimum size
-
-
-
-
- Jmax - Junk packet maximum size
-
-
-
-
- S1 - Init packet junk size
-
-
-
-
- S2 - Response packet junk size
-
-
-
-
- H1 - Init packet magic header
-
-
-
-
- H2 - Response packet magic header
-
-
-
-
- H4 - Transport packet magic header
-
-
-
-
- H3 - Underload packet magic header
-
-
-
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
- The values of the H1-H4 fields must be unique
-
-
-
-
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
-
-
-
- Save settings?
- تنظیمات را ذخیره کن?
+ تنظیمات را ذخیره کن?
- Continue
- ادامه
+ ادامه
- Cancel
- کنسل
+ کنسل
- Unable change settings while there is an active connection
- نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
+ نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
diff --git a/client/translations/amneziavpn_hi_IN.ts b/client/translations/amneziavpn_hi_IN.ts
index 045c8704..3e4b1b25 100644
--- a/client/translations/amneziavpn_hi_IN.ts
+++ b/client/translations/amneziavpn_hi_IN.ts
@@ -765,153 +765,52 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- Amneziaडब्ल्यूजी सेटिंग्स
+ Amneziaडब्ल्यूजी सेटिंग्स
- VPN address subnet
- VPN एड्रेस सबनेट
+ VPN एड्रेस सबनेट
- Port
- पोर्ट
+ पोर्टMTUएमटीयू
-
- Jc - Junk packet count
-
-
-
-
- Jmin - Junk packet minimum size
-
-
-
-
- Jmax - Junk packet maximum size
-
-
-
-
- S1 - Init packet junk size
-
-
-
-
- S2 - Response packet junk size
-
-
-
-
- H1 - Init packet magic header
-
-
-
-
- H2 - Response packet magic header
-
-
-
-
- H4 - Transport packet magic header
-
-
-
-
- H3 - Underload packet magic header
-
-
-
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
- Save
- सहेजें
+ सहेजें
- The values of the H1-H4 fields must be unique
- H1-H4 फ़ील्ड का मान अद्वितीय होना चाहिए
+ H1-H4 फ़ील्ड का मान अद्वितीय होना चाहिए
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- फ़ील्ड S1 + संदेश आरंभ आकार (148) का मान S2 + संदेश प्रतिक्रिया आकार (92) के बराबर नहीं होना चाहिए
+ फ़ील्ड S1 + संदेश आरंभ आकार (148) का मान S2 + संदेश प्रतिक्रिया आकार (92) के बराबर नहीं होना चाहिए
- Save settings?
- सेटिंग्स सेव करें?
+ सेटिंग्स सेव करें?
- All users with whom you shared a connection with will no longer be able to connect to it.
- वे सभी उपयोगकर्ता जिनके साथ आपने कनेक्शन साझा किया था, वे अब इससे कनेक्ट नहीं हो पाएंगे.
+ वे सभी उपयोगकर्ता जिनके साथ आपने कनेक्शन साझा किया था, वे अब इससे कनेक्ट नहीं हो पाएंगे.
- Unable change settings while there is an active connection
- सक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
+ सक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
- Continue
- जारी रखना
+ जारी रखना
- Cancel
- रद्द करना
+ रद्द करना
diff --git a/client/translations/amneziavpn_my_MM.ts b/client/translations/amneziavpn_my_MM.ts
index 8c8d2e39..87e4c442 100644
--- a/client/translations/amneziavpn_my_MM.ts
+++ b/client/translations/amneziavpn_my_MM.ts
@@ -797,153 +797,88 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- AmneziaWG ဆက်တင်များ
+ AmneziaWG ဆက်တင်များ
- Port
- Port
+ PortMTUMTU
- All users with whom you shared a connection with will no longer be able to connect to it.
- သင်နှင့်အတူချိတ်ဆက်မှုတစ်ခုကို မျှဝေထားသည့် အသုံးပြုသူအားလုံး ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
+ သင်နှင့်အတူချိတ်ဆက်မှုတစ်ခုကို မျှဝေထားသည့် အသုံးပြုသူအားလုံး ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
- Save
- သိမ်းဆည်းမည်
+ သိမ်းဆည်းမည်
- VPN address subnet
- VPN လိပ်စာ ကွန်ရက်ခွဲ
+ VPN လိပ်စာ ကွန်ရက်ခွဲ
- Jc - Junk packet count
- Jc - Junk packet အရေအတွက်
+ Jc - Junk packet အရေအတွက်
- Jmin - Junk packet minimum size
- Jmin - Junk packet အသေးငယ်ဆုံးလက်ခံနိုင်မှုအရွယ်အစား
+ Jmin - Junk packet အသေးငယ်ဆုံးလက်ခံနိုင်မှုအရွယ်အစား
- Jmax - Junk packet maximum size
- Jmax - Junk packet အကြီးဆုံးလက်ခံနိုင်မှုအရွယ်အစား
+ Jmax - Junk packet အကြီးဆုံးလက်ခံနိုင်မှုအရွယ်အစား
- S1 - Init packet junk size
- S1 - Init packet junk အရွယ်အစား
+ S1 - Init packet junk အရွယ်အစား
- S2 - Response packet junk size
- S2 - Response packet junk အရွယ်အစား
+ S2 - Response packet junk အရွယ်အစား
- H1 - Init packet magic header
- H1 - Init packet magic header
+ H1 - Init packet magic header
- H2 - Response packet magic header
- H2 - Response packet magic header
+ H2 - Response packet magic header
- H4 - Transport packet magic header
- H4 - Transport packet magic header
+ H4 - Transport packet magic header
- H3 - Underload packet magic header
- H3 - Underload packet magic header
+ H3 - Underload packet magic header
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
- The values of the H1-H4 fields must be unique
- H1-H4 အကွက်များ၏ တန်ဖိုးများသည် အခြားတန်ဖိုးများနှင့်မတူ တမူထူးခြားနေရပါမည်
+ H1-H4 အကွက်များ၏ တန်ဖိုးများသည် အခြားတန်ဖိုးများနှင့်မတူ တမူထူးခြားနေရပါမည်
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- အကွက် S1 + မက်ဆေ့ချ် စတင်ခြင်း အရွယ်အစား (148) ၏ တန်ဖိုးသည် S2 + မက်ဆေ့ချ် တုံ့ပြန်မှု အရွယ်အစား (92) နှင့် မညီမျှရပါ
+ အကွက် S1 + မက်ဆေ့ချ် စတင်ခြင်း အရွယ်အစား (148) ၏ တန်ဖိုးသည် S2 + မက်ဆေ့ချ် တုံ့ပြန်မှု အရွယ်အစား (92) နှင့် မညီမျှရပါ
- Save settings?
- ဆက်တင်များကို သိမ်းဆည်းမည်လား?
+ ဆက်တင်များကို သိမ်းဆည်းမည်လား?
- Continue
- ဆက်လက်လုပ်ဆောင်မည်
+ ဆက်လက်လုပ်ဆောင်မည်
- Cancel
- ပယ်ဖျက်မည်
+ ပယ်ဖျက်မည်
- Unable change settings while there is an active connection
- လက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
+ လက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts
index da6eadba..82719dcf 100644
--- a/client/translations/amneziavpn_ru_RU.ts
+++ b/client/translations/amneziavpn_ru_RU.ts
@@ -733,149 +733,84 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- Настройки AmneziaWG
+ Настройки AmneziaWG
- Port
- Порт
+ Порт
- All users with whom you shared a connection with will no longer be able to connect to it.
- Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.
+ Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.
- Save
- Сохранить
+ Сохранить
- VPN address subnet
- Подсеть VPN-адресов
+ Подсеть VPN-адресов
- Jc - Junk packet count
- Jc - Junk packet count
+ Jc - Junk packet count
- Jmin - Junk packet minimum size
- Jmin - Junk packet minimum size
+ Jmin - Junk packet minimum size
- Jmax - Junk packet maximum size
- Jmax - Junk packet maximum size
+ Jmax - Junk packet maximum size
- S1 - Init packet junk size
- S1 - Init packet junk size
+ S1 - Init packet junk size
- S2 - Response packet junk size
- S2 - Response packet junk size
+ S2 - Response packet junk size
- H1 - Init packet magic header
- H1 - Init packet magic header
+ H1 - Init packet magic header
- H2 - Response packet magic header
- H2 - Response packet magic header
+ H2 - Response packet magic header
- H4 - Transport packet magic header
- H4 - Transport packet magic header
+ H4 - Transport packet magic header
- H3 - Underload packet magic header
- H3 - Underload packet magic header
+ H3 - Underload packet magic header
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
- The values of the H1-H4 fields must be unique
- Значения в полях H1-H4 должны быть уникальными
+ Значения в полях H1-H4 должны быть уникальными
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)
+ Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)
- Save settings?
- Сохранить настройки?
+ Сохранить настройки?
- Continue
- Продолжить
+ Продолжить
- Cancel
- Отменить
+ Отменить
- Unable change settings while there is an active connection
- Невозможно изменить настройки во время активного соединения
+ Невозможно изменить настройки во время активного соединения
diff --git a/client/translations/amneziavpn_uk_UA.ts b/client/translations/amneziavpn_uk_UA.ts
index eacac054..a39f3095 100644
--- a/client/translations/amneziavpn_uk_UA.ts
+++ b/client/translations/amneziavpn_uk_UA.ts
@@ -827,139 +827,40 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- налаштування AmneziaWG
+ налаштування AmneziaWG
- VPN address subnet
- VPN address subnet
+ VPN address subnet
- Port
- Порт
+ Порт
-
- Jc - Junk packet count
-
-
-
-
- Jmin - Junk packet minimum size
-
-
-
-
- Jmax - Junk packet maximum size
-
-
-
-
- S1 - Init packet junk size
-
-
-
-
- S2 - Response packet junk size
-
-
-
-
- H1 - Init packet magic header
-
-
-
-
- H2 - Response packet magic header
-
-
-
-
- H4 - Transport packet magic header
-
-
-
-
- H3 - Underload packet magic header
-
-
-
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
- Save
- Зберегти
+ Зберегти
- The values of the H1-H4 fields must be unique
- Значення полів H1-H4 мають бути унікальними
+ Значення полів H1-H4 мають бути унікальними
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)
+ Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)
- Save settings?
- Зберегти налаштування?
+ Зберегти налаштування?
- All users with whom you shared a connection with will no longer be able to connect to it.
- Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.
+ Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.
- Unable change settings while there is an active connection
- Неможливо змінити налаштування, поки є активне підключення
+ Неможливо змінити налаштування, поки є активне підключенняRemove AmneziaWG
@@ -978,14 +879,12 @@ Thank you for staying with us!
Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.
- Continue
- Продовжити
+ Продовжити
- Cancel
- Відмінити
+ ВідмінитиSave and Restart Amnezia
diff --git a/client/translations/amneziavpn_ur_PK.ts b/client/translations/amneziavpn_ur_PK.ts
index f76be8ab..203d64d1 100644
--- a/client/translations/amneziavpn_ur_PK.ts
+++ b/client/translations/amneziavpn_ur_PK.ts
@@ -765,153 +765,52 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- امنیزیا وی جی کی ترتیبات
+ امنیزیا وی جی کی ترتیبات
- Port
- پورٹ
+ پورٹMTUام ٹی یو
- All users with whom you shared a connection with will no longer be able to connect to it.
- آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔
+ آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔
- Save
- محفوظ کریں
+ محفوظ کریں
- VPN address subnet
- وی پی این ایڈریس سب نیٹ
+ وی پی این ایڈریس سب نیٹ
-
- Jc - Junk packet count
-
-
-
-
- Jmin - Junk packet minimum size
-
-
-
-
- Jmax - Junk packet maximum size
-
-
-
-
- S1 - Init packet junk size
-
-
-
-
- S2 - Response packet junk size
-
-
-
-
- H1 - Init packet magic header
-
-
-
-
- H2 - Response packet magic header
-
-
-
-
- H4 - Transport packet magic header
-
-
-
-
- H3 - Underload packet magic header
-
-
-
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
- The values of the H1-H4 fields must be unique
- H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے
+ H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے
+ S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے
- Save settings?
- ترتیبات محفوظ کریں?
+ ترتیبات محفوظ کریں?
- Continue
- جاری رکھیں
+ جاری رکھیں
- Cancel
- منسوخ کریں
+ منسوخ کریں
- Unable change settings while there is an active connection
- جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
+ جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index 7a360b1b..cef3e617 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -779,14 +779,12 @@ Thank you for staying with us!
PageProtocolAwgSettings
- AmneziaWG settings
- AmneziaWG 配置
+ AmneziaWG 配置
- Port
- 端口
+ 端口Remove AmneziaWG
@@ -797,139 +795,28 @@ Thank you for staying with us!
从服务上移除AmneziaWG?
- All users with whom you shared a connection with will no longer be able to connect to it.
- 与您共享连接的所有用户将无法再连接到该连接。
+ 与您共享连接的所有用户将无法再连接到该连接。
- Save
- 保存
+ 保存
- VPN address subnet
- VPN 地址子网
+ VPN 地址子网
-
- Jc - Junk packet count
-
-
-
-
- Jmin - Junk packet minimum size
-
-
-
-
- Jmax - Junk packet maximum size
-
-
-
-
- S1 - Init packet junk size
-
-
-
-
- S2 - Response packet junk size
-
-
-
-
- H1 - Init packet magic header
-
-
-
-
- H2 - Response packet magic header
-
-
-
-
- H4 - Transport packet magic header
-
-
-
-
- H3 - Underload packet magic header
-
-
-
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
- The values of the H1-H4 fields must be unique
-
-
-
-
- The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
-
-
-
- Save settings?
- 保存设置?
+ 保存设置?
- Continue
- 继续
+ 继续
- Cancel
- 取消
-
-
-
- Unable change settings while there is an active connection
-
+ 取消
diff --git a/client/ui/models/protocols/awgConfigModel.cpp b/client/ui/models/protocols/awgConfigModel.cpp
index b43767a8..b2fc595c 100644
--- a/client/ui/models/protocols/awgConfigModel.cpp
+++ b/client/ui/models/protocols/awgConfigModel.cpp
@@ -196,7 +196,8 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
m_serverProtocolConfig[config_key::controlledJunk3] =
serverProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
m_serverProtocolConfig[config_key::specialHandshakeTimeout] =
- serverProtocolConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout);
+ serverProtocolConfig.value(config_key::specialHandshakeTimeout)
+ .toString(protocols::awg::defaultSpecialHandshakeTimeout);
auto lastConfig = m_serverProtocolConfig.value(config_key::last_config).toString();
QJsonObject clientProtocolConfig = QJsonDocument::fromJson(lastConfig.toUtf8()).object();
@@ -275,15 +276,15 @@ QHash AwgConfigModel::roleNames() const
roles[ServerUnderloadPacketMagicHeaderRole] = "serverUnderloadPacketMagicHeader";
roles[ServerTransportPacketMagicHeaderRole] = "serverTransportPacketMagicHeader";
- roles[ServerSpecialJunk1Role] = "specialJunk1";
- roles[ServerSpecialJunk2Role] = "specialJunk2";
- roles[ServerSpecialJunk3Role] = "specialJunk3";
- roles[ServerSpecialJunk4Role] = "specialJunk4";
- roles[ServerSpecialJunk5Role] = "specialJunk5";
- roles[ServerControlledJunk1Role] = "controlledJunk1";
- roles[ServerControlledJunk2Role] = "controlledJunk2";
- roles[ServerControlledJunk3Role] = "controlledJunk3";
- roles[ServerSpecialHandshakeTimeoutRole] = "specialHandshakeTimeout";
+ roles[ServerSpecialJunk1Role] = "serverSpecialJunk1";
+ roles[ServerSpecialJunk2Role] = "serverSpecialJunk2";
+ roles[ServerSpecialJunk3Role] = "serverSpecialJunk3";
+ roles[ServerSpecialJunk4Role] = "serverSpecialJunk4";
+ roles[ServerSpecialJunk5Role] = "serverSpecialJunk5";
+ roles[ServerControlledJunk1Role] = "serverControlledJunk1";
+ roles[ServerControlledJunk2Role] = "serverControlledJunk2";
+ roles[ServerControlledJunk3Role] = "serverControlledJunk3";
+ roles[ServerSpecialHandshakeTimeoutRole] = "serverSpecialHandshakeTimeout";
return roles;
}
@@ -321,21 +322,21 @@ AwgConfig::AwgConfig(const QJsonObject &serverProtocolConfig)
.toString(protocols::awg::defaultUnderloadPacketMagicHeader);
serverTransportPacketMagicHeader = serverProtocolConfig.value(config_key::transportPacketMagicHeader)
.toString(protocols::awg::defaultTransportPacketMagicHeader);
- serverSpecialJunk[config_key::specialJunk1] =
+ serverSpecialJunk1 =
serverProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
- serverSpecialJunk[config_key::specialJunk2] =
+ serverSpecialJunk2 =
serverProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
- serverSpecialJunk[config_key::specialJunk3] =
+ serverSpecialJunk3 =
serverProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
- serverSpecialJunk[config_key::specialJunk4] =
+ serverSpecialJunk4 =
serverProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
- serverSpecialJunk[config_key::specialJunk5] =
+ serverSpecialJunk5 =
serverProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
- serverControlledJunk[config_key::controlledJunk1] =
+ serverControlledJunk1 =
serverProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
- serverControlledJunk[config_key::controlledJunk2] =
+ serverControlledJunk2 =
serverProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
- serverControlledJunk[config_key::controlledJunk3] =
+ serverControlledJunk3 =
serverProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
serverSpecialHandshakeTimeout = serverProtocolConfig.value(config_key::specialHandshakeTimeout)
.toString(protocols::awg::defaultSpecialHandshakeTimeout);
@@ -352,7 +353,10 @@ bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const
|| serverResponsePacketMagicHeader != other.serverResponsePacketMagicHeader
|| serverUnderloadPacketMagicHeader != other.serverUnderloadPacketMagicHeader
|| serverTransportPacketMagicHeader != other.serverTransportPacketMagicHeader
- || serverSpecialJunk != other.serverSpecialJunk || serverControlledJunk != other.serverControlledJunk
+ || serverSpecialJunk1 != other.serverSpecialJunk1 || serverSpecialJunk2 != other.serverSpecialJunk2
+ || serverSpecialJunk3 != other.serverSpecialJunk3 || serverSpecialJunk4 != other.serverSpecialJunk4
+ || serverSpecialJunk5 != other.serverSpecialJunk5 || serverControlledJunk1 != other.serverControlledJunk1
+ || serverControlledJunk2 != other.serverControlledJunk2 || serverControlledJunk3 != other.serverControlledJunk3
|| serverSpecialHandshakeTimeout != other.serverSpecialHandshakeTimeout) {
return false;
}
diff --git a/client/ui/models/protocols/awgConfigModel.h b/client/ui/models/protocols/awgConfigModel.h
index 50daf765..5c5953b6 100644
--- a/client/ui/models/protocols/awgConfigModel.h
+++ b/client/ui/models/protocols/awgConfigModel.h
@@ -33,13 +33,18 @@ struct AwgConfig
QString serverUnderloadPacketMagicHeader;
QString serverTransportPacketMagicHeader;
- QMap serverSpecialJunk;
- QMap serverControlledJunk;
+ QString serverSpecialJunk1;
+ QString serverSpecialJunk2;
+ QString serverSpecialJunk3;
+ QString serverSpecialJunk4;
+ QString serverSpecialJunk5;
+ QString serverControlledJunk1;
+ QString serverControlledJunk2;
+ QString serverControlledJunk3;
QString serverSpecialHandshakeTimeout;
bool hasEqualServerSettings(const AwgConfig &other) const;
bool hasEqualClientSettings(const AwgConfig &other) const;
-
};
class AwgConfigModel : public QAbstractListModel
@@ -65,6 +70,7 @@ public:
ServerResponsePacketMagicHeaderRole,
ServerUnderloadPacketMagicHeaderRole,
ServerTransportPacketMagicHeaderRole,
+
ServerSpecialJunk1Role,
ServerSpecialJunk2Role,
ServerSpecialJunk3Role,
diff --git a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
index fa818ab6..7e2c5feb 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
@@ -317,121 +317,121 @@ PageType {
}
TextFieldWithHeaderType {
- id: i1JunkPacketTextField
+ id: specialJunk1TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I1 - First special junk packet")
- textField.text: serverSpecialJunk["I1"]
+ textField.text: serverSpecialJunk1
textField.onEditingFinished: {
- if (textField.text !== serverI1JunkPacket) {
- serverI1JunkPacket = textField.text
+ if (textField.text !== serverSpecialJunk1) {
+ serverSpecialJunk1 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: i2JunkPacketTextField
+ id: specialJunk2TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I2 - Second special junk packet")
- textField.text: serverSpecialJunk["I2"]
+ textField.text: serverSpecialJunk2
textField.onEditingFinished: {
- if (textField.text !== serverI2JunkPacket) {
- serverI2JunkPacket = textField.text
+ if (textField.text !== serverSpecialJunk2) {
+ serverSpecialJunk2 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: i3JunkPacketTextField
+ id: specialJunk3TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I3 - Third special junk packet")
- textField.text: serverSpecialJunk["I3"]
+ textField.text: serverSpecialJunk3
textField.onEditingFinished: {
- if (textField.text !== serverI3JunkPacket) {
- serverI3JunkPacket = textField.text
+ if (textField.text !== serverSpecialJunk3) {
+ serverSpecialJunk3 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: i4JunkPacketTextField
+ id: specialJunk4TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I4 - Fourth special junk packet")
- textField.text: serverSpecialJunk["I4"]
+ textField.text: serverSpecialJunk4
textField.onEditingFinished: {
- if (textField.text !== serverI4JunkPacket) {
- serverI4JunkPacket = textField.text
+ if (textField.text !== serverSpecialJunk4) {
+ serverSpecialJunk4 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: i5JunkPacketTextField
+ id: specialJunk5TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("I5 - Fifth special junk packet")
- textField.text: serverSpecialJunk["I5"]
+ textField.text: serverSpecialJunk5
textField.onEditingFinished: {
- if (textField.text !== serverI5JunkPacket) {
- serverI5JunkPacket = textField.text
+ if (textField.text !== serverSpecialJunk5 ) {
+ serverSpecialJunk5 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: j1JunkPacketTextField
+ id: controlledJunk1TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("J1 - First controlled junk packet")
- textField.text: serverControlledJunk["J1"]
+ textField.text: serverControlledJunk1
textField.onEditingFinished: {
- if (textField.text !== serverJ1JunkPacket) {
- serverJ1JunkPacket = textField.text
+ if (textField.text !== serverControlledJunk1) {
+ serverControlledJunk1 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: j2JunkPacketTextField
+ id: controlledJunk2TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("J2 - Second controlled junk packet")
- textField.text: serverControlledJunk[J2]
+ textField.text: serverControlledJunk2
textField.onEditingFinished: {
- if (textField.text !== serverJ2JunkPacket) {
- serverJ2JunkPacket = textField.text
+ if (textField.text !== serverControlledJunk2) {
+ serverControlledJunk2 = textField.text
}
}
}
TextFieldWithHeaderType {
- id: j3JunkPacketTextField
+ id: controlledJunk3TextField
Layout.fillWidth: true
Layout.topMargin: 16
headerText: qsTr("J3 - Third controlled junk packet")
- textField.text: serverControlledJunk[J3]
+ textField.text: serverControlledJunk3
textField.onEditingFinished: {
- if (textField.text !== serverJ3JunkPacket) {
- serverJ3JunkPacket = textField.text
+ if (textField.text !== serverControlledJunk3) {
+ serverControlledJunk3 = textField.text
}
}
}
@@ -442,12 +442,12 @@ PageType {
Layout.topMargin: 16
headerText: qsTr("Itime - Special handshake timeout")
- textField.text: serverSpeciaHandshakeIntervalTime
+ textField.text: serverSpecialHandshakeTimeout
textField.validator: IntValidator { bottom: 0 }
textField.onEditingFinished: {
- if (textField.text !== serverSepcialHandshakeTimeout) {
- serverSepcialHandshakeTimeout = textField.text
+ if (textField.text !== serverSpecialHandshakeTimeout) {
+ serverSpecialHandshakeTimeout = textField.text
}
}
}
@@ -468,14 +468,14 @@ PageType {
junkPacketMaxSizeTextField.errorText === "" &&
junkPacketMinSizeTextField.errorText === "" &&
junkPacketCountTextField.errorText === "" &&
- i1JunkPacketTextField.errorText === "" &&
- i2JunkPacketTextField.errorText === "" &&
- i3JunkPacketTextField.errorText === "" &&
- i4JunkPacketTextField.errorText === "" &&
- i5JunkPacketTextField.errorText === "" &&
- j1JunkPacketTextField.errorText === "" &&
- j2JunkPacketTextField.errorText === "" &&
- j3JunkPacketTextField.errorText === "" &&
+ specialJunk1TextField.errorText === "" &&
+ specialJunk2TextField.errorText === "" &&
+ specialJunk3TextField.errorText === "" &&
+ specialJunk4TextField.errorText === "" &&
+ specialJunk5TextField.errorText === "" &&
+ controlledJunk1TextField.errorText === "" &&
+ controlledJunk2TextField.errorText === "" &&
+ controlledJunk3TextField.errorText === "" &&
iTimeTextField.errorText === "" &&
portTextField.errorText === "" &&
vpnAddressSubnetTextField.errorText === ""
From cee6befa782ad3eacd95fed1e342d644ffaa0f98 Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Sat, 21 Jun 2025 18:48:35 +0200
Subject: [PATCH 4/9] chore: fix android impl & update 3rd-prebuilt branch
---
.gitmodules | 1 +
client/3rd-prebuilt | 2 +-
.../vpn/protocol/wireguard/Wireguard.kt | 2 +-
client/translations/amneziavpn_ar_EG.ts | 131 +++++++++++----
client/translations/amneziavpn_fa_IR.ts | 153 ++++++++++++++---
client/translations/amneziavpn_hi_IN.ts | 149 ++++++++++++++---
client/translations/amneziavpn_my_MM.ts | 131 +++++++++++----
client/translations/amneziavpn_ru_RU.ts | 131 +++++++++++----
client/translations/amneziavpn_uk_UA.ts | 149 ++++++++++++++---
client/translations/amneziavpn_ur_PK.ts | 149 ++++++++++++++---
client/translations/amneziavpn_zh_CN.ts | 155 +++++++++++++++---
client/ui/controllers/installController.cpp | 31 ++--
12 files changed, 949 insertions(+), 235 deletions(-)
diff --git a/.gitmodules b/.gitmodules
index decab9b7..90edb582 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,6 +7,7 @@
[submodule "client/3rd-prebuilt"]
path = client/3rd-prebuilt
url = https://github.com/amnezia-vpn/3rd-prebuilt
+ branch = feature/special-handshake
[submodule "client/3rd/amneziawg-apple"]
path = client/3rd/amneziawg-apple
url = https://github.com/amnezia-vpn/amneziawg-apple
diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt
index 0f3748ef..82b71216 160000
--- a/client/3rd-prebuilt
+++ b/client/3rd-prebuilt
@@ -1 +1 @@
-Subproject commit 0f3748efd7cc04e0c914304b68931f925bed1259
+Subproject commit 82b71216989a3a398c89050950ee4377fec1d0e5
diff --git a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt
index 32f15908..bf3a525c 100644
--- a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt
+++ b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt
@@ -132,7 +132,7 @@ open class Wireguard : Protocol() {
configData.optStringOrNull("J1")?.let { setJ1(it.toString()) }
configData.optStringOrNull("J2")?.let { setJ2(it.toString()) }
configData.optStringOrNull("J3")?.let { setJ3(it.toString()) }
- configData.optStringOrNull("Itime")?.let { setItime(it.Int()) }
+ configData.optStringOrNull("Itime")?.let { setItime(it.toInt()) }
}
private fun start(config: WireguardConfig, vpnBuilder: Builder, protect: (Int) -> Boolean) {
diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts
index 02a08c96..19306a4c 100644
--- a/client/translations/amneziavpn_ar_EG.ts
+++ b/client/translations/amneziavpn_ar_EG.ts
@@ -502,24 +502,24 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 تم التثبيت بنجاح.
-
+ %1 is already installed on the server. %1 بالفعل مٌثبت علي الخادم.
-
+
Added containers that were already installed on the server
تمت إضافة الحاويات التي كانت مٌثبتة بالفعل علي الخادم
-
+
Already installed containers were found on the server. All installed containers have been added to the application
@@ -527,47 +527,47 @@ Already installed containers were found on the server. All installed containers
تمت إضافة جميع الحاويات المٌثبتة إلي التطبيق
-
+ Settings updated successfullyتم تحديث الاعدادات بنجاح
-
+ Server '%1' was rebootedتمت إعادة تشغيل الخادم%1
-
+ Server '%1' was removedتمت إزالة الخادم '%1'
-
+ All containers from server '%1' have been removedقد تم حذفها '%1' جميع الحاويات من الخادم
-
+ %1 has been removed from the server '%2'%1 تم حدف '%2' اسم الخادم
-
+ Api config removedتم حذف تكوين Api
-
+ %1 cached profile clearedتم مسح ملف تعريف %1 المخزن مؤقتًا
-
+ Please login as the userمن فضلك قم بتسجيل الدخول كمستخدم
-
+ Server added successfullyتمت إضافة الخادم بنجاح
@@ -797,84 +797,149 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- اعدادات AmneziaWG
+ اعدادات AmneziaWG
+ Port
- منفذ
+ منفذ
+ All users with whom you shared a connection with will no longer be able to connect to it.
- جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.
+ جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.
+ Save
- احفظ
+ احفظ
+ VPN address subnet
- الشبكة الفرعية لعنوان VPN
+ الشبكة الفرعية لعنوان VPN
+ Jc - Junk packet count
- Jc - عدد الحزم غير المرغوب فيها
+ Jc - عدد الحزم غير المرغوب فيها
+ Jmin - Junk packet minimum size
- Jmin - الحجم الادني للحزم الغير مرغوب فيها
+ Jmin - الحجم الادني للحزم الغير مرغوب فيها
+ Jmax - Junk packet maximum size
- Jmax - الحجم الاقصي للحزم الغير مرغوب فيها
+ Jmax - الحجم الاقصي للحزم الغير مرغوب فيها
+ S1 - Init packet junk size
- S1 - حجم حزمة البيانات العشوائية الأولية
+ S1 - حجم حزمة البيانات العشوائية الأولية
+ S2 - Response packet junk size
- S2 - حجم حزمة الاستجابة غير المرغوب فيها
+ S2 - حجم حزمة الاستجابة غير المرغوب فيها
+ H1 - Init packet magic header
- H1 - حزمة رأس سحرية مبدئية
+ H1 - حزمة رأس سحرية مبدئية
+ H2 - Response packet magic header
- H2 - رأس حزمة الاستجابة السحرية
+ H2 - رأس حزمة الاستجابة السحرية
+ H4 - Transport packet magic header
- H4 - رأس حزمة النقل السحرية
+ H4 - رأس حزمة النقل السحرية
+ H3 - Underload packet magic header
- H3 - رأس حزمة السحر غير المحمل
+ H3 - رأس حزمة السحر غير المحمل
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be unique
- يجب أن تكون قيم الحقول H1-H4 فريدة
+ يجب أن تكون قيم الحقول H1-H4 فريدة
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)
+ يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)
+ Save settings?
- احفظ الإعدادات؟
+ احفظ الإعدادات؟
+ Continue
- واصل
+ واصل
+ Cancel
- إلغاء
+ إلغاء
+ Unable change settings while there is an active connection
- لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
+ لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
diff --git a/client/translations/amneziavpn_fa_IR.ts b/client/translations/amneziavpn_fa_IR.ts
index 80bc3a58..aa3463e5 100644
--- a/client/translations/amneziavpn_fa_IR.ts
+++ b/client/translations/amneziavpn_fa_IR.ts
@@ -507,71 +507,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 با موفقیت نصب شد.
-
+ %1 is already installed on the server. %1 در حال حاضر بر روی سرور نصب شده است.
-
+
Added containers that were already installed on the server
کانتینرهایی که بر روی سرور موجود بودند اضافه شدند
-
+
Already installed containers were found on the server. All installed containers have been added to the application
کانتینرهای نصب شده بر روی سرور شناسایی شدند. تمام کانتینترهای نصب شده به نرم افزار اضافه شدند
-
+ Settings updated successfullyتنظیمات با موفقیت بهروزرسانی شدند
-
+ Server '%1' was rebootedسرور %1 راه اندازی مجدد شد
-
+ Server '%1' was removedسرور %1 حذف شد
-
+ All containers from server '%1' have been removedتمام کانتینترها از سرور %1 حذف شدند
-
+ %1 has been removed from the server '%2'%1 از سرور %2 حذف شد
-
+ Api config removedپیکربندی API حذف شد.
-
+ %1 cached profile cleared%1 پروفایل ذخیره شده پاک شد.
-
+ Please login as the userلطفا به عنوان کاربر وارد شوید
-
+ Server added successfullyسرور با موفقیت اضافه شد
@@ -801,12 +801,14 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- تنظیمات AmneziaWG
+ تنظیمات AmneziaWG
+ Port
- پورت
+ پورتRemove AmneziaWG
@@ -817,32 +819,139 @@ Thank you for staying with us!
آیا میخواهید AmneziaWG از سرور حذف شود؟
+ All users with whom you shared a connection with will no longer be able to connect to it.
- همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.
+ همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.
+ Save
- ذخیره
+ ذخیره
+ VPN address subnet
- زیرشبکه آدرس VPN
+ زیرشبکه آدرس VPN
+
+ Jc - Junk packet count
+
+
+
+
+ Jmin - Junk packet minimum size
+
+
+
+
+ Jmax - Junk packet maximum size
+
+
+
+
+ S1 - Init packet junk size
+
+
+
+
+ S2 - Response packet junk size
+
+
+
+
+ H1 - Init packet magic header
+
+
+
+
+ H2 - Response packet magic header
+
+
+
+
+ H3 - Underload packet magic header
+
+
+
+
+ H4 - Transport packet magic header
+
+
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+
+ The values of the H1-H4 fields must be unique
+
+
+
+
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
+
+
+
+ Save settings?
- تنظیمات را ذخیره کن?
+ تنظیمات را ذخیره کن?
+ Continue
- ادامه
+ ادامه
+ Cancel
- کنسل
+ کنسل
+ Unable change settings while there is an active connection
- نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
+ نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
diff --git a/client/translations/amneziavpn_hi_IN.ts b/client/translations/amneziavpn_hi_IN.ts
index 3e4b1b25..69bcc242 100644
--- a/client/translations/amneziavpn_hi_IN.ts
+++ b/client/translations/amneziavpn_hi_IN.ts
@@ -483,71 +483,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 सफलतापूर्वक स्थापित हुआ.
-
+ %1 is already installed on the server. %1 पहले से ही सर्वर पर स्थापित है.
-
+
Added containers that were already installed on the server
सर्वर पर पहले से स्थापित कंटेनर जोड़े गए
-
+
Already installed containers were found on the server. All installed containers have been added to the application
सर्वर पर पहले से स्थापित कंटेनर पाए गए। सभी स्थापित कंटेनरों को एप्लिकेशन में जोड़ दिया गया है
-
+ Settings updated successfullyसेटिंग्स सफलतापूर्वक अपडेट हो गईं
-
+ Server '%1' was rebootedसर्वर '%1' रीबूट किया गया था
-
+ Server '%1' was removedसर्वर '%1' रीबूट किया गया था
-
+ All containers from server '%1' have been removedसर्वर '%1' से सभी कंटेनर हटा दिए गए हैं
-
+ %1 has been removed from the server '%2'%1 को सर्वर '%2' से हटा दिया गया है
-
+ Api config removed
-
+ %1 cached profile cleared%1 कैश्ड प्रोफ़ाइल साफ़ की गई
-
+ Please login as the userकृपया उपयोगकर्ता के रूप में लॉगिन करें
-
+ Server added successfullyसर्वर सफलतापूर्वक जोड़ा गया
@@ -765,52 +765,153 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- Amneziaडब्ल्यूजी सेटिंग्स
+ Amneziaडब्ल्यूजी सेटिंग्स
+ VPN address subnet
- VPN एड्रेस सबनेट
+ VPN एड्रेस सबनेट
+ Port
- पोर्ट
+ पोर्टMTUएमटीयू
+ Save
- सहेजें
+ सहेजें
+ The values of the H1-H4 fields must be unique
- H1-H4 फ़ील्ड का मान अद्वितीय होना चाहिए
+ H1-H4 फ़ील्ड का मान अद्वितीय होना चाहिए
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- फ़ील्ड S1 + संदेश आरंभ आकार (148) का मान S2 + संदेश प्रतिक्रिया आकार (92) के बराबर नहीं होना चाहिए
+ फ़ील्ड S1 + संदेश आरंभ आकार (148) का मान S2 + संदेश प्रतिक्रिया आकार (92) के बराबर नहीं होना चाहिए
+ Save settings?
- सेटिंग्स सेव करें?
+ सेटिंग्स सेव करें?
+ All users with whom you shared a connection with will no longer be able to connect to it.
- वे सभी उपयोगकर्ता जिनके साथ आपने कनेक्शन साझा किया था, वे अब इससे कनेक्ट नहीं हो पाएंगे.
+ वे सभी उपयोगकर्ता जिनके साथ आपने कनेक्शन साझा किया था, वे अब इससे कनेक्ट नहीं हो पाएंगे.
+ Unable change settings while there is an active connection
- सक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
+ सक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
+ Continue
- जारी रखना
+ जारी रखना
+
+ Jc - Junk packet count
+
+
+
+
+ Jmin - Junk packet minimum size
+
+
+
+
+ Jmax - Junk packet maximum size
+
+
+
+
+ S1 - Init packet junk size
+
+
+
+
+ S2 - Response packet junk size
+
+
+
+
+ H1 - Init packet magic header
+
+
+
+
+ H2 - Response packet magic header
+
+
+
+
+ H3 - Underload packet magic header
+
+
+
+
+ H4 - Transport packet magic header
+
+
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Cancel
- रद्द करना
+ रद्द करना
diff --git a/client/translations/amneziavpn_my_MM.ts b/client/translations/amneziavpn_my_MM.ts
index 87e4c442..fe40caae 100644
--- a/client/translations/amneziavpn_my_MM.ts
+++ b/client/translations/amneziavpn_my_MM.ts
@@ -503,71 +503,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 ကို အောင်မြင်စွာ ထည့်သွင်းပြီးပါပြီ.
-
+ %1 is already installed on the server. %1 ကို ဆာဗာတွင် ထည့်သွင်းပြီးဖြစ်သည်.
-
+
Added containers that were already installed on the server
ဆာဗာတွင် ထည့်သွင်းပြီးသား ကွန်တိန်နာများကို ပေါင်းထည့်ပြီးပါပြီ။
-
+
Already installed containers were found on the server. All installed containers have been added to the application
ထည့်သွင်းပြီးသား ကွန်တိန်နာများကို ဆာဗာပေါ်တွင် တွေ့ရှိခဲ့သည်။ ထည့်သွင်းထားသည့် ကွန်တိန်နာအားလုံးကို အပလီကေးရှင်းထဲသို့ ပေါင်းထည့်ပြီးပါပြီ။
-
+ Settings updated successfullyဆက်တင်များကို အောင်မြင်စွာ အပ်ဒိတ်လုပ်ပြီးပါပြီ။
-
+ Server '%1' was rebootedဆာဗာ '%1' ကို ပြန်လည်စတင်ခဲ့သည်။
-
+ Server '%1' was removedဆာဗာ '%1' ကို ဖယ်ရှားခဲ့သည်။
-
+ All containers from server '%1' have been removedဆာဗာ '%1' မှ ကွန်တိန်နာအားလုံးကို ဖယ်ရှားလိုက်ပါပြီ။
-
+ %1 has been removed from the server '%2'%1 ကို ဆာဗာ '%2' မှ ဖယ်ရှားလိုက်ပါပြီ
-
+ Api config removedApi config ကိုဖယ်ရှားလိုက်သည်
-
+ %1 cached profile clearedကက်ရှ်လုပ်ထားတဲ့ ပရိုဖိုင် %1 ခုကို ရှင်းပြီးပါပြီ
-
+ Please login as the userအသုံးပြုသူအဖြစ် log in ဝင်ရောက်ပါ
-
+ Server added successfullyဆာဗာကို အောင်မြင်စွာ ထည့်သွင်းပြီးပါပြီ
@@ -797,88 +797,153 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- AmneziaWG ဆက်တင်များ
+ AmneziaWG ဆက်တင်များ
+ Port
- Port
+ PortMTUMTU
+ All users with whom you shared a connection with will no longer be able to connect to it.
- သင်နှင့်အတူချိတ်ဆက်မှုတစ်ခုကို မျှဝေထားသည့် အသုံးပြုသူအားလုံး ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
+ သင်နှင့်အတူချိတ်ဆက်မှုတစ်ခုကို မျှဝေထားသည့် အသုံးပြုသူအားလုံး ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
+ Save
- သိမ်းဆည်းမည်
+ သိမ်းဆည်းမည်
+ VPN address subnet
- VPN လိပ်စာ ကွန်ရက်ခွဲ
+ VPN လိပ်စာ ကွန်ရက်ခွဲ
+ Jc - Junk packet count
- Jc - Junk packet အရေအတွက်
+ Jc - Junk packet အရေအတွက်
+ Jmin - Junk packet minimum size
- Jmin - Junk packet အသေးငယ်ဆုံးလက်ခံနိုင်မှုအရွယ်အစား
+ Jmin - Junk packet အသေးငယ်ဆုံးလက်ခံနိုင်မှုအရွယ်အစား
+ Jmax - Junk packet maximum size
- Jmax - Junk packet အကြီးဆုံးလက်ခံနိုင်မှုအရွယ်အစား
+ Jmax - Junk packet အကြီးဆုံးလက်ခံနိုင်မှုအရွယ်အစား
+ S1 - Init packet junk size
- S1 - Init packet junk အရွယ်အစား
+ S1 - Init packet junk အရွယ်အစား
+ S2 - Response packet junk size
- S2 - Response packet junk အရွယ်အစား
+ S2 - Response packet junk အရွယ်အစား
+ H1 - Init packet magic header
- H1 - Init packet magic header
+ H1 - Init packet magic header
+ H2 - Response packet magic header
- H2 - Response packet magic header
+ H2 - Response packet magic header
+ H4 - Transport packet magic header
- H4 - Transport packet magic header
+ H4 - Transport packet magic header
+ H3 - Underload packet magic header
- H3 - Underload packet magic header
+ H3 - Underload packet magic header
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be unique
- H1-H4 အကွက်များ၏ တန်ဖိုးများသည် အခြားတန်ဖိုးများနှင့်မတူ တမူထူးခြားနေရပါမည်
+ H1-H4 အကွက်များ၏ တန်ဖိုးများသည် အခြားတန်ဖိုးများနှင့်မတူ တမူထူးခြားနေရပါမည်
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- အကွက် S1 + မက်ဆေ့ချ် စတင်ခြင်း အရွယ်အစား (148) ၏ တန်ဖိုးသည် S2 + မက်ဆေ့ချ် တုံ့ပြန်မှု အရွယ်အစား (92) နှင့် မညီမျှရပါ
+ အကွက် S1 + မက်ဆေ့ချ် စတင်ခြင်း အရွယ်အစား (148) ၏ တန်ဖိုးသည် S2 + မက်ဆေ့ချ် တုံ့ပြန်မှု အရွယ်အစား (92) နှင့် မညီမျှရပါ
+ Save settings?
- ဆက်တင်များကို သိမ်းဆည်းမည်လား?
+ ဆက်တင်များကို သိမ်းဆည်းမည်လား?
+ Continue
- ဆက်လက်လုပ်ဆောင်မည်
+ ဆက်လက်လုပ်ဆောင်မည်
+ Cancel
- ပယ်ဖျက်မည်
+ ပယ်ဖျက်မည်
+ Unable change settings while there is an active connection
- လက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
+ လက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts
index 82719dcf..a1697648 100644
--- a/client/translations/amneziavpn_ru_RU.ts
+++ b/client/translations/amneziavpn_ru_RU.ts
@@ -454,71 +454,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 успешно установлен.
-
+ %1 is already installed on the server. %1 уже установлен на сервер.
-
+
Added containers that were already installed on the server
Добавлены сервисы и протоколы, которые были ранее установлены на сервер
-
+
Already installed containers were found on the server. All installed containers have been added to the application
На сервере обнаружены установленные протоколы и сервисы. Все они были добавлены в приложение
-
+ Settings updated successfullyНастройки успешно обновлены
-
+ Server '%1' was rebootedСервер '%1' был перезагружен
-
+ Server '%1' was removedСервер '%1' был удален
-
+ All containers from server '%1' have been removedВсе протоколы и сервисы были удалены с сервера '%1'
-
+ %1 has been removed from the server '%2'%1 был удален с сервера '%2'
-
+ Api config removedКонфигурация API удалена
-
+ %1 cached profile cleared%1 закэшированный профиль очищен
-
+ Please login as the userПожалуйста, войдите в систему от имени пользователя
-
+ Server added successfullyСервер успешно добавлен
@@ -733,84 +733,149 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- Настройки AmneziaWG
+ Настройки AmneziaWG
+ Port
- Порт
+ Порт
+ All users with whom you shared a connection with will no longer be able to connect to it.
- Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.
+ Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.
+ Save
- Сохранить
+ Сохранить
+ VPN address subnet
- Подсеть VPN-адресов
+ Подсеть VPN-адресов
+ Jc - Junk packet count
- Jc - Junk packet count
+ Jc - Junk packet count
+ Jmin - Junk packet minimum size
- Jmin - Junk packet minimum size
+ Jmin - Junk packet minimum size
+ Jmax - Junk packet maximum size
- Jmax - Junk packet maximum size
+ Jmax - Junk packet maximum size
+ S1 - Init packet junk size
- S1 - Init packet junk size
+ S1 - Init packet junk size
+ S2 - Response packet junk size
- S2 - Response packet junk size
+ S2 - Response packet junk size
+ H1 - Init packet magic header
- H1 - Init packet magic header
+ H1 - Init packet magic header
+ H2 - Response packet magic header
- H2 - Response packet magic header
+ H2 - Response packet magic header
+ H4 - Transport packet magic header
- H4 - Transport packet magic header
+ H4 - Transport packet magic header
+ H3 - Underload packet magic header
- H3 - Underload packet magic header
+ H3 - Underload packet magic header
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be unique
- Значения в полях H1-H4 должны быть уникальными
+ Значения в полях H1-H4 должны быть уникальными
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)
+ Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)
+ Save settings?
- Сохранить настройки?
+ Сохранить настройки?
+ Continue
- Продолжить
+ Продолжить
+ Cancel
- Отменить
+ Отменить
+ Unable change settings while there is an active connection
- Невозможно изменить настройки во время активного соединения
+ Невозможно изменить настройки во время активного соединения
diff --git a/client/translations/amneziavpn_uk_UA.ts b/client/translations/amneziavpn_uk_UA.ts
index a39f3095..8b3ad519 100644
--- a/client/translations/amneziavpn_uk_UA.ts
+++ b/client/translations/amneziavpn_uk_UA.ts
@@ -534,70 +534,70 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 встановлено.
-
+ %1 is already installed on the server. %1 вже встановлено на сервері.
-
+
Added containers that were already installed on the serverДодані сервіси і протоколи, які були раніше встановлені на сервері
-
+
Already installed containers were found on the server. All installed containers have been added to the application
На сервері знайдені сервіси та протоколи, всі вони додані в застосунок
-
+ Settings updated successfullyНалаштування оновлено
-
+ Server '%1' was rebootedСервер '%1' перезавантажено
-
+ Server '%1' was removedСервер '%1' був видалений
-
+ All containers from server '%1' have been removedВсі сервіси та протоколи були видалені з сервера '%1'
-
+ %1 has been removed from the server '%2'%1 був видалений з сервера '%2'
-
+ Api config removedКонфігурацію API видалено
-
+ %1 cached profile clearedКешований профіль %1 очищено
-
+ Please login as the userБуль-ласка, увійдіть в систему від імені користувача
-
+ Server added successfullyСервер додано
@@ -827,40 +827,139 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- налаштування AmneziaWG
+ налаштування AmneziaWG
+ VPN address subnet
- VPN address subnet
+ VPN address subnet
+ Port
- Порт
+ Порт
+
+ Jc - Junk packet count
+
+
+
+
+ Jmin - Junk packet minimum size
+
+
+
+
+ Jmax - Junk packet maximum size
+
+
+
+
+ S1 - Init packet junk size
+
+
+
+
+ S2 - Response packet junk size
+
+
+
+
+ H1 - Init packet magic header
+
+
+
+
+ H2 - Response packet magic header
+
+
+
+
+ H3 - Underload packet magic header
+
+
+
+
+ H4 - Transport packet magic header
+
+
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Save
- Зберегти
+ Зберегти
+ The values of the H1-H4 fields must be unique
- Значення полів H1-H4 мають бути унікальними
+ Значення полів H1-H4 мають бути унікальними
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)
+ Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)
+ Save settings?
- Зберегти налаштування?
+ Зберегти налаштування?
+ All users with whom you shared a connection with will no longer be able to connect to it.
- Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.
+ Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.
+ Unable change settings while there is an active connection
- Неможливо змінити налаштування, поки є активне підключення
+ Неможливо змінити налаштування, поки є активне підключенняRemove AmneziaWG
@@ -879,12 +978,14 @@ Thank you for staying with us!
Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.
+ Continue
- Продовжити
+ Продовжити
+ Cancel
- Відмінити
+ ВідмінитиSave and Restart Amnezia
diff --git a/client/translations/amneziavpn_ur_PK.ts b/client/translations/amneziavpn_ur_PK.ts
index 203d64d1..5e723e3c 100644
--- a/client/translations/amneziavpn_ur_PK.ts
+++ b/client/translations/amneziavpn_ur_PK.ts
@@ -481,71 +481,71 @@ Can't be disabled for current server
InstallController
-
+ %1 installed successfully. %1 کامیابی سےنصب.
-
+ %1 is already installed on the server. %1 پہلے ہی سرور پر انسٹال ہے.
-
+
Added containers that were already installed on the server
وہ کنٹینرز شامل کیے گئے جو پہلے سے سرور پر نصب تھے
-
+
Already installed containers were found on the server. All installed containers have been added to the application
سرور پر پہلے سے نصب کنٹینرز پائے گئے۔ تمام نصب کنٹینرز کو ایپلی کیشن میں شامل کر دیا گیا ہے
-
+ Settings updated successfullyترتیب کامیابی کے ساتھ اپ ڈیٹ ہو گئی
-
+ Server '%1' was rebootedسرور %1 دوبارہ چالو کیا گیا تھا
-
+ Server '%1' was removedسرور %1 ہٹا دیا گیا تھا
-
+ All containers from server '%1' have been removedسرور '%1' سے تمام کنٹینرز ہٹا دیے گئے ہیں
-
+ %1 has been removed from the server '%2'سرور '%2' سے %1 ہٹا دیا گیا ہے
-
+ Api config removed
-
+ %1 cached profile cleared%1 کیش کردہ پروفائل ختم کر دی گئی
-
+ Please login as the userبراہ کرم صارف کے طور پر لاگ ان کریں
-
+ Server added successfullyسرور کامیابی سے شامل کیا گیا
@@ -765,52 +765,153 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- امنیزیا وی جی کی ترتیبات
+ امنیزیا وی جی کی ترتیبات
+ Port
- پورٹ
+ پورٹMTUام ٹی یو
+ All users with whom you shared a connection with will no longer be able to connect to it.
- آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔
+ آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔
+ Save
- محفوظ کریں
+ محفوظ کریں
+ VPN address subnet
- وی پی این ایڈریس سب نیٹ
+ وی پی این ایڈریس سب نیٹ
+
+ Jc - Junk packet count
+
+
+
+
+ Jmin - Junk packet minimum size
+
+
+
+
+ Jmax - Junk packet maximum size
+
+
+
+
+ S1 - Init packet junk size
+
+
+
+
+ S2 - Response packet junk size
+
+
+
+
+ H1 - Init packet magic header
+
+
+
+
+ H2 - Response packet magic header
+
+
+
+
+ H3 - Underload packet magic header
+
+
+
+
+ H4 - Transport packet magic header
+
+
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ The values of the H1-H4 fields must be unique
- H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے
+ H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
- S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے
+ S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے
+ Save settings?
- ترتیبات محفوظ کریں?
+ ترتیبات محفوظ کریں?
+ Continue
- جاری رکھیں
+ جاری رکھیں
+ Cancel
- منسوخ کریں
+ منسوخ کریں
+ Unable change settings while there is an active connection
- جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
+ جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index cef3e617..8ddd4f54 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -482,60 +482,60 @@ Can't be disabled for current server
已安装在服务器上
-
+ %1 installed successfully. %1 安装成功。
-
+ %1 is already installed on the server. 服务器上已经安装 %1。
-
+
Added containers that were already installed on the server添加已安装在服务器上的容器
-
+
Already installed containers were found on the server. All installed containers have been added to the application
在服务上发现已经安装协议并添加至应用
-
+ Settings updated successfully配置更新成功
-
+ Server '%1' was rebooted服务器 '%1' 已重新启动
-
+ Server '%1' was removed已移除服务器 '%1'
-
+ All containers from server '%1' have been removed服务器 '%1' 的所有容器已移除
-
+ %1 has been removed from the server '%2'%1 已从服务器 '%2' 上移除
-
+ Api config removed
-
+ %1 cached profile cleared
@@ -556,12 +556,12 @@ Already installed containers were found on the server. All installed containers
协议已从
-
+ Please login as the user请以用户身份登录
-
+ Server added successfully增加服务器成功
@@ -779,12 +779,14 @@ Thank you for staying with us!
PageProtocolAwgSettings
+ AmneziaWG settings
- AmneziaWG 配置
+ AmneziaWG 配置
+ Port
- 端口
+ 端口Remove AmneziaWG
@@ -795,28 +797,139 @@ Thank you for staying with us!
从服务上移除AmneziaWG?
+ All users with whom you shared a connection with will no longer be able to connect to it.
- 与您共享连接的所有用户将无法再连接到该连接。
+ 与您共享连接的所有用户将无法再连接到该连接。
+ Save
- 保存
+ 保存
+ VPN address subnet
- VPN 地址子网
+ VPN 地址子网
+
+ Jc - Junk packet count
+
+
+
+
+ Jmin - Junk packet minimum size
+
+
+
+
+ Jmax - Junk packet maximum size
+
+
+
+
+ S1 - Init packet junk size
+
+
+
+
+ S2 - Response packet junk size
+
+
+
+
+ H1 - Init packet magic header
+
+
+
+
+ H2 - Response packet magic header
+
+
+
+
+ H3 - Underload packet magic header
+
+
+
+
+ H4 - Transport packet magic header
+
+
+
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+
+ The values of the H1-H4 fields must be unique
+
+
+
+
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
+
+
+
+ Save settings?
- 保存设置?
+ 保存设置?
+ Continue
- 继续
+ 继续
+ Cancel
- 取消
+ 取消
+
+
+
+ Unable change settings while there is an active connection
+
diff --git a/client/ui/controllers/installController.cpp b/client/ui/controllers/installController.cpp
index 775390be..a673af8a 100755
--- a/client/ui/controllers/installController.cpp
+++ b/client/ui/controllers/installController.cpp
@@ -99,16 +99,6 @@ void InstallController::install(DockerContainer container, int port, TransportPr
QString underloadPacketMagicHeader = headersValueList.at(2);
QString transportPacketMagicHeader = headersValueList.at(3);
- const QString specialJunk1 = headersValueList.at(4);
- const QString specialJunk2 = headersValueList.at(5);
- const QString specialJunk3 = headersValueList.at(6);
- const QString specialJunk4 = headersValueList.at(7);
- const QString specialJunk5 = headersValueList.at(8);
- const QString controlledJunk1 = headersValueList.at(9);
- const QString controlledJunk2 = headersValueList.at(10);
- const QString controlledJunk3 = headersValueList.at(11);
- const QString specialHandshakeTimeout = headersValueList.at(12);
-
containerConfig[config_key::junkPacketCount] = junkPacketCount;
containerConfig[config_key::junkPacketMinSize] = junkPacketMinSize;
containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
@@ -118,15 +108,18 @@ void InstallController::install(DockerContainer container, int port, TransportPr
containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader;
containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader;
containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader;
- containerConfig[config_key::specialJunk1] = specialJunk1;
- containerConfig[config_key::specialJunk2] = specialJunk2;
- containerConfig[config_key::specialJunk3] = specialJunk3;
- containerConfig[config_key::specialJunk4] = specialJunk4;
- containerConfig[config_key::specialJunk5] = specialJunk5;
- containerConfig[config_key::controlledJunk1] = controlledJunk1;
- containerConfig[config_key::controlledJunk2] = controlledJunk2;
- containerConfig[config_key::controlledJunk3] = controlledJunk3;
- containerConfig[config_key::specialHandshakeTimeout] = specialHandshakeTimeout;
+
+ // TODO:
+ // containerConfig[config_key::specialJunk1] = specialJunk1;
+ // containerConfig[config_key::specialJunk2] = specialJunk2;
+ // containerConfig[config_key::specialJunk3] = specialJunk3;
+ // containerConfig[config_key::specialJunk4] = specialJunk4;
+ // containerConfig[config_key::specialJunk5] = specialJunk5;
+ // containerConfig[config_key::controlledJunk1] = controlledJunk1;
+ // containerConfig[config_key::controlledJunk2] = controlledJunk2;
+ // containerConfig[config_key::controlledJunk3] = controlledJunk3;
+ // containerConfig[config_key::specialHandshakeTimeout] = specialHandshakeTimeout;
+
} else if (container == DockerContainer::Sftp) {
containerConfig.insert(config_key::userName, protocols::sftp::defaultUserName);
containerConfig.insert(config_key::password, Utils::getRandomString(16));
From d1542d5f2a97075a5de8914c4b812cbe630d7c22 Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Sun, 22 Jun 2025 16:43:18 +0200
Subject: [PATCH 5/9] chore: trigger build with windows build
---
client/server_scripts/awg/Dockerfile | 1 +
1 file changed, 1 insertion(+)
diff --git a/client/server_scripts/awg/Dockerfile b/client/server_scripts/awg/Dockerfile
index 4d87e6a4..f4174d47 100644
--- a/client/server_scripts/awg/Dockerfile
+++ b/client/server_scripts/awg/Dockerfile
@@ -44,3 +44,4 @@ RUN echo -e " \n\
ENTRYPOINT [ "dumb-init", "/opt/amnezia/start.sh" ]
CMD [ "" ]
+
From 992b6da7c9ad2f7b9d35b8a5990dbc04fc05ab1b Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Tue, 24 Jun 2025 20:13:41 +0200
Subject: [PATCH 6/9] fix: special handshake params to client
---
client/core/controllers/serverController.cpp | 56 +++---
.../server_scripts/awg/configure_container.sh | 9 -
client/server_scripts/awg/template.conf | 9 -
client/translations/amneziavpn_ar_EG.ts | 122 +++++------
client/translations/amneziavpn_fa_IR.ts | 122 +++++------
client/translations/amneziavpn_hi_IN.ts | 122 +++++------
client/translations/amneziavpn_my_MM.ts | 122 +++++------
client/translations/amneziavpn_ru_RU.ts | 122 +++++------
client/translations/amneziavpn_uk_UA.ts | 122 +++++------
client/translations/amneziavpn_ur_PK.ts | 122 +++++------
client/translations/amneziavpn_zh_CN.ts | 122 +++++------
client/ui/models/protocols/awgConfigModel.cpp | 190 +++++++++---------
client/ui/models/protocols/awgConfigModel.h | 38 ++--
.../Pages2/PageProtocolAwgClientSettings.qml | 137 +++++++++++++
.../ui/qml/Pages2/PageProtocolAwgSettings.qml | 153 +-------------
15 files changed, 779 insertions(+), 789 deletions(-)
diff --git a/client/core/controllers/serverController.cpp b/client/core/controllers/serverController.cpp
index 0f88e370..1b661b6e 100644
--- a/client/core/controllers/serverController.cpp
+++ b/client/core/controllers/serverController.cpp
@@ -367,25 +367,25 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c
|| (oldProtoConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader)
!= newProtoConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader))
|| (oldProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader))
- != newProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)
- || (oldProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1))
- != newProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1)
- || (oldProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2))
- != newProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2)
- || (oldProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3))
- != newProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3)
- || (oldProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4))
- != newProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4)
- || (oldProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5))
- != newProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5)
- || (oldProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1))
- != newProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1)
- || (oldProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2))
- != newProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2)
- || (oldProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3))
- != newProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3)
- || (oldProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout))
- != newProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout))
+ != newProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader))
+ // || (oldProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1))
+ // != newProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1)
+ // || (oldProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2))
+ // != newProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2)
+ // || (oldProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3))
+ // != newProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3)
+ // || (oldProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4))
+ // != newProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4)
+ // || (oldProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5))
+ // != newProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5)
+ // || (oldProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1))
+ // != newProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1)
+ // || (oldProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2))
+ // != newProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2)
+ // || (oldProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3))
+ // != newProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3)
+ // || (oldProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout))
+ // != newProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout))
return true;
}
@@ -657,15 +657,15 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).toString() } });
vars.append({ { "$UNDERLOAD_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader).toString() } });
vars.append({ { "$TRANSPORT_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::transportPacketMagicHeader).toString() } });
- vars.append({ { "$SPECIAL_JUNK_1", amneziaWireguarConfig.value(config_key::specialJunk1).toString() } });
- vars.append({ { "$SPECIAL_JUNK_2", amneziaWireguarConfig.value(config_key::specialJunk2).toString() } });
- vars.append({ { "$SPECIAL_JUNK_3", amneziaWireguarConfig.value(config_key::specialJunk3).toString() } });
- vars.append({ { "$SPECIAL_JUNK_4", amneziaWireguarConfig.value(config_key::specialJunk4).toString() } });
- vars.append({ { "$SPECIAL_JUNK_5", amneziaWireguarConfig.value(config_key::specialJunk5).toString() } });
- vars.append({ { "$CONTROLLED_JUNK_1", amneziaWireguarConfig.value(config_key::controlledJunk1).toString() } });
- vars.append({ { "$CONTROLLED_JUNK_2", amneziaWireguarConfig.value(config_key::controlledJunk2).toString() } });
- vars.append({ { "$CONTROLLED_JUNK_3", amneziaWireguarConfig.value(config_key::controlledJunk3).toString() } });
- vars.append({ { "$SPECIAL_HANDSHAKE_TIMEOUT", amneziaWireguarConfig.value(config_key::specialHandshakeTimeout).toString() } });
+ // vars.append({ { "$SPECIAL_JUNK_1", amneziaWireguarConfig.value(config_key::specialJunk1).toString() } });
+ // vars.append({ { "$SPECIAL_JUNK_2", amneziaWireguarConfig.value(config_key::specialJunk2).toString() } });
+ // vars.append({ { "$SPECIAL_JUNK_3", amneziaWireguarConfig.value(config_key::specialJunk3).toString() } });
+ // vars.append({ { "$SPECIAL_JUNK_4", amneziaWireguarConfig.value(config_key::specialJunk4).toString() } });
+ // vars.append({ { "$SPECIAL_JUNK_5", amneziaWireguarConfig.value(config_key::specialJunk5).toString() } });
+ // vars.append({ { "$CONTROLLED_JUNK_1", amneziaWireguarConfig.value(config_key::controlledJunk1).toString() } });
+ // vars.append({ { "$CONTROLLED_JUNK_2", amneziaWireguarConfig.value(config_key::controlledJunk2).toString() } });
+ // vars.append({ { "$CONTROLLED_JUNK_3", amneziaWireguarConfig.value(config_key::controlledJunk3).toString() } });
+ // vars.append({ { "$SPECIAL_HANDSHAKE_TIMEOUT", amneziaWireguarConfig.value(config_key::specialHandshakeTimeout).toString() } });
// Socks5 proxy vars
vars.append({ { "$SOCKS5_PROXY_PORT", socks5ProxyConfig.value(config_key::port).toString(protocols::socks5Proxy::defaultPort) } });
diff --git a/client/server_scripts/awg/configure_container.sh b/client/server_scripts/awg/configure_container.sh
index 2cf61923..e327f080 100644
--- a/client/server_scripts/awg/configure_container.sh
+++ b/client/server_scripts/awg/configure_container.sh
@@ -23,14 +23,5 @@ H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER
H3 = $UNDERLOAD_PACKET_MAGIC_HEADER
H4 = $TRANSPORT_PACKET_MAGIC_HEADER
-I1 = $SPECIAL_JUNK_1
-I2 = $SPECIAL_JUNK_2
-I3 = $SPECIAL_JUNK_3
-I4 = $SPECIAL_JUNK_4
-I5 = $SPECIAL_JUNK_5
-J1 = $CONTROLLED_JUNK_1
-J2 = $CONTROLLED_JUNK_2
-J3 = $CONTROLLED_JUNK_3
-Itime = $SPECIAL_HANDSHAKE_TIMEOUT
EOF
diff --git a/client/server_scripts/awg/template.conf b/client/server_scripts/awg/template.conf
index 9c158a17..79932806 100644
--- a/client/server_scripts/awg/template.conf
+++ b/client/server_scripts/awg/template.conf
@@ -11,15 +11,6 @@ H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER
H3 = $UNDERLOAD_PACKET_MAGIC_HEADER
H4 = $TRANSPORT_PACKET_MAGIC_HEADER
-I1 = $SPECIAL_JUNK_1
-I2 = $SPECIAL_JUNK_2
-I3 = $SPECIAL_JUNK_3
-I4 = $SPECIAL_JUNK_4
-I5 = $SPECIAL_JUNK_5
-J1 = $CONTROLLED_JUNK_1
-J2 = $CONTROLLED_JUNK_2
-J3 = $CONTROLLED_JUNK_3
-Itime = $SPECIAL_HANDSHAKE_TIMEOUT
[Peer]
PublicKey = $WIREGUARD_SERVER_PUBLIC_KEY
diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts
index 19306a4c..8a5af48e 100644
--- a/client/translations/amneziavpn_ar_EG.ts
+++ b/client/translations/amneziavpn_ar_EG.ts
@@ -754,42 +754,87 @@ Thank you for staying with us!
-
+ Server settings
-
+ Portمنفذ
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Saveاحفظ
-
+ Save settings?احفظ الإعدادات؟
-
+ Only the settings for this device will be changed
-
+ Continueواصل
-
+ Cancelإلغاء
-
+ Unable change settings while there is an active connectionلا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
@@ -807,12 +852,12 @@ Thank you for staying with us!
منفذ
-
+ All users with whom you shared a connection with will no longer be able to connect to it.جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.
-
+ Saveاحفظ
@@ -867,77 +912,32 @@ Thank you for staying with us!
H3 - رأس حزمة السحر غير المحمل
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ The values of the H1-H4 fields must be uniqueيجب أن تكون قيم الحقول H1-H4 فريدة
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)
-
+ Save settings?احفظ الإعدادات؟
-
+ Continueواصل
-
+ Cancelإلغاء
-
+ Unable change settings while there is an active connectionلا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
diff --git a/client/translations/amneziavpn_fa_IR.ts b/client/translations/amneziavpn_fa_IR.ts
index aa3463e5..c0f87b55 100644
--- a/client/translations/amneziavpn_fa_IR.ts
+++ b/client/translations/amneziavpn_fa_IR.ts
@@ -758,42 +758,87 @@ Thank you for staying with us!
-
+ Server settings
-
+ Portپورت
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Saveذخیره
-
+ Save settings?تنظیمات را ذخیره کن?
-
+ Only the settings for this device will be changed
-
+ Continue
-
+ Cancel
-
+ Unable change settings while there is an active connectionنمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
@@ -819,12 +864,12 @@ Thank you for staying with us!
آیا میخواهید AmneziaWG از سرور حذف شود؟
-
+ All users with whom you shared a connection with will no longer be able to connect to it.همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.
-
+ Saveذخیره
@@ -879,77 +924,32 @@ Thank you for staying with us!
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ The values of the H1-H4 fields must be unique
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
-
+ Save settings?تنظیمات را ذخیره کن?
-
+ Continueادامه
-
+ Cancelکنسل
-
+ Unable change settings while there is an active connectionنمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
diff --git a/client/translations/amneziavpn_hi_IN.ts b/client/translations/amneziavpn_hi_IN.ts
index 69bcc242..904c15e9 100644
--- a/client/translations/amneziavpn_hi_IN.ts
+++ b/client/translations/amneziavpn_hi_IN.ts
@@ -722,42 +722,87 @@ Thank you for staying with us!
एमटीयू
-
+ Server settings
-
+ Port
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Saveसहेजें
-
+ Save settings?सेटिंग्स सेव करें?
-
+ Only the settings for this device will be changed
-
+ Continueजारी रखना
-
+ Cancelरद्द करना
-
+ Unable change settings while there is an active connectionसक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
@@ -784,37 +829,37 @@ Thank you for staying with us!
एमटीयू
-
+ Saveसहेजें
-
+ The values of the H1-H4 fields must be uniqueH1-H4 फ़ील्ड का मान अद्वितीय होना चाहिए
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)फ़ील्ड S1 + संदेश आरंभ आकार (148) का मान S2 + संदेश प्रतिक्रिया आकार (92) के बराबर नहीं होना चाहिए
-
+ Save settings?सेटिंग्स सेव करें?
-
+ All users with whom you shared a connection with will no longer be able to connect to it.वे सभी उपयोगकर्ता जिनके साथ आपने कनेक्शन साझा किया था, वे अब इससे कनेक्ट नहीं हो पाएंगे.
-
+ Unable change settings while there is an active connectionसक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
-
+ Continueजारी रखना
@@ -864,52 +909,7 @@ Thank you for staying with us!
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ Cancelरद्द करना
diff --git a/client/translations/amneziavpn_my_MM.ts b/client/translations/amneziavpn_my_MM.ts
index fe40caae..da4b37a6 100644
--- a/client/translations/amneziavpn_my_MM.ts
+++ b/client/translations/amneziavpn_my_MM.ts
@@ -754,42 +754,87 @@ Thank you for staying with us!
MTU
-
+ Server settings
-
+ PortPort
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Saveသိမ်းဆည်းမည်
-
+ Save settings?ဆက်တင်များကို သိမ်းဆည်းမည်လား?
-
+ Only the settings for this device will be changed
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ Unable change settings while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
@@ -811,12 +856,12 @@ Thank you for staying with us!
MTU
-
+ All users with whom you shared a connection with will no longer be able to connect to it.သင်နှင့်အတူချိတ်ဆက်မှုတစ်ခုကို မျှဝေထားသည့် အသုံးပြုသူအားလုံး ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
-
+ Saveသိမ်းဆည်းမည်
@@ -871,77 +916,32 @@ Thank you for staying with us!
H3 - Underload packet magic header
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ The values of the H1-H4 fields must be uniqueH1-H4 အကွက်များ၏ တန်ဖိုးများသည် အခြားတန်ဖိုးများနှင့်မတူ တမူထူးခြားနေရပါမည်
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)အကွက် S1 + မက်ဆေ့ချ် စတင်ခြင်း အရွယ်အစား (148) ၏ တန်ဖိုးသည် S2 + မက်ဆေ့ချ် တုံ့ပြန်မှု အရွယ်အစား (92) နှင့် မညီမျှရပါ
-
+ Save settings?ဆက်တင်များကို သိမ်းဆည်းမည်လား?
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ Unable change settings while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts
index a1697648..d250be5f 100644
--- a/client/translations/amneziavpn_ru_RU.ts
+++ b/client/translations/amneziavpn_ru_RU.ts
@@ -690,42 +690,87 @@ Thank you for staying with us!
MTU
-
+ Server settingsНастройки сервера
-
+ PortПорт
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ SaveСохранить
-
+ Save settings?Сохранить настройки?
-
+ Only the settings for this device will be changedБудут изменены настройки только для этого устройства
-
+ ContinueПродолжить
-
+ CancelОтменить
-
+ Unable change settings while there is an active connectionНевозможно изменить настройки во время активного соединения
@@ -743,12 +788,12 @@ Thank you for staying with us!
Порт
-
+ All users with whom you shared a connection with will no longer be able to connect to it.Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.
-
+ SaveСохранить
@@ -803,77 +848,32 @@ Thank you for staying with us!
H3 - Underload packet magic header
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ The values of the H1-H4 fields must be uniqueЗначения в полях H1-H4 должны быть уникальными
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)
-
+ Save settings?Сохранить настройки?
-
+ ContinueПродолжить
-
+ CancelОтменить
-
+ Unable change settings while there is an active connectionНевозможно изменить настройки во время активного соединения
diff --git a/client/translations/amneziavpn_uk_UA.ts b/client/translations/amneziavpn_uk_UA.ts
index 8b3ad519..e96f7455 100644
--- a/client/translations/amneziavpn_uk_UA.ts
+++ b/client/translations/amneziavpn_uk_UA.ts
@@ -784,42 +784,87 @@ Thank you for staying with us!
MTU
-
+ Server settings
-
+ PortПорт
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ SaveЗберегти
-
+ Save settings?Зберегти налаштування?
-
+ Only the settings for this device will be changed
-
+ ContinueПродовжити
-
+ CancelВідмінити
-
+ Unable change settings while there is an active connectionНеможливо змінити налаштування, поки є активне підключення
@@ -887,77 +932,32 @@ Thank you for staying with us!
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ SaveЗберегти
-
+ The values of the H1-H4 fields must be uniqueЗначення полів H1-H4 мають бути унікальними
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)
-
+ Save settings?Зберегти налаштування?
-
+ All users with whom you shared a connection with will no longer be able to connect to it.Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.
-
+ Unable change settings while there is an active connectionНеможливо змінити налаштування, поки є активне підключення
@@ -978,12 +978,12 @@ Thank you for staying with us!
Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.
-
+ ContinueПродовжити
-
+ CancelВідмінити
diff --git a/client/translations/amneziavpn_ur_PK.ts b/client/translations/amneziavpn_ur_PK.ts
index 5e723e3c..2c8be9f6 100644
--- a/client/translations/amneziavpn_ur_PK.ts
+++ b/client/translations/amneziavpn_ur_PK.ts
@@ -722,42 +722,87 @@ Thank you for staying with us!
ام ٹی یو
-
+ Server settings
-
+ Portپورٹ
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Save
-
+ Save settings?ترتیبات محفوظ کریں?
-
+ Only the settings for this device will be changed
-
+ Continue
-
+ Cancel
-
+ Unable change settings while there is an active connectionجب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
@@ -779,12 +824,12 @@ Thank you for staying with us!
ام ٹی یو
-
+ All users with whom you shared a connection with will no longer be able to connect to it.آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔
-
+ Saveمحفوظ کریں
@@ -839,77 +884,32 @@ Thank you for staying with us!
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ The values of the H1-H4 fields must be uniqueH1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے
-
+ Save settings?ترتیبات محفوظ کریں?
-
+ Continueجاری رکھیں
-
+ Cancelمنسوخ کریں
-
+ Unable change settings while there is an active connectionجب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index 8ddd4f54..1e6320bf 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -736,42 +736,87 @@ Thank you for staying with us!
-
+ Server settings
-
+ Port端口
-
+
+ I1 - First special junk packet
+
+
+
+
+ I2 - Second special junk packet
+
+
+
+
+ I3 - Third special junk packet
+
+
+
+
+ I4 - Fourth special junk packet
+
+
+
+
+ I5 - Fifth special junk packet
+
+
+
+
+ J1 - First controlled junk packet
+
+
+
+
+ J2 - Second controlled junk packet
+
+
+
+
+ J3 - Third controlled junk packet
+
+
+
+
+ Itime - Special handshake timeout
+
+
+
+ Save保存
-
+ Save settings?保存设置?
-
+ Only the settings for this device will be changed
-
+ Continue继续
-
+ Cancel取消
-
+ Unable change settings while there is an active connection
@@ -797,12 +842,12 @@ Thank you for staying with us!
从服务上移除AmneziaWG?
-
+ All users with whom you shared a connection with will no longer be able to connect to it.与您共享连接的所有用户将无法再连接到该连接。
-
+ Save保存
@@ -857,77 +902,32 @@ Thank you for staying with us!
-
- I1 - First special junk packet
-
-
-
-
- I2 - Second special junk packet
-
-
-
-
- I3 - Third special junk packet
-
-
-
-
- I4 - Fourth special junk packet
-
-
-
-
- I5 - Fifth special junk packet
-
-
-
-
- J1 - First controlled junk packet
-
-
-
-
- J2 - Second controlled junk packet
-
-
-
-
- J3 - Third controlled junk packet
-
-
-
-
- Itime - Special handshake timeout
-
-
-
-
+ The values of the H1-H4 fields must be unique
-
+ The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)
-
+ Save settings?保存设置?
-
+ Continue继续
-
+ Cancel取消
-
+ Unable change settings while there is an active connection
diff --git a/client/ui/models/protocols/awgConfigModel.cpp b/client/ui/models/protocols/awgConfigModel.cpp
index b2fc595c..a05aa64f 100644
--- a/client/ui/models/protocols/awgConfigModel.cpp
+++ b/client/ui/models/protocols/awgConfigModel.cpp
@@ -34,6 +34,33 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in
case Roles::ClientJunkPacketMaxSizeRole:
m_clientProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString());
break;
+ case Roles::ClientSpecialJunk1Role:
+ m_clientProtocolConfig.insert(config_key::specialJunk1, value.toString());
+ break;
+ case Roles::ClientSpecialJunk2Role:
+ m_clientProtocolConfig.insert(config_key::specialJunk2, value.toString());
+ break;
+ case Roles::ClientSpecialJunk3Role:
+ m_clientProtocolConfig.insert(config_key::specialJunk3, value.toString());
+ break;
+ case Roles::ClientSpecialJunk4Role:
+ m_clientProtocolConfig.insert(config_key::specialJunk4, value.toString());
+ break;
+ case Roles::ClientSpecialJunk5Role:
+ m_clientProtocolConfig.insert(config_key::specialJunk5, value.toString());
+ break;
+ case Roles::ClientControlledJunk1Role:
+ m_clientProtocolConfig.insert(config_key::controlledJunk1, value.toString());
+ break;
+ case Roles::ClientControlledJunk2Role:
+ m_clientProtocolConfig.insert(config_key::controlledJunk2, value.toString());
+ break;
+ case Roles::ClientControlledJunk3Role:
+ m_clientProtocolConfig.insert(config_key::controlledJunk3, value.toString());
+ break;
+ case Roles::ClientSpecialHandshakeTimeoutRole:
+ m_clientProtocolConfig.insert(config_key::specialHandshakeTimeout, value.toString());
+ break;
case Roles::ServerJunkPacketCountRole:
m_serverProtocolConfig.insert(config_key::junkPacketCount, value.toString());
@@ -62,33 +89,6 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in
case Roles::ServerTransportPacketMagicHeaderRole:
m_serverProtocolConfig.insert(config_key::transportPacketMagicHeader, value.toString());
break;
- case Roles::ServerSpecialJunk1Role:
- m_serverProtocolConfig.insert(config_key::specialJunk1, value.toString());
- break;
- case Roles::ServerSpecialJunk2Role:
- m_serverProtocolConfig.insert(config_key::specialJunk2, value.toString());
- break;
- case Roles::ServerSpecialJunk3Role:
- m_serverProtocolConfig.insert(config_key::specialJunk3, value.toString());
- break;
- case Roles::ServerSpecialJunk4Role:
- m_serverProtocolConfig.insert(config_key::specialJunk4, value.toString());
- break;
- case Roles::ServerSpecialJunk5Role:
- m_serverProtocolConfig.insert(config_key::specialJunk5, value.toString());
- break;
- case Roles::ServerControlledJunk1Role:
- m_serverProtocolConfig.insert(config_key::controlledJunk1, value.toString());
- break;
- case Roles::ServerControlledJunk2Role:
- m_serverProtocolConfig.insert(config_key::controlledJunk2, value.toString());
- break;
- case Roles::ServerControlledJunk3Role:
- m_serverProtocolConfig.insert(config_key::controlledJunk3, value.toString());
- break;
- case Roles::ServerSpecialHandshakeTimeoutRole:
- m_serverProtocolConfig.insert(config_key::specialHandshakeTimeout, value.toString());
- break;
}
emit dataChanged(index, index, QList { role });
@@ -109,6 +109,16 @@ QVariant AwgConfigModel::data(const QModelIndex &index, int role) const
case Roles::ClientJunkPacketCountRole: return m_clientProtocolConfig.value(config_key::junkPacketCount);
case Roles::ClientJunkPacketMinSizeRole: return m_clientProtocolConfig.value(config_key::junkPacketMinSize);
case Roles::ClientJunkPacketMaxSizeRole: return m_clientProtocolConfig.value(config_key::junkPacketMaxSize);
+ case Roles::ClientSpecialJunk1Role: return m_clientProtocolConfig.value(config_key::specialJunk1);
+ case Roles::ClientSpecialJunk2Role: return m_clientProtocolConfig.value(config_key::specialJunk2);
+ case Roles::ClientSpecialJunk3Role: return m_clientProtocolConfig.value(config_key::specialJunk3);
+ case Roles::ClientSpecialJunk4Role: return m_clientProtocolConfig.value(config_key::specialJunk4);
+ case Roles::ClientSpecialJunk5Role: return m_clientProtocolConfig.value(config_key::specialJunk5);
+ case Roles::ClientControlledJunk1Role: return m_clientProtocolConfig.value(config_key::controlledJunk1);
+ case Roles::ClientControlledJunk2Role: return m_clientProtocolConfig.value(config_key::controlledJunk2);
+ case Roles::ClientControlledJunk3Role: return m_clientProtocolConfig.value(config_key::controlledJunk3);
+ case Roles::ClientSpecialHandshakeTimeoutRole:
+ return m_clientProtocolConfig.value(config_key::specialHandshakeTimeout);
case Roles::ServerJunkPacketCountRole: return m_serverProtocolConfig.value(config_key::junkPacketCount);
case Roles::ServerJunkPacketMinSizeRole: return m_serverProtocolConfig.value(config_key::junkPacketMinSize);
@@ -123,16 +133,6 @@ QVariant AwgConfigModel::data(const QModelIndex &index, int role) const
return m_serverProtocolConfig.value(config_key::underloadPacketMagicHeader);
case Roles::ServerTransportPacketMagicHeaderRole:
return m_serverProtocolConfig.value(config_key::transportPacketMagicHeader);
- case Roles::ServerSpecialJunk1Role: return m_serverProtocolConfig.value(config_key::specialJunk1);
- case Roles::ServerSpecialJunk2Role: return m_serverProtocolConfig.value(config_key::specialJunk2);
- case Roles::ServerSpecialJunk3Role: return m_serverProtocolConfig.value(config_key::specialJunk3);
- case Roles::ServerSpecialJunk4Role: return m_serverProtocolConfig.value(config_key::specialJunk4);
- case Roles::ServerSpecialJunk5Role: return m_serverProtocolConfig.value(config_key::specialJunk5);
- case Roles::ServerControlledJunk1Role: return m_serverProtocolConfig.value(config_key::controlledJunk1);
- case Roles::ServerControlledJunk2Role: return m_serverProtocolConfig.value(config_key::controlledJunk2);
- case Roles::ServerControlledJunk3Role: return m_serverProtocolConfig.value(config_key::controlledJunk3);
- case Roles::ServerSpecialHandshakeTimeoutRole:
- return m_serverProtocolConfig.value(config_key::specialHandshakeTimeout);
}
return QVariant();
@@ -179,25 +179,6 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
m_serverProtocolConfig[config_key::transportPacketMagicHeader] =
serverProtocolConfig.value(config_key::transportPacketMagicHeader)
.toString(protocols::awg::defaultTransportPacketMagicHeader);
- m_serverProtocolConfig[config_key::specialJunk1] =
- serverProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
- m_serverProtocolConfig[config_key::specialJunk2] =
- serverProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
- m_serverProtocolConfig[config_key::specialJunk3] =
- serverProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
- m_serverProtocolConfig[config_key::specialJunk4] =
- serverProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
- m_serverProtocolConfig[config_key::specialJunk5] =
- serverProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
- m_serverProtocolConfig[config_key::controlledJunk1] =
- serverProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
- m_serverProtocolConfig[config_key::controlledJunk2] =
- serverProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
- m_serverProtocolConfig[config_key::controlledJunk3] =
- serverProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
- m_serverProtocolConfig[config_key::specialHandshakeTimeout] =
- serverProtocolConfig.value(config_key::specialHandshakeTimeout)
- .toString(protocols::awg::defaultSpecialHandshakeTimeout);
auto lastConfig = m_serverProtocolConfig.value(config_key::last_config).toString();
QJsonObject clientProtocolConfig = QJsonDocument::fromJson(lastConfig.toUtf8()).object();
@@ -211,6 +192,25 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
m_clientProtocolConfig[config_key::junkPacketMaxSize] =
clientProtocolConfig.value(config_key::junkPacketMaxSize)
.toString(m_serverProtocolConfig[config_key::junkPacketMaxSize].toString());
+ m_clientProtocolConfig[config_key::specialJunk1] =
+ clientProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
+ m_clientProtocolConfig[config_key::specialJunk2] =
+ clientProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
+ m_clientProtocolConfig[config_key::specialJunk3] =
+ clientProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
+ m_clientProtocolConfig[config_key::specialJunk4] =
+ clientProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
+ m_clientProtocolConfig[config_key::specialJunk5] =
+ clientProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
+ m_clientProtocolConfig[config_key::controlledJunk1] =
+ clientProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
+ m_clientProtocolConfig[config_key::controlledJunk2] =
+ clientProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
+ m_clientProtocolConfig[config_key::controlledJunk3] =
+ clientProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
+ m_clientProtocolConfig[config_key::specialHandshakeTimeout] =
+ clientProtocolConfig.value(config_key::specialHandshakeTimeout)
+ .toString(protocols::awg::defaultSpecialHandshakeTimeout);
endResetModel();
}
@@ -228,6 +228,15 @@ QJsonObject AwgConfigModel::getConfig()
jsonConfig[config_key::junkPacketCount] = m_clientProtocolConfig[config_key::junkPacketCount];
jsonConfig[config_key::junkPacketMinSize] = m_clientProtocolConfig[config_key::junkPacketMinSize];
jsonConfig[config_key::junkPacketMaxSize] = m_clientProtocolConfig[config_key::junkPacketMaxSize];
+ jsonConfig[config_key::specialJunk1] = m_clientProtocolConfig[config_key::specialJunk1];
+ jsonConfig[config_key::specialJunk2] = m_clientProtocolConfig[config_key::specialJunk2];
+ jsonConfig[config_key::specialJunk3] = m_clientProtocolConfig[config_key::specialJunk3];
+ jsonConfig[config_key::specialJunk4] = m_clientProtocolConfig[config_key::specialJunk4];
+ jsonConfig[config_key::specialJunk5] = m_clientProtocolConfig[config_key::specialJunk5];
+ jsonConfig[config_key::controlledJunk1] = m_clientProtocolConfig[config_key::controlledJunk1];
+ jsonConfig[config_key::controlledJunk2] = m_clientProtocolConfig[config_key::controlledJunk2];
+ jsonConfig[config_key::controlledJunk3] = m_clientProtocolConfig[config_key::controlledJunk3];
+ jsonConfig[config_key::specialHandshakeTimeout] = m_clientProtocolConfig[config_key::specialHandshakeTimeout];
m_serverProtocolConfig[config_key::last_config] = QString(QJsonDocument(jsonConfig).toJson());
}
@@ -265,6 +274,15 @@ QHash AwgConfigModel::roleNames() const
roles[ClientJunkPacketCountRole] = "clientJunkPacketCount";
roles[ClientJunkPacketMinSizeRole] = "clientJunkPacketMinSize";
roles[ClientJunkPacketMaxSizeRole] = "clientJunkPacketMaxSize";
+ roles[ClientSpecialJunk1Role] = "clientSpecialJunk1";
+ roles[ClientSpecialJunk2Role] = "clientSpecialJunk2";
+ roles[ClientSpecialJunk3Role] = "clientSpecialJunk3";
+ roles[ClientSpecialJunk4Role] = "clientSpecialJunk4";
+ roles[ClientSpecialJunk5Role] = "clientSpecialJunk5";
+ roles[ClientControlledJunk1Role] = "clientControlledJunk1";
+ roles[ClientControlledJunk2Role] = "clientControlledJunk2";
+ roles[ClientControlledJunk3Role] = "clientControlledJunk3";
+ roles[ClientSpecialHandshakeTimeoutRole] = "clientSpecialHandshakeTimeout";
roles[ServerJunkPacketCountRole] = "serverJunkPacketCount";
roles[ServerJunkPacketMinSizeRole] = "serverJunkPacketMinSize";
@@ -276,16 +294,6 @@ QHash AwgConfigModel::roleNames() const
roles[ServerUnderloadPacketMagicHeaderRole] = "serverUnderloadPacketMagicHeader";
roles[ServerTransportPacketMagicHeaderRole] = "serverTransportPacketMagicHeader";
- roles[ServerSpecialJunk1Role] = "serverSpecialJunk1";
- roles[ServerSpecialJunk2Role] = "serverSpecialJunk2";
- roles[ServerSpecialJunk3Role] = "serverSpecialJunk3";
- roles[ServerSpecialJunk4Role] = "serverSpecialJunk4";
- roles[ServerSpecialJunk5Role] = "serverSpecialJunk5";
- roles[ServerControlledJunk1Role] = "serverControlledJunk1";
- roles[ServerControlledJunk2Role] = "serverControlledJunk2";
- roles[ServerControlledJunk3Role] = "serverControlledJunk3";
- roles[ServerSpecialHandshakeTimeoutRole] = "serverSpecialHandshakeTimeout";
-
return roles;
}
@@ -300,6 +308,24 @@ AwgConfig::AwgConfig(const QJsonObject &serverProtocolConfig)
clientProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize);
clientJunkPacketMaxSize =
clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize);
+ clientSpecialJunk1 =
+ clientProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
+ clientSpecialJunk2 =
+ clientProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
+ clientSpecialJunk3 =
+ clientProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
+ clientSpecialJunk4 =
+ clientProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
+ clientSpecialJunk5 =
+ clientProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
+ clientControlledJunk1 =
+ clientProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
+ clientControlledJunk2 =
+ clientProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
+ clientControlledJunk3 =
+ clientProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
+ clientSpecialHandshakeTimeout = clientProtocolConfig.value(config_key::specialHandshakeTimeout)
+ .toString(protocols::awg::defaultSpecialHandshakeTimeout);
subnetAddress =
serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress);
@@ -322,24 +348,6 @@ AwgConfig::AwgConfig(const QJsonObject &serverProtocolConfig)
.toString(protocols::awg::defaultUnderloadPacketMagicHeader);
serverTransportPacketMagicHeader = serverProtocolConfig.value(config_key::transportPacketMagicHeader)
.toString(protocols::awg::defaultTransportPacketMagicHeader);
- serverSpecialJunk1 =
- serverProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1);
- serverSpecialJunk2 =
- serverProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2);
- serverSpecialJunk3 =
- serverProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3);
- serverSpecialJunk4 =
- serverProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4);
- serverSpecialJunk5 =
- serverProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5);
- serverControlledJunk1 =
- serverProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1);
- serverControlledJunk2 =
- serverProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2);
- serverControlledJunk3 =
- serverProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3);
- serverSpecialHandshakeTimeout = serverProtocolConfig.value(config_key::specialHandshakeTimeout)
- .toString(protocols::awg::defaultSpecialHandshakeTimeout);
}
bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const
@@ -352,12 +360,7 @@ bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const
|| serverInitPacketMagicHeader != other.serverInitPacketMagicHeader
|| serverResponsePacketMagicHeader != other.serverResponsePacketMagicHeader
|| serverUnderloadPacketMagicHeader != other.serverUnderloadPacketMagicHeader
- || serverTransportPacketMagicHeader != other.serverTransportPacketMagicHeader
- || serverSpecialJunk1 != other.serverSpecialJunk1 || serverSpecialJunk2 != other.serverSpecialJunk2
- || serverSpecialJunk3 != other.serverSpecialJunk3 || serverSpecialJunk4 != other.serverSpecialJunk4
- || serverSpecialJunk5 != other.serverSpecialJunk5 || serverControlledJunk1 != other.serverControlledJunk1
- || serverControlledJunk2 != other.serverControlledJunk2 || serverControlledJunk3 != other.serverControlledJunk3
- || serverSpecialHandshakeTimeout != other.serverSpecialHandshakeTimeout) {
+ || serverTransportPacketMagicHeader != other.serverTransportPacketMagicHeader) {
return false;
}
return true;
@@ -367,7 +370,12 @@ bool AwgConfig::hasEqualClientSettings(const AwgConfig &other) const
{
if (clientMtu != other.clientMtu || clientJunkPacketCount != other.clientJunkPacketCount
|| clientJunkPacketMinSize != other.clientJunkPacketMinSize
- || clientJunkPacketMaxSize != other.clientJunkPacketMaxSize) {
+ || clientJunkPacketMaxSize != other.clientJunkPacketMaxSize || clientSpecialJunk1 != other.clientSpecialJunk1
+ || clientSpecialJunk2 != other.clientSpecialJunk2 || clientSpecialJunk3 != other.clientSpecialJunk3
+ || clientSpecialJunk4 != other.clientSpecialJunk4 || clientSpecialJunk5 != other.clientSpecialJunk5
+ || clientControlledJunk1 != other.clientControlledJunk1 || clientControlledJunk2 != other.clientControlledJunk2
+ || clientControlledJunk3 != other.clientControlledJunk3
+ || clientSpecialHandshakeTimeout != other.clientSpecialHandshakeTimeout) {
return false;
}
return true;
diff --git a/client/ui/models/protocols/awgConfigModel.h b/client/ui/models/protocols/awgConfigModel.h
index 5c5953b6..e1f38f71 100644
--- a/client/ui/models/protocols/awgConfigModel.h
+++ b/client/ui/models/protocols/awgConfigModel.h
@@ -22,6 +22,15 @@ struct AwgConfig
QString clientJunkPacketCount;
QString clientJunkPacketMinSize;
QString clientJunkPacketMaxSize;
+ QString clientSpecialJunk1;
+ QString clientSpecialJunk2;
+ QString clientSpecialJunk3;
+ QString clientSpecialJunk4;
+ QString clientSpecialJunk5;
+ QString clientControlledJunk1;
+ QString clientControlledJunk2;
+ QString clientControlledJunk3;
+ QString clientSpecialHandshakeTimeout;
QString serverJunkPacketCount;
QString serverJunkPacketMinSize;
@@ -33,16 +42,6 @@ struct AwgConfig
QString serverUnderloadPacketMagicHeader;
QString serverTransportPacketMagicHeader;
- QString serverSpecialJunk1;
- QString serverSpecialJunk2;
- QString serverSpecialJunk3;
- QString serverSpecialJunk4;
- QString serverSpecialJunk5;
- QString serverControlledJunk1;
- QString serverControlledJunk2;
- QString serverControlledJunk3;
- QString serverSpecialHandshakeTimeout;
-
bool hasEqualServerSettings(const AwgConfig &other) const;
bool hasEqualClientSettings(const AwgConfig &other) const;
};
@@ -60,6 +59,15 @@ public:
ClientJunkPacketCountRole,
ClientJunkPacketMinSizeRole,
ClientJunkPacketMaxSizeRole,
+ ClientSpecialJunk1Role,
+ ClientSpecialJunk2Role,
+ ClientSpecialJunk3Role,
+ ClientSpecialJunk4Role,
+ ClientSpecialJunk5Role,
+ ClientControlledJunk1Role,
+ ClientControlledJunk2Role,
+ ClientControlledJunk3Role,
+ ClientSpecialHandshakeTimeoutRole,
ServerJunkPacketCountRole,
ServerJunkPacketMinSizeRole,
@@ -70,16 +78,6 @@ public:
ServerResponsePacketMagicHeaderRole,
ServerUnderloadPacketMagicHeaderRole,
ServerTransportPacketMagicHeaderRole,
-
- ServerSpecialJunk1Role,
- ServerSpecialJunk2Role,
- ServerSpecialJunk3Role,
- ServerSpecialJunk4Role,
- ServerSpecialJunk5Role,
- ServerControlledJunk1Role,
- ServerControlledJunk2Role,
- ServerControlledJunk3Role,
- ServerSpecialHandshakeTimeoutRole,
};
explicit AwgConfigModel(QObject *parent = nullptr);
diff --git a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
index 96662c20..24755e09 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml
@@ -173,6 +173,142 @@ PageType {
checkEmptyText: true
}
+ TextFieldWithHeaderType {
+ id: specialJunk1TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I1 - First special junk packet")
+ textField.text: clientSpecialJunk1
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientSpecialJunk1) {
+ clientSpecialJunk1 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: specialJunk2TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I2 - Second special junk packet")
+ textField.text: clientSpecialJunk2
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientSpecialJunk2) {
+ clientSpecialJunk2 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: specialJunk3TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I3 - Third special junk packet")
+ textField.text: clientSpecialJunk3
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientSpecialJunk3) {
+ clientSpecialJunk3 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: specialJunk4TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I4 - Fourth special junk packet")
+ textField.text: clientSpecialJunk4
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientSpecialJunk4) {
+ clientSpecialJunk4 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: specialJunk5TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("I5 - Fifth special junk packet")
+ textField.text: clientSpecialJunk5
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientSpecialJunk5 ) {
+ clientSpecialJunk5 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: controlledJunk1TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("J1 - First controlled junk packet")
+ textField.text: clientControlledJunk1
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientControlledJunk1) {
+ clientControlledJunk1 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: controlledJunk2TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("J2 - Second controlled junk packet")
+ textField.text: clientControlledJunk2
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientControlledJunk2) {
+ clientControlledJunk2 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: controlledJunk3TextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("J3 - Third controlled junk packet")
+ textField.text: clientControlledJunk3
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientControlledJunk3) {
+ clientControlledJunk3 = textField.text
+ }
+ }
+ }
+
+ TextFieldWithHeaderType {
+ id: iTimeTextField
+ Layout.fillWidth: true
+ Layout.topMargin: 16
+
+ headerText: qsTr("Itime - Special handshake timeout")
+ textField.text: clientSpecialHandshakeTimeout
+ textField.validator: IntValidator { bottom: 0 }
+
+ textField.onEditingFinished: {
+ if (textField.text !== clientSpecialHandshakeTimeout) {
+ clientSpecialHandshakeTimeout = textField.text
+ }
+ }
+ }
+
Header2TextType {
Layout.fillWidth: true
Layout.topMargin: 16
@@ -256,6 +392,7 @@ PageType {
headerText: "H4 - Transport packet magic header"
textField.text: serverTransportPacketMagicHeader
}
+
}
}
}
diff --git a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
index 7e2c5feb..906e7ceb 100644
--- a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
+++ b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml
@@ -316,141 +316,6 @@ PageType {
checkEmptyText: true
}
- TextFieldWithHeaderType {
- id: specialJunk1TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("I1 - First special junk packet")
- textField.text: serverSpecialJunk1
-
- textField.onEditingFinished: {
- if (textField.text !== serverSpecialJunk1) {
- serverSpecialJunk1 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: specialJunk2TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("I2 - Second special junk packet")
- textField.text: serverSpecialJunk2
-
- textField.onEditingFinished: {
- if (textField.text !== serverSpecialJunk2) {
- serverSpecialJunk2 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: specialJunk3TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("I3 - Third special junk packet")
- textField.text: serverSpecialJunk3
-
- textField.onEditingFinished: {
- if (textField.text !== serverSpecialJunk3) {
- serverSpecialJunk3 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: specialJunk4TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("I4 - Fourth special junk packet")
- textField.text: serverSpecialJunk4
-
- textField.onEditingFinished: {
- if (textField.text !== serverSpecialJunk4) {
- serverSpecialJunk4 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: specialJunk5TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("I5 - Fifth special junk packet")
- textField.text: serverSpecialJunk5
-
- textField.onEditingFinished: {
- if (textField.text !== serverSpecialJunk5 ) {
- serverSpecialJunk5 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: controlledJunk1TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("J1 - First controlled junk packet")
- textField.text: serverControlledJunk1
-
- textField.onEditingFinished: {
- if (textField.text !== serverControlledJunk1) {
- serverControlledJunk1 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: controlledJunk2TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("J2 - Second controlled junk packet")
- textField.text: serverControlledJunk2
-
- textField.onEditingFinished: {
- if (textField.text !== serverControlledJunk2) {
- serverControlledJunk2 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: controlledJunk3TextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("J3 - Third controlled junk packet")
- textField.text: serverControlledJunk3
-
- textField.onEditingFinished: {
- if (textField.text !== serverControlledJunk3) {
- serverControlledJunk3 = textField.text
- }
- }
- }
-
- TextFieldWithHeaderType {
- id: iTimeTextField
- Layout.fillWidth: true
- Layout.topMargin: 16
-
- headerText: qsTr("Itime - Special handshake timeout")
- textField.text: serverSpecialHandshakeTimeout
- textField.validator: IntValidator { bottom: 0 }
-
- textField.onEditingFinished: {
- if (textField.text !== serverSpecialHandshakeTimeout) {
- serverSpecialHandshakeTimeout = textField.text
- }
- }
- }
BasicButtonType {
id: saveRestartButton
@@ -468,15 +333,15 @@ PageType {
junkPacketMaxSizeTextField.errorText === "" &&
junkPacketMinSizeTextField.errorText === "" &&
junkPacketCountTextField.errorText === "" &&
- specialJunk1TextField.errorText === "" &&
- specialJunk2TextField.errorText === "" &&
- specialJunk3TextField.errorText === "" &&
- specialJunk4TextField.errorText === "" &&
- specialJunk5TextField.errorText === "" &&
- controlledJunk1TextField.errorText === "" &&
- controlledJunk2TextField.errorText === "" &&
- controlledJunk3TextField.errorText === "" &&
- iTimeTextField.errorText === "" &&
+ // specialJunk1TextField.errorText === "" &&
+ // specialJunk2TextField.errorText === "" &&
+ // specialJunk3TextField.errorText === "" &&
+ // specialJunk4TextField.errorText === "" &&
+ // specialJunk5TextField.errorText === "" &&
+ // controlledJunk1TextField.errorText === "" &&
+ // controlledJunk2TextField.errorText === "" &&
+ // controlledJunk3TextField.errorText === "" &&
+ // iTimeTextField.errorText === "" &&
portTextField.errorText === "" &&
vpnAddressSubnetTextField.errorText === ""
From 3842618aa6ca6a1adb82ff6a245c8eb06286f753 Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Thu, 3 Jul 2025 06:42:52 +0200
Subject: [PATCH 7/9] chore: update submodule
---
client/3rd-prebuilt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt
index 82b71216..a7b11002 160000
--- a/client/3rd-prebuilt
+++ b/client/3rd-prebuilt
@@ -1 +1 @@
-Subproject commit 82b71216989a3a398c89050950ee4377fec1d0e5
+Subproject commit a7b110024b69bd9eec05d6244897917e71d58601
From 564d84e415d863df5d63fac8ee0fe5b250492e4f Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Fri, 4 Jul 2025 16:30:18 +0200
Subject: [PATCH 8/9] chore: update submodules
---
client/3rd-prebuilt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt
index a7b11002..e3b6a332 160000
--- a/client/3rd-prebuilt
+++ b/client/3rd-prebuilt
@@ -1 +1 @@
-Subproject commit a7b110024b69bd9eec05d6244897917e71d58601
+Subproject commit e3b6a332056ff0f9234a02f5ce363cdfa5259db2
From 54af96f4bfad4b839a74ba9a4f18c82268540c3f Mon Sep 17 00:00:00 2001
From: Mark Puha
Date: Fri, 4 Jul 2025 16:38:09 +0200
Subject: [PATCH 9/9] chore: add translation
---
client/translations/amneziavpn_ar_EG.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_fa_IR.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_hi_IN.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_my_MM.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_ru_RU.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_uk_UA.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_ur_PK.ts | 34 ++++++++++++-------------
client/translations/amneziavpn_zh_CN.ts | 34 ++++++++++++-------------
8 files changed, 136 insertions(+), 136 deletions(-)
diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts
index 8a5af48e..b3ea77c8 100644
--- a/client/translations/amneziavpn_ar_EG.ts
+++ b/client/translations/amneziavpn_ar_EG.ts
@@ -754,87 +754,87 @@ Thank you for staying with us!
-
+ Server settings
-
+ Portمنفذ
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ Saveاحفظ
-
+ Save settings?احفظ الإعدادات؟
-
+ Only the settings for this device will be changed
-
+ Continueواصل
-
+ Cancelإلغاء
-
+ Unable change settings while there is an active connectionلا يمكن تغيير الإعدادات أثناء وجود اتصال نشط
diff --git a/client/translations/amneziavpn_fa_IR.ts b/client/translations/amneziavpn_fa_IR.ts
index c0f87b55..e9033f31 100644
--- a/client/translations/amneziavpn_fa_IR.ts
+++ b/client/translations/amneziavpn_fa_IR.ts
@@ -758,87 +758,87 @@ Thank you for staying with us!
-
+ Server settings
-
+ Portپورت
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ Saveذخیره
-
+ Save settings?تنظیمات را ذخیره کن?
-
+ Only the settings for this device will be changed
-
+ Continue
-
+ Cancel
-
+ Unable change settings while there is an active connectionنمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.
diff --git a/client/translations/amneziavpn_hi_IN.ts b/client/translations/amneziavpn_hi_IN.ts
index 904c15e9..9d5a91bb 100644
--- a/client/translations/amneziavpn_hi_IN.ts
+++ b/client/translations/amneziavpn_hi_IN.ts
@@ -722,87 +722,87 @@ Thank you for staying with us!
एमटीयू
-
+ Server settings
-
+ Port
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ Saveसहेजें
-
+ Save settings?सेटिंग्स सेव करें?
-
+ Only the settings for this device will be changed
-
+ Continueजारी रखना
-
+ Cancelरद्द करना
-
+ Unable change settings while there is an active connectionसक्रिय कनेक्शन होने पर सेटिंग बदलने में असमर्थ
diff --git a/client/translations/amneziavpn_my_MM.ts b/client/translations/amneziavpn_my_MM.ts
index da4b37a6..a26cd525 100644
--- a/client/translations/amneziavpn_my_MM.ts
+++ b/client/translations/amneziavpn_my_MM.ts
@@ -754,87 +754,87 @@ Thank you for staying with us!
MTU
-
+ Server settings
-
+ PortPort
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ Saveသိမ်းဆည်းမည်
-
+ Save settings?ဆက်တင်များကို သိမ်းဆည်းမည်လား?
-
+ Only the settings for this device will be changed
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
-
+ Unable change settings while there is an active connectionလက်ရှိချိတ်ဆက်မှုတစ်ခုရှိနေချိန်တွင် ဆက်တင်များကို ပြောင်းလဲ၍မရပါ
diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts
index d250be5f..be914c35 100644
--- a/client/translations/amneziavpn_ru_RU.ts
+++ b/client/translations/amneziavpn_ru_RU.ts
@@ -690,87 +690,87 @@ Thank you for staying with us!
MTU
-
+ Server settingsНастройки сервера
-
+ PortПорт
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ SaveСохранить
-
+ Save settings?Сохранить настройки?
-
+ Only the settings for this device will be changedБудут изменены настройки только для этого устройства
-
+ ContinueПродолжить
-
+ CancelОтменить
-
+ Unable change settings while there is an active connectionНевозможно изменить настройки во время активного соединения
diff --git a/client/translations/amneziavpn_uk_UA.ts b/client/translations/amneziavpn_uk_UA.ts
index e96f7455..8bdca6a3 100644
--- a/client/translations/amneziavpn_uk_UA.ts
+++ b/client/translations/amneziavpn_uk_UA.ts
@@ -784,87 +784,87 @@ Thank you for staying with us!
MTU
-
+ Server settings
-
+ PortПорт
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ SaveЗберегти
-
+ Save settings?Зберегти налаштування?
-
+ Only the settings for this device will be changed
-
+ ContinueПродовжити
-
+ CancelВідмінити
-
+ Unable change settings while there is an active connectionНеможливо змінити налаштування, поки є активне підключення
diff --git a/client/translations/amneziavpn_ur_PK.ts b/client/translations/amneziavpn_ur_PK.ts
index 2c8be9f6..eac64da8 100644
--- a/client/translations/amneziavpn_ur_PK.ts
+++ b/client/translations/amneziavpn_ur_PK.ts
@@ -722,87 +722,87 @@ Thank you for staying with us!
ام ٹی یو
-
+ Server settings
-
+ Portپورٹ
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ Save
-
+ Save settings?ترتیبات محفوظ کریں?
-
+ Only the settings for this device will be changed
-
+ Continue
-
+ Cancel
-
+ Unable change settings while there is an active connectionجب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index 1e6320bf..b8bb5b00 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -736,87 +736,87 @@ Thank you for staying with us!
-
+ Server settings
-
+ Port端口
-
+ I1 - First special junk packet
-
+ I2 - Second special junk packet
-
+ I3 - Third special junk packet
-
+ I4 - Fourth special junk packet
-
+ I5 - Fifth special junk packet
-
+ J1 - First controlled junk packet
-
+ J2 - Second controlled junk packet
-
+ J3 - Third controlled junk packet
-
+ Itime - Special handshake timeout
-
+ Save保存
-
+ Save settings?保存设置?
-
+ Only the settings for this device will be changed
-
+ Continue继续
-
+ Cancel取消
-
+ Unable change settings while there is an active connection