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 "protocols/protocols_defs.h"
#include <QJsonDocument>
#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::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize);
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::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader);
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))
|| (oldProtoConfig.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)
!= newProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader))
|| (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({ { "$INIT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::initPacketJunkSize).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({ { "$RESPONSE_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).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::initPacketJunkSize, wgConfig.value(amnezia::config_key::initPacketJunkSize));
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::responsePacketMagicHeader, wgConfig.value(amnezia::config_key::responsePacketMagicHeader));
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::initPacketJunkSize).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::responsePacketMagicHeader).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::initPacketJunkSize, wgConfig.value(amnezia::config_key::initPacketJunkSize));
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::responsePacketMagicHeader, wgConfig.value(amnezia::config_key::responsePacketMagicHeader));
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::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::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::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);
QString wgConfigDocStr(wgConfigDoc.toJson(QJsonDocument::Compact));
@ -794,9 +806,9 @@ bool IosController::shareText(const QStringList& filesToSend) {
if (!qtController) return;
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
__block bool isAccepted = false;
[activityController setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
isAccepted = completed;
emit finished();
@ -808,11 +820,11 @@ bool IosController::shareText(const QStringList& filesToSend) {
popController.sourceView = qtController.view;
popController.sourceRect = CGRectMake(100, 100, 100, 100);
}
QEventLoop wait;
QObject::connect(this, &IosController::finished, &wait, &QEventLoop::quit);
wait.exec();
return isAccepted;
}
@ -826,7 +838,7 @@ QString IosController::openFile() {
if (!qtController) return;
[qtController presentViewController:documentPicker animated:YES completion:nil];
__block QString filePath;
documentPickerDelegate.documentPickerClosedCallback = ^(NSString *path) {
@ -841,7 +853,7 @@ QString IosController::openFile() {
QEventLoop wait;
QObject::connect(this, &IosController::finished, &wait, &QEventLoop::quit);
wait.exec();
return filePath;
}

View file

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

View file

@ -7,7 +7,7 @@ Jmin = $JUNK_PACKET_MIN_SIZE
Jmax = $JUNK_PACKET_MAX_SIZE
S1 = $INIT_PACKET_JUNK_SIZE
S2 = $RESPONSE_PACKET_JUNK_SIZE
S3 = $UNDERLOAD_PACKET_JUNK_SIZE
S3 = $COOKIE_REPLY_PACKET_JUNK_SIZE
S4 = $TRANSPORT_PACKET_JUNK_SIZE
H1 = $INIT_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>
</message>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>تم فحص%1 من %2.</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -527,47 +527,47 @@ Already installed containers were found on the server. All installed containers
تمت إضافة جميع الحاويات المٌثبتة إلي التطبيق</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>تم تحديث الاعدادات بنجاح</translation>
</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>
<translation>تمت إعادة تشغيل الخادم%1</translation>
</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>
<translation>تمت إزالة الخادم &apos;%1&apos;</translation>
</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>
<translation>قد تم حذفها &apos;%1&apos; جميع الحاويات من الخادم</translation>
</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>
<translation>%1 تم حدف &apos;%2&apos; اسم الخادم</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation>تم حذف تكوين Api</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>تم مسح ملف تعريف %1 المخزن مؤقتًا</translation>
</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>
<translation>من فضلك قم بتسجيل الدخول كمستخدم</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation>تمت إضافة الخادم بنجاح</translation>
</message>
@ -754,87 +754,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished">منفذ</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished">احفظ</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished">احفظ الإعدادات؟</translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished">واصل</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished">إلغاء</translation>
</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>
<translation type="unfinished">لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط</translation>
</message>
@ -852,12 +852,12 @@ Thank you for staying with us!</source>
<translation>منفذ</translation>
</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>
<translation>جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري.</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation>احفظ</translation>
</message>
@ -893,51 +893,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation>H1 - حزمة رأس سحرية مبدئية</translation>
</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>
<translation>H2 - رأس حزمة الاستجابة السحرية</translation>
</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>
<translation>H4 - رأس حزمة النقل السحرية</translation>
</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>
<translation>H3 - رأس حزمة السحر غير المحمل</translation>
</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>
<translation>يجب أن تكون قيم الحقول H1-H4 فريدة</translation>
</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>
<translation>يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92)</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>احفظ الإعدادات؟</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation>واصل</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation>إلغاء</translation>
</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>
<translation>لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط</translation>
</message>

View file

@ -485,17 +485,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">فایل پیکربندی نامعتبر است.</translation>
</message>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>ارزیابی %1 از %2.</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -531,47 +531,47 @@ Already installed containers were found on the server. All installed containers
کانتینرهای نصب شده بر روی سرور شناسایی شدند. تمام کانتینترهای نصب شده به نرم افزار اضافه شدند</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>تنظیمات با موفقیت بهروزرسانی شدند</translation>
</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>
<translation>سرور %1 راه اندازی مجدد شد</translation>
</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>
<translation>سرور %1 حذف شد</translation>
</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>
<translation>تمام کانتینترها از سرور %1 حذف شدند</translation>
</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>
<translation>%1 از سرور %2 حذف شد</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation>پیکربندی API حذف شد.</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>%1 پروفایل ذخیره شده پاک شد.</translation>
</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>
<translation>لطفا به عنوان کاربر وارد شوید</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation>سرور با موفقیت اضافه شد</translation>
</message>
@ -758,87 +758,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished">پورت</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished">ذخیره</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished">تنظیمات را ذخیره کن?</translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished">نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.</translation>
</message>
@ -864,12 +864,12 @@ Thank you for staying with us!</source>
<translation type="vanished">آیا میخواهید AmneziaWG از سرور حذف شود؟</translation>
</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>
<translation>همه کاربرانی که با آنها ارتباطی به اشتراک گذاشتهاید دیگر قادر به اتصال به آن نخواهند بود.</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation>ذخیره</translation>
</message>
@ -905,51 +905,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>تنظیمات را ذخیره کن?</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation>ادامه</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation>کنسل</translation>
</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>
<translation>نمیتوان تنظیمات را تغییر داد در حالی که اتصال فعال است.</translation>
</message>

View file

@ -465,17 +465,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished"> ि </translation>
</message>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>%2 %1 ि .</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -507,47 +507,47 @@ Already installed containers were found on the server. All installed containers
ि ि ि ि </translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>ि </translation>
</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>
<translation> &apos;%1&apos; ि </translation>
</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>
<translation> &apos;%1&apos; ि </translation>
</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>
<translation> &apos;%1&apos; ि </translation>
</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>
<translation>%1 &apos;%2&apos; ि </translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>%1 </translation>
</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>
<translation> ि </translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation> </translation>
</message>
@ -722,87 +722,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished">ि ?</translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished"> </translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished"> </translation>
</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>
<translation type="unfinished">ि ि </translation>
</message>
@ -829,37 +829,37 @@ Thank you for staying with us!</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation></translation>
</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>
<translation>H1-H4 ि ि</translation>
</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>
<translation> S1 + (148) S2 + िि (92) ि</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>ि ?</translation>
</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>
<translation> ि ि , .</translation>
</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>
<translation>ि ि </translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation> </translation>
</message>
@ -890,26 +890,36 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation> </translation>
</message>

View file

@ -481,17 +481,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">Configuration က</translation>
</message>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>%2 %1 က က.</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -527,47 +527,47 @@ Already installed containers were found on the server. All installed containers
ကက ကက က </translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>ကက </translation>
</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>
<translation> &apos;%1&apos; က </translation>
</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>
<translation> &apos;%1&apos; က </translation>
</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>
<translation> &apos;%1&apos; ကက က</translation>
</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>
<translation>%1 က &apos;%2&apos; က</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation>Api config ကက</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>ကက %1 က </translation>
</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>
<translation> log in က</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation>က </translation>
</message>
@ -754,87 +754,87 @@ Thank you for staying with us!</source>
<translation type="unfinished">MTU</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished">Port</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished">ကက ?</translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished">ကက</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished">က</translation>
</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>
<translation type="unfinished">ကက ကက </translation>
</message>
@ -856,12 +856,12 @@ Thank you for staying with us!</source>
<translation type="vanished">MTU</translation>
</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>
<translation>ကက က.</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation></translation>
</message>
@ -897,51 +897,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation>H1 - Init packet magic header</translation>
</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>
<translation>H2 - Response packet magic header</translation>
</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>
<translation>H4 - Transport packet magic header</translation>
</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>
<translation>H3 - Underload packet magic header</translation>
</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>
<translation>H1-H4 ကက </translation>
</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>
<translation>ကက S1 + က (148) S2 + က (92) </translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>ကက ?</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation>ကက</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation>က</translation>
</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>
<translation>ကက ကက </translation>
</message>

View file

@ -436,17 +436,17 @@ Can&apos;t be disabled for current server</source>
<context>
<name>ImportController</name>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>Отсканировано %1 из %2.</translation>
</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>
<translation>Эта конфигурация содержит настройки OpenVPN. Конфигурации OpenVPN могут содержать вредоносные скрипты, поэтому добавляйте их только в том случае, если полностью доверяете источнику этого файла. </translation>
</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>
<translation>&lt;br&gt;В импортированной конфигурации обнаружены потенциально опасные строки:</translation>
</message>
@ -478,47 +478,47 @@ Already installed containers were found on the server. All installed containers
На сервере обнаружены установленные протоколы и сервисы. Все они были добавлены в приложение</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>Настройки успешно обновлены</translation>
</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>
<translation>Сервер &apos;%1&apos; был перезагружен</translation>
</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>
<translation>Сервер &apos;%1&apos; был удален</translation>
</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>
<translation>Все протоколы и сервисы были удалены с сервера &apos;%1&apos;</translation>
</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>
<translation>%1 был удален с сервера &apos;%2&apos;</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation>Конфигурация API удалена</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>%1 закэшированный профиль очищен</translation>
</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>
<translation>Пожалуйста, войдите в систему от имени пользователя</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation>Сервер успешно добавлен</translation>
</message>
@ -690,87 +690,87 @@ Thank you for staying with us!</source>
<translation>MTU</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation>Настройки сервера</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation>Порт</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation>Сохранить настройки?</translation>
</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>
<translation>Будут изменены настройки только для этого устройства</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation>Продолжить</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation>Отменить</translation>
</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>
<translation>Невозможно изменить настройки во время активного соединения</translation>
</message>
@ -788,12 +788,12 @@ Thank you for staying with us!</source>
<translation>Порт</translation>
</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>
<translation>Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться.</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
@ -829,51 +829,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation>H1 - Init packet magic header</translation>
</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>
<translation>H2 - Response packet magic header</translation>
</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>
<translation>H4 - Transport packet magic header</translation>
</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>
<translation>H3 - Underload packet magic header</translation>
</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>
<translation>Значения в полях H1-H4 должны быть уникальными</translation>
</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>
<translation>Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92)</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>Сохранить настройки?</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation>Продолжить</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation>Отменить</translation>
</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>
<translation>Невозможно изменить настройки во время активного соединения</translation>
</message>

View file

@ -512,17 +512,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">Недійсний файл конфігурації</translation>
</message>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>Відскановано %1 з %2.</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -557,47 +557,47 @@ Already installed containers were found on the server. All installed containers
На сервері знайдені сервіси та протоколи, всі вони додані в застосунок</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>Налаштування оновлено</translation>
</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>
<translation>Сервер &apos;%1&apos; перезавантажено</translation>
</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>
<translation>Сервер &apos;%1&apos; був видалений</translation>
</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>
<translation>Всі сервіси та протоколи були видалені з сервера &apos;%1&apos;</translation>
</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>
<translation>%1 був видалений з сервера &apos;%2&apos;</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation>Конфігурацію API видалено</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>Кешований профіль %1 очищено</translation>
</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>
<translation>Буль-ласка, увійдіть в систему від імені користувача</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation>Сервер додано</translation>
</message>
@ -784,87 +784,87 @@ Thank you for staying with us!</source>
<translation type="unfinished">MTU</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished">Порт</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished">Зберегти</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished">Зберегти налаштування?</translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished">Продовжити</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished">Відмінити</translation>
</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>
<translation type="unfinished">Неможливо змінити налаштування, поки є активне підключення</translation>
</message>
@ -913,51 +913,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation>Зберегти</translation>
</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>
<translation>Значення полів H1-H4 мають бути унікальними</translation>
</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>
<translation>Значення поля S1 + розмір повідомлення ініціалізації (148) не має бути рівним значенню S2 + розмір повідомлення відповіді (92)</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>Зберегти налаштування?</translation>
</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>
<translation>Усі користувачі, з якими ви поділилися підключенням, більше не зможуть підключитися до нього.</translation>
</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>
<translation>Неможливо змінити налаштування, поки є активне підключення</translation>
</message>
@ -978,12 +988,12 @@ Thank you for staying with us!</source>
<translation type="vanished">Користувачі, з якими ви поділились цим протоколм, більше не зможуть до нього підключитись.</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation>Продовжити</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation>Відмінити</translation>
</message>

View file

@ -463,17 +463,17 @@ Can&apos;t be disabled for current server</source>
<translation type="vanished">غلط کنفیگریشن فائل</translation>
</message>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation>سکین%1 کی%2.</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -505,47 +505,47 @@ Already installed containers were found on the server. All installed containers
سرور پر پہلے سے نصب کنٹینرز پائے گئے۔ تمام نصب کنٹینرز کو ایپلی کیشن میں شامل کر دیا گیا ہے</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation>ترتیب کامیابی کے ساتھ اپ ڈیٹ ہو گئی</translation>
</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>
<translation>سرور %1 دوبارہ چالو کیا گیا تھا</translation>
</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>
<translation>سرور %1 ہٹا دیا گیا تھا</translation>
</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>
<translation>سرور &apos;%1&apos; سے تمام کنٹینرز ہٹا دیے گئے ہیں</translation>
</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>
<translation>سرور &apos;%2&apos; سے %1 ہٹا دیا گیا ہے</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation>%1 کیش کردہ پروفائل ختم کر دی گئی</translation>
</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>
<translation>براہ کرم صارف کے طور پر لاگ ان کریں</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation>سرور کامیابی سے شامل کیا گیا</translation>
</message>
@ -722,87 +722,87 @@ Thank you for staying with us!</source>
<translation type="unfinished">ام ٹی یو</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished">پورٹ</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished">ترتیبات محفوظ کریں?</translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished">جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا</translation>
</message>
@ -824,12 +824,12 @@ Thank you for staying with us!</source>
<translation type="vanished">ام ٹی یو</translation>
</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>
<translation>آپ جن لوگوں کے ساتھ آپ نے اس کنکشن کا اشتراک کیا تھا، وہ اس سے مزید جڑ نہیں سکیں گے۔</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation>محفوظ کریں</translation>
</message>
@ -865,51 +865,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation>H1 تا H4 فیلڈز کی قیمتیں مخصوص ہونی چاہیے</translation>
</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>
<translation>S1 + پیغام شروع کار (148) کے فیلڈ کی قیمت S2 + پیغام جواب (92) کے سائز کے برابر نہیں ہونی چاہئے</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation>ترتیبات محفوظ کریں?</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation>جاری رکھیں</translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation>منسوخ کریں</translation>
</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>
<translation>جب ایک فعال کنکشن موجود ہو تو ترتیبات کو تبدیل نہیں کیا جا سکتا</translation>
</message>

View file

@ -456,17 +456,17 @@ Can&apos;t be disabled for current server</source>
<context>
<name>ImportController</name>
<message>
<location filename="../ui/controllers/importController.cpp" line="677"/>
<location filename="../ui/controllers/importController.cpp" line="693"/>
<source>Scanned %1 of %2.</source>
<translation> %1 of %2.</translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -505,37 +505,37 @@ Already installed containers were found on the server. All installed containers
</translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="604"/>
<location filename="../ui/controllers/installController.cpp" line="608"/>
<source>Settings updated successfully</source>
<translation></translation>
</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>
<translation> &apos;%1&apos; </translation>
</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>
<translation> &apos;%1&apos;</translation>
</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>
<translation> &apos;%1&apos; </translation>
</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>
<translation>%1 &apos;%2&apos; </translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="671"/>
<location filename="../ui/controllers/installController.cpp" line="675"/>
<source>Api config removed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="693"/>
<location filename="../ui/controllers/installController.cpp" line="697"/>
<source>%1 cached profile cleared</source>
<translation type="unfinished"></translation>
</message>
@ -556,12 +556,12 @@ Already installed containers were found on the server. All installed containers
<translation type="obsolete"> </translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="832"/>
<location filename="../ui/controllers/installController.cpp" line="836"/>
<source>Please login as the user</source>
<translation></translation>
</message>
<message>
<location filename="../ui/controllers/installController.cpp" line="860"/>
<location filename="../ui/controllers/installController.cpp" line="864"/>
<source>Server added successfully</source>
<translation></translation>
</message>
@ -736,87 +736,87 @@ Thank you for staying with us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="327"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="316"/>
<source>Server settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="337"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="326"/>
<source>Port</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="413"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="414"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="423"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="424"/>
<source>Save settings?</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="425"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="426"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgClientSettings.qml" line="427"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -842,12 +842,12 @@ Thank you for staying with us!</source>
<translation type="vanished">AmneziaWG</translation>
</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>
<translation></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="348"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="398"/>
<source>Save</source>
<translation></translation>
</message>
@ -883,51 +883,61 @@ Thank you for staying with us!</source>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="375"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="425"/>
<source>Save settings?</source>
<translation></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="377"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="427"/>
<source>Continue</source>
<translation></translation>
</message>
<message>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="378"/>
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="428"/>
<source>Cancel</source>
<translation></translation>
</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>
<translation type="unfinished"></translation>
</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::initPacketJunkSize] = protocolConfig.value(config_key::initPacketJunkSize);
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::responsePacketMagicHeader] = protocolConfig.value(config_key::responsePacketMagicHeader);
containerConfig[config_key::underloadPacketMagicHeader] = protocolConfig.value(config_key::underloadPacketMagicHeader);

View file

@ -12,6 +12,7 @@
#include "core/errorstrings.h"
#include "core/qrCodeUtils.h"
#include "core/serialization/serialization.h"
#include "protocols/protocols_defs.h"
#include "systemController.h"
#include "utilities.h"
@ -51,7 +52,8 @@ namespace
|| (config.contains(amneziaConfigPatternHostName) && config.contains(amneziaConfigPatternUserName)
&& config.contains(amneziaConfigPatternPassword))) {
return ConfigTypes::Amnezia;
} else if (config.contains(wireguardConfigPatternSectionInterface) && config.contains(wireguardConfigPatternSectionPeer)) {
} else if (config.contains(wireguardConfigPatternSectionInterface)
&& config.contains(wireguardConfigPatternSectionPeer)) {
return ConfigTypes::WireGuard;
} else if ((config.contains(xrayConfigPatternInbound)) && (config.contains(xrayConfigPatternOutbound))) {
return ConfigTypes::Xray;
@ -67,7 +69,8 @@ namespace
#endif
} // 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)
: QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel), m_settings(settings)
{
@ -102,40 +105,42 @@ bool ImportController::extractConfigFromData(QString data)
if (config.startsWith("vless://")) {
m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig(
Utils::JsonToString(serialization::vless::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact),
prefix);
m_config = extractXrayConfig(Utils::JsonToString(serialization::vless::Deserialize(config, &prefix, &errormsg),
QJsonDocument::JsonFormat::Compact),
prefix);
return m_config.empty() ? false : true;
}
if (config.startsWith("vmess://") && config.contains("@")) {
m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig(
Utils::JsonToString(serialization::vmess_new::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact),
prefix);
m_config =
extractXrayConfig(Utils::JsonToString(serialization::vmess_new::Deserialize(config, &prefix, &errormsg),
QJsonDocument::JsonFormat::Compact),
prefix);
return m_config.empty() ? false : true;
}
if (config.startsWith("vmess://")) {
m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig(
Utils::JsonToString(serialization::vmess::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact),
prefix);
m_config = extractXrayConfig(Utils::JsonToString(serialization::vmess::Deserialize(config, &prefix, &errormsg),
QJsonDocument::JsonFormat::Compact),
prefix);
return m_config.empty() ? false : true;
}
if (config.startsWith("trojan://")) {
m_configType = ConfigTypes::Xray;
m_config = extractXrayConfig(
Utils::JsonToString(serialization::trojan::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact),
prefix);
m_config = extractXrayConfig(Utils::JsonToString(serialization::trojan::Deserialize(config, &prefix, &errormsg),
QJsonDocument::JsonFormat::Compact),
prefix);
return m_config.empty() ? false : true;
}
if (config.startsWith("ss://") && !config.contains("plugin=")) {
m_configType = ConfigTypes::ShadowSocks;
m_config = extractXrayConfig(
Utils::JsonToString(serialization::ss::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), prefix);
m_config = extractXrayConfig(Utils::JsonToString(serialization::ss::Deserialize(config, &prefix, &errormsg),
QJsonDocument::JsonFormat::Compact),
prefix);
return m_config.empty() ? false : true;
}
@ -153,7 +158,8 @@ bool ImportController::extractConfigFromData(QString data)
m_configType = checkConfigFormat(config);
if (m_configType == ConfigTypes::Invalid) {
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);
if (!baUncompressed.isEmpty()) {
ba = baUncompressed;
@ -270,8 +276,10 @@ void ImportController::processNativeWireGuardConfig()
auto containers = m_config.value(config_key::containers).toArray();
if (!containers.isEmpty()) {
auto container = containers.at(0).toObject();
auto serverProtocolConfig = container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject();
auto clientProtocolConfig = QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object();
auto serverProtocolConfig =
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 junkPacketMinSize = QString::number(10);
@ -281,6 +289,8 @@ void ImportController::processNativeWireGuardConfig()
clientProtocolConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
clientProtocolConfig[config_key::initPacketJunkSize] = "0";
clientProtocolConfig[config_key::responsePacketJunkSize] = "0";
clientProtocolConfig[config_key::cookieReplyPacketJunkSize] = "0";
clientProtocolConfig[config_key::transportPacketJunkSize] = "0";
clientProtocolConfig[config_key::initPacketMagicHeader] = "1";
clientProtocolConfig[config_key::responsePacketMagicHeader] = "2";
clientProtocolConfig[config_key::underloadPacketMagicHeader] = "3";
@ -417,7 +427,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::hostName] = hostName;
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_ip] = configMap.value("Address");
@ -447,18 +458,20 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::allowed_ips] = allowedIpsJsonArray;
QString protocolName = "wireguard";
if (!configMap.value(config_key::junkPacketCount).isEmpty() && !configMap.value(config_key::junkPacketMinSize).isEmpty()
&& !configMap.value(config_key::junkPacketMaxSize).isEmpty() && !configMap.value(config_key::initPacketJunkSize).isEmpty()
&& !configMap.value(config_key::responsePacketJunkSize).isEmpty() && !configMap.value(config_key::initPacketMagicHeader).isEmpty()
if (!configMap.value(config_key::junkPacketCount).isEmpty()
&& !configMap.value(config_key::junkPacketMinSize).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::underloadPacketMagicHeader).isEmpty()
&& !configMap.value(config_key::transportPacketMagicHeader).isEmpty()
&& !configMap.value(config_key::specialJunk1).isEmpty()
&& !configMap.value(config_key::specialJunk2).isEmpty()
&& !configMap.value(config_key::specialJunk3).isEmpty()
&& !configMap.value(config_key::specialJunk4).isEmpty()
&& !configMap.value(config_key::specialJunk5).isEmpty()
&& !configMap.value(config_key::controlledJunk1).isEmpty()
&& !configMap.value(config_key::specialJunk1).isEmpty() && !configMap.value(config_key::specialJunk2).isEmpty()
&& !configMap.value(config_key::specialJunk3).isEmpty() && !configMap.value(config_key::specialJunk4).isEmpty()
&& !configMap.value(config_key::specialJunk5).isEmpty() && !configMap.value(config_key::controlledJunk1).isEmpty()
&& !configMap.value(config_key::controlledJunk2).isEmpty()
&& !configMap.value(config_key::controlledJunk3).isEmpty()
&& !configMap.value(config_key::specialHandshakeTimeout).isEmpty()) {
@ -467,6 +480,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
lastConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize);
lastConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize);
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::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader);
lastConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader);
@ -487,7 +502,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
if (!configMap.value("MTU").isEmpty()) {
lastConfig[config_key::mtu] = configMap.value("MTU");
} 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;
@ -688,14 +704,23 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig)
|| (containerName == ContainerProps::containerToString(DockerContainer::Cloak))
|| (containerName == ContainerProps::containerToString(DockerContainer::ShadowSocks))) {
QString protocolConfig =
containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)].toObject()[config_key::last_config].toString();
QString protocolConfigJson = QJsonDocument::fromJson(protocolConfig.toUtf8()).object()[config_key::config].toString();
QString protocolConfig = containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)]
.toObject()[config_key::last_config]
.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
QStringList dangerousTags {
"up", "tls-verify", "ipchange", "client-connect", "route-up", "route-pre-down", "client-disconnect", "down", "learn-address", "auth-user-pass-verify"
};
QStringList dangerousTags { "up",
"tls-verify",
"ipchange",
"client-connect",
"route-up",
"route-pre-down",
"client-disconnect",
"down",
"learn-address",
"auth-user-pass-verify" };
QStringList maliciousStrings;
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 "
"scripts, so only add it if you fully trust the provider of this config. ");
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. ");
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) {
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();
jsonConfig[config_key::mtu] =
dockerContainer == DockerContainer::Awg ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu;
jsonConfig[config_key::mtu] = dockerContainer == DockerContainer::Awg ? protocols::awg::defaultMtu
: protocols::wireguard::defaultMtu;
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::initPacketJunkSize] = serverConfigMap.value(config_key::initPacketJunkSize);
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::responsePacketMagicHeader] = serverConfigMap.value(config_key::responsePacketMagicHeader);
containerConfig[config_key::underloadPacketMagicHeader] =

View file

@ -77,6 +77,12 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in
case Roles::ServerResponsePacketJunkSizeRole:
m_serverProtocolConfig.insert(config_key::responsePacketJunkSize, value.toString());
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:
m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString());
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::ServerResponsePacketJunkSizeRole:
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::ServerResponsePacketMagicHeaderRole:
return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader);
@ -167,6 +177,12 @@ void AwgConfigModel::updateModel(const QJsonObject &config)
m_serverProtocolConfig[config_key::responsePacketJunkSize] =
serverProtocolConfig.value(config_key::responsePacketJunkSize)
.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] =
serverProtocolConfig.value(config_key::initPacketMagicHeader)
.toString(protocols::awg::defaultInitPacketMagicHeader);

View file

@ -349,6 +349,28 @@ PageType {
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 {
id: initPacketMagicHeaderTextField
Layout.fillWidth: true

View file

@ -378,7 +378,7 @@ PageType {
initPacketMagicHeaderTextField.errorText === "" &&
responsePacketJunkSizeTextField.errorText === "" &&
cookieReplyHeaderJunkTextField.errorText === "" &&
transportHeaderJunkTextField.errorText === "" &&
transportHeaderJunkTextField.errorText === "" &&
initPacketJunkSizeTextField.errorText === "" &&
junkPacketMaxSizeTextField.errorText === "" &&
junkPacketMinSizeTextField.errorText === "" &&