feat: s3 s4 cont

This commit is contained in:
Mark Puha 2025-07-03 18:02:53 +02:00
parent f3adbe495e
commit b9fb1aa685
21 changed files with 549 additions and 371 deletions

@ -1 +1 @@
Subproject commit 50cd8464315808b23fb62bd027af9f653cc54da1 Subproject commit 527b52f08cac102a6386a1fb49f365b4f861c9c2

View file

@ -1,4 +1,5 @@
#include "awg_configurator.h" #include "awg_configurator.h"
#include "protocols/protocols_defs.h"
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
@ -35,6 +36,8 @@ QString AwgConfigurator::createConfig(const ServerCredentials &credentials, Dock
jsonConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize); jsonConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize);
jsonConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize); jsonConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize);
jsonConfig[config_key::responsePacketJunkSize] = configMap.value(config_key::responsePacketJunkSize); jsonConfig[config_key::responsePacketJunkSize] = configMap.value(config_key::responsePacketJunkSize);
jsonConfig[config_key::cookieReplyPacketJunkSize] = configMap.value(config_key::cookieReplyPacketJunkSize);
jsonConfig[config_key::transportPacketJunkSize] = configMap.value(config_key::transportPacketJunkSize);
jsonConfig[config_key::initPacketMagicHeader] = configMap.value(config_key::initPacketMagicHeader); jsonConfig[config_key::initPacketMagicHeader] = configMap.value(config_key::initPacketMagicHeader);
jsonConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader); jsonConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader);
jsonConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader); jsonConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader);

View file

@ -360,6 +360,10 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c
!= newProtoConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize)) != newProtoConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize))
|| (oldProtoConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize) || (oldProtoConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize)
!= newProtoConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize)) != newProtoConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize))
|| (oldProtoConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize)
!= newProtoConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize))
|| (oldProtoConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize)
!= newProtoConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize))
|| (oldProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader) || (oldProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader)
!= newProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader)) != newProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader))
|| (oldProtoConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader) || (oldProtoConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader)
@ -653,6 +657,8 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
vars.append({ { "$JUNK_PACKET_MAX_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMaxSize).toString() } }); vars.append({ { "$JUNK_PACKET_MAX_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMaxSize).toString() } });
vars.append({ { "$INIT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::initPacketJunkSize).toString() } }); vars.append({ { "$INIT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::initPacketJunkSize).toString() } });
vars.append({ { "$RESPONSE_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::responsePacketJunkSize).toString() } }); vars.append({ { "$RESPONSE_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::responsePacketJunkSize).toString() } });
vars.append({ { "$COOKIE_REPLY_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::cookieReplyPacketJunkSize).toString() } });
vars.append({ { "$TRANSPORT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::transportPacketJunkSize).toString() } });
vars.append({ { "$INIT_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::initPacketMagicHeader).toString() } }); vars.append({ { "$INIT_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::initPacketMagicHeader).toString() } });
vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).toString() } }); 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({ { "$UNDERLOAD_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader).toString() } });

View file

@ -237,6 +237,8 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
json.insert(amnezia::config_key::junkPacketMaxSize, wgConfig.value(amnezia::config_key::junkPacketMaxSize)); json.insert(amnezia::config_key::junkPacketMaxSize, wgConfig.value(amnezia::config_key::junkPacketMaxSize));
json.insert(amnezia::config_key::initPacketJunkSize, wgConfig.value(amnezia::config_key::initPacketJunkSize)); json.insert(amnezia::config_key::initPacketJunkSize, wgConfig.value(amnezia::config_key::initPacketJunkSize));
json.insert(amnezia::config_key::responsePacketJunkSize, wgConfig.value(amnezia::config_key::responsePacketJunkSize)); json.insert(amnezia::config_key::responsePacketJunkSize, wgConfig.value(amnezia::config_key::responsePacketJunkSize));
json.insert(amnezia::config_key::cookieReplyPacketJunkSize, wgConfig.value(amnezia::config_key::cookieReplyPacketJunkSize));
json.insert(amnezia::config_key::transportPacketJunkSize, wgConfig.value(amnezia::config_key::transportPacketJunkSize));
json.insert(amnezia::config_key::initPacketMagicHeader, wgConfig.value(amnezia::config_key::initPacketMagicHeader)); json.insert(amnezia::config_key::initPacketMagicHeader, wgConfig.value(amnezia::config_key::initPacketMagicHeader));
json.insert(amnezia::config_key::responsePacketMagicHeader, wgConfig.value(amnezia::config_key::responsePacketMagicHeader)); 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::underloadPacketMagicHeader, wgConfig.value(amnezia::config_key::underloadPacketMagicHeader));
@ -255,6 +257,8 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
&& !wgConfig.value(amnezia::config_key::junkPacketMaxSize).isUndefined() && !wgConfig.value(amnezia::config_key::junkPacketMaxSize).isUndefined()
&& !wgConfig.value(amnezia::config_key::initPacketJunkSize).isUndefined() && !wgConfig.value(amnezia::config_key::initPacketJunkSize).isUndefined()
&& !wgConfig.value(amnezia::config_key::responsePacketJunkSize).isUndefined() && !wgConfig.value(amnezia::config_key::responsePacketJunkSize).isUndefined()
&& !wgConfig.value(amnezia::config_key::cookieReplyPacketJunkSize).isUndefined()
&& !wgConfig.value(amnezia::config_key::transportPacketJunkSize).isUndefined()
&& !wgConfig.value(amnezia::config_key::initPacketMagicHeader).isUndefined() && !wgConfig.value(amnezia::config_key::initPacketMagicHeader).isUndefined()
&& !wgConfig.value(amnezia::config_key::responsePacketMagicHeader).isUndefined() && !wgConfig.value(amnezia::config_key::responsePacketMagicHeader).isUndefined()
&& !wgConfig.value(amnezia::config_key::underloadPacketMagicHeader).isUndefined() && !wgConfig.value(amnezia::config_key::underloadPacketMagicHeader).isUndefined()
@ -273,6 +277,8 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
json.insert(amnezia::config_key::junkPacketMaxSize, wgConfig.value(amnezia::config_key::junkPacketMaxSize)); json.insert(amnezia::config_key::junkPacketMaxSize, wgConfig.value(amnezia::config_key::junkPacketMaxSize));
json.insert(amnezia::config_key::initPacketJunkSize, wgConfig.value(amnezia::config_key::initPacketJunkSize)); json.insert(amnezia::config_key::initPacketJunkSize, wgConfig.value(amnezia::config_key::initPacketJunkSize));
json.insert(amnezia::config_key::responsePacketJunkSize, wgConfig.value(amnezia::config_key::responsePacketJunkSize)); json.insert(amnezia::config_key::responsePacketJunkSize, wgConfig.value(amnezia::config_key::responsePacketJunkSize));
json.insert(amnezia::config_key::cookieReplyPacketJunkSize, wgConfig.value(amnezia::config_key::cookieReplyPacketJunkSize));
json.insert(amnezia::config_key::transportPacketJunkSize, wgConfig.value(amnezia::config_key::transportPacketJunkSize));
json.insert(amnezia::config_key::initPacketMagicHeader, wgConfig.value(amnezia::config_key::initPacketMagicHeader)); json.insert(amnezia::config_key::initPacketMagicHeader, wgConfig.value(amnezia::config_key::initPacketMagicHeader));
json.insert(amnezia::config_key::responsePacketMagicHeader, wgConfig.value(amnezia::config_key::responsePacketMagicHeader)); 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::underloadPacketMagicHeader, wgConfig.value(amnezia::config_key::underloadPacketMagicHeader));

View file

@ -507,6 +507,8 @@ bool IosController::setupWireGuard()
wgConfig.insert(config_key::initPacketJunkSize, config[config_key::initPacketJunkSize]); wgConfig.insert(config_key::initPacketJunkSize, config[config_key::initPacketJunkSize]);
wgConfig.insert(config_key::responsePacketJunkSize, config[config_key::responsePacketJunkSize]); wgConfig.insert(config_key::responsePacketJunkSize, config[config_key::responsePacketJunkSize]);
wgConfig.insert(config_key::cookieReplyPacketJunkSize, config[config_key::cookieReplyPacketJunkSize]);
wgConfig.insert(config_key::transportPacketJunkSize, config[config_key::transportPacketJunkSize]);
wgConfig.insert(config_key::junkPacketCount, config[config_key::junkPacketCount]); wgConfig.insert(config_key::junkPacketCount, config[config_key::junkPacketCount]);
wgConfig.insert(config_key::junkPacketMinSize, config[config_key::junkPacketMinSize]); wgConfig.insert(config_key::junkPacketMinSize, config[config_key::junkPacketMinSize]);
@ -610,6 +612,16 @@ bool IosController::setupAwg()
wgConfig.insert(config_key::junkPacketMinSize, config[config_key::junkPacketMinSize]); wgConfig.insert(config_key::junkPacketMinSize, config[config_key::junkPacketMinSize]);
wgConfig.insert(config_key::junkPacketMaxSize, config[config_key::junkPacketMaxSize]); wgConfig.insert(config_key::junkPacketMaxSize, config[config_key::junkPacketMaxSize]);
wgConfig.insert(config_key::specialJunk1, config[config_key::specialJunk1]);
wgConfig.insert(config_key::specialJunk2, config[config_key::specialJunk2]);
wgConfig.insert(config_key::specialJunk3, config[config_key::specialJunk3]);
wgConfig.insert(config_key::specialJunk4, config[config_key::specialJunk4]);
wgConfig.insert(config_key::specialJunk5, config[config_key::specialJunk5]);
wgConfig.insert(config_key::controlledJunk1, config[config_key::controlledJunk1]);
wgConfig.insert(config_key::controlledJunk2, config[config_key::controlledJunk2]);
wgConfig.insert(config_key::controlledJunk3, config[config_key::controlledJunk3]);
wgConfig.insert(config_key::specialHandshakeTimeout, config[config_key::specialHandshakeTimeout]);
QJsonDocument wgConfigDoc(wgConfig); QJsonDocument wgConfigDoc(wgConfig);
QString wgConfigDocStr(wgConfigDoc.toJson(QJsonDocument::Compact)); QString wgConfigDocStr(wgConfigDoc.toJson(QJsonDocument::Compact));

View file

@ -19,7 +19,7 @@ Jmin = $JUNK_PACKET_MIN_SIZE
Jmax = $JUNK_PACKET_MAX_SIZE Jmax = $JUNK_PACKET_MAX_SIZE
S1 = $INIT_PACKET_JUNK_SIZE S1 = $INIT_PACKET_JUNK_SIZE
S2 = $RESPONSE_PACKET_JUNK_SIZE S2 = $RESPONSE_PACKET_JUNK_SIZE
S3 = $UNDERLOAD_PACKET_JUNK_SIZE S3 = $COOKIE_REPLY_PACKET_JUNK_SIZE
S4 = $TRANSPORT_PACKET_JUNK_SIZE S4 = $TRANSPORT_PACKET_JUNK_SIZE
H1 = $INIT_PACKET_MAGIC_HEADER H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER H2 = $RESPONSE_PACKET_MAGIC_HEADER

View file

@ -7,7 +7,7 @@ Jmin = $JUNK_PACKET_MIN_SIZE
Jmax = $JUNK_PACKET_MAX_SIZE Jmax = $JUNK_PACKET_MAX_SIZE
S1 = $INIT_PACKET_JUNK_SIZE S1 = $INIT_PACKET_JUNK_SIZE
S2 = $RESPONSE_PACKET_JUNK_SIZE S2 = $RESPONSE_PACKET_JUNK_SIZE
S3 = $UNDERLOAD_PACKET_JUNK_SIZE S3 = $COOKIE_REPLY_PACKET_JUNK_SIZE
S4 = $TRANSPORT_PACKET_JUNK_SIZE S4 = $TRANSPORT_PACKET_JUNK_SIZE
H1 = $INIT_PACKET_MAGIC_HEADER H1 = $INIT_PACKET_MAGIC_HEADER
H2 = $RESPONSE_PACKET_MAGIC_HEADER H2 = $RESPONSE_PACKET_MAGIC_HEADER

View file

@ -480,17 +480,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">ملف تكوين غير صحيح</translation> <translation type="vanished">ملف تكوين غير صحيح</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>تم فحص%1 من %2.</translation> <translation>تم فحص%1 من %2.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -527,47 +527,47 @@ Already installed containers were found on the server. All installed containers
تمت إضافة جميع الحاويات المٌثبتة إلي التطبيق</translation> تمت إضافة جميع الحاويات المٌثبتة إلي التطبيق</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>تم تحديث الاعدادات بنجاح</translation> <translation>تم تحديث الاعدادات بنجاح</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation>تمت إعادة تشغيل الخادم%1</translation> <translation>تمت إعادة تشغيل الخادم%1</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation>تمت إزالة الخادم &apos;%1&apos;</translation> <translation>تمت إزالة الخادم &apos;%1&apos;</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation>قد تم حذفها &apos;%1&apos; جميع الحاويات من الخادم</translation> <translation>قد تم حذفها &apos;%1&apos; جميع الحاويات من الخادم</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 تم حدف &apos;%2&apos; اسم الخادم</translation> <translation>%1 تم حدف &apos;%2&apos; اسم الخادم</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation>تم حذف تكوين Api</translation> <translation>تم حذف تكوين Api</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>تم مسح ملف تعريف %1 المخزن مؤقتًا</translation> <translation>تم مسح ملف تعريف %1 المخزن مؤقتًا</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation>من فضلك قم بتسجيل الدخول كمستخدم</translation> <translation>من فضلك قم بتسجيل الدخول كمستخدم</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation>تمت إضافة الخادم بنجاح</translation> <translation>تمت إضافة الخادم بنجاح</translation>
</message> </message>
@ -754,87 +754,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished">منفذ</translation> <translation type="unfinished">منفذ</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished">احفظ</translation> <translation type="unfinished">احفظ</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished">احفظ الإعدادات؟</translation> <translation type="unfinished">احفظ الإعدادات؟</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished">واصل</translation> <translation type="unfinished">واصل</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">إلغاء</translation> <translation type="unfinished">إلغاء</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished">لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط</translation> <translation type="unfinished">لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط</translation>
</message> </message>
@ -852,12 +852,12 @@ Thank you for staying with us!</source>
<translation>منفذ</translation> <translation>منفذ</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation>جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.</translation> <translation>جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation>احفظ</translation> <translation>احفظ</translation>
</message> </message>
@ -893,51 +893,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation>H1 - حزمة رأس سحرية مبدئية</translation> <translation>H1 - حزمة رأس سحرية مبدئية</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation>H2 - رأس حزمة الاستجابة السحرية</translation> <translation>H2 - رأس حزمة الاستجابة السحرية</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation>H4 - رأس حزمة النقل السحرية</translation> <translation>H4 - رأس حزمة النقل السحرية</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation>H3 - رأس حزمة السحر غير المحمل</translation> <translation>H3 - رأس حزمة السحر غير المحمل</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation>يجب أن تكون قيم الحقول H1-H4 فريدة</translation> <translation>يجب أن تكون قيم الحقول H1-H4 فريدة</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation>يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)</translation> <translation>يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>احفظ الإعدادات؟</translation> <translation>احفظ الإعدادات؟</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation>واصل</translation> <translation>واصل</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation>إلغاء</translation> <translation>إلغاء</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط</translation> <translation>لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط</translation>
</message> </message>

View file

@ -485,17 +485,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">فایل پیکربندی نامعتبر است.</translation> <translation type="vanished">فایل پیکربندی نامعتبر است.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>ارزیابی %1 از %2.</translation> <translation>ارزیابی %1 از %2.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -531,47 +531,47 @@ Already installed containers were found on the server. All installed containers
کانتینرهای نصب شده بر روی سرور شناسایی شدند. تمام کانتینترهای نصب شده به نرم افزار اضافه شدند</translation> کانتینرهای نصب شده بر روی سرور شناسایی شدند. تمام کانتینترهای نصب شده به نرم افزار اضافه شدند</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>تنظیمات با موفقیت بهروزرسانی شدند</translation> <translation>تنظیمات با موفقیت بهروزرسانی شدند</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation>سرور %1 راه اندازی مجدد شد</translation> <translation>سرور %1 راه اندازی مجدد شد</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation>سرور %1 حذف شد</translation> <translation>سرور %1 حذف شد</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation>تمام کانتینترها از سرور %1 حذف شدند</translation> <translation>تمام کانتینترها از سرور %1 حذف شدند</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 از سرور %2 حذف شد</translation> <translation>%1 از سرور %2 حذف شد</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation>پیکربندی API حذف شد.</translation> <translation>پیکربندی API حذف شد.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>%1 پروفایل ذخیره شده پاک شد.</translation> <translation>%1 پروفایل ذخیره شده پاک شد.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation>لطفا به عنوان کاربر وارد شوید</translation> <translation>لطفا به عنوان کاربر وارد شوید</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation>سرور با موفقیت اضافه شد</translation> <translation>سرور با موفقیت اضافه شد</translation>
</message> </message>
@ -758,87 +758,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished">پورت</translation> <translation type="unfinished">پورت</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished">ذخیره</translation> <translation type="unfinished">ذخیره</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished">تنظیمات را ذخیره کن?</translation> <translation type="unfinished">تنظیمات را ذخیره کن?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished">نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.</translation> <translation type="unfinished">نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.</translation>
</message> </message>
@ -864,12 +864,12 @@ Thank you for staying with us!</source>
<translation type="vanished">آیا میخواهید AmneziaWG از سرور حذف شود؟</translation> <translation type="vanished">آیا میخواهید AmneziaWG از سرور حذف شود؟</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation>همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.</translation> <translation>همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation>ذخیره</translation> <translation>ذخیره</translation>
</message> </message>
@ -905,51 +905,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>تنظیمات را ذخیره کن?</translation> <translation>تنظیمات را ذخیره کن?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation>ادامه</translation> <translation>ادامه</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation>کنسل</translation> <translation>کنسل</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.</translation> <translation>نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.</translation>
</message> </message>

View file

@ -465,17 +465,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished"> ि </translation> <translation type="vanished"> ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>%2 %1 ि .</translation> <translation>%2 %1 ि .</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -507,47 +507,47 @@ Already installed containers were found on the server. All installed containers
ि ि ि ि </translation> ि ि ि ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>ि </translation> <translation>ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation> &apos;%1&apos; ि </translation> <translation> &apos;%1&apos; ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation> &apos;%1&apos; ि </translation> <translation> &apos;%1&apos; ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation> &apos;%1&apos; ि </translation> <translation> &apos;%1&apos; ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 &apos;%2&apos; ि </translation> <translation>%1 &apos;%2&apos; ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>%1 </translation> <translation>%1 </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation> ि </translation> <translation> ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -722,87 +722,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished">ि ?</translation> <translation type="unfinished">ि ?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished">ि ि </translation> <translation type="unfinished">ि ि </translation>
</message> </message>
@ -829,37 +829,37 @@ Thank you for staying with us!</source>
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation>H1-H4 ि ि</translation> <translation>H1-H4 ि ि</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation> S1 + (148) S2 + िि (92) ि</translation> <translation> S1 + (148) S2 + िि (92) ि</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>ि ?</translation> <translation>ि ?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation> ि ि , .</translation> <translation> ि ि , .</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>ि ि </translation> <translation>ि ि </translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -890,26 +890,36 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation> </translation> <translation> </translation>
</message> </message>

View file

@ -481,17 +481,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">Configuration က</translation> <translation type="vanished">Configuration က</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>%2 %1 က က.</translation> <translation>%2 %1 က က.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -527,47 +527,47 @@ Already installed containers were found on the server. All installed containers
ကက ကက က </translation> ကက ကက က </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>ကက </translation> <translation>ကက </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation> &apos;%1&apos; က </translation> <translation> &apos;%1&apos; က </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation> &apos;%1&apos; က </translation> <translation> &apos;%1&apos; က </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation> &apos;%1&apos; ကက က</translation> <translation> &apos;%1&apos; ကက က</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 က &apos;%2&apos; က</translation> <translation>%1 က &apos;%2&apos; က</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation>Api config ကက</translation> <translation>Api config ကက</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>ကက %1 က </translation> <translation>ကက %1 က </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation> log in က</translation> <translation> log in က</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation>က </translation> <translation>က </translation>
</message> </message>
@ -754,87 +754,87 @@ Thank you for staying with us!</source>
<translation type="unfinished">MTU</translation> <translation type="unfinished">MTU</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished">Port</translation> <translation type="unfinished">Port</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished">ကက ?</translation> <translation type="unfinished">ကက ?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished">ကက</translation> <translation type="unfinished">ကက</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">က</translation> <translation type="unfinished">က</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished">ကက ကက </translation> <translation type="unfinished">ကက ကက </translation>
</message> </message>
@ -856,12 +856,12 @@ Thank you for staying with us!</source>
<translation type="vanished">MTU</translation> <translation type="vanished">MTU</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation>ကက က.</translation> <translation>ကက က.</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation></translation> <translation></translation>
</message> </message>
@ -897,51 +897,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation>H1 - Init packet magic header</translation> <translation>H1 - Init packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation>H2 - Response packet magic header</translation> <translation>H2 - Response packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation>H4 - Transport packet magic header</translation> <translation>H4 - Transport packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation>H3 - Underload packet magic header</translation> <translation>H3 - Underload packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation>H1-H4 ကက </translation> <translation>H1-H4 ကက </translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation>ကက S1 + က (148) S2 + က (92) </translation> <translation>ကက S1 + က (148) S2 + က (92) </translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>ကက ?</translation> <translation>ကက ?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation>ကက</translation> <translation>ကက</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation>က</translation> <translation>က</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>ကက ကက </translation> <translation>ကက ကက </translation>
</message> </message>

View file

@ -436,17 +436,17 @@ Can&apos;t be disabled for current server</source>
<context> <context>
<name>ImportController</name> <name>ImportController</name>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>Отсканировано %1 из %2.</translation> <translation>Отсканировано %1 из %2.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation>Эта конфигурация содержит настройки OpenVPN. Конфигурации OpenVPN могут содержать вредоносные скрипты, поэтому добавляйте их только в том случае, если полностью доверяете источнику этого файла. </translation> <translation>Эта конфигурация содержит настройки OpenVPN. Конфигурации OpenVPN могут содержать вредоносные скрипты, поэтому добавляйте их только в том случае, если полностью доверяете источнику этого файла. </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation>&lt;br&gt;В импортированной конфигурации обнаружены потенциально опасные строки:</translation> <translation>&lt;br&gt;В импортированной конфигурации обнаружены потенциально опасные строки:</translation>
</message> </message>
@ -478,47 +478,47 @@ Already installed containers were found on the server. All installed containers
На сервере обнаружены установленные протоколы и сервисы. Все они были добавлены в приложение</translation> На сервере обнаружены установленные протоколы и сервисы. Все они были добавлены в приложение</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>Настройки успешно обновлены</translation> <translation>Настройки успешно обновлены</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation>Сервер &apos;%1&apos; был перезагружен</translation> <translation>Сервер &apos;%1&apos; был перезагружен</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation>Сервер &apos;%1&apos; был удален</translation> <translation>Сервер &apos;%1&apos; был удален</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation>Все протоколы и сервисы были удалены с сервера &apos;%1&apos;</translation> <translation>Все протоколы и сервисы были удалены с сервера &apos;%1&apos;</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 был удален с сервера &apos;%2&apos;</translation> <translation>%1 был удален с сервера &apos;%2&apos;</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation>Конфигурация API удалена</translation> <translation>Конфигурация API удалена</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>%1 закэшированный профиль очищен</translation> <translation>%1 закэшированный профиль очищен</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation>Пожалуйста, войдите в систему от имени пользователя</translation> <translation>Пожалуйста, войдите в систему от имени пользователя</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation>Сервер успешно добавлен</translation> <translation>Сервер успешно добавлен</translation>
</message> </message>
@ -690,87 +690,87 @@ Thank you for staying with us!</source>
<translation>MTU</translation> <translation>MTU</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation>Настройки сервера</translation> <translation>Настройки сервера</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation>Порт</translation> <translation>Порт</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation>Сохранить</translation> <translation>Сохранить</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>Сохранить настройки?</translation> <translation>Сохранить настройки?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation>Будут изменены настройки только для этого устройства</translation> <translation>Будут изменены настройки только для этого устройства</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation>Продолжить</translation> <translation>Продолжить</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Отменить</translation> <translation>Отменить</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>Невозможно изменить настройки во время активного соединения</translation> <translation>Невозможно изменить настройки во время активного соединения</translation>
</message> </message>
@ -788,12 +788,12 @@ Thank you for staying with us!</source>
<translation>Порт</translation> <translation>Порт</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation>Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.</translation> <translation>Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation>Сохранить</translation> <translation>Сохранить</translation>
</message> </message>
@ -829,51 +829,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation>H1 - Init packet magic header</translation> <translation>H1 - Init packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation>H2 - Response packet magic header</translation> <translation>H2 - Response packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation>H4 - Transport packet magic header</translation> <translation>H4 - Transport packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation>H3 - Underload packet magic header</translation> <translation>H3 - Underload packet magic header</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation>Значения в полях H1-H4 должны быть уникальными</translation> <translation>Значения в полях H1-H4 должны быть уникальными</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation>Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)</translation> <translation>Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>Сохранить настройки?</translation> <translation>Сохранить настройки?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation>Продолжить</translation> <translation>Продолжить</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Отменить</translation> <translation>Отменить</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>Невозможно изменить настройки во время активного соединения</translation> <translation>Невозможно изменить настройки во время активного соединения</translation>
</message> </message>

View file

@ -512,17 +512,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">Недійсний файл конфігурації</translation> <translation type="vanished">Недійсний файл конфігурації</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>Відскановано %1 з %2.</translation> <translation>Відскановано %1 з %2.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -557,47 +557,47 @@ Already installed containers were found on the server. All installed containers
На сервері знайдені сервіси та протоколи, всі вони додані в застосунок</translation> На сервері знайдені сервіси та протоколи, всі вони додані в застосунок</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>Налаштування оновлено</translation> <translation>Налаштування оновлено</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation>Сервер &apos;%1&apos; перезавантажено</translation> <translation>Сервер &apos;%1&apos; перезавантажено</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation>Сервер &apos;%1&apos; був видалений</translation> <translation>Сервер &apos;%1&apos; був видалений</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation>Всі сервіси та протоколи були видалені з сервера &apos;%1&apos;</translation> <translation>Всі сервіси та протоколи були видалені з сервера &apos;%1&apos;</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 був видалений з сервера &apos;%2&apos;</translation> <translation>%1 був видалений з сервера &apos;%2&apos;</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation>Конфігурацію API видалено</translation> <translation>Конфігурацію API видалено</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>Кешований профіль %1 очищено</translation> <translation>Кешований профіль %1 очищено</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation>Буль-ласка, увійдіть в систему від імені користувача</translation> <translation>Буль-ласка, увійдіть в систему від імені користувача</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation>Сервер додано</translation> <translation>Сервер додано</translation>
</message> </message>
@ -784,87 +784,87 @@ Thank you for staying with us!</source>
<translation type="unfinished">MTU</translation> <translation type="unfinished">MTU</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished">Порт</translation> <translation type="unfinished">Порт</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished">Зберегти</translation> <translation type="unfinished">Зберегти</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished">Зберегти налаштування?</translation> <translation type="unfinished">Зберегти налаштування?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished">Продовжити</translation> <translation type="unfinished">Продовжити</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Відмінити</translation> <translation type="unfinished">Відмінити</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished">Неможливо змінити налаштування, поки є активне підключення</translation> <translation type="unfinished">Неможливо змінити налаштування, поки є активне підключення</translation>
</message> </message>
@ -913,51 +913,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation>Зберегти</translation> <translation>Зберегти</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation>Значення полів H1-H4 мають бути унікальними</translation> <translation>Значення полів H1-H4 мають бути унікальними</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation>Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)</translation> <translation>Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>Зберегти налаштування?</translation> <translation>Зберегти налаштування?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation>Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.</translation> <translation>Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>Неможливо змінити налаштування, поки є активне підключення</translation> <translation>Неможливо змінити налаштування, поки є активне підключення</translation>
</message> </message>
@ -978,12 +988,12 @@ Thank you for staying with us!</source>
<translation type="vanished">Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.</translation> <translation type="vanished">Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation>Продовжити</translation> <translation>Продовжити</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Відмінити</translation> <translation>Відмінити</translation>
</message> </message>

View file

@ -463,17 +463,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">غلط کنفیگریشن فائل</translation> <translation type="vanished">غلط کنفیگریشن فائل</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation>سکین%1 کی%2.</translation> <translation>سکین%1 کی%2.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -505,47 +505,47 @@ Already installed containers were found on the server. All installed containers
سرور پر پہلے سے نصب کنٹینرز پائے گئے۔ تمام نصب کنٹینرز کو ایپلی کیشن میں شامل کر دیا گیا ہے</translation> سرور پر پہلے سے نصب کنٹینرز پائے گئے۔ تمام نصب کنٹینرز کو ایپلی کیشن میں شامل کر دیا گیا ہے</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation>ترتیب کامیابی کے ساتھ اپ ڈیٹ ہو گئی</translation> <translation>ترتیب کامیابی کے ساتھ اپ ڈیٹ ہو گئی</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation>سرور %1 دوبارہ چالو کیا گیا تھا</translation> <translation>سرور %1 دوبارہ چالو کیا گیا تھا</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation>سرور %1 ہٹا دیا گیا تھا</translation> <translation>سرور %1 ہٹا دیا گیا تھا</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation>سرور &apos;%1&apos; سے تمام کنٹینرز ہٹا دیے گئے ہیں</translation> <translation>سرور &apos;%1&apos; سے تمام کنٹینرز ہٹا دیے گئے ہیں</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>سرور &apos;%2&apos; سے %1 ہٹا دیا گیا ہے</translation> <translation>سرور &apos;%2&apos; سے %1 ہٹا دیا گیا ہے</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation>%1 کیش کردہ پروفائل ختم کر دی گئی</translation> <translation>%1 کیش کردہ پروفائل ختم کر دی گئی</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation>براہ کرم صارف کے طور پر لاگ ان کریں</translation> <translation>براہ کرم صارف کے طور پر لاگ ان کریں</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation>سرور کامیابی سے شامل کیا گیا</translation> <translation>سرور کامیابی سے شامل کیا گیا</translation>
</message> </message>
@ -722,87 +722,87 @@ Thank you for staying with us!</source>
<translation type="unfinished">ام ٹی یو</translation> <translation type="unfinished">ام ٹی یو</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished">پورٹ</translation> <translation type="unfinished">پورٹ</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished">ترتیبات محفوظ کریں?</translation> <translation type="unfinished">ترتیبات محفوظ کریں?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished">جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا</translation> <translation type="unfinished">جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا</translation>
</message> </message>
@ -824,12 +824,12 @@ Thank you for staying with us!</source>
<translation type="vanished">ام ٹی یو</translation> <translation type="vanished">ام ٹی یو</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation>آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔</translation> <translation>آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation>محفوظ کریں</translation> <translation>محفوظ کریں</translation>
</message> </message>
@ -865,51 +865,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation>H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے</translation> <translation>H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation>S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے</translation> <translation>S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation>ترتیبات محفوظ کریں?</translation> <translation>ترتیبات محفوظ کریں?</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation>جاری رکھیں</translation> <translation>جاری رکھیں</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation>منسوخ کریں</translation> <translation>منسوخ کریں</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation>جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا</translation> <translation>جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا</translation>
</message> </message>

View file

@ -456,17 +456,17 @@ Can&apos;t be disabled for current server</source>
<context> <context>
<name>ImportController</name> <name>ImportController</name>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="677"/> <location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source> <source>Scanned %1 of %2.</source>
<translation> %1 of %2.</translation> <translation> %1 of %2.</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="712"/> <location filename="../ui/controllers/importController.cpp" line="738"/>
<source>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. </source> <source>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. </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/importController.cpp" line="716"/> <location filename="../ui/controllers/importController.cpp" line="743"/>
<source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source> <source>&lt;br&gt;In the imported configuration, potentially dangerous lines were found:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -505,37 +505,37 @@ Already installed containers were found on the server. All installed containers
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="604"/> <location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source> <source>Settings updated successfully</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="621"/> <location filename="../ui/controllers/installController.cpp" line="625"/>
<source>Server &apos;%1&apos; was rebooted</source> <source>Server &apos;%1&apos; was rebooted</source>
<translation> &apos;%1&apos; </translation> <translation> &apos;%1&apos; </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="633"/> <location filename="../ui/controllers/installController.cpp" line="637"/>
<source>Server &apos;%1&apos; was removed</source> <source>Server &apos;%1&apos; was removed</source>
<translation> &apos;%1&apos;</translation> <translation> &apos;%1&apos;</translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="644"/> <location filename="../ui/controllers/installController.cpp" line="648"/>
<source>All containers from server &apos;%1&apos; have been removed</source> <source>All containers from server &apos;%1&apos; have been removed</source>
<translation> &apos;%1&apos; </translation> <translation> &apos;%1&apos; </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="662"/> <location filename="../ui/controllers/installController.cpp" line="666"/>
<source>%1 has been removed from the server &apos;%2&apos;</source> <source>%1 has been removed from the server &apos;%2&apos;</source>
<translation>%1 &apos;%2&apos; </translation> <translation>%1 &apos;%2&apos; </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="671"/> <location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source> <source>Api config removed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="693"/> <location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source> <source>%1 cached profile cleared</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -556,12 +556,12 @@ Already installed containers were found on the server. All installed containers
<translation type="obsolete"> </translation> <translation type="obsolete"> </translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="832"/> <location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source> <source>Please login as the user</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/controllers/installController.cpp" line="860"/> <location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source> <source>Server added successfully</source>
<translation></translation> <translation></translation>
</message> </message>
@ -736,87 +736,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source> <source>Server settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source> <source>Port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="192"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="181"/>
<source>I1 - First special junk packet</source> <source>I1 - First special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="207"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="196"/>
<source>I2 - Second special junk packet</source> <source>I2 - Second special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="222"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="211"/>
<source>I3 - Third special junk packet</source> <source>I3 - Third special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="237"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="226"/>
<source>I4 - Fourth special junk packet</source> <source>I4 - Fourth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="241"/>
<source>I5 - Fifth special junk packet</source> <source>I5 - Fifth special junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="267"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="256"/>
<source>J1 - First controlled junk packet</source> <source>J1 - First controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="282"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="271"/>
<source>J2 - Second controlled junk packet</source> <source>J2 - Second controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="297"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="286"/>
<source>J3 - Third controlled junk packet</source> <source>J3 - Third controlled junk packet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="312"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="301"/>
<source>Itime - Special handshake timeout</source> <source>Itime - Special handshake timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<source>Only the settings for this device will be changed</source> <source>Only the settings for this device will be changed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="430"/> <location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="431"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -842,12 +842,12 @@ Thank you for staying with us!</source>
<translation type="vanished">AmneziaWG</translation> <translation type="vanished">AmneziaWG</translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="376"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="426"/>
<source>All users with whom you shared a connection with will no longer be able to connect to it.</source> <source>All users with whom you shared a connection with will no longer be able to connect to it.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source> <source>Save</source>
<translation></translation> <translation></translation>
</message> </message>
@ -883,51 +883,61 @@ Thank you for staying with us!</source>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="252"/>
<source>S3 - Cookie reply packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="276"/>
<source>S4 - Transport packet junk size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="300"/>
<source>H1 - Init packet magic header</source> <source>H1 - Init packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="270"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="318"/>
<source>H2 - Response packet magic header</source> <source>H2 - Response packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="288"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="336"/>
<source>H3 - Underload packet magic header</source> <source>H3 - Underload packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="306"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="354"/>
<source>H4 - Transport packet magic header</source> <source>H4 - Transport packet magic header</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="364"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="414"/>
<source>The values of the H1-H4 fields must be unique</source> <source>The values of the H1-H4 fields must be unique</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="370"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="420"/>
<source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source> <source>The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source> <source>Save settings?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source> <source>Continue</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="382"/> <location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="432"/>
<source>Unable change settings while there is an active connection</source> <source>Unable change settings while there is an active connection</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -479,6 +479,8 @@ void ApiConfigsController::fillServerConfig(const QString &protocol, const ApiPa
containerConfig[config_key::junkPacketMaxSize] = protocolConfig.value(config_key::junkPacketMaxSize); containerConfig[config_key::junkPacketMaxSize] = protocolConfig.value(config_key::junkPacketMaxSize);
containerConfig[config_key::initPacketJunkSize] = protocolConfig.value(config_key::initPacketJunkSize); containerConfig[config_key::initPacketJunkSize] = protocolConfig.value(config_key::initPacketJunkSize);
containerConfig[config_key::responsePacketJunkSize] = protocolConfig.value(config_key::responsePacketJunkSize); containerConfig[config_key::responsePacketJunkSize] = protocolConfig.value(config_key::responsePacketJunkSize);
containerConfig[config_key::cookieReplyPacketJunkSize] = protocolConfig.value(config_key::cookieReplyPacketJunkSize);
containerConfig[config_key::transportPacketJunkSize] = protocolConfig.value(config_key::transportPacketJunkSize);
containerConfig[config_key::initPacketMagicHeader] = protocolConfig.value(config_key::initPacketMagicHeader); containerConfig[config_key::initPacketMagicHeader] = protocolConfig.value(config_key::initPacketMagicHeader);
containerConfig[config_key::responsePacketMagicHeader] = protocolConfig.value(config_key::responsePacketMagicHeader); containerConfig[config_key::responsePacketMagicHeader] = protocolConfig.value(config_key::responsePacketMagicHeader);
containerConfig[config_key::underloadPacketMagicHeader] = protocolConfig.value(config_key::underloadPacketMagicHeader); containerConfig[config_key::underloadPacketMagicHeader] = protocolConfig.value(config_key::underloadPacketMagicHeader);

View file

@ -12,6 +12,7 @@
#include "core/errorstrings.h" #include "core/errorstrings.h"
#include "core/qrCodeUtils.h" #include "core/qrCodeUtils.h"
#include "core/serialization/serialization.h" #include "core/serialization/serialization.h"
#include "protocols/protocols_defs.h"
#include "systemController.h" #include "systemController.h"
#include "utilities.h" #include "utilities.h"
@ -51,7 +52,8 @@ namespace
|| (config.contains(amneziaConfigPatternHostName) && config.contains(amneziaConfigPatternUserName) || (config.contains(amneziaConfigPatternHostName) && config.contains(amneziaConfigPatternUserName)
&& config.contains(amneziaConfigPatternPassword))) { && config.contains(amneziaConfigPatternPassword))) {
return ConfigTypes::Amnezia; return ConfigTypes::Amnezia;
} else if (config.contains(wireguardConfigPatternSectionInterface) && config.contains(wireguardConfigPatternSectionPeer)) { } else if (config.contains(wireguardConfigPatternSectionInterface)
&& config.contains(wireguardConfigPatternSectionPeer)) {
return ConfigTypes::WireGuard; return ConfigTypes::WireGuard;
} else if ((config.contains(xrayConfigPatternInbound)) && (config.contains(xrayConfigPatternOutbound))) { } else if ((config.contains(xrayConfigPatternInbound)) && (config.contains(xrayConfigPatternOutbound))) {
return ConfigTypes::Xray; return ConfigTypes::Xray;
@ -67,7 +69,8 @@ namespace
#endif #endif
} // namespace } // namespace
ImportController::ImportController(const QSharedPointer<ServersModel> &serversModel, const QSharedPointer<ContainersModel> &containersModel, ImportController::ImportController(const QSharedPointer<ServersModel> &serversModel,
const QSharedPointer<ContainersModel> &containersModel,
const std::shared_ptr<Settings> &settings, QObject *parent) const std::shared_ptr<Settings> &settings, QObject *parent)
: QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel), m_settings(settings) : QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel), m_settings(settings)
{ {
@ -102,40 +105,42 @@ bool ImportController::extractConfigFromData(QString data)
if (config.startsWith("vless://")) { if (config.startsWith("vless://")) {
m_configType = ConfigTypes::Xray; m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig( m_config = extractXrayConfig(Utils::JsonToString(serialization::vless::Deserialize(config, &prefix, &errormsg),
Utils::JsonToString(serialization::vless::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), QJsonDocument::JsonFormat::Compact),
prefix); prefix);
return m_config.empty() ? false : true; return m_config.empty() ? false : true;
} }
if (config.startsWith("vmess://") && config.contains("@")) { if (config.startsWith("vmess://") && config.contains("@")) {
m_configType = ConfigTypes::Xray; m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig( m_config =
Utils::JsonToString(serialization::vmess_new::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), extractXrayConfig(Utils::JsonToString(serialization::vmess_new::Deserialize(config, &prefix, &errormsg),
QJsonDocument::JsonFormat::Compact),
prefix); prefix);
return m_config.empty() ? false : true; return m_config.empty() ? false : true;
} }
if (config.startsWith("vmess://")) { if (config.startsWith("vmess://")) {
m_configType = ConfigTypes::Xray; m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig( m_config = extractXrayConfig(Utils::JsonToString(serialization::vmess::Deserialize(config, &prefix, &errormsg),
Utils::JsonToString(serialization::vmess::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), QJsonDocument::JsonFormat::Compact),
prefix); prefix);
return m_config.empty() ? false : true; return m_config.empty() ? false : true;
} }
if (config.startsWith("trojan://")) { if (config.startsWith("trojan://")) {
m_configType = ConfigTypes::Xray; m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig( m_config = extractXrayConfig(Utils::JsonToString(serialization::trojan::Deserialize(config, &prefix, &errormsg),
Utils::JsonToString(serialization::trojan::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), QJsonDocument::JsonFormat::Compact),
prefix); prefix);
return m_config.empty() ? false : true; return m_config.empty() ? false : true;
} }
if (config.startsWith("ss://") && !config.contains("plugin=")) { if (config.startsWith("ss://") && !config.contains("plugin=")) {
m_configType = ConfigTypes::ShadowSocks; m_configType = ConfigTypes::ShadowSocks;
m_config = extractXrayConfig( m_config = extractXrayConfig(Utils::JsonToString(serialization::ss::Deserialize(config, &prefix, &errormsg),
Utils::JsonToString(serialization::ss::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), prefix); QJsonDocument::JsonFormat::Compact),
prefix);
return m_config.empty() ? false : true; return m_config.empty() ? false : true;
} }
@ -153,7 +158,8 @@ bool ImportController::extractConfigFromData(QString data)
m_configType = checkConfigFormat(config); m_configType = checkConfigFormat(config);
if (m_configType == ConfigTypes::Invalid) { if (m_configType == ConfigTypes::Invalid) {
config.replace("vpn://", ""); config.replace("vpn://", "");
QByteArray ba = QByteArray::fromBase64(config.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); QByteArray ba =
QByteArray::fromBase64(config.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals);
QByteArray baUncompressed = qUncompress(ba); QByteArray baUncompressed = qUncompress(ba);
if (!baUncompressed.isEmpty()) { if (!baUncompressed.isEmpty()) {
ba = baUncompressed; ba = baUncompressed;
@ -270,8 +276,10 @@ void ImportController::processNativeWireGuardConfig()
auto containers = m_config.value(config_key::containers).toArray(); auto containers = m_config.value(config_key::containers).toArray();
if (!containers.isEmpty()) { if (!containers.isEmpty()) {
auto container = containers.at(0).toObject(); auto container = containers.at(0).toObject();
auto serverProtocolConfig = container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject(); auto serverProtocolConfig =
auto clientProtocolConfig = QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object(); container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject();
auto clientProtocolConfig =
QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object();
QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5)); QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5));
QString junkPacketMinSize = QString::number(10); QString junkPacketMinSize = QString::number(10);
@ -281,6 +289,8 @@ void ImportController::processNativeWireGuardConfig()
clientProtocolConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize; clientProtocolConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
clientProtocolConfig[config_key::initPacketJunkSize] = "0"; clientProtocolConfig[config_key::initPacketJunkSize] = "0";
clientProtocolConfig[config_key::responsePacketJunkSize] = "0"; clientProtocolConfig[config_key::responsePacketJunkSize] = "0";
clientProtocolConfig[config_key::cookieReplyPacketJunkSize] = "0";
clientProtocolConfig[config_key::transportPacketJunkSize] = "0";
clientProtocolConfig[config_key::initPacketMagicHeader] = "1"; clientProtocolConfig[config_key::initPacketMagicHeader] = "1";
clientProtocolConfig[config_key::responsePacketMagicHeader] = "2"; clientProtocolConfig[config_key::responsePacketMagicHeader] = "2";
clientProtocolConfig[config_key::underloadPacketMagicHeader] = "3"; clientProtocolConfig[config_key::underloadPacketMagicHeader] = "3";
@ -417,7 +427,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::hostName] = hostName; lastConfig[config_key::hostName] = hostName;
lastConfig[config_key::port] = port.toInt(); lastConfig[config_key::port] = port.toInt();
if (!configMap.value("PrivateKey").isEmpty() && !configMap.value("Address").isEmpty() && !configMap.value("PublicKey").isEmpty()) { if (!configMap.value("PrivateKey").isEmpty() && !configMap.value("Address").isEmpty()
&& !configMap.value("PublicKey").isEmpty()) {
lastConfig[config_key::client_priv_key] = configMap.value("PrivateKey"); lastConfig[config_key::client_priv_key] = configMap.value("PrivateKey");
lastConfig[config_key::client_ip] = configMap.value("Address"); lastConfig[config_key::client_ip] = configMap.value("Address");
@ -447,18 +458,20 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::allowed_ips] = allowedIpsJsonArray; lastConfig[config_key::allowed_ips] = allowedIpsJsonArray;
QString protocolName = "wireguard"; QString protocolName = "wireguard";
if (!configMap.value(config_key::junkPacketCount).isEmpty() && !configMap.value(config_key::junkPacketMinSize).isEmpty() if (!configMap.value(config_key::junkPacketCount).isEmpty()
&& !configMap.value(config_key::junkPacketMaxSize).isEmpty() && !configMap.value(config_key::initPacketJunkSize).isEmpty() && !configMap.value(config_key::junkPacketMinSize).isEmpty()
&& !configMap.value(config_key::responsePacketJunkSize).isEmpty() && !configMap.value(config_key::initPacketMagicHeader).isEmpty() && !configMap.value(config_key::junkPacketMaxSize).isEmpty()
&& !configMap.value(config_key::initPacketJunkSize).isEmpty()
&& !configMap.value(config_key::responsePacketJunkSize).isEmpty()
&& !configMap.value(config_key::cookieReplyPacketJunkSize).isEmpty()
&& !configMap.value(config_key::transportPacketJunkSize).isEmpty()
&& !configMap.value(config_key::initPacketMagicHeader).isEmpty()
&& !configMap.value(config_key::responsePacketMagicHeader).isEmpty() && !configMap.value(config_key::responsePacketMagicHeader).isEmpty()
&& !configMap.value(config_key::underloadPacketMagicHeader).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::specialJunk1).isEmpty() && !configMap.value(config_key::specialJunk2).isEmpty()
&& !configMap.value(config_key::specialJunk2).isEmpty() && !configMap.value(config_key::specialJunk3).isEmpty() && !configMap.value(config_key::specialJunk4).isEmpty()
&& !configMap.value(config_key::specialJunk3).isEmpty() && !configMap.value(config_key::specialJunk5).isEmpty() && !configMap.value(config_key::controlledJunk1).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::controlledJunk2).isEmpty()
&& !configMap.value(config_key::controlledJunk3).isEmpty() && !configMap.value(config_key::controlledJunk3).isEmpty()
&& !configMap.value(config_key::specialHandshakeTimeout).isEmpty()) { && !configMap.value(config_key::specialHandshakeTimeout).isEmpty()) {
@ -467,6 +480,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize); lastConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize);
lastConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize); lastConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize);
lastConfig[config_key::responsePacketJunkSize] = configMap.value(config_key::responsePacketJunkSize); lastConfig[config_key::responsePacketJunkSize] = configMap.value(config_key::responsePacketJunkSize);
lastConfig[config_key::cookieReplyPacketJunkSize] = configMap.value(config_key::cookieReplyPacketJunkSize);
lastConfig[config_key::transportPacketJunkSize] = configMap.value(config_key::transportPacketJunkSize);
lastConfig[config_key::initPacketMagicHeader] = configMap.value(config_key::initPacketMagicHeader); lastConfig[config_key::initPacketMagicHeader] = configMap.value(config_key::initPacketMagicHeader);
lastConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader); lastConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader);
lastConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader); lastConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader);
@ -487,7 +502,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
if (!configMap.value("MTU").isEmpty()) { if (!configMap.value("MTU").isEmpty()) {
lastConfig[config_key::mtu] = configMap.value("MTU"); lastConfig[config_key::mtu] = configMap.value("MTU");
} else { } else {
lastConfig[config_key::mtu] = protocolName == "awg" ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu; lastConfig[config_key::mtu] =
protocolName == "awg" ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu;
} }
QJsonObject wireguardConfig; QJsonObject wireguardConfig;
@ -688,14 +704,23 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig)
|| (containerName == ContainerProps::containerToString(DockerContainer::Cloak)) || (containerName == ContainerProps::containerToString(DockerContainer::Cloak))
|| (containerName == ContainerProps::containerToString(DockerContainer::ShadowSocks))) { || (containerName == ContainerProps::containerToString(DockerContainer::ShadowSocks))) {
QString protocolConfig = QString protocolConfig = containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)]
containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)].toObject()[config_key::last_config].toString(); .toObject()[config_key::last_config]
QString protocolConfigJson = QJsonDocument::fromJson(protocolConfig.toUtf8()).object()[config_key::config].toString(); .toString();
QString protocolConfigJson =
QJsonDocument::fromJson(protocolConfig.toUtf8()).object()[config_key::config].toString();
// https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/script-options.rst // https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/script-options.rst
QStringList dangerousTags { QStringList dangerousTags { "up",
"up", "tls-verify", "ipchange", "client-connect", "route-up", "route-pre-down", "client-disconnect", "down", "learn-address", "auth-user-pass-verify" "tls-verify",
}; "ipchange",
"client-connect",
"route-up",
"route-pre-down",
"client-disconnect",
"down",
"learn-address",
"auth-user-pass-verify" };
QStringList maliciousStrings; QStringList maliciousStrings;
QStringList lines = protocolConfigJson.split('\n', Qt::SkipEmptyParts); QStringList lines = protocolConfigJson.split('\n', Qt::SkipEmptyParts);
@ -709,11 +734,13 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig)
} }
} }
m_maliciousWarningText = tr("This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious " m_maliciousWarningText =
tr("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. "); "scripts, so only add it if you fully trust the provider of this config. ");
if (!maliciousStrings.isEmpty()) { if (!maliciousStrings.isEmpty()) {
m_maliciousWarningText.push_back(tr("<br>In the imported configuration, potentially dangerous lines were found:")); m_maliciousWarningText.push_back(
tr("<br>In the imported configuration, potentially dangerous lines were found:"));
for (const auto &string : maliciousStrings) { for (const auto &string : maliciousStrings) {
m_maliciousWarningText.push_back(QString("<br><i>%1</i>").arg(string)); m_maliciousWarningText.push_back(QString("<br><i>%1</i>").arg(string));
} }
@ -736,8 +763,8 @@ void ImportController::processAmneziaConfig(QJsonObject &config)
} }
QJsonObject jsonConfig = QJsonDocument::fromJson(protocolConfig.toUtf8()).object(); QJsonObject jsonConfig = QJsonDocument::fromJson(protocolConfig.toUtf8()).object();
jsonConfig[config_key::mtu] = jsonConfig[config_key::mtu] = dockerContainer == DockerContainer::Awg ? protocols::awg::defaultMtu
dockerContainer == DockerContainer::Awg ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu; : protocols::wireguard::defaultMtu;
containerConfig[config_key::last_config] = QString(QJsonDocument(jsonConfig).toJson()); containerConfig[config_key::last_config] = QString(QJsonDocument(jsonConfig).toJson());

View file

@ -406,6 +406,10 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia
containerConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize); containerConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize);
containerConfig[config_key::initPacketJunkSize] = serverConfigMap.value(config_key::initPacketJunkSize); containerConfig[config_key::initPacketJunkSize] = serverConfigMap.value(config_key::initPacketJunkSize);
containerConfig[config_key::responsePacketJunkSize] = serverConfigMap.value(config_key::responsePacketJunkSize); containerConfig[config_key::responsePacketJunkSize] = serverConfigMap.value(config_key::responsePacketJunkSize);
containerConfig[config_key::cookieReplyPacketJunkSize] =
serverConfigMap.value(config_key::cookieReplyPacketJunkSize);
containerConfig[config_key::transportPacketJunkSize] =
serverConfigMap.value(config_key::transportPacketJunkSize);
containerConfig[config_key::initPacketMagicHeader] = serverConfigMap.value(config_key::initPacketMagicHeader); containerConfig[config_key::initPacketMagicHeader] = serverConfigMap.value(config_key::initPacketMagicHeader);
containerConfig[config_key::responsePacketMagicHeader] = serverConfigMap.value(config_key::responsePacketMagicHeader); containerConfig[config_key::responsePacketMagicHeader] = serverConfigMap.value(config_key::responsePacketMagicHeader);
containerConfig[config_key::underloadPacketMagicHeader] = containerConfig[config_key::underloadPacketMagicHeader] =

View file

@ -77,6 +77,12 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in
case Roles::ServerResponsePacketJunkSizeRole: case Roles::ServerResponsePacketJunkSizeRole:
m_serverProtocolConfig.insert(config_key::responsePacketJunkSize, value.toString()); m_serverProtocolConfig.insert(config_key::responsePacketJunkSize, value.toString());
break; break;
case Roles::ServerCookieReplyPacketJunkSizeRole:
m_serverProtocolConfig.insert(config_key::cookieReplyPacketJunkSize, value.toString());
break;
case Roles::ServerTransportPacketJunkSizeRole:
m_serverProtocolConfig.insert(config_key::transportPacketJunkSize, value.toString());
break;
case Roles::ServerInitPacketMagicHeaderRole: case Roles::ServerInitPacketMagicHeaderRole:
m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString()); m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString());
break; break;
@ -126,6 +132,10 @@ QVariant AwgConfigModel::data(const QModelIndex &index, int role) const
case Roles::ServerInitPacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::initPacketJunkSize); case Roles::ServerInitPacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::initPacketJunkSize);
case Roles::ServerResponsePacketJunkSizeRole: case Roles::ServerResponsePacketJunkSizeRole:
return m_serverProtocolConfig.value(config_key::responsePacketJunkSize); return m_serverProtocolConfig.value(config_key::responsePacketJunkSize);
case Roles::ServerCookieReplyPacketJunkSizeRole:
return m_serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize);
case Roles::ServerTransportPacketJunkSizeRole:
return m_serverProtocolConfig.value(config_key::transportPacketJunkSize);
case Roles::ServerInitPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::initPacketMagicHeader); case Roles::ServerInitPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::initPacketMagicHeader);
case Roles::ServerResponsePacketMagicHeaderRole: case Roles::ServerResponsePacketMagicHeaderRole:
return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader); return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader);
@ -167,6 +177,12 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
m_serverProtocolConfig[config_key::responsePacketJunkSize] = m_serverProtocolConfig[config_key::responsePacketJunkSize] =
serverProtocolConfig.value(config_key::responsePacketJunkSize) serverProtocolConfig.value(config_key::responsePacketJunkSize)
.toString(protocols::awg::defaultResponsePacketJunkSize); .toString(protocols::awg::defaultResponsePacketJunkSize);
m_serverProtocolConfig[config_key::cookieReplyPacketJunkSize] =
serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize)
.toString(protocols::awg::defaultCookieReplyPacketJunkSize);
m_serverProtocolConfig[config_key::transportPacketJunkSize] =
serverProtocolConfig.value(config_key::transportPacketJunkSize)
.toString(protocols::awg::defaultTransportPacketJunkSize);
m_serverProtocolConfig[config_key::initPacketMagicHeader] = m_serverProtocolConfig[config_key::initPacketMagicHeader] =
serverProtocolConfig.value(config_key::initPacketMagicHeader) serverProtocolConfig.value(config_key::initPacketMagicHeader)
.toString(protocols::awg::defaultInitPacketMagicHeader); .toString(protocols::awg::defaultInitPacketMagicHeader);

View file

@ -349,6 +349,28 @@ PageType {
textField.text: serverResponsePacketJunkSize textField.text: serverResponsePacketJunkSize
} }
TextFieldWithHeaderType {
id: cookieReplyPacketJunkSizeTextField
Layout.fillWidth: true
Layout.topMargin: 16
enabled: false
headerText: "S3 - Cookie Reply packet junk size"
textField.text: serverCookieReplyPacketJunkSize
}
TextFieldWithHeaderType {
id: transportPacketJunkSizeTextField
Layout.fillWidth: true
Layout.topMargin: 16
enabled: false
headerText: "S4 - Transport packet junk size"
textField.text: serverTransportPacketJunkSize
}
TextFieldWithHeaderType { TextFieldWithHeaderType {
id: initPacketMagicHeaderTextField id: initPacketMagicHeaderTextField
Layout.fillWidth: true Layout.fillWidth: true