From 9d531f5d741acb0777f2671b472a399f51a29b1a Mon Sep 17 00:00:00 2001 From: Shehab Ahmed Date: Fri, 19 Jul 2024 21:24:28 +0300 Subject: [PATCH 01/25] update the Arabic translation --- client/translations/amneziavpn_ar_EG.ts | 1228 +++++++++-------------- 1 file changed, 472 insertions(+), 756 deletions(-) diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts index 9e101c2d..4f985142 100644 --- a/client/translations/amneziavpn_ar_EG.ts +++ b/client/translations/amneziavpn_ar_EG.ts @@ -6,30 +6,30 @@ Application added: %1 - + تمت إضافة التطبيق: %1 The application has already been added - + التطبيق مٌضاف بالفعل The selected applications have been added - + تمت إضافة التطبيقات المٌختارة Application removed: %1 - + تم حذف التطبيق: %1 ConnectButton - + Unable to disconnect during configuration preparation - + غير قادر علي قطع الاتصال اثناء إعداد التكوين @@ -71,7 +71,7 @@ Preparing... - + جاري التحضير... @@ -86,12 +86,12 @@ The selected protocol is not supported on the current platform - البروتوكول المحدد غير مدعوم علي المنصة الحالية + البروتوكول المحدد غير مدعوم علي المنصة الحالية unable to create configuration - + غير قادر علي إنشاء تكوين @@ -148,11 +148,7 @@ Unable change protocol while there is an active connection - قم بتغيير البروتوكول عند تواجد اتصال - - - The selected protocol is not supported on the current platform - البروتوكول المحدد غير مدعوم علي المنصة الحالية + غير قادر علي تغيير البروتوكول اثناء تواجد اتصال @@ -207,13 +203,13 @@ Can't be disabled for current server Unable to open file - + غير قادر علي فتح الملف Invalid configuration file - + ملف تكوين غير صحيح @@ -223,19 +219,11 @@ Can't be disabled for current server In the imported configuration, potentially dangerous lines were found: - + في التكوين المستورد، تم العثور على سطور يحتمل أن تكون خطرة: InstallController - - installed successfully. - تم التثبيت بنجاح - - - is already installed on the server. - بالفعل مٌثبت علي الخادم - %1 installed successfully. @@ -289,23 +277,7 @@ Already installed containers were found on the server. All installed containers %1 cached profile cleared - - - - 1% has been removed from the server '%2' - %1 من الخادم '%2' تم مسحة - - - Server ' - خادم - - - ' was removed - تم حذفة - - - has been removed from the server ' - قد تمت إزالتة من الخادم + تم مسح ملف تعريف %1 المخزن مؤقتًا @@ -321,19 +293,19 @@ Already installed containers were found on the server. All installed containers InstalledAppsDrawer - + Choose application - + اختر تطبيق - + application name - + اسم التطبيق - + Add selected - + اضف اختيارك @@ -399,32 +371,32 @@ Already installed containers were found on the server. All installed containers PageHome - + Logging enabled - + تم تمكين التسجيل - + Split tunneling enabled تقسيم الانفاق مٌفعل - + Split tunneling disabled تقسيم الانفاق مٌعطل - + VPN protocol بروتوكول VPN - + Servers الخوادم - + Unable change server while there is an active connection لا يمكن تغير الخادم بينما هناك اتصال مفعل @@ -444,15 +416,7 @@ Already installed containers were found on the server. All installed containers MTU - - - - Remove AmneziaWG - قم بحذف AmneziaWG - - - Remove AmneziaWG from server? - قم بحذف AmneziaWG من الخادم؟ + @@ -467,12 +431,12 @@ Already installed containers were found on the server. All installed containers The values of the H1-H4 fields must be unique - + يجب أن تكون قيم الحقول H1-H4 فريدة The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92) - + يجب ألا تساوي قيمة الحقل S1 + حجم بدء الرسالة (148) S2 + حجم استجابة الرسالة (92) @@ -492,7 +456,7 @@ Already installed containers were found on the server. All installed containers Unable change settings while there is an active connection - + لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط @@ -526,260 +490,224 @@ Already installed containers were found on the server. All installed containers Unable change settings while there is an active connection - + لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط PageProtocolOpenVpnSettings - + OpenVPN settings OpenVPN اعدادات - + VPN address subnet الشبكة الفرعية لعنوان VPN - + Network protocol بروتوكول الشبكة - + Port منفذ - + Auto-negotiate encryption التفاوض التلقائي علي الشبكة - + Hash - + SHA512 - + SHA384 - + SHA256 - + SHA3-512 - + SHA3-384 - + SHA3-256 - + whirlpool - + BLAKE2b512 - + BLAKE2s256 - + SHA1 - + Cipher شفرة - + AES-256-GCM - + AES-192-GCM - + AES-128-GCM - + AES-256-CBC - + AES-192-CBC - + AES-128-CBC - + ChaCha20-Poly1305 - + ARIA-256-CBC - + CAMELLIA-256-CBC - + none لا شئ - + TLS auth TLS مصادقة - + Block DNS requests outside of VPN احظر طلبات DNS خارج ال VPN - + Additional client configuration commands اوامر تكوين العميل الاضافية - - + + Commands: الاوامر: - + Additional server configuration commands اوامر تكوين الخادم الاضافية - + Unable change settings while there is an active connection - + لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط - Remove OpenVPN - احذف OpenVPN - - - Remove OpenVPN from server? - احذف OpenVPN من الخادم? - - - All users with whom you shared a connection with will no longer be able to connect to it. - جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري. - - - + Save احفظ - - All users with whom you shared a connection will no longer be able to connect to it - جميع المستخدمين الذين شاركت اتصال معهم لن يستطيعو الاتصال بعد الان - - - Continue - واصل - - - Cancel - إلغاء - PageProtocolRaw - + settings إعدادات - + Show connection options اظهر اختيارات الاتصال - Connection options - اختيارات الاتصال - - - + Connection options %1 %1 اختيارات الاتصال - + Remove احذف - + Remove %1 from server? احذف %1 من الخادم ? - + All users with whom you shared a connection with will no longer be able to connect to it. جميع المستخدمين الذين شاركت معهم اتصال لن يكونو قادرين علي الاتصال مرة اخري. - from server? - من الخادم - - - All users with whom you shared a connection will no longer be able to connect to it - جميع المستخدمين الذين شاركت اتصال معهم لن يستطيعو الاتصال بعد الان - - - + Continue واصل - + Cancel إلغاء @@ -810,7 +738,7 @@ Already installed containers were found on the server. All installed containers Unable change settings while there is an active connection - + لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط @@ -818,34 +746,22 @@ Already installed containers were found on the server. All installed containers WG settings - + إعدادات WG Port - منفذ + منفذ MTU - + Unable change settings while there is an active connection - - - - All users with whom you shared a connection will no longer be able to connect to it. - جميع المستخدمين الذين شاركت معاهم اتصال لن يستطيعو الاتصال بعد الان. - - - Continue - واصل - - - Cancel - إلغاء + لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط @@ -858,64 +774,60 @@ Already installed containers were found on the server. All installed containers XRay settings - + إعدادات XRay Disguised as traffic from - متنكراً في حركة مرور من + متنكراً في حركة مرور من Save - احفظ + احفظ Unable change settings while there is an active connection - + لا يمكن تغيير الإعدادات أثناء وجود اتصال نشط PageServiceDnsSettings - + A DNS service is installed on your server, and it is only accessible via VPN. تم تثبيت خدمة DNS علي الخادم الخاص بك, و فقط متاح من خلال VPN. - + The DNS address is the same as the address of your server. You can configure DNS in the settings, under the connections tab. عنوان ال DNS متطابق لنفس عنوان الخادم بك, يمكنك تهيئة DNS في الاعدادات, تحت علامة تبويب الاتصال. - + Remove احذف - + Remove %1 from server? احذف %1 ? - + Cannot remove AmneziaDNS from running server - + لا يمكن إزالة AmneziaDNS من الخادم قيد التشغيل - from server? - من الخادم - - - + Continue واصل - + Cancel إلغاء @@ -923,108 +835,88 @@ Already installed containers were found on the server. All installed containers PageServiceSftpSettings - + Settings updated successfully تم تحديث الإعدادات بنجاح - + SFTP settings SFTP إعدادات - + Host استضافة - - - - + + + + Copied تم الاستنساخ - + Port منفذ - + User name اسم المستخدم - + Password كلمة المرور - + Mount folder on device قم بتثبيت المجلد علي الجهاز - + In order to mount remote SFTP folder as local drive, perform following steps: <br> لتثبيت مجلد SFTP كمحرك اقراص محلي, اتبع هذه الخطوات : <br> - - + + <br>1. Install the latest version of <br>1. تحميل اخر اصدار من - - + + <br>2. Install the latest version of <br>2. تحمير اخر اصدار من - + Detailed instructions تعليمات مفصلة - - - Remove SFTP and all data stored there - امسح SFTP وجميع البيانات المخزنة - - - - Remove SFTP and all data stored there? - امسح SFTP وجميع البيانات المخزنة؟ - - - - Continue - واصل - - - - Cancel - إلغاء - PageServiceSocksProxySettings Settings updated successfully - + تم تحديث الإعدادات بنجاح SOCKS5 settings - + إعدادات SOCKS5 Host - استضافة + استضافة @@ -1032,109 +924,89 @@ Already installed containers were found on the server. All installed containers Copied - + تم النسخ Port - منفذ + منفذ User name - اسم المستخدم + اسم المستخدم Password - كلمة المرور + كلمة المرور Username - + اسم المستخدم Change connection settings - + تغيير إعدادات الاتصال The port must be in the range of 1 to 65535 - + يجب أن يكون المنفذ في النطاق من 1 إلى 65535 Password cannot be empty - + لا يمكن ان تكون كلمة المرور فارغة Username cannot be empty - + اسم المستخدم لا يمكن ان يكون فارغ PageServiceTorWebsiteSettings - + Settings updated successfully تم تحديث الإعدادات بنجاح - + Tor website settings Tor إعدادات متصفح - + Website address عنوان المتصفح - + Copied تم الاستنساخ - + Use <a href="https://www.torproject.org/download/" style="color: #FBB26A;">Tor Browser</a> to open this URL. - + After creating your onion site, it takes a few minutes for the Tor network to make it available for use. - + When configuring WordPress set the this onion address as domain. عند تكوين WordPress قم بتعيين عنوان ال onion هذا ك domain. - - - Remove website - احذف متصفح - - - - The site with all data will be removed from the tor network. - سيتم حذف الموقع وجميع البيانات من الشبكة. - - - - Continue - واصل - - - - Cancel - إلغاء - PageSettings @@ -1177,83 +1049,77 @@ Already installed containers were found on the server. All installed containers PageSettingsAbout - This is a free and open source application. If you like it, support the developers with a donation. -And if you don't like the app, all the more support it - the donation will be used to improve the app. - هذا تطبيق مجاني و مفتوح المصدر. إذا عجبك التطبيق, ادعم المطورين ب تبرع. - وإذا لما يعجبك, فهذا سبب اكبر لدعمة - تستخدم التبرعات في تطوير التطبيق - - - + Support Amnezia دعم Amenzia - + Amnezia is a free and open-source application. You can support the developers if you like it. هو تطبيق مجاني ومفتوح المصدر يمكنك دعم مطورين Amnezia إذا اعجبك. - + Contacts التواصل - + Telegram group مجموعة ال Telegram - + To discuss features لمناقشة الميزات - + https://t.me/amnezia_vpn_en - + Mail البريد - + For reviews and bug reports لل مراجعات والابلاغات عن المشاكل - + GitHub GitHub - + https://github.com/amnezia-vpn/amnezia-client - + Website موقع - + https://amnezia.org - + Software version: %1 %1 :إصدار البرنامج - + Check for updates تحقق من وجود تحديثات - + Privacy Policy سياسات الخصوصية @@ -1261,253 +1127,241 @@ And if you don't like the app, all the more support it - the donation will PageSettingsAppSplitTunneling - + Cannot change split tunneling settings during active connection - لا يمكن تغير إعدادات تقسيم الانفاق بينما هناك اتصال مٌفعل + لا يمكن تغير إعدادات تقسيم الانفاق بينما هناك اتصال مٌفعل - + Only the apps from the list should have access via VPN - + يجب أن تتمتع التطبيقات الموجودة في القائمة فقط بإمكانية الوصول عبر VPN - + Apps from the list should not have access via VPN - + لا يجب ان تتمتع التطبيقات في القائمة بولوج ل VPN - + App split tunneling - + تقسيم نفق التطبيق - + Mode - وضع - - - - Remove - احذف + وضع - Continue - واصل + Remove + احذف + Continue + واصل + + + Cancel - إلغاء + إلغاء - + application name - - - - - Open executable file - + اسم التطبيق + Open executable file + افتح ملف قابل للتنفيذ + + + Executable files (*.*) - + ملفات قابلة للتنفيذ (*.*) PageSettingsApplication - + Application تطبيق - + Allow application screenshots اسمح بلقطات شاشة التطبيق - + Enable notifications - + تفعيل الإشعارات - + Enable notifications to show the VPN state in the status bar - + تفعيل الإشعارات لإظهار حالة ال VPN في شريط الحالة - + Auto start تشغيل تلقائي - Launch the application every time - شغل البرنامج كل مرة - - - starts - يبدأ - - - + Launch the application every time the device is starts قم بتشغيل التطبيق فكل مرة يتم فيها تشغيل الجهاز - + Auto connect اتصال تلقائي - + Connect to VPN on app start اتصل ب ال VPN عند تشغيل التطبيق - + Start minimized ابدأ ب الحجم الادني - + Launch application minimized تشغيل التطبيق في الحد الادني - + Language اللغة - + Logging تسجيل - + Enabled مٌفعل - + Disabled مٌعطل - + Reset settings and remove all data from the application إعادة ضبط الاعدادات ومسح جميع البيانات من التطبيق - + Reset settings and remove all data from the application? إعادة ضبط الاعدادات ومسح جميع البيانات من التطبيق؟ - + All settings will be reset to default. All installed AmneziaVPN services will still remain on the server. سيتم ضبط الاعدادات الافتراضية. جميع خدمات AmneziaVPN المٌثبتة ستبقي علي الخادم. - + Continue واصل - + Cancel إلغاء - + Cannot reset settings during active connection - + لا يمكن إعادة ضبط الإعدادات اثناء تواجد اتصال فعال PageSettingsBackup - + Settings restored from backup file تم إعادة الاعدادات من ملف نسخة احتياطية - It will help you instantly restore connection settings at the next installation - سيساعدك علي إعادة إعدادات الاتصال بسرعة عند إعادة تثبيت التطبيق - - - + Back up your configuration قم بعمل نسخة احتياطية - + You can save your settings to a backup file to restore them the next time you install the application. يمكنك حفظ الإعدادات في ملف نسخة احتياطية لأعادتهم في المرة القادمة التي تثبت فيها التطبيق. - + The backup will contain your passwords and private keys for all servers added to AmneziaVPN. Keep this information in a secure place. ستحتوي النسخة الاحتياطية علي كلمات مرورك و المفاتيح الخاصة للخوادم المٌضافة إلي AmneziaVPN. احفظ هذه المعلومات في مكان امن. - + Make a backup إضافة نسخة احتياطية - + Save backup file احفظ ملف النسخه الاحتياطيه - - + + Backup files (*.backup) ملفات نٌسخ احتياطية (*.backup) - + Backup file saved تم حفظ ملف النسخ الاحتياطي - + Restore from backup استرجاع من ملف يحتوي علي نسخة احتياطية - + Open backup file افتح ملف نسخ احتياطي - + Import settings from a backup file? استرد الإعدادات من ملف نسخ احتياطي؟ - + All current settings will be reset ستتم إعادة ضبط جميع الإعدادات الحالية - + Continue واصل - + Cancel إلغاء - + Cannot restore backup settings during active connection - + لا يمكن استعادة إعدادات النسخ الاحتياطي أثناء الاتصال النشط @@ -1527,10 +1381,6 @@ And if you don't like the app, all the more support it - the donation will Allows you to use the VPN only for certain Apps يسمح لك بأستخدام ال VPN علي تطبيقات معينة - - Use AmneziaDNS if installed on the server - استخدم AmneziaDNS إذا كان مٌثبت علي الخادم - Use AmneziaDNS @@ -1564,90 +1414,78 @@ And if you don't like the app, all the more support it - the donation will KillSwitch - + Disables your internet if your encrypted VPN connection drops out for any reason. - + يعطل اتصال الإنترنت الخاص بك إذا انقطع اتصال VPN المشفر لأي سبب من الأسباب. Cannot change killSwitch settings during active connection - - - - Split site tunneling - قسم نفق الموقع - - - Allows you to connect to some sites through a secure connection, and to others bypassing it - يسمحلك بألاتصال ببعض المواقع بسرية, وعلي الاخرين تجاوزه - - - Separate application tunneling - فرق نفق التطبيق + لا يمكن تغيير إعدادات KillSwitch اثناء تواجد اتصال فعال PageSettingsDns - + Default server does not support custom DNS الخادم الافتراضي لا يدعم DNS مخصص - + DNS servers خوادم ال DNS - + If AmneziaDNS is not used or installed AmneziaVPN ليس مٌستخدم او مٌثبت - + Primary DNS الرئيسي DNS - + Secondary DNS الثانوي DNS - + Restore default استعادة الافتراضي - + Restore default DNS settings? قم بأعادة ضبط إعدادات ال DNS الافتراضية؟ - + Continue واصل - + Cancel إلغاء - + Settings have been reset لم يتم إعادة ضبط الإعدادات - + Save احفظ - + Settings saved تم حفظ الإعدادات @@ -1655,72 +1493,72 @@ And if you don't like the app, all the more support it - the donation will PageSettingsLogging - + Logging is enabled. Note that logs will be automatically disabled after 14 days, and all log files will be deleted. - + تم تمكين التسجيل. لاحظ أنه سيتم تعطيل السجلات تلقائيًا بعد 14 يومًا، وسيتم حذف جميع ملفات السجل. - + Logging التسجيل - + Enabling this function will save application's logs automatically. By default, logging functionality is disabled. Enable log saving in case of application malfunction. سيتم حفظ سجلات البرنامج بشكل تلقائي عند تفعيل هذه الميزة, بشكل افتراضي, هذه الميزة مٌعطلة. قم بتفعيل هذه الميزة في حالة هناك خلل في التطبيق. - + Save logs احفظ السجلات - + Open folder with logs افتح مجلد يحتوي علي سجلات - + Save احفظ - + Logs files (*.log) ملفات الولوج (*.log) - + Logs file saved تم حفظ ملف السجل - + Save logs to file احفظ السجلات في ملف - + Clear logs? مسح السجلات؟ - + Continue واصل - + Cancel إلغاء - + Logs have been cleaned up تم مسح السجلات - + Clear logs احذف السجلات @@ -1728,34 +1566,22 @@ And if you don't like the app, all the more support it - the donation will PageSettingsServerData - + All installed containers have been added to the application تمت إضافة جميع الحاويات المٌثبتة للتطبيق - + No new installed containers found لم يتم العثور علي اي حاويات جديدة مٌثبتة - Clear Amnezia cache - حذف ذاكرة تخزين Amnezia المؤقتة - - - May be needed when changing other settings - قد يكون ضروري عند تغير الإعدادات الاخري - - - Clear cached profiles? - حذف الملفات الشخصية المخزنة مؤقتاً؟ - - - + Do you want to reboot the server? هل تريد إعادة تشغيل الخادم؟ - + Do you want to clear server from Amnezia software? هل تريد حذف الخادم من Amnezia? @@ -1764,94 +1590,94 @@ And if you don't like the app, all the more support it - the donation will - - - - - - Continue - واصل - + Continue + واصل + + + + + + Cancel إلغاء - + Check the server for previously installed Amnezia services افحص الخادم عن اي خدمات Amnezia مٌثبتة سابقاُ - + Add them to the application if they were not displayed اضفهم إلي التطبيق إذا لم يكونو ظاهرين - + Reboot server إعادة تشغيل الخادم - + The reboot process may take approximately 30 seconds. Are you sure you wish to proceed? عملية إعادة التشغيل قد تستغرق 30 ثانية, هل تريد الاستكمال؟ - + Cannot reboot server during active connection - + لا يمكن إعادة تشغيل الخادم أثناء الاتصال النشط - + Remove server from application احذف خادم من التطبيق - + Do you want to remove the server from application? هل تريد حذف الخادم من التطبيق؟ - + Cannot remove server during active connection - + لا يمكن إزالة الخادم أثناء الاتصال النشط - + All users whom you shared a connection with will no longer be able to connect to it. جميع المستخدمين الذين شاركت معهم اتصال لن يستطيعو الاتصال مرة اخري. - + Cannot clear server from Amnezia software during active connection - + لا يمكن مسح الخادم من برنامج Amnezia أثناء الاتصال النشط - + Reset API config إعادة تكوين API - + Do you want to reset API config? هل تريد إعادة تكوين API? - + Cannot reset API config during active connection - + لا يمكن إعادة تعيين تكوين API أثناء الاتصال النشط - + All installed AmneziaVPN services will still remain on the server. جميع خدمات AmneziaVPN المٌثبتة ستظل علي الخادم. - + Clear server from Amnezia software احذف خادم من Amnezia @@ -1859,27 +1685,27 @@ And if you don't like the app, all the more support it - the donation will PageSettingsServerInfo - + Server name اسم الخادم - + Save احفظ - + Protocols البروتوكولات - + Services الخدمات - + Management الإدارة @@ -1887,67 +1713,54 @@ And if you don't like the app, all the more support it - the donation will PageSettingsServerProtocol - + settings الإعدادات - + Clear %1 profile - + مسح ملف تعريف %1 - + Clear %1 profile? - + مسح ملف تعريف %1؟ - + - + Unable to clear %1 profile while there is an active connection - + غير قادر على مسح ملف تعريف %1 أثناء وجود اتصال نشط - + Remove احذف - + All users with whom you shared a connection will no longer be able to connect to it. جميع المستخدمين الذين شاركت معاهم اتصال لن يستطيعو الاتصال بعد الان. - + Cannot remove active container - + لا يمكن إزالة الحاوية النشطة - from server? - من الخادم؟ - - - - Remove %1 from server? - احذف %1 من الخادم ? - - - All users with whom you shared a connection will no longer be able to connect to it - جميع المستخدمين الذين شاركت اتصال معهم لن يستطيعو الاتصال بعد الان - - - - + + Continue واصل - - + + Cancel إلغاء @@ -1963,112 +1776,100 @@ And if you don't like the app, all the more support it - the donation will PageSettingsSplitTunneling - Only the addresses in the list must be opened via VPN - يجب فتح العنواين التي في القائمة عبر VPN - - - Addresses from the list should never be opened via VPN - لا يجب ابداً فتح العنواين التي في القائمة عن طريق VPN - - - Split site tunneling - قسم نفق الموقع - - - + Default server does not support split tunneling function السرفر الافتراضي لا يدعم ميزة تقسيم الانفاق - + Addresses from the list should not be accessed via VPN لا يجب الولوج للعنواين المذكورة هنا من خلال ال VPN - + Split tunneling تقسيم الانفاق - + Mode وضع - + Remove احذف - + Continue واصل - + Cancel إلغاء - + Only the sites listed here will be accessed through the VPN سيتم الولوج للمواقع المذكورة هنا فقط عن طريق ال VPN - + Cannot change split tunneling settings during active connection لا يمكن تغير إعدادات تقسيم الانفاق بينما هناك اتصال مٌفعل - + website or IP موقع او IP - + Import / Export Sites - + Import استرد - + Save site list احفظ قائمة المواقع - + Save sites احفظ المواقع - - - + + + Sites files (*.json) - + Import a list of sites استرد قائمة من المواقع - + Replace site list تبديل قائمة المواقع - - + + Open sites file افتح ملف المواقع - + Add imported sites to existing ones إضافة المواقع المستردة للمواقع الموجودة @@ -2080,14 +1881,6 @@ And if you don't like the app, all the more support it - the donation will Server connection اتصال الخادم - - Do not use connection code from public sources. It may have been created to intercept your data. - -It's okay as long as it's from someone you trust. - لا تستخدم رمز الاتصال من المصادر العامة. ربما تم إنشاؤه لاعتراض بياناتك - -لا بأس طالما انه من شخص تثق به. - Do not use connection codes from untrusted sources, as they may be created to intercept your data. @@ -2185,22 +1978,22 @@ It's okay as long as it's from someone you trust. PageSetupWizardEasy - + What is the level of internet control in your region? ما هو مستوي التحكم في الانترنت في منطقتك؟ - + Choose a VPN protocol اختر بروتوكول VPN - + Skip setup تخطي الإعداد - + Continue واصل @@ -2209,37 +2002,37 @@ It's okay as long as it's from someone you trust. PageSetupWizardInstalling - + Usually it takes no more than 5 minutes عادة لا تستغرق اكثر من 5 دقائق - + The server has already been added to the application تمت إضافة الخادم بالفعل للتطبيق - + Amnezia has detected that your server is currently اكتشف Amnezia الخادم الخاص بك موجود حاليًا - + busy installing other software. Amnezia installation مشغول بتثبيت برامج اخري, تثبيت Amnezia - + Cancel installation إلغاء التثبيت - + will pause until the server finishes installing other software سيتوقف مؤقتًا حتى ينتهي الخادم من تثبيت البرامج الأخرى - + Installing جاري التثبيت @@ -2247,39 +2040,39 @@ It's okay as long as it's from someone you trust. PageSetupWizardProtocolSettings - + Installing %1 تثبيت %1 - + More detailed اكثر تفصيلاً - + Close اغلق - + Network protocol بروتوكول شبكة - + Port منفذ - + Install تثبيت - + The port must be in the range of 1 to 65535 - + يجب أن يكون المنفذ في النطاق من 1 إلى 65535 @@ -2298,7 +2091,7 @@ It's okay as long as it's from someone you trust. PageSetupWizardQrReader - + Point the camera at the QR code and hold for a couple of seconds. قم بتوجيه الكاميرا نحو رمز QR و اثبت لبضع ثوان. @@ -2306,32 +2099,32 @@ It's okay as long as it's from someone you trust. PageSetupWizardStart - + Settings restored from backup file تم استرداد الإعدادات من ملف نسخة احتياطية - + Free service for creating a personal VPN on your server. خدمة مجانية لأنشاء VPN شخصي علي الخادم الشخصي. - + Helps you access blocked content without revealing your privacy, even to VPN providers. يساعدك في الولوج للمحتوي المحظور بدون إظهار خصوصيات, حتي لمزود ال VPN. - + I have the data to connect لدي البيانات المطلوبة للأتصال - + I have nothing ليس لدي اي شئ - + https://amnezia.org/instructions/0_starter-guide @@ -2368,32 +2161,32 @@ It's okay as long as it's from someone you trust. PageSetupWizardViewConfig - + New connection اتصال جديد - + Collapse content طي المحتوي - + Show content اظهر المحتوي - + Enable WireGuard obfuscation. It may be useful if WireGuard is blocked on your provider. - + تمكين تشويش WireGuard. قد يكون من المفيد إذا تم حظر WireGuard على مزود الخدمة الخاص بك. - + Use connection codes only from sources you trust. Codes from public sources may have been created to intercept your data. استخدم رموز اتصال فقط من المصادر التي تثق بها, ربما تم إنشاء رموز من مصادر عامة لاعتراض بياناتك. - + Connect اتصل @@ -2401,223 +2194,207 @@ It's okay as long as it's from someone you trust. PageShare - + Save OpenVPN config احفظ تكوين OpenVPN - + Save WireGuard config احفظ تكوين WireGuard - + Save AmneziaWG config احفظ تكوين AmneziaWG - + Save Shadowsocks config احفظ تكوين Shadowsocks - + Save Cloak config احفظ تكوين Cloak - + Save XRay config - + حفظ تكوين XRay - + For the AmneziaVPN app AmneziaVPN من اجل تطبيق - + OpenVPN native format تنسيق OpenVPN الاصلي - + WireGuard native format تنسيق WireGuard الاصلي - + AmneziaWG native format تنسيق AmneziaWG اصلي - + Shadowsocks native format تنسيق Shadowsocks الاصلي - + Cloak native format تنسيق Cloak الاصلي - + XRay native format - + الشكل الاصلي ل XRay - + Share VPN Access شارك اتصال VPN - + Share full access to the server and VPN شارك ولوج كامل للخادم و ال VPN - + Use for your own devices, or share with those you trust to manage the server. استخدمه للأجهزة الخاصة بك، أو شاركه مع من تثق بهم لإدارة الخادم. - - + + Users المستخدمين - + Share VPN access without the ability to manage the server شارك اتصال VPN بدون القدرة علي إدارة الخادم - + Search ابحث - + Creation date: %1 - + تاريخ الإنشاء: %1 - + Latest handshake: %1 - + اخر تصافح: %1 - + Data received: %1 - + البيانات المستلمة: %1 - + Data sent: %1 - + البيانات المٌرسلة: %1 - Creation date: - تاريخ الإنشاء: - - - + Rename إعادة التسمية - + Client name اسم العميل - + Save احفظ - + Revoke سحب وإبطال - + Revoke the config for a user - %1? سحب وإبطال للمستخدم - %1? - + The user will no longer be able to connect to your server. المستخدم لن يكون قادر علي الاتصال بعد الان. - + Continue واصل - + Cancel إلغاء - + Connection الاتصال - Full access to server - ولوج كامل للخادم - - - Servers - الخوادم - - - - + + Server خادم - + File with connection settings to ملف بإعدادات إلي - Protocols - البروتوكولات - - - - + + Protocol بروتوكول - + Connection to اتصال إلي - + Config revoked تم سحب وإبطال التكوين - + User name اسم المستخدم - - + + Connection format تنسيق الاتصال - - + + Share شارك @@ -2625,50 +2402,50 @@ It's okay as long as it's from someone you trust. PageShareFullAccess - + Full access to the server and VPN ولوج كامل للخادم و ال VPN - + We recommend that you use full access to the server only for your own additional devices. نحن ننصحك بأستخدام ولوج كامل للخادم فقط لأجهزتك الاضافية. - + If you share full access with other people, they can remove and add protocols and services to the server, which will cause the VPN to work incorrectly for all users. إذا شاركت ولوج كامل مع الاشخاص, سيكونو قادرين علي حذف وإضافة بروتوكولات و خدمات إلي الخادم, والذي سيجعل VPN يعمل بشكل غير صحيح لجميع المستخدمين. - + Server خادم - + Accessing التواصل - + File with accessing settings to ملف مع إعدادات الوصول إلي - + Share مشاركة - + Connection to اتصال إلي - + File with connection settings to معلف مع إعدادات الاتصال إلي @@ -2676,15 +2453,15 @@ It's okay as long as it's from someone you trust. PageStart - + Logging was disabled after 14 days, log files were deleted - + تم تعطيل التسجيل بعد 14 يومًا، وتم حذف ملفات السجل PopupType - + Close اغلاق @@ -2936,7 +2713,7 @@ It's okay as long as it's from someone you trust. SOCKS5 proxy server - + @@ -3014,50 +2791,6 @@ It's okay as long as it's from someone you trust. Timeout connecting to server انتهت مدة الاتصال بالخادم - - Sftp error: File does not exist - خطأ Sftp: الملف غير موجود - - - Sftp error: Permission denied - خطأ Sftp: تم حظر الصلحيات - - - Sftp error: Generic failure - خطأ Sftp: فشل عام - - - Sftp error: Garbage received from server - خطأ Sftp: تم استلام نفايات من الخادم - - - Sftp error: No connection has been set up - خطأ Sftp: لم يتم إعداد اتصال - - - Sftp error: There was a connection, but we lost it - خطأ Sftp: كان هناك اتصال, ولكن خسرناه - - - Sftp error: Operation not supported by libssh yet - خطأ Sftp: العملية ليست مدعومة من libssh بعد - - - Sftp error: No such file or directory path exists - خطأ Sftp: لا يوجد مسار ملف او مجلد مثل هذا - - - Sftp error: An attempt to create an already existing file or directory has been made - خطأ Sftp: محاولة إنشاء ملف او مجلد موجود بالفعل - - - Sftp error: Write-protected filesystem - خطأ Sftp: نظام كتابة الملفات محمي - - - Sftp error: No media was in remote drive - خطأ Sftp: لا يوجد وسائط في القرص البعيد - VPN connection error @@ -3086,17 +2819,17 @@ It's okay as long as it's from someone you trust. Background service is not running - + خدمة الخلفية ليست قيد التشغيل Server error: Packet manager error - + خطأ في الخادم: خطأ في مدير الحزم SCP error: Generic failure - + خطأ SCP: فشل عام @@ -3151,47 +2884,47 @@ It's okay as long as it's from someone you trust. In the response from the server, an empty config was received - + في الاستجابة من الخادم، تم تلقي تكوين فارغ SSL error occurred - + حدث خطأ SSL Server response timeout on api request - + انتهت مهلة استجابة الخادم عند طلب واجهة برمجة التطبيقات QFile error: The file could not be opened - + خطأ QFile: لا يمكن فتح الملف QFile error: An error occurred when reading from the file - + خطأ QFile: ظهر خطأ اثناء القراءه من الملف QFile error: The file could not be accessed - + خطأ QFile: لا يمكن الوصول للملف QFile error: An unspecified error occurred - + خطأ QFile: ظهر خطأ غير محدد QFile error: A fatal error occurred - + خطأ QFile: حدث خطأ فادح QFile error: The operation was aborted - + خطأ QFile: تم إحباط العملية @@ -3239,12 +2972,12 @@ It's okay as long as it's from someone you trust. XRay with REALITY - Suitable for countries with the highest level of internet censorship. Traffic masking as web traffic at the TLS level, and protection against detection by active probing methods. - + الأشعة السينية مع الواقع - مناسبة للبلدان التي لديها أعلى مستوى من الرقابة على الإنترنت. إخفاء حركة المرور كحركة مرور على الويب على مستوى TLS، والحماية من الكشف عن طريق طرق التحقيق النشطة. IKEv2/IPsec - Modern stable protocol, a bit faster than others, restores connection after signal loss. It has native support on the latest versions of Android and iOS. - + IKEv2/IPsec - بروتوكول مستقر حديث، أسرع قليلاً من البروتوكولات الأخرى، يستعيد الاتصال بعد فقدان الإشارة. يتمتع بدعم أصلي على أحدث إصدارات Android وiOS. @@ -3319,7 +3052,10 @@ WireGuard is very susceptible to blocking due to its distinct packet signatures. It uniquely identifies censors during the TLS handshake phase, seamlessly operating as a proxy for legitimate clients while diverting censors to genuine websites like google.com, thus presenting an authentic TLS certificate and data. This advanced capability differentiates REALITY from similar technologies by its ability to disguise web traffic as coming from random, legitimate sites without the need for specific configurations. Unlike older protocols such as VMess, VLESS, and the XTLS-Vision transport, REALITY's innovative "friend or foe" recognition at the TLS handshake enhances security and circumvents detection by sophisticated DPI systems employing active probing techniques. This makes REALITY a robust solution for maintaining internet freedom in environments with stringent censorship. - + تم تصميم بروتوكول REALITY، وهو تطور رائد قام به مبدعو XRay، خصيصًا لمواجهة أعلى مستويات الرقابة على الإنترنت من خلال نهجه الجديد في التهرب. +فهو يحدد بشكل فريد الرقباء أثناء مرحلة مصافحة TLS، ويعمل بسلاسة كوكيل للعملاء الشرعيين بينما يحول الرقباء إلى مواقع الويب الأصلية مثل google.com، وبالتالي يقدم شهادة وبيانات TLS أصلية. +هذه الإمكانية المتقدمة تميز REALITY عن التقنيات المشابهة من خلال قدرتها على إخفاء حركة مرور الويب على أنها قادمة من مواقع عشوائية وشرعية دون الحاجة إلى تكوينات محددة. +على عكس البروتوكولات القديمة مثل VMess وVLESS ونقل XTLS-Vision، فإن التعرف المبتكر على "الصديق أو العدو" من REALITY عند مصافحة TLS يعزز الأمان ويتحايل على الكشف بواسطة أنظمة DPI المتطورة التي تستخدم تقنيات التحقيق النشطة. وهذا يجعل من REALITY حلاً قويًا للحفاظ على حرية الإنترنت في البيئات التي تخضع لرقابة صارمة. @@ -3350,10 +3086,6 @@ For more detailed information, you can AmneziaWG - Special protocol from Amnezia, based on WireGuard. It's fast like WireGuard, but very resistant to blockages. Recommended for regions with high levels of censorship. بروتوكول AmneziaWG - بروتوكول خاص من Amnezia, يعتمد علي WireGuard. سريع مثل WireGuard, لكن مقاوم جداً للحجب. ينصح للمناطق ذات مستوي عالي من الرقابة. - - IKEv2/IPsec - Modern stable protocol, a bit faster than others, restores connection after signal loss. - بروتوكول IKEv2/IPsec - بروتوكول مستقر حديث, اسرع بقليل من الباقي, يسترجع الاتصال بعد خسارة الاشارة. - Deploy a WordPress site on the Tor network in two clicks. @@ -3502,139 +3234,139 @@ While it offers a blend of security, stability, and speed, it's essential t vmess:// url is invalid - + عنوان //:vmess غير صحيح Invalid streamSettings protocol: - + بروتوكول streamSettings غير صحيح: Unknown transport method: - + طريقة نقل غير معروفة: VMess string should start with 'vmess://' - + نص VMess يجب ان يبدأ ب '//:vmess' VMess string should be a valid base64 string - + نص VMess يجب ان يكون نص base64 صحيح JSON should not be empty - + لا يجب ان يكون JSON فارغ VLESS link should start with vless:// - + رابط VLESS يجب ان يبدأ ب //:vless link parse failed: %1 - + فشل تحليل الرابط: %1 empty host - + مضيف فارغ missing port - + منفذ مفقود missing uuid - + uuid مفقود Invalid ssd link: json: field %1 must exist - + رابط ssd غير صالح: json: يجب أن يكون الحقل %1 موجودًا Invalid ssd link: json: field %1 must be valid port number - + رابط ssd غير صالح: json: الحقل %1 يجب أن يكون رقم منفذ صالحًا Invalid ssd link: json: field %1 must be of type 'string' - + رابط ssd غير صالح: json: يجب أن يكون الحقل %1 من النوع "string" Invalid ssd link: json: field %1 must be an array - + رابط ssd غير صالح: json: الحقل %1 يجب أن يكون قائمة Skipping invalid ssd server: server must be an object - + تخطي خادم ssd غير صالح: يجب أن يكون الخادم كائنًا Skipping invalid ssd server: missing required field %1 - + تخطي خادم ssd غير صالح: الحقل المطلوب %1 مفقود Skipping invalid ssd server: field %1 should be of type 'string' - + تخطي خادم ssd غير صالح: يجب أن يكون الحقل %1 من النوع "string" Invalid ssd link: should begin with ssd:// - + رابط ssd غير صالح: يجب أن يبدأ بـ //:ssd Invalid ssd link: base64 parse failed - + رابط SSD غير صالح: فشل تحليل Base64 Invalid ssd link: json parse failed - + رابط ssd غير صالح: فشل تحليل json Invalid ssd link: rc4-md5 encryption is not supported by v2ray-core - + رابط ssd غير صالح: تشفير rc4-md5 غير مدعوم بواسطة v2ray-core SS URI is too short - + عنوان SS قصير جداً Can't find the colon separator between method and password - + لا يمكن العثور على فاصل النقطتين بين method وكلمة المرور Can't find the at separator between password and hostname - + لا يمكن العثور على فاصل النقطتين بين كلمة المرور وكلمة واسم المستضيف Can't find the colon separator between hostname and port - + لا يمكن العثور على فاصل النقطتين بين اسم المستضيف و المنفذ SelectLanguageDrawer - + Choose language اختر لغة @@ -3665,51 +3397,43 @@ While it offers a blend of security, stability, and speed, it's essential t All settings have been reset to default values تم استرجاع جميع الإعدادات للإعدادات الافتراضية - - Cached profiles cleared - تم حذف الملفات الشخصية المٌخزنة مؤقتاُ - ShareConnectionDrawer - - + + Save AmneziaVPN config احفظ تكوين AmneziaVPN - + Share شارك - + Copy انسخ - - + + Copied تم النسخ - + Copy config string انسخ نص التكوين - + Show connection settings اظهر إعدادات الاتصال - Show content - 展示内容 - - - + To read the QR code in the Amnezia app, select "Add server" → "I have data to connect" → "QR code, key or settings file" حتي تقرأ رمز ال QR في تطبيق Amnezia, اختار "إضافة خادم" - "لدي بيانات الاتصال" - "رمز Qr, او مفتاح تعريف او ملف إعدادات" @@ -3793,7 +3517,7 @@ While it offers a blend of security, stability, and speed, it's essential t TextFieldWithHeaderType - + The field can't be empty الحقل لا يمكن ان يكون فارغ @@ -3852,43 +3576,35 @@ While it offers a blend of security, stability, and speed, it's essential t amnezia::ContainerProps - + Low منخفض - + High متوسط او عالي - Extreme - شديد - - - + I just want to increase the level of my privacy. انا فقط اريد زيادة مستوي الخصوصية. - + I want to bypass censorship. This option recommended in most cases. أريد تجاوز الرقابة. يوصى بهذا الخيار في معظم الحالات. - - Most VPN protocols are blocked. Recommended if other options are not working. - يتم حظر معظم بروتوكولات VPN. يوصى به إذا كانت الخيارات الأخرى لا تعمل. - main2 - + Private key passphrase عبارة المرور الخاصة بالمفتاح - + Save احفظ From 003c3a23c4f395af80e5fa6c94956b90c847304f Mon Sep 17 00:00:00 2001 From: Garegin866 Date: Fri, 26 Jul 2024 22:26:15 +0400 Subject: [PATCH 02/25] Fixed ui bug on qt6.7 --- client/ui/qml/Pages2/PageStart.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ui/qml/Pages2/PageStart.qml b/client/ui/qml/Pages2/PageStart.qml index 6dd05f09..1e9ba16f 100644 --- a/client/ui/qml/Pages2/PageStart.qml +++ b/client/ui/qml/Pages2/PageStart.qml @@ -214,8 +214,8 @@ PageType { startY: 0 PathLine { x: width; y: 0 } - PathLine { x: width; y: height - 1 } - PathLine { x: 0; y: height - 1 } + PathLine { x: width; y: tabBar.height - 1 } + PathLine { x: 0; y: tabBar.height - 1 } PathLine { x: 0; y: 0 } strokeWidth: 1 From c520f9a2a410025bbfd774fd66bc5b01babe214a Mon Sep 17 00:00:00 2001 From: Mykola Baibuz Date: Sat, 27 Jul 2024 10:38:55 -0700 Subject: [PATCH 03/25] Update OpenVPN to last version (#837) * Update OpenVPN to least version * Fix iOS build * Fix client config for new OpenVPN3 * Update iOS submodule * Resolve 3rd-prebuilt merge conflict --- client/3rd-prebuilt | 2 +- client/3rd/OpenVPNAdapter | 2 +- client/configurators/openvpn_configurator.cpp | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt index ff8445c8..c38a587f 160000 --- a/client/3rd-prebuilt +++ b/client/3rd-prebuilt @@ -1 +1 @@ -Subproject commit ff8445c8aa1cda38497bb6f6cb0e520f5a3c8de0 +Subproject commit c38a587fcda89bab4009560d36239fa8de74705e diff --git a/client/3rd/OpenVPNAdapter b/client/3rd/OpenVPNAdapter index 7c821a8d..dea60409 160000 --- a/client/3rd/OpenVPNAdapter +++ b/client/3rd/OpenVPNAdapter @@ -1 +1 @@ -Subproject commit 7c821a8d5c1ad5ad94e0763b4f25a875b5a6fe1b +Subproject commit dea6040996298e947d63fb172709e6abfec2ba93 diff --git a/client/configurators/openvpn_configurator.cpp b/client/configurators/openvpn_configurator.cpp index c4bdf860..fafb7c2b 100644 --- a/client/configurators/openvpn_configurator.cpp +++ b/client/configurators/openvpn_configurator.cpp @@ -119,18 +119,21 @@ QString OpenVpnConfigurator::processConfigWithLocalSettings(const QPairisSitesSplitTunnelingEnabled()) { config.append("\nredirect-gateway def1 ipv6 bypass-dhcp\n"); + +#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) // Prevent ipv6 leak config.append("ifconfig-ipv6 fd15:53b6:dead::2/64 fd15:53b6:dead::1\n"); +#endif config.append("block-ipv6\n"); } else if (m_settings->routeMode() == Settings::VpnOnlyForwardSites) { // no redirect-gateway } else if (m_settings->routeMode() == Settings::VpnAllExceptSites) { -#ifndef Q_OS_ANDROID +#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) config.append("\nredirect-gateway ipv6 !ipv4 bypass-dhcp\n"); -#endif // Prevent ipv6 leak config.append("ifconfig-ipv6 fd15:53b6:dead::2/64 fd15:53b6:dead::1\n"); +#endif config.append("block-ipv6\n"); } } From 8dee0d27cf0a4c14517831d0478954fb9e9e7419 Mon Sep 17 00:00:00 2001 From: Nikita Titov Date: Sat, 27 Jul 2024 20:42:11 +0300 Subject: [PATCH 04/25] Rename Shadowsocks (#891) --- client/containers/containers_defs.cpp | 2 +- client/protocols/protocols_defs.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/containers/containers_defs.cpp b/client/containers/containers_defs.cpp index 91d4b067..ce673a85 100644 --- a/client/containers/containers_defs.cpp +++ b/client/containers/containers_defs.cpp @@ -96,7 +96,7 @@ QMap ContainerProps::containerHumanNames() { DockerContainer::Awg, "AmneziaWG" }, { DockerContainer::Xray, "XRay" }, { DockerContainer::Ipsec, QObject::tr("IPsec") }, - { DockerContainer::SSXray, "ShadowSocks"}, + { DockerContainer::SSXray, "Shadowsocks"}, { DockerContainer::TorWebSite, QObject::tr("Website in Tor network") }, { DockerContainer::Dns, QObject::tr("AmneziaDNS") }, diff --git a/client/protocols/protocols_defs.cpp b/client/protocols/protocols_defs.cpp index 9be5a75f..2c9cf186 100644 --- a/client/protocols/protocols_defs.cpp +++ b/client/protocols/protocols_defs.cpp @@ -65,14 +65,14 @@ QString ProtocolProps::transportProtoToString(TransportProto proto, Proto p) QMap ProtocolProps::protocolHumanNames() { return { { Proto::OpenVpn, "OpenVPN" }, - { Proto::ShadowSocks, "ShadowSocks" }, + { Proto::ShadowSocks, "Shadowsocks" }, { Proto::Cloak, "Cloak" }, { Proto::WireGuard, "WireGuard" }, { Proto::Awg, "AmneziaWG" }, { Proto::Ikev2, "IKEv2" }, { Proto::L2tp, "L2TP" }, { Proto::Xray, "XRay" }, - { Proto::SSXray, "ShadowSocks"}, + { Proto::SSXray, "Shadowsocks"}, { Proto::TorWebSite, "Website in Tor network" }, From ef06fcb4f43db5946bd7ae6adcc5e9b026eb47f0 Mon Sep 17 00:00:00 2001 From: albexk Date: Sat, 3 Aug 2024 13:02:34 +0300 Subject: [PATCH 05/25] Fix calling paste from clipboard when launching app on android --- client/ui/qml/Controls2/ContextMenuType.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ui/qml/Controls2/ContextMenuType.qml b/client/ui/qml/Controls2/ContextMenuType.qml index 867fcb10..fd341e6d 100644 --- a/client/ui/qml/Controls2/ContextMenuType.qml +++ b/client/ui/qml/Controls2/ContextMenuType.qml @@ -20,7 +20,8 @@ Menu { MenuItem { text: qsTr("&Paste") shortcut: StandardKey.Paste - enabled: textObj.canPaste + // Fix calling paste from clipboard when launching app on android + enabled: Qt.platform.os === "android" ? true : textObj.canPaste onTriggered: textObj.paste() } From dc85a99e08229c5e3f989539ba7a6bb7552ead59 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 3 Aug 2024 13:19:17 +0300 Subject: [PATCH 06/25] Fix Android section rendering in the README --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2e43e856..64fe5e0c 100644 --- a/README.md +++ b/README.md @@ -154,9 +154,11 @@ The Android app has the following requirements: * Android platform SDK 33 * CMake 3.25.0 -After you have installed QT, QT Creator, and Android Studio, you need to configure QT Creator correctly. Click in the top menu bar on `QT Creator` -> `Preferences` -> `Devices` and select the tab `Android`. - * set path to JDK 11 - * set path to Android SDK ($ANDROID_HOME) +After you have installed QT, QT Creator, and Android Studio, you need to configure QT Creator correctly. + +- Click in the top menu bar on `QT Creator` -> `Preferences` -> `Devices` and select the tab `Android`. +- Set path to JDK 11 +- Set path to Android SDK (`$ANDROID_HOME`) In case you get errors regarding missing SDK or 'SDK manager not running', you cannot fix them by correcting the paths. If you have some spare GBs on your disk, you can let QT Creator install all requirements by choosing an empty folder for `Android SDK location` and clicking on `Set Up SDK`. Be aware: This will install a second Android SDK and NDK on your machine!  Double-check that the right CMake version is configured:  Click on `QT Creator` -> `Preferences` and click on the side menu on `Kits`. Under the center content view's `Kits` tab, you'll find an entry for `CMake Tool`. If the default selected CMake version is lower than 3.25.0, install on your system CMake >= 3.25.0 and choose `System CMake at ` from the drop-down list. If this entry is missing, you either have not installed CMake yet or QT Creator hasn't found the path to it. In that case, click in the preferences window on the side menu item `CMake`, then on the tab `Tools` in the center content view, and finally on the button `Add` to set the path to your installed CMake.  From 73516c28afeb08c753ae870b909b58f4a36287bf Mon Sep 17 00:00:00 2001 From: albexk Date: Sat, 3 Aug 2024 13:52:59 +0300 Subject: [PATCH 07/25] Fix config encryption on Android --- client/secure_qsettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/secure_qsettings.cpp b/client/secure_qsettings.cpp index 592f77d4..029d3740 100644 --- a/client/secure_qsettings.cpp +++ b/client/secure_qsettings.cpp @@ -185,7 +185,7 @@ QByteArray SecureQSettings::decryptText(const QByteArray &ba) const bool SecureQSettings::encryptionRequired() const { -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) // QtKeyChain failing on Linux return false; #endif From f978f55e7f4ae325a7ea0ee978ce90c988244b1b Mon Sep 17 00:00:00 2001 From: albexk Date: Tue, 6 Aug 2024 12:41:44 +0300 Subject: [PATCH 08/25] Android TV (#933) * Disable touchscreen requirement * Add Android TV feature * Add Android TV draft banner * Add Android TV check method --- client/android/AndroidManifest.xml | 5 +++++ .../android/res/mipmap-anydpi-v26/ic_banner.xml | 5 +++++ client/android/res/mipmap-xhdpi/ic_banner.png | Bin 0 -> 10894 bytes .../res/mipmap-xhdpi/ic_banner_foreground.png | Bin 0 -> 12414 bytes .../android/res/values/ic_banner_background.xml | 4 ++++ .../src/org/amnezia/vpn/AmneziaActivity.kt | 5 +++++ client/platforms/android/android_controller.cpp | 5 +++++ client/platforms/android/android_controller.h | 1 + 8 files changed, 25 insertions(+) create mode 100644 client/android/res/mipmap-anydpi-v26/ic_banner.xml create mode 100644 client/android/res/mipmap-xhdpi/ic_banner.png create mode 100644 client/android/res/mipmap-xhdpi/ic_banner_foreground.png create mode 100644 client/android/res/values/ic_banner_background.xml diff --git a/client/android/AndroidManifest.xml b/client/android/AndroidManifest.xml index f1d2682b..3276eaa8 100644 --- a/client/android/AndroidManifest.xml +++ b/client/android/AndroidManifest.xml @@ -11,6 +11,9 @@ + + + @@ -31,6 +34,7 @@ android:label="-- %%INSERT_APP_NAME%% --" android:icon="@mipmap/icon" android:roundIcon="@mipmap/icon_round" + android:banner="@mipmap/ic_banner" android:theme="@style/NoActionBar" android:fullBackupContent="@xml/backup_content" android:dataExtractionRules="@xml/data_extraction_rules" @@ -47,6 +51,7 @@ + diff --git a/client/android/res/mipmap-anydpi-v26/ic_banner.xml b/client/android/res/mipmap-anydpi-v26/ic_banner.xml new file mode 100644 index 00000000..cf3108b3 --- /dev/null +++ b/client/android/res/mipmap-anydpi-v26/ic_banner.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/client/android/res/mipmap-xhdpi/ic_banner.png b/client/android/res/mipmap-xhdpi/ic_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..f5029b23481e0eab8883a8131d8bc24585f89ded GIT binary patch literal 10894 zcmc(FRa9GT&~C6&C=M-7XrZK7A;pT*(&Fw?2vXdNyA+o|Xem7L*nth=IN8i=f?U4 zDFDExDf{VzhKJz+0tKPaUVL(l0?HQ3Yeoj((9Tt&p15gn1Tbcrd?2j*6y0k2fg)No z0n|sV zwKipIX7e9@gSFIK*Z>>(rJy*7xM``Ery{`1&<!@(B79Rsc!0G_RmrUrgJJmoy z1Iw9GX3r+!N(|gr+_i=|uHJX*Dno69*AY0fwX(OxWvA}kgNg)eJ!hZ{I2|zLY06Wo zz-ElFo6uY6;|V_knhxtSPz0<-7*rR|mk@U_FrA*%nPFlpGq+_xD z&3uU+rv&nMat%kwIYW#DRWZNK&o^)LzmgQ7_p@VcLqWlcwK$m|caLyAm%XT7kVA16 zXz)u5#`n&bYSd%BSoze|1q+xeVqj5ng9qC8MJh$th`25ohlm?agn^grhDe5o2$ktH zSwL;kCFNwUAU-NJHc*+%VZ_a~j;gX0w5G>sT4nuI;`-}3FE2t9F?VA*p93^M6k)+h z54R3$w5iMTEI6z!6;$Y1>rQf{76KIUFtK{R>4Pss2HF9QJO8q)%?X|!N>hRz(Qm(U z=mhn$M^>1P=r@>&G3PlfXRnIGMkFPNzkHSGZ4J)z~vP<;L{h z_QPe3wVuCDZ0mv}#cJ^-PWMZ2=c>FoY1nH&j8Tg*F@XA@1Kb$flq3P+ebM7y+l){j z2kK4wCdQDt6dm1590u_#Lwt#m17}LGZHEN*mG@vv;A*AGu*cG4S`BESed060Az?4G zRV7^*G9p%N5>4;IgjK$6zJHO?{u(EV{YwK{24AcdByeP8ykZ+1<|!AaBVrGwjvB%m zCof0y?JPeREl}!7`gxJ$bn`SH^4aUH@r9D^58I{G=1-a6l4r)v2on2{gOkr;PP1;a{6x({m!7|&SXg26^**{ z83~PA99D7f+MgtF12>>IuJ}e}vL5lr_|5x=2nr9cqc88HUT=-4>o>~pSfEZ8-A8d5 zJx~4#mm1VycYgRVfz%T1F&#((dwd3{O$vA;an=4sn8(LAmSF{#s-(7FJoOj-AzA*) zU&IIcQ`2Ug4NUs7vvXR+Tty@SN*yGRd0bY%9O$E_N$ejtaca5Pf zv#2;k8g8_l_3mOTnzFrXGE7`%MT;86Wzd_xN|sAR#f&aH1OfH?T7EynR1t|-g7sa6 ze3D}1W~MT5uI4`22ea;fEjTuu*W@dFkwkhH=Z@n-YU|kH#-r5(B+D!8*5%R+H7cF0^l@Kk)3k?aC^KZV5=uZS6Y3^ah3W
{(^Y>hJ$V`!S>gTjiq&|mS|j= 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 b2P}etnJ+)-G=DtmOaZc=l|Ge!Gz$D5{j`8} literal 0 HcmV?d00001 diff --git a/client/android/res/mipmap-xhdpi/ic_banner_foreground.png b/client/android/res/mipmap-xhdpi/ic_banner_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..1c21902ec06a1849c6bf83b934cc6dca4fbe444e GIT binary patch literal 12414 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 SS0UajK$4SEmaG#u4f%g&wd%tF literal 0 HcmV?d00001 diff --git a/client/android/res/values/ic_banner_background.xml b/client/android/res/values/ic_banner_background.xml new file mode 100644 index 00000000..fa6f91c7 --- /dev/null +++ b/client/android/res/values/ic_banner_background.xml @@ -0,0 +1,4 @@ + + + #1E1E1F + \ No newline at end of file diff --git a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt index e3ed6d39..3caa0713 100644 --- a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt +++ b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt @@ -1,6 +1,7 @@ package org.amnezia.vpn import android.Manifest +import android.annotation.SuppressLint import android.app.AlertDialog import android.app.NotificationManager import android.content.BroadcastReceiver @@ -556,8 +557,12 @@ class AmneziaActivity : QtActivity() { } @Suppress("unused") + @SuppressLint("UnsupportedChromeOsCameraSystemFeature") fun isCameraPresent(): Boolean = applicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA) + @Suppress("unused") + fun isOnTv(): Boolean = applicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) + @Suppress("unused") fun startQrCodeReader() { Log.v(TAG, "Start camera") diff --git a/client/platforms/android/android_controller.cpp b/client/platforms/android/android_controller.cpp index be404a15..c9ee3cfd 100644 --- a/client/platforms/android/android_controller.cpp +++ b/client/platforms/android/android_controller.cpp @@ -179,6 +179,11 @@ bool AndroidController::isCameraPresent() return callActivityMethod("isCameraPresent", "()Z"); } +bool AndroidController::isOnTv() +{ + return callActivityMethod("isOnTv", "()Z"); +} + void AndroidController::startQrReaderActivity() { callActivityMethod("startQrCodeReader", "()V"); diff --git a/client/platforms/android/android_controller.h b/client/platforms/android/android_controller.h index d015dbe3..1041c31f 100644 --- a/client/platforms/android/android_controller.h +++ b/client/platforms/android/android_controller.h @@ -35,6 +35,7 @@ public: void saveFile(const QString &fileName, const QString &data); QString openFile(const QString &filter); bool isCameraPresent(); + bool isOnTv(); void startQrReaderActivity(); void setSaveLogs(bool enabled); void exportLogsFile(const QString &fileName); From dfd0b4d0e5e053a277948d23c45f6c2e69eae2e0 Mon Sep 17 00:00:00 2001 From: albexk Date: Tue, 6 Aug 2024 12:44:51 +0300 Subject: [PATCH 09/25] Fix Android bugs (#941) * Add an explicit value for the hasFragileUserData parameter * Fix app crashes when canceling file opening * Fix requestNetwork bug for Android 11 * Fix activity onStop method --- client/android/AndroidManifest.xml | 1 + .../src/org/amnezia/vpn/AmneziaActivity.kt | 7 +++-- .../utils/src/main/kotlin/net/NetworkState.kt | 26 ++++++++++++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/client/android/AndroidManifest.xml b/client/android/AndroidManifest.xml index 3276eaa8..c1c40b52 100644 --- a/client/android/AndroidManifest.xml +++ b/client/android/AndroidManifest.xml @@ -38,6 +38,7 @@ android:theme="@style/NoActionBar" android:fullBackupContent="@xml/backup_content" android:dataExtractionRules="@xml/data_extraction_rules" + android:hasFragileUserData="false" tools:targetApi="s"> = Build.VERSION_CODES.S) { connectivityManager.registerBestMatchingNetworkCallback(networkRequest, networkCallback, handler) } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - try { - connectivityManager.requestNetwork(networkRequest, networkCallback, handler) - } catch (e: SecurityException) { - Log.e(TAG, "Failed to bind network listener: $e") - // Android 11 bug: https://issuetracker.google.com/issues/175055271 - if (e.message?.startsWith("Package android does not belong to") == true) { - delay(1000) + val numberAttempts = 3 + var attemptCount = 0 + while(true) { + try { connectivityManager.requestNetwork(networkRequest, networkCallback, handler) - } else { - throw e + break + } catch (e: SecurityException) { + Log.e(TAG, "Failed to bind network listener: $e") + // Android 11 bug: https://issuetracker.google.com/issues/175055271 + if (e.message?.startsWith("Package android does not belong to") == true) { + if (++attemptCount > numberAttempts) { + throw e + } + delay(1000) + continue + } else { + throw e + } } } } else { From cb531dacb3b5d4d1b101fa11542c8ce16e3248d7 Mon Sep 17 00:00:00 2001 From: albexk Date: Tue, 6 Aug 2024 12:51:23 +0300 Subject: [PATCH 10/25] Bump version to 4.6.1.0 --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 53dc9ed2..51ca8edc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN) -project(${PROJECT} VERSION 4.6.0.4 +project(${PROJECT} VERSION 4.6.1.0 DESCRIPTION "AmneziaVPN" HOMEPAGE_URL "https://amnezia.org/" ) @@ -11,7 +11,7 @@ string(TIMESTAMP CURRENT_DATE "%Y-%m-%d") set(RELEASE_DATE "${CURRENT_DATE}") set(APP_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}) -set(APP_ANDROID_VERSION_CODE 55) +set(APP_ANDROID_VERSION_CODE 56) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(MZ_PLATFORM_NAME "linux") From 0a37ffd5e3ee70a766afa5070959d4152fb5e99c Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Thu, 8 Aug 2024 09:57:51 +0400 Subject: [PATCH 11/25] added qsTr() for PageProtocolAwgSettings --- .../ui/qml/Pages2/PageProtocolAwgSettings.qml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml index ec4aa010..e8a8c149 100644 --- a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml +++ b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml @@ -143,7 +143,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "Jc - Junk packet count" + headerText: qsTr("Jc - Junk packet count") textFieldText: junkPacketCount textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -168,7 +168,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "Jmin - Junk packet minimum size" + headerText: qsTr("Jmin - Junk packet minimum size") textFieldText: junkPacketMinSize textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -189,7 +189,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "Jmax - Junk packet maximum size" + headerText: qsTr("Jmax - Junk packet maximum size") textFieldText: junkPacketMaxSize textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -210,7 +210,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "S1 - Init packet junk size" + headerText: qsTr("S1 - Init packet junk size") textFieldText: initPacketJunkSize textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -231,7 +231,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "S2 - Response packet junk size" + headerText: qsTr("S2 - Response packet junk size") textFieldText: responsePacketJunkSize textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -252,7 +252,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "H1 - Init packet magic header" + headerText: qsTr("H1 - Init packet magic header") textFieldText: initPacketMagicHeader textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -273,7 +273,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "H2 - Response packet magic header" + headerText: qsTr("H2 - Response packet magic header") textFieldText: responsePacketMagicHeader textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -294,7 +294,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 16 - headerText: "H4 - Transport packet magic header" + headerText: qsTr("H4 - Transport packet magic header") textFieldText: transportPacketMagicHeader textField.validator: IntValidator { bottom: 0 } parentFlickable: fl @@ -316,7 +316,7 @@ PageType { Layout.topMargin: 16 parentFlickable: fl - headerText: "H3 - Underload packet magic header" + headerText: qsTr("H3 - Underload packet magic header") textFieldText: underloadPacketMagicHeader textField.validator: IntValidator { bottom: 0 } From 264d77463d746de09d7c5e4fe721857fadeb6bcc Mon Sep 17 00:00:00 2001 From: Garegin Harutyunyan <78261915+Garegin866@users.noreply.github.com> Date: Thu, 8 Aug 2024 19:13:49 +0400 Subject: [PATCH 12/25] Refactoring/service logging functional (#793) --- client/amnezia_application.cpp | 4 +++- client/logger.cpp | 28 ++++++++++++++++++++++++++-- client/logger.h | 1 + client/settings.cpp | 2 ++ ipc/ipc_interface.rep | 1 + ipc/ipcserver.cpp | 4 ++++ ipc/ipcserver.h | 1 + service/server/main.cpp | 2 -- 8 files changed, 38 insertions(+), 5 deletions(-) diff --git a/client/amnezia_application.cpp b/client/amnezia_application.cpp index 8fe97cd7..c3adfe31 100644 --- a/client/amnezia_application.cpp +++ b/client/amnezia_application.cpp @@ -161,13 +161,15 @@ void AmneziaApplication::init() m_engine->load(url); m_systemController->setQmlRoot(m_engine->rootObjects().value(0)); + bool enabled = m_settings->isSaveLogs(); #ifndef Q_OS_ANDROID - if (m_settings->isSaveLogs()) { + if (enabled) { if (!Logger::init()) { qWarning() << "Initialization of debug subsystem failed"; } } #endif + Logger::setServiceLogsEnabled(enabled); #ifdef Q_OS_WIN if (m_parser.isSet("a")) diff --git a/client/logger.cpp b/client/logger.cpp index 0dc836c6..c76bc698 100644 --- a/client/logger.cpp +++ b/client/logger.cpp @@ -99,6 +99,29 @@ void Logger::deInit() m_file.close(); } +bool Logger::setServiceLogsEnabled(bool enabled) { +#ifdef AMNEZIA_DESKTOP + IpcClient *m_IpcClient = new IpcClient; + + if (!m_IpcClient->isSocketConnected()) { + if (!IpcClient::init(m_IpcClient)) { + qWarning() << "Error occurred when init IPC client"; + return false; + } + } + + if (m_IpcClient->Interface()) { + m_IpcClient->Interface()->setLogsEnabled(enabled); + } + else { + qWarning() << "Error occurred setting up service logs"; + return false; + } +#endif + + return true; +} + QString Logger::userLogsDir() { return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/log"; @@ -141,7 +164,9 @@ bool Logger::openLogsFolder() bool Logger::openServiceLogsFolder() { QString path = Utils::systemLogPath(); +#ifdef Q_OS_WIN path = "file:///" + path; +#endif QDesktopServices::openUrl(QUrl::fromLocalFile(path)); return true; } @@ -184,8 +209,7 @@ void Logger::clearServiceLogs() } if (m_IpcClient->Interface()) { - m_IpcClient->Interface()->setLogsEnabled(false); - m_IpcClient->Interface()->cleanUp(); + m_IpcClient->Interface()->clearLogs(); } else { qWarning() << "Error occurred cleaning up service logs"; diff --git a/client/logger.h b/client/logger.h index f8bfc225..0dcbd35c 100644 --- a/client/logger.h +++ b/client/logger.h @@ -26,6 +26,7 @@ public: static bool init(); static void deInit(); + static bool setServiceLogsEnabled(bool enabled); static bool openLogsFolder(); static bool openServiceLogsFolder(); static QString appLogFileNamePath(); diff --git a/client/settings.cpp b/client/settings.cpp index 8129b1e6..872adec7 100644 --- a/client/settings.cpp +++ b/client/settings.cpp @@ -226,6 +226,8 @@ void Settings::setSaveLogs(bool enabled) } } #endif + Logger::setServiceLogsEnabled(enabled); + if (enabled) { setLogEnableDate(QDateTime::currentDateTime()); } diff --git a/ipc/ipc_interface.rep b/ipc/ipc_interface.rep index 79f2d042..5baf9c33 100644 --- a/ipc/ipc_interface.rep +++ b/ipc/ipc_interface.rep @@ -21,6 +21,7 @@ class IpcInterface SLOT( void cleanUp() ); SLOT( void setLogsEnabled(bool enabled) ); + SLOT( void clearLogs() ); SLOT( bool createTun(const QString &dev, const QString &subnet) ); SLOT( bool deleteTun(const QString &dev) ); diff --git a/ipc/ipcserver.cpp b/ipc/ipcserver.cpp index c734912b..32fc5f30 100644 --- a/ipc/ipcserver.cpp +++ b/ipc/ipcserver.cpp @@ -162,6 +162,10 @@ void IpcServer::cleanUp() Logger::cleanUp(); } +void IpcServer::clearLogs() { + Logger::clearLogs(); +} + bool IpcServer::createTun(const QString &dev, const QString &subnet) { return Router::createTun(dev, subnet); diff --git a/ipc/ipcserver.h b/ipc/ipcserver.h index bd474481..74f88d0f 100644 --- a/ipc/ipcserver.h +++ b/ipc/ipcserver.h @@ -26,6 +26,7 @@ public: virtual bool checkAndInstallDriver() override; virtual QStringList getTapList() override; virtual void cleanUp() override; + virtual void clearLogs() override; virtual void setLogsEnabled(bool enabled) override; virtual bool createTun(const QString &dev, const QString &subnet) override; virtual bool deleteTun(const QString &dev) override; diff --git a/service/server/main.cpp b/service/server/main.cpp index 495192c3..144ddf60 100644 --- a/service/server/main.cpp +++ b/service/server/main.cpp @@ -46,8 +46,6 @@ int main(int argc, char **argv) { Utils::initializePath(Utils::systemLogPath()); - Logger::init(); - if (argc >= 2) { qInfo() << "Started as console application"; return runApplication(argc, argv); From 3fc9edd3465a67a5d66e0ca0b1bdce61e2614ded Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Mon, 12 Aug 2024 09:56:00 +0400 Subject: [PATCH 13/25] update default values of additional awg parameters --- client/ui/controllers/importController.cpp | 6 +++--- client/ui/controllers/installController.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/ui/controllers/importController.cpp b/client/ui/controllers/importController.cpp index 60a90e4e..7ffcedd7 100644 --- a/client/ui/controllers/importController.cpp +++ b/client/ui/controllers/importController.cpp @@ -240,9 +240,9 @@ void ImportController::processNativeWireGuardConfig() auto containerConfig = container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject(); auto protocolConfig = QJsonDocument::fromJson(containerConfig.value(config_key::last_config).toString().toUtf8()).object(); - QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10)); - QString junkPacketMinSize = QString::number(50); - QString junkPacketMaxSize = QString::number(1000); + QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5)); + QString junkPacketMinSize = QString::number(10); + QString junkPacketMaxSize = QString::number(50); protocolConfig[config_key::junkPacketCount] = junkPacketCount; protocolConfig[config_key::junkPacketMinSize] = junkPacketMinSize; protocolConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize; diff --git a/client/ui/controllers/installController.cpp b/client/ui/controllers/installController.cpp index 514091d4..6396b364 100644 --- a/client/ui/controllers/installController.cpp +++ b/client/ui/controllers/installController.cpp @@ -85,9 +85,9 @@ void InstallController::install(DockerContainer container, int port, TransportPr containerConfig.insert(config_key::transport_proto, ProtocolProps::transportProtoToString(transportProto, protocol)); if (container == DockerContainer::Awg) { - QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10)); - QString junkPacketMinSize = QString::number(50); - QString junkPacketMaxSize = QString::number(1000); + QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5)); + QString junkPacketMinSize = QString::number(10); + QString junkPacketMaxSize = QString::number(50); int s1 = QRandomGenerator::global()->bounded(15, 150); int s2 = QRandomGenerator::global()->bounded(15, 150); From d18423ee8c158805fb271f7777188f831cc3e070 Mon Sep 17 00:00:00 2001 From: Cyril Anisimov Date: Mon, 12 Aug 2024 09:27:52 +0200 Subject: [PATCH 14/25] Feature/xray custom port (#965) * add variable port to scripts for xray * update naming --- client/core/controllers/serverController.cpp | 1 + client/server_scripts/xray/configure_container.sh | 4 ++-- client/server_scripts/xray/run_container.sh | 2 +- client/server_scripts/xray/template.json | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/client/core/controllers/serverController.cpp b/client/core/controllers/serverController.cpp index 11efb57a..233d66d4 100644 --- a/client/core/controllers/serverController.cpp +++ b/client/core/controllers/serverController.cpp @@ -569,6 +569,7 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential // Xray vars vars.append({ { "$XRAY_SITE_NAME", xrayConfig.value(config_key::site).toString(protocols::xray::defaultSite) } }); + vars.append({ { "$XRAY_SERVER_PORT", xrayConfig.value(config_key::port).toString(protocols::xray::defaultPort) } }); // Wireguard vars vars.append({ { "$WIREGUARD_SUBNET_IP", diff --git a/client/server_scripts/xray/configure_container.sh b/client/server_scripts/xray/configure_container.sh index 541e155b..bf6f4a42 100644 --- a/client/server_scripts/xray/configure_container.sh +++ b/client/server_scripts/xray/configure_container.sh @@ -29,7 +29,7 @@ cat > /opt/amnezia/xray/server.json < /opt/amnezia/xray/server.json < Date: Wed, 14 Aug 2024 19:46:20 +0400 Subject: [PATCH 15/25] temporarily disabled the running service check --- client/ui/controllers/connectionController.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/ui/controllers/connectionController.cpp b/client/ui/controllers/connectionController.cpp index 76c352f4..216775ba 100644 --- a/client/ui/controllers/connectionController.cpp +++ b/client/ui/controllers/connectionController.cpp @@ -36,13 +36,13 @@ ConnectionController::ConnectionController(const QSharedPointer &s void ConnectionController::openConnection() { -#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) - if (!Utils::processIsRunning(Utils::executable(SERVICE_NAME, false), true)) - { - emit connectionErrorOccurred(ErrorCode::AmneziaServiceNotRunning); - return; - } -#endif +// #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) +// if (!Utils::processIsRunning(Utils::executable(SERVICE_NAME, false), true)) +// { +// emit connectionErrorOccurred(ErrorCode::AmneziaServiceNotRunning); +// return; +// } +// #endif int serverIndex = m_serversModel->getDefaultServerIndex(); QJsonObject serverConfig = m_serversModel->getServerConfig(serverIndex); From 424315b17f1d495f2e9a2b49cae1dc1706691cc7 Mon Sep 17 00:00:00 2001 From: tiaga Date: Fri, 16 Aug 2024 22:50:21 +0700 Subject: [PATCH 16/25] Add summary to builds Add a link about a corresponding PR to a workflow run build summary. Each time a PR is updated, a corresponding link to the PR will be added to the build summary and will be accessible within a workflow run. In addition, remove unnecessary job names. --- .github/workflows/deploy.yml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 63bda344..506da5b7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -10,7 +10,6 @@ env: jobs: Build-Linux-Ubuntu: - name: 'Build-Linux-Ubuntu' runs-on: ubuntu-20.04 env: @@ -75,7 +74,6 @@ jobs: # ------------------------------------------------------ Build-Windows: - name: Build-Windows runs-on: windows-latest env: @@ -137,7 +135,6 @@ jobs: # ------------------------------------------------------ Build-iOS: - name: 'Build-iOS' runs-on: macos-13 env: @@ -228,7 +225,6 @@ jobs: # ------------------------------------------------------ Build-MacOS: - name: 'Build-MacOS' runs-on: macos-latest env: @@ -293,7 +289,6 @@ jobs: # ------------------------------------------------------ Build-Android: - name: 'Build-Android' runs-on: ubuntu-latest env: @@ -439,3 +434,21 @@ jobs: path: deploy/build/AmneziaVPN-release.aab compression-level: 0 retention-days: 7 + + Extra: + runs-on: ubuntu-latest + steps: + - name: Search a corresponding PR + uses: octokit/request-action@v2.x + id: pull_request + with: + route: GET /repos/${{ github.repository }}/pulls + head: ${{ github.repository_owner }}:${{ github.ref_name }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Add PR link to build summary + if: ${{ fromJSON(steps.pull_request.outputs.data)[0].number != '' }} + run: | + echo "Pull request:" >> $GITHUB_STEP_SUMMARY + echo "[[#${{ fromJSON(steps.pull_request.outputs.data)[0].number }}] ${{ fromJSON(steps.pull_request.outputs.data)[0].title }}](${{ fromJSON(steps.pull_request.outputs.data)[0].html_url }})" >> $GITHUB_STEP_SUMMARY From a1e68f5506c3388f85af1163955243145f8acca1 Mon Sep 17 00:00:00 2001 From: pokamest Date: Sun, 18 Aug 2024 14:30:56 +0100 Subject: [PATCH 17/25] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 64fe5e0c..34e6915c 100644 --- a/README.md +++ b/README.md @@ -181,6 +181,7 @@ GPL v3.0 Patreon: [https://www.patreon.com/amneziavpn](https://www.patreon.com/amneziavpn) +Bitcoin: bc1q26eevjcg9j0wuyywd2e3uc9cs2w58lpkpjxq6p
USDT BEP20: 0x6abD576765a826f87D1D95183438f9408C901bE4
USDT TRC20: TELAitazF1MZGmiNjTcnxDjEiH5oe7LC9d
XMR: 48spms39jt1L2L5vyw2RQW6CXD6odUd4jFu19GZcDyKKQV9U88wsJVjSbL4CfRys37jVMdoaWVPSvezCQPhHXUW5UKLqUp3 From 6c5d590169a9f70dd9dc5f76f4d64b09218dad78 Mon Sep 17 00:00:00 2001 From: Nethius Date: Mon, 19 Aug 2024 16:17:09 +0700 Subject: [PATCH 18/25] fixed xray port processing (#983) * fixed xray port processing * fixed saving port when changing xray settings and saving transport protocol when changing all the protocols settings --- client/protocols/protocols_defs.cpp | 1 + .../xray/configure_container.sh | 4 +- client/server_scripts/xray/template.json | 2 +- client/ui/models/protocols/awgConfigModel.cpp | 65 +++++++------------ .../ui/models/protocols/cloakConfigModel.cpp | 13 ++-- .../ui/models/protocols/ikev2ConfigModel.cpp | 10 +-- .../models/protocols/openvpnConfigModel.cpp | 59 ++++++----------- .../protocols/shadowsocksConfigModel.cpp | 13 ++-- .../models/protocols/wireguardConfigModel.cpp | 3 + .../ui/models/protocols/xrayConfigModel.cpp | 7 +- 10 files changed, 70 insertions(+), 107 deletions(-) diff --git a/client/protocols/protocols_defs.cpp b/client/protocols/protocols_defs.cpp index 2c9cf186..ac5bb1ad 100644 --- a/client/protocols/protocols_defs.cpp +++ b/client/protocols/protocols_defs.cpp @@ -154,6 +154,7 @@ bool ProtocolProps::defaultPortChangeable(Proto p) case Proto::Awg: return true; case Proto::Ikev2: return false; case Proto::L2tp: return false; + case Proto::Xray: return true; case Proto::TorWebSite: return false; case Proto::Dns: return false; diff --git a/client/server_scripts/xray/configure_container.sh b/client/server_scripts/xray/configure_container.sh index bf6f4a42..a84751c7 100644 --- a/client/server_scripts/xray/configure_container.sh +++ b/client/server_scripts/xray/configure_container.sh @@ -29,7 +29,7 @@ cat > /opt/amnezia/xray/server.json < /opt/amnezia/xray/server.json < Date: Tue, 20 Aug 2024 16:54:05 +0700 Subject: [PATCH 19/25] New start page and AmneziaFree support (#865) New start page and AmneziaFree support --- .github/workflows/deploy.yml | 5 + .github/workflows/tag-deploy.yml | 1 + .gitmodules | 3 + CMakeLists.txt | 4 +- client/3rd/QSimpleCrypto | 1 + client/3rd/QSimpleCrypto/QSimpleCrypto.cmake | 20 - client/3rd/QSimpleCrypto/QSimpleCrypto.pri | 18 - client/3rd/QSimpleCrypto/include/QAead.h | 87 ----- .../3rd/QSimpleCrypto/include/QBlockCipher.h | 84 ---- .../3rd/QSimpleCrypto/include/QCryptoError.h | 45 --- client/3rd/QSimpleCrypto/include/QRsa.h | 104 ----- .../include/QSimpleCrypto_global.h | 9 - client/3rd/QSimpleCrypto/include/QX509.h | 87 ----- client/3rd/QSimpleCrypto/include/QX509Store.h | 120 ------ client/3rd/QSimpleCrypto/sources/QAead.cpp | 364 ------------------ .../QSimpleCrypto/sources/QBlockCipher.cpp | 193 ---------- .../QSimpleCrypto/sources/QCryptoError.cpp | 6 - client/3rd/QSimpleCrypto/sources/QRsa.cpp | 274 ------------- client/3rd/QSimpleCrypto/sources/QX509.cpp | 234 ----------- .../3rd/QSimpleCrypto/sources/QX509Store.cpp | 176 --------- client/CMakeLists.txt | 8 +- client/amnezia_application.cpp | 67 +++- client/amnezia_application.h | 6 + client/cmake/3rdparty.cmake | 5 +- client/cmake/QSimpleCrypto.cmake | 21 + client/core/controllers/apiController.cpp | 322 ++++++++++++++-- client/core/controllers/apiController.h | 15 +- client/core/defs.h | 1 + client/core/enums/apiEnums.h | 9 + client/core/errorstrings.cpp | 1 + client/images/amneziaBigLogo.svg | 1 - client/images/animation.gif | Bin 1185335 -> 0 bytes client/images/arrow_left.png | Bin 282 -> 0 bytes client/images/background_connected.png | Bin 54335 -> 0 bytes client/images/background_connected@2x.png | Bin 193324 -> 0 bytes client/images/check.png | Bin 182 -> 0 bytes client/images/close.png | Bin 344 -> 0 bytes client/images/connected.png | Bin 14776 -> 0 bytes client/images/connectionOff.svg | 18 - client/images/connectionOn.svg | 17 - client/images/connectionProgress.svg | 30 -- client/images/controls/archive-restore.svg | 7 + client/images/controls/bug.svg | 11 + client/images/controls/folder-search-2.svg | 5 + client/images/controls/gauge.svg | 4 + client/images/controls/help-circle.svg | 5 + client/images/controls/history.svg | 5 + client/images/controls/info.svg | 5 + client/images/controls/map-pin.svg | 4 + client/images/controls/refresh-cw.svg | 6 + client/images/controls/scan-line.svg | 7 + client/images/controls/tag.svg | 4 + client/images/delete.png | Bin 437 -> 0 bytes client/images/disconnected.png | Bin 14065 -> 0 bytes client/images/download.png | Bin 6144 -> 0 bytes client/images/favorites_disabled.png | Bin 636 -> 0 bytes client/images/favorites_enabled.png | Bin 390 -> 0 bytes client/images/favorites_hover.png | Bin 643 -> 0 bytes client/images/flagKit/AD.svg | 35 ++ client/images/flagKit/AE.svg | 33 ++ client/images/flagKit/AF.svg | 34 ++ client/images/flagKit/AG.svg | 44 +++ client/images/flagKit/AI.svg | 50 +++ client/images/flagKit/AL.svg | 27 ++ client/images/flagKit/AM.svg | 32 ++ client/images/flagKit/AO.svg | 37 ++ client/images/flagKit/AR.svg | 26 ++ client/images/flagKit/AS.svg | 36 ++ client/images/flagKit/AT.svg | 24 ++ client/images/flagKit/AU.svg | 36 ++ client/images/flagKit/AW.svg | 30 ++ client/images/flagKit/AX.svg | 32 ++ client/images/flagKit/AZ.svg | 33 ++ client/images/flagKit/BA.svg | 32 ++ client/images/flagKit/BB.svg | 38 ++ client/images/flagKit/BD.svg | 27 ++ client/images/flagKit/BE.svg | 32 ++ client/images/flagKit/BF.svg | 28 ++ client/images/flagKit/BG.svg | 28 ++ client/images/flagKit/BH.svg | 23 ++ client/images/flagKit/BI.svg | 36 ++ client/images/flagKit/BJ.svg | 32 ++ client/images/flagKit/BL.svg | 42 ++ client/images/flagKit/BM.svg | 49 +++ client/images/flagKit/BN.svg | 28 ++ client/images/flagKit/BO.svg | 32 ++ client/images/flagKit/BR.svg | 35 ++ client/images/flagKit/BS.svg | 33 ++ client/images/flagKit/BT.svg | 27 ++ client/images/flagKit/BV.svg | 28 ++ client/images/flagKit/BW.svg | 29 ++ client/images/flagKit/BY.svg | 30 ++ client/images/flagKit/BZ.svg | 30 ++ client/images/flagKit/CA.svg | 25 ++ client/images/flagKit/CC.svg | 33 ++ client/images/flagKit/CD.svg | 31 ++ client/images/flagKit/CF.svg | 43 +++ client/images/flagKit/CG.svg | 34 ++ client/images/flagKit/CH.svg | 23 ++ client/images/flagKit/CI.svg | 28 ++ client/images/flagKit/CK.svg | 31 ++ client/images/flagKit/CL.svg | 29 ++ client/images/flagKit/CM.svg | 38 ++ client/images/flagKit/CN.svg | 32 ++ client/images/flagKit/CO.svg | 32 ++ client/images/flagKit/CR.svg | 29 ++ client/images/flagKit/CU.svg | 32 ++ client/images/flagKit/CV.svg | 30 ++ client/images/flagKit/CW.svg | 29 ++ client/images/flagKit/CX.svg | 38 ++ client/images/flagKit/CY.svg | 24 ++ client/images/flagKit/CZ.svg | 28 ++ client/images/flagKit/DE.svg | 32 ++ client/images/flagKit/DJ.svg | 33 ++ client/images/flagKit/DK.svg | 23 ++ client/images/flagKit/DM.svg | 41 ++ client/images/flagKit/DO.svg | 33 ++ client/images/flagKit/DZ.svg | 29 ++ client/images/flagKit/EC.svg | 39 ++ client/images/flagKit/EE.svg | 28 ++ client/images/flagKit/EG.svg | 30 ++ client/images/flagKit/ER.svg | 40 ++ client/images/flagKit/ES.svg | 34 ++ client/images/flagKit/ET.svg | 42 ++ client/images/flagKit/EU.svg | 27 ++ client/images/flagKit/FI.svg | 22 ++ client/images/flagKit/FJ.svg | 51 +++ client/images/flagKit/FK.svg | 58 +++ client/images/flagKit/FM.svg | 23 ++ client/images/flagKit/FO.svg | 27 ++ client/images/flagKit/FR.svg | 28 ++ client/images/flagKit/GA.svg | 32 ++ client/images/flagKit/GB.svg | 32 ++ client/images/flagKit/GD.svg | 49 +++ client/images/flagKit/GE.svg | 26 ++ client/images/flagKit/GF.svg | 32 ++ client/images/flagKit/GG.svg | 27 ++ client/images/flagKit/GH.svg | 37 ++ client/images/flagKit/GI.svg | 38 ++ client/images/flagKit/GL.svg | 33 ++ client/images/flagKit/GM.svg | 33 ++ client/images/flagKit/GN.svg | 32 ++ client/images/flagKit/GP.svg | 40 ++ client/images/flagKit/GQ.svg | 34 ++ client/images/flagKit/GR.svg | 22 ++ client/images/flagKit/GS.svg | 112 ++++++ client/images/flagKit/GT.svg | 26 ++ client/images/flagKit/GU.svg | 65 ++++ client/images/flagKit/GW.svg | 37 ++ client/images/flagKit/GY.svg | 42 ++ client/images/flagKit/HK.svg | 23 ++ client/images/flagKit/HM.svg | 36 ++ client/images/flagKit/HN.svg | 33 ++ client/images/flagKit/HR.svg | 35 ++ client/images/flagKit/HT.svg | 46 +++ client/images/flagKit/HU.svg | 28 ++ client/images/flagKit/ID.svg | 23 ++ client/images/flagKit/IE.svg | 28 ++ client/images/flagKit/IL.svg | 26 ++ client/images/flagKit/IM.svg | 30 ++ client/images/flagKit/IN.svg | 31 ++ client/images/flagKit/IO.svg | 33 ++ client/images/flagKit/IQ.svg | 33 ++ client/images/flagKit/IR.svg | 31 ++ client/images/flagKit/IS.svg | 28 ++ client/images/flagKit/IT.svg | 28 ++ client/images/flagKit/JE.svg | 32 ++ client/images/flagKit/JM.svg | 33 ++ client/images/flagKit/JO.svg | 34 ++ client/images/flagKit/JP.svg | 22 ++ client/images/flagKit/KE.svg | 43 +++ client/images/flagKit/KG.svg | 28 ++ client/images/flagKit/KH.svg | 29 ++ client/images/flagKit/KI.svg | 35 ++ client/images/flagKit/KM.svg | 39 ++ client/images/flagKit/KN.svg | 39 ++ client/images/flagKit/KP.svg | 30 ++ client/images/flagKit/KR.svg | 38 ++ client/images/flagKit/KW.svg | 33 ++ client/images/flagKit/KY.svg | 44 +++ client/images/flagKit/KZ.svg | 29 ++ client/images/flagKit/LA.svg | 29 ++ client/images/flagKit/LB.svg | 29 ++ client/images/flagKit/LC.svg | 33 ++ client/images/flagKit/LI.svg | 27 ++ client/images/flagKit/LICENSE | 22 ++ client/images/flagKit/LK.svg | 43 +++ client/images/flagKit/LR.svg | 36 ++ client/images/flagKit/LS.svg | 34 ++ client/images/flagKit/LT.svg | 32 ++ client/images/flagKit/LU.svg | 28 ++ client/images/flagKit/LV.svg | 24 ++ client/images/flagKit/LY.svg | 33 ++ client/images/flagKit/MA.svg | 23 ++ client/images/flagKit/MC.svg | 23 ++ client/images/flagKit/MD.svg | 42 ++ client/images/flagKit/ME.svg | 29 ++ client/images/flagKit/MF.svg | 28 ++ client/images/flagKit/MG.svg | 28 ++ client/images/flagKit/MH.svg | 29 ++ client/images/flagKit/MK.svg | 29 ++ client/images/flagKit/ML.svg | 32 ++ client/images/flagKit/MM.svg | 33 ++ client/images/flagKit/MN.svg | 33 ++ client/images/flagKit/MO.svg | 26 ++ client/images/flagKit/MP.svg | 29 ++ client/images/flagKit/MQ.svg | 27 ++ client/images/flagKit/MR.svg | 27 ++ client/images/flagKit/MS.svg | 47 +++ client/images/flagKit/MT.svg | 29 ++ client/images/flagKit/MU.svg | 37 ++ client/images/flagKit/MV.svg | 28 ++ client/images/flagKit/MW.svg | 33 ++ client/images/flagKit/MX.svg | 30 ++ client/images/flagKit/MY.svg | 32 ++ client/images/flagKit/MZ.svg | 43 +++ client/images/flagKit/NA.svg | 75 ++++ client/images/flagKit/NC.svg | 42 ++ client/images/flagKit/NE.svg | 33 ++ client/images/flagKit/NF.svg | 29 ++ client/images/flagKit/NG.svg | 24 ++ client/images/flagKit/NI.svg | 26 ++ client/images/flagKit/NL.svg | 28 ++ client/images/flagKit/NO.svg | 28 ++ client/images/flagKit/NP.svg | 35 ++ client/images/flagKit/NR.svg | 28 ++ client/images/flagKit/NU.svg | 41 ++ client/images/flagKit/NZ.svg | 34 ++ client/images/flagKit/OM.svg | 29 ++ client/images/flagKit/PA.svg | 30 ++ client/images/flagKit/PE.svg | 24 ++ client/images/flagKit/PF.svg | 52 +++ client/images/flagKit/PG.svg | 36 ++ client/images/flagKit/PH.svg | 33 ++ client/images/flagKit/PK.svg | 32 ++ client/images/flagKit/PL.svg | 23 ++ client/images/flagKit/PM.svg | 66 ++++ client/images/flagKit/PN.svg | 51 +++ client/images/flagKit/PR.svg | 30 ++ client/images/flagKit/PS.svg | 33 ++ client/images/flagKit/PT.svg | 38 ++ client/images/flagKit/PW.svg | 27 ++ client/images/flagKit/PY.svg | 30 ++ client/images/flagKit/QA.svg | 23 ++ client/images/flagKit/RE.svg | 28 ++ client/images/flagKit/RO.svg | 32 ++ client/images/flagKit/RS.svg | 39 ++ client/images/flagKit/RU.svg | 28 ++ client/images/flagKit/RW.svg | 37 ++ client/images/flagKit/SA.svg | 26 ++ client/images/flagKit/SB.svg | 39 ++ client/images/flagKit/SC.svg | 43 +++ client/images/flagKit/SD.svg | 33 ++ client/images/flagKit/SE.svg | 27 ++ client/images/flagKit/SG.svg | 24 ++ client/images/flagKit/SH.svg | 53 +++ client/images/flagKit/SI.svg | 28 ++ client/images/flagKit/SJ.svg | 28 ++ client/images/flagKit/SK.svg | 46 +++ client/images/flagKit/SL.svg | 28 ++ client/images/flagKit/SM.svg | 25 ++ client/images/flagKit/SN.svg | 33 ++ client/images/flagKit/SO.svg | 23 ++ client/images/flagKit/SR.svg | 34 ++ client/images/flagKit/SS.svg | 44 +++ client/images/flagKit/ST.svg | 39 ++ client/images/flagKit/SV.svg | 30 ++ client/images/flagKit/SX.svg | 45 +++ client/images/flagKit/SY.svg | 34 ++ client/images/flagKit/SZ.svg | 47 +++ client/images/flagKit/TC.svg | 40 ++ client/images/flagKit/TD.svg | 32 ++ client/images/flagKit/TF.svg | 35 ++ client/images/flagKit/TG.svg | 33 ++ client/images/flagKit/TH.svg | 29 ++ client/images/flagKit/TJ.svg | 29 ++ client/images/flagKit/TK.svg | 31 ++ client/images/flagKit/TL.svg | 33 ++ client/images/flagKit/TM.svg | 74 ++++ client/images/flagKit/TN.svg | 23 ++ client/images/flagKit/TO.svg | 28 ++ client/images/flagKit/TR.svg | 23 ++ client/images/flagKit/TT.svg | 28 ++ client/images/flagKit/TV.svg | 36 ++ client/images/flagKit/TW.svg | 28 ++ client/images/flagKit/TZ.svg | 37 ++ client/images/flagKit/UA.svg | 27 ++ client/images/flagKit/UG.svg | 37 ++ client/images/flagKit/UM.svg | 28 ++ client/images/flagKit/US.svg | 28 ++ client/images/flagKit/UY.svg | 29 ++ client/images/flagKit/UZ.svg | 29 ++ client/images/flagKit/VA.svg | 39 ++ client/images/flagKit/VC.svg | 37 ++ client/images/flagKit/VE.svg | 33 ++ client/images/flagKit/VG.svg | 42 ++ client/images/flagKit/VI.svg | 49 +++ client/images/flagKit/VN.svg | 27 ++ client/images/flagKit/VU.svg | 38 ++ client/images/flagKit/WF.svg | 28 ++ client/images/flagKit/WS.svg | 28 ++ client/images/flagKit/XK.svg | 28 ++ client/images/flagKit/YE.svg | 28 ++ client/images/flagKit/YT.svg | 77 ++++ client/images/flagKit/ZA.svg | 44 +++ client/images/flagKit/ZM.svg | 42 ++ client/images/flagKit/ZW.svg | 43 +++ client/images/folder.png | Bin 150 -> 0 bytes client/images/icon_src.png | Bin 12467 -> 0 bytes client/images/icon_src.svg | 67 ---- client/images/settings.png | Bin 846 -> 0 bytes client/images/settings_grey.png | Bin 871 -> 0 bytes client/images/share.png | Bin 612 -> 0 bytes client/images/svg/close_black_24dp.svg | 1 - .../images/svg/control_point_black_24dp.svg | 1 - client/images/svg/delete_black_24dp.svg | 1 - .../images/svg/density_small_black_24dp.svg | 1 - client/images/svg/done_black_24dp.svg | 1 - .../svg/format_list_bulleted_black_24dp.svg | 1 - client/images/svg/gpp_good_black_24dp.svg | 1 - client/images/svg/gpp_maybe_black_24dp.svg | 1 - client/images/svg/logout_black_24dp.svg | 1 - .../svg/miscellaneous_services_black_24dp.svg | 1 - client/images/svg/refresh_black_24dp.svg | 1 - client/images/svg/settings_black_24dp.svg | 1 - .../svg/settings_suggest_black_24dp.svg | 1 - client/images/svg/share_black_24dp.svg | 1 - client/images/svg/vpn_key_black_24dp.svg | 1 - client/images/uncheck.png | Bin 181 -> 0 bytes client/images/upload.png | Bin 5506 -> 0 bytes client/resources.qrc | 306 +++++++++++++-- client/secure_qsettings.cpp | 4 +- client/settings.cpp | 55 ++- client/settings.h | 9 +- .../ui/controllers/connectionController.cpp | 31 +- client/ui/controllers/connectionController.h | 9 +- client/ui/controllers/exportController.cpp | 2 +- client/ui/controllers/installController.cpp | 150 ++++++-- client/ui/controllers/installController.h | 15 + client/ui/controllers/pageController.cpp | 6 +- client/ui/controllers/pageController.h | 9 +- client/ui/controllers/settingsController.cpp | 33 ++ client/ui/controllers/settingsController.h | 17 + client/ui/macos_util.h | 2 +- client/ui/models/apiCountryModel.cpp | 80 ++++ client/ui/models/apiCountryModel.h | 42 ++ client/ui/models/apiServicesModel.cpp | 203 ++++++++++ client/ui/models/apiServicesModel.h | 56 +++ client/ui/models/containers_model.cpp | 20 + client/ui/models/containers_model.h | 3 + client/ui/models/languageModel.cpp | 9 + client/ui/models/languageModel.h | 1 + client/ui/models/servers_model.cpp | 165 +++++++- client/ui/models/servers_model.h | 23 +- client/ui/qml/Components/ConnectButton.qml | 14 +- .../Components/HomeSplitTunnelingDrawer.qml | 4 +- .../ui/qml/Components/InstalledAppsDrawer.qml | 2 +- client/ui/qml/Components/QuestionDrawer.qml | 8 +- .../qml/Components/SelectLanguageDrawer.qml | 4 +- .../qml/Components/ShareConnectionDrawer.qml | 30 +- .../qml/Components/TransportProtoSelector.qml | 2 +- client/ui/qml/Controls2/BackButtonType.qml | 2 +- client/ui/qml/Controls2/BasicButtonType.qml | 14 +- client/ui/qml/Controls2/BusyIndicatorType.qml | 2 +- client/ui/qml/Controls2/CardType.qml | 14 +- client/ui/qml/Controls2/CardWithIconsType.qml | 177 +++++++++ client/ui/qml/Controls2/CheckBoxType.qml | 26 +- client/ui/qml/Controls2/DividerType.qml | 2 +- client/ui/qml/Controls2/DrawerType2.qml | 4 +- client/ui/qml/Controls2/DropDownType.qml | 24 +- client/ui/qml/Controls2/Header2Type.qml | 4 +- client/ui/qml/Controls2/HeaderType.qml | 4 +- .../qml/Controls2/HorizontalRadioButton.qml | 14 +- client/ui/qml/Controls2/ImageButtonType.qml | 12 +- .../ui/qml/Controls2/LabelWithButtonType.qml | 12 +- .../ui/qml/Controls2/LabelWithImageType.qml | 38 ++ .../Controls2/ListViewWithRadioButtonType.qml | 4 +- client/ui/qml/Controls2/PopupType.qml | 8 +- client/ui/qml/Controls2/ProgressBarType.qml | 4 +- client/ui/qml/Controls2/SwitcherType.qml | 30 +- client/ui/qml/Controls2/TabButtonType.qml | 10 +- .../ui/qml/Controls2/TabImageButtonType.qml | 8 +- client/ui/qml/Controls2/TextAreaType.qml | 16 +- .../qml/Controls2/TextAreaWithFooterType.qml | 183 +++++++++ .../qml/Controls2/TextFieldWithHeaderType.qml | 26 +- .../Controls2/TextTypes/ButtonTextType.qml | 2 +- .../Controls2/TextTypes/CaptionTextType.qml | 2 +- .../Controls2/TextTypes/Header1TextType.qml | 2 +- .../Controls2/TextTypes/Header2TextType.qml | 2 +- .../qml/Controls2/TextTypes/LabelTextType.qml | 2 +- .../Controls2/TextTypes/ListItemTitleType.qml | 2 +- .../Controls2/TextTypes/ParagraphTextType.qml | 2 +- .../qml/Controls2/TextTypes/SmallTextType.qml | 2 +- .../ui/qml/Controls2/TopCloseButtonType.qml | 2 +- .../ui/qml/Controls2/VerticalRadioButton.qml | 10 +- client/ui/qml/Controls2/WarningType.qml | 6 +- client/ui/qml/Modules/Style/AmneziaStyle.qml | 36 +- client/ui/qml/Pages2/PageDeinstalling.qml | 1 + client/ui/qml/Pages2/PageDevMenu.qml | 94 +++++ client/ui/qml/Pages2/PageHome.qml | 46 ++- .../ui/qml/Pages2/PageProtocolAwgSettings.qml | 1 + .../qml/Pages2/PageProtocolCloakSettings.qml | 1 + .../Pages2/PageProtocolOpenVpnSettings.qml | 2 +- client/ui/qml/Pages2/PageProtocolRaw.qml | 8 +- .../PageProtocolShadowSocksSettings.qml | 1 + .../Pages2/PageProtocolWireGuardSettings.qml | 1 + .../qml/Pages2/PageProtocolXraySettings.qml | 1 + .../ui/qml/Pages2/PageServiceDnsSettings.qml | 2 +- .../ui/qml/Pages2/PageServiceSftpSettings.qml | 24 +- .../Pages2/PageServiceSocksProxySettings.qml | 9 +- .../Pages2/PageServiceTorWebsiteSettings.qml | 4 +- client/ui/qml/Pages2/PageSettings.qml | 21 + client/ui/qml/Pages2/PageSettingsAbout.qml | 36 +- .../Pages2/PageSettingsApiLanguageList.qml | 103 +++++ .../qml/Pages2/PageSettingsApiServerInfo.qml | 208 ++++++++++ .../Pages2/PageSettingsAppSplitTunneling.qml | 4 +- .../ui/qml/Pages2/PageSettingsApplication.qml | 4 +- client/ui/qml/Pages2/PageSettingsBackup.qml | 9 +- .../ui/qml/Pages2/PageSettingsConnection.qml | 1 + client/ui/qml/Pages2/PageSettingsDns.qml | 10 +- client/ui/qml/Pages2/PageSettingsLogging.qml | 6 +- .../ui/qml/Pages2/PageSettingsServerData.qml | 14 +- .../ui/qml/Pages2/PageSettingsServerInfo.qml | 94 +++-- .../qml/Pages2/PageSettingsServerProtocol.qml | 2 +- .../Pages2/PageSettingsServerProtocols.qml | 1 + .../qml/Pages2/PageSettingsServerServices.qml | 1 + .../ui/qml/Pages2/PageSettingsServersList.qml | 7 +- .../qml/Pages2/PageSettingsSplitTunneling.qml | 10 +- .../Pages2/PageSetupWizardApiServiceInfo.qml | 154 ++++++++ .../Pages2/PageSetupWizardApiServicesList.qml | 100 +++++ .../Pages2/PageSetupWizardConfigSource.qml | 201 ++++++++-- .../qml/Pages2/PageSetupWizardCredentials.qml | 18 + client/ui/qml/Pages2/PageSetupWizardEasy.qml | 8 +- .../qml/Pages2/PageSetupWizardInstalling.qml | 10 +- .../PageSetupWizardProtocolSettings.qml | 8 +- .../qml/Pages2/PageSetupWizardProtocols.qml | 1 + client/ui/qml/Pages2/PageSetupWizardStart.qml | 193 ++-------- .../ui/qml/Pages2/PageSetupWizardTextKey.qml | 1 + .../qml/Pages2/PageSetupWizardViewConfig.qml | 24 +- client/ui/qml/Pages2/PageShare.qml | 24 +- client/ui/qml/Pages2/PageShareFullAccess.qml | 2 +- client/ui/qml/Pages2/PageStart.qml | 98 +++-- client/ui/qml/main2.qml | 40 +- 443 files changed, 11759 insertions(+), 2758 deletions(-) create mode 160000 client/3rd/QSimpleCrypto delete mode 100644 client/3rd/QSimpleCrypto/QSimpleCrypto.cmake delete mode 100644 client/3rd/QSimpleCrypto/QSimpleCrypto.pri delete mode 100644 client/3rd/QSimpleCrypto/include/QAead.h delete mode 100644 client/3rd/QSimpleCrypto/include/QBlockCipher.h delete mode 100644 client/3rd/QSimpleCrypto/include/QCryptoError.h delete mode 100644 client/3rd/QSimpleCrypto/include/QRsa.h delete mode 100644 client/3rd/QSimpleCrypto/include/QSimpleCrypto_global.h delete mode 100644 client/3rd/QSimpleCrypto/include/QX509.h delete mode 100644 client/3rd/QSimpleCrypto/include/QX509Store.h delete mode 100644 client/3rd/QSimpleCrypto/sources/QAead.cpp delete mode 100644 client/3rd/QSimpleCrypto/sources/QBlockCipher.cpp delete mode 100644 client/3rd/QSimpleCrypto/sources/QCryptoError.cpp delete mode 100644 client/3rd/QSimpleCrypto/sources/QRsa.cpp delete mode 100644 client/3rd/QSimpleCrypto/sources/QX509.cpp delete mode 100644 client/3rd/QSimpleCrypto/sources/QX509Store.cpp create mode 100644 client/cmake/QSimpleCrypto.cmake create mode 100644 client/core/enums/apiEnums.h delete mode 100644 client/images/amneziaBigLogo.svg delete mode 100644 client/images/animation.gif delete mode 100644 client/images/arrow_left.png delete mode 100644 client/images/background_connected.png delete mode 100644 client/images/background_connected@2x.png delete mode 100644 client/images/check.png delete mode 100644 client/images/close.png delete mode 100644 client/images/connected.png delete mode 100644 client/images/connectionOff.svg delete mode 100644 client/images/connectionOn.svg delete mode 100644 client/images/connectionProgress.svg create mode 100644 client/images/controls/archive-restore.svg create mode 100644 client/images/controls/bug.svg create mode 100644 client/images/controls/folder-search-2.svg create mode 100644 client/images/controls/gauge.svg create mode 100644 client/images/controls/help-circle.svg create mode 100644 client/images/controls/history.svg create mode 100644 client/images/controls/info.svg create mode 100644 client/images/controls/map-pin.svg create mode 100644 client/images/controls/refresh-cw.svg create mode 100644 client/images/controls/scan-line.svg create mode 100644 client/images/controls/tag.svg delete mode 100644 client/images/delete.png delete mode 100644 client/images/disconnected.png delete mode 100644 client/images/download.png delete mode 100644 client/images/favorites_disabled.png delete mode 100644 client/images/favorites_enabled.png delete mode 100644 client/images/favorites_hover.png create mode 100644 client/images/flagKit/AD.svg create mode 100644 client/images/flagKit/AE.svg create mode 100644 client/images/flagKit/AF.svg create mode 100644 client/images/flagKit/AG.svg create mode 100644 client/images/flagKit/AI.svg create mode 100644 client/images/flagKit/AL.svg create mode 100644 client/images/flagKit/AM.svg create mode 100644 client/images/flagKit/AO.svg create mode 100644 client/images/flagKit/AR.svg create mode 100644 client/images/flagKit/AS.svg create mode 100644 client/images/flagKit/AT.svg create mode 100644 client/images/flagKit/AU.svg create mode 100644 client/images/flagKit/AW.svg create mode 100644 client/images/flagKit/AX.svg create mode 100644 client/images/flagKit/AZ.svg create mode 100644 client/images/flagKit/BA.svg create mode 100644 client/images/flagKit/BB.svg create mode 100644 client/images/flagKit/BD.svg create mode 100644 client/images/flagKit/BE.svg create mode 100644 client/images/flagKit/BF.svg create mode 100644 client/images/flagKit/BG.svg create mode 100644 client/images/flagKit/BH.svg create mode 100644 client/images/flagKit/BI.svg create mode 100644 client/images/flagKit/BJ.svg create mode 100644 client/images/flagKit/BL.svg create mode 100644 client/images/flagKit/BM.svg create mode 100644 client/images/flagKit/BN.svg create mode 100644 client/images/flagKit/BO.svg create mode 100644 client/images/flagKit/BR.svg create mode 100644 client/images/flagKit/BS.svg create mode 100644 client/images/flagKit/BT.svg create mode 100644 client/images/flagKit/BV.svg create mode 100644 client/images/flagKit/BW.svg create mode 100644 client/images/flagKit/BY.svg create mode 100644 client/images/flagKit/BZ.svg create mode 100644 client/images/flagKit/CA.svg create mode 100644 client/images/flagKit/CC.svg create mode 100644 client/images/flagKit/CD.svg create mode 100644 client/images/flagKit/CF.svg create mode 100644 client/images/flagKit/CG.svg create mode 100644 client/images/flagKit/CH.svg create mode 100644 client/images/flagKit/CI.svg create mode 100644 client/images/flagKit/CK.svg create mode 100644 client/images/flagKit/CL.svg create mode 100644 client/images/flagKit/CM.svg create mode 100644 client/images/flagKit/CN.svg create mode 100644 client/images/flagKit/CO.svg create mode 100644 client/images/flagKit/CR.svg create mode 100644 client/images/flagKit/CU.svg create mode 100644 client/images/flagKit/CV.svg create mode 100644 client/images/flagKit/CW.svg create mode 100644 client/images/flagKit/CX.svg create mode 100644 client/images/flagKit/CY.svg create mode 100644 client/images/flagKit/CZ.svg create mode 100644 client/images/flagKit/DE.svg create mode 100644 client/images/flagKit/DJ.svg create mode 100644 client/images/flagKit/DK.svg create mode 100644 client/images/flagKit/DM.svg create mode 100644 client/images/flagKit/DO.svg create mode 100644 client/images/flagKit/DZ.svg create mode 100644 client/images/flagKit/EC.svg create mode 100644 client/images/flagKit/EE.svg create mode 100644 client/images/flagKit/EG.svg create mode 100644 client/images/flagKit/ER.svg create mode 100644 client/images/flagKit/ES.svg create mode 100644 client/images/flagKit/ET.svg create mode 100644 client/images/flagKit/EU.svg create mode 100644 client/images/flagKit/FI.svg create mode 100644 client/images/flagKit/FJ.svg create mode 100644 client/images/flagKit/FK.svg create mode 100644 client/images/flagKit/FM.svg create mode 100644 client/images/flagKit/FO.svg create mode 100644 client/images/flagKit/FR.svg create mode 100644 client/images/flagKit/GA.svg create mode 100644 client/images/flagKit/GB.svg create mode 100644 client/images/flagKit/GD.svg create mode 100644 client/images/flagKit/GE.svg create mode 100644 client/images/flagKit/GF.svg create mode 100644 client/images/flagKit/GG.svg create mode 100644 client/images/flagKit/GH.svg create mode 100644 client/images/flagKit/GI.svg create mode 100644 client/images/flagKit/GL.svg create mode 100644 client/images/flagKit/GM.svg create mode 100644 client/images/flagKit/GN.svg create mode 100644 client/images/flagKit/GP.svg create mode 100644 client/images/flagKit/GQ.svg create mode 100644 client/images/flagKit/GR.svg create mode 100644 client/images/flagKit/GS.svg create mode 100644 client/images/flagKit/GT.svg create mode 100644 client/images/flagKit/GU.svg create mode 100644 client/images/flagKit/GW.svg create mode 100644 client/images/flagKit/GY.svg create mode 100644 client/images/flagKit/HK.svg create mode 100644 client/images/flagKit/HM.svg create mode 100644 client/images/flagKit/HN.svg create mode 100644 client/images/flagKit/HR.svg create mode 100644 client/images/flagKit/HT.svg create mode 100644 client/images/flagKit/HU.svg create mode 100644 client/images/flagKit/ID.svg create mode 100644 client/images/flagKit/IE.svg create mode 100644 client/images/flagKit/IL.svg create mode 100644 client/images/flagKit/IM.svg create mode 100644 client/images/flagKit/IN.svg create mode 100644 client/images/flagKit/IO.svg create mode 100644 client/images/flagKit/IQ.svg create mode 100644 client/images/flagKit/IR.svg create mode 100644 client/images/flagKit/IS.svg create mode 100644 client/images/flagKit/IT.svg create mode 100644 client/images/flagKit/JE.svg create mode 100644 client/images/flagKit/JM.svg create mode 100644 client/images/flagKit/JO.svg create mode 100644 client/images/flagKit/JP.svg create mode 100644 client/images/flagKit/KE.svg create mode 100644 client/images/flagKit/KG.svg create mode 100644 client/images/flagKit/KH.svg create mode 100644 client/images/flagKit/KI.svg create mode 100644 client/images/flagKit/KM.svg create mode 100644 client/images/flagKit/KN.svg create mode 100644 client/images/flagKit/KP.svg create mode 100644 client/images/flagKit/KR.svg create mode 100644 client/images/flagKit/KW.svg create mode 100644 client/images/flagKit/KY.svg create mode 100644 client/images/flagKit/KZ.svg create mode 100644 client/images/flagKit/LA.svg create mode 100644 client/images/flagKit/LB.svg create mode 100644 client/images/flagKit/LC.svg create mode 100644 client/images/flagKit/LI.svg create mode 100644 client/images/flagKit/LICENSE create mode 100644 client/images/flagKit/LK.svg create mode 100644 client/images/flagKit/LR.svg create mode 100644 client/images/flagKit/LS.svg create mode 100644 client/images/flagKit/LT.svg create mode 100644 client/images/flagKit/LU.svg create mode 100644 client/images/flagKit/LV.svg create mode 100644 client/images/flagKit/LY.svg create mode 100644 client/images/flagKit/MA.svg create mode 100644 client/images/flagKit/MC.svg create mode 100644 client/images/flagKit/MD.svg create mode 100644 client/images/flagKit/ME.svg create mode 100644 client/images/flagKit/MF.svg create mode 100644 client/images/flagKit/MG.svg create mode 100644 client/images/flagKit/MH.svg create mode 100644 client/images/flagKit/MK.svg create mode 100644 client/images/flagKit/ML.svg create mode 100644 client/images/flagKit/MM.svg create mode 100644 client/images/flagKit/MN.svg create mode 100644 client/images/flagKit/MO.svg create mode 100644 client/images/flagKit/MP.svg create mode 100644 client/images/flagKit/MQ.svg create mode 100644 client/images/flagKit/MR.svg create mode 100644 client/images/flagKit/MS.svg create mode 100644 client/images/flagKit/MT.svg create mode 100644 client/images/flagKit/MU.svg create mode 100644 client/images/flagKit/MV.svg create mode 100644 client/images/flagKit/MW.svg create mode 100644 client/images/flagKit/MX.svg create mode 100644 client/images/flagKit/MY.svg create mode 100644 client/images/flagKit/MZ.svg create mode 100644 client/images/flagKit/NA.svg create mode 100644 client/images/flagKit/NC.svg create mode 100644 client/images/flagKit/NE.svg create mode 100644 client/images/flagKit/NF.svg create mode 100644 client/images/flagKit/NG.svg create mode 100644 client/images/flagKit/NI.svg create mode 100644 client/images/flagKit/NL.svg create mode 100644 client/images/flagKit/NO.svg create mode 100644 client/images/flagKit/NP.svg create mode 100644 client/images/flagKit/NR.svg create mode 100644 client/images/flagKit/NU.svg create mode 100644 client/images/flagKit/NZ.svg create mode 100644 client/images/flagKit/OM.svg create mode 100644 client/images/flagKit/PA.svg create mode 100644 client/images/flagKit/PE.svg create mode 100644 client/images/flagKit/PF.svg create mode 100644 client/images/flagKit/PG.svg create mode 100644 client/images/flagKit/PH.svg create mode 100644 client/images/flagKit/PK.svg create mode 100644 client/images/flagKit/PL.svg create mode 100644 client/images/flagKit/PM.svg create mode 100644 client/images/flagKit/PN.svg create mode 100644 client/images/flagKit/PR.svg create mode 100644 client/images/flagKit/PS.svg create mode 100644 client/images/flagKit/PT.svg create mode 100644 client/images/flagKit/PW.svg create mode 100644 client/images/flagKit/PY.svg create mode 100644 client/images/flagKit/QA.svg create mode 100644 client/images/flagKit/RE.svg create mode 100644 client/images/flagKit/RO.svg create mode 100644 client/images/flagKit/RS.svg create mode 100644 client/images/flagKit/RU.svg create mode 100644 client/images/flagKit/RW.svg create mode 100644 client/images/flagKit/SA.svg create mode 100644 client/images/flagKit/SB.svg create mode 100644 client/images/flagKit/SC.svg create mode 100644 client/images/flagKit/SD.svg create mode 100644 client/images/flagKit/SE.svg create mode 100644 client/images/flagKit/SG.svg create mode 100644 client/images/flagKit/SH.svg create mode 100644 client/images/flagKit/SI.svg create mode 100644 client/images/flagKit/SJ.svg create mode 100644 client/images/flagKit/SK.svg create mode 100644 client/images/flagKit/SL.svg create mode 100644 client/images/flagKit/SM.svg create mode 100644 client/images/flagKit/SN.svg create mode 100644 client/images/flagKit/SO.svg create mode 100644 client/images/flagKit/SR.svg create mode 100644 client/images/flagKit/SS.svg create mode 100644 client/images/flagKit/ST.svg create mode 100644 client/images/flagKit/SV.svg create mode 100644 client/images/flagKit/SX.svg create mode 100644 client/images/flagKit/SY.svg create mode 100644 client/images/flagKit/SZ.svg create mode 100644 client/images/flagKit/TC.svg create mode 100644 client/images/flagKit/TD.svg create mode 100644 client/images/flagKit/TF.svg create mode 100644 client/images/flagKit/TG.svg create mode 100644 client/images/flagKit/TH.svg create mode 100644 client/images/flagKit/TJ.svg create mode 100644 client/images/flagKit/TK.svg create mode 100644 client/images/flagKit/TL.svg create mode 100644 client/images/flagKit/TM.svg create mode 100644 client/images/flagKit/TN.svg create mode 100644 client/images/flagKit/TO.svg create mode 100644 client/images/flagKit/TR.svg create mode 100644 client/images/flagKit/TT.svg create mode 100644 client/images/flagKit/TV.svg create mode 100644 client/images/flagKit/TW.svg create mode 100644 client/images/flagKit/TZ.svg create mode 100644 client/images/flagKit/UA.svg create mode 100644 client/images/flagKit/UG.svg create mode 100644 client/images/flagKit/UM.svg create mode 100644 client/images/flagKit/US.svg create mode 100644 client/images/flagKit/UY.svg create mode 100644 client/images/flagKit/UZ.svg create mode 100644 client/images/flagKit/VA.svg create mode 100644 client/images/flagKit/VC.svg create mode 100644 client/images/flagKit/VE.svg create mode 100644 client/images/flagKit/VG.svg create mode 100644 client/images/flagKit/VI.svg create mode 100644 client/images/flagKit/VN.svg create mode 100644 client/images/flagKit/VU.svg create mode 100644 client/images/flagKit/WF.svg create mode 100644 client/images/flagKit/WS.svg create mode 100644 client/images/flagKit/XK.svg create mode 100644 client/images/flagKit/YE.svg create mode 100644 client/images/flagKit/YT.svg create mode 100644 client/images/flagKit/ZA.svg create mode 100644 client/images/flagKit/ZM.svg create mode 100644 client/images/flagKit/ZW.svg delete mode 100644 client/images/folder.png delete mode 100644 client/images/icon_src.png delete mode 100644 client/images/icon_src.svg delete mode 100644 client/images/settings.png delete mode 100644 client/images/settings_grey.png delete mode 100644 client/images/share.png delete mode 100644 client/images/svg/close_black_24dp.svg delete mode 100644 client/images/svg/control_point_black_24dp.svg delete mode 100644 client/images/svg/delete_black_24dp.svg delete mode 100644 client/images/svg/density_small_black_24dp.svg delete mode 100644 client/images/svg/done_black_24dp.svg delete mode 100644 client/images/svg/format_list_bulleted_black_24dp.svg delete mode 100644 client/images/svg/gpp_good_black_24dp.svg delete mode 100644 client/images/svg/gpp_maybe_black_24dp.svg delete mode 100644 client/images/svg/logout_black_24dp.svg delete mode 100644 client/images/svg/miscellaneous_services_black_24dp.svg delete mode 100644 client/images/svg/refresh_black_24dp.svg delete mode 100644 client/images/svg/settings_black_24dp.svg delete mode 100644 client/images/svg/settings_suggest_black_24dp.svg delete mode 100644 client/images/svg/share_black_24dp.svg delete mode 100644 client/images/svg/vpn_key_black_24dp.svg delete mode 100644 client/images/uncheck.png delete mode 100644 client/images/upload.png create mode 100644 client/ui/models/apiCountryModel.cpp create mode 100644 client/ui/models/apiCountryModel.h create mode 100644 client/ui/models/apiServicesModel.cpp create mode 100644 client/ui/models/apiServicesModel.h create mode 100644 client/ui/qml/Controls2/CardWithIconsType.qml create mode 100644 client/ui/qml/Controls2/LabelWithImageType.qml create mode 100644 client/ui/qml/Controls2/TextAreaWithFooterType.qml create mode 100644 client/ui/qml/Pages2/PageDevMenu.qml create mode 100644 client/ui/qml/Pages2/PageSettingsApiLanguageList.qml create mode 100644 client/ui/qml/Pages2/PageSettingsApiServerInfo.qml create mode 100644 client/ui/qml/Pages2/PageSetupWizardApiServiceInfo.qml create mode 100644 client/ui/qml/Pages2/PageSetupWizardApiServicesList.qml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 506da5b7..220fbd79 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,6 +15,7 @@ jobs: env: QT_VERSION: 6.6.2 QIF_VERSION: 4.7 + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} steps: - name: 'Install Qt' @@ -80,6 +81,7 @@ jobs: QT_VERSION: 6.6.2 QIF_VERSION: 4.7 BUILD_ARCH: 64 + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} steps: - name: 'Get sources' @@ -141,6 +143,7 @@ jobs: QT_VERSION: 6.6.2 CC: cc CXX: c++ + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} steps: - name: 'Setup xcode' @@ -231,6 +234,7 @@ jobs: # Keep compat with MacOS 10.15 aka Catalina by Qt 6.4 QT_VERSION: 6.4.3 QIF_VERSION: 4.6 + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} steps: - name: 'Setup xcode' @@ -295,6 +299,7 @@ jobs: ANDROID_BUILD_PLATFORM: android-34 QT_VERSION: 6.6.2 QT_MODULES: 'qtremoteobjects qt5compat qtimageformats qtshadertools' + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} steps: - name: 'Install desktop Qt' diff --git a/.github/workflows/tag-deploy.yml b/.github/workflows/tag-deploy.yml index b88390f4..e117a6c6 100644 --- a/.github/workflows/tag-deploy.yml +++ b/.github/workflows/tag-deploy.yml @@ -15,6 +15,7 @@ jobs: env: QT_VERSION: 6.4.1 QIF_VERSION: 4.5 + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} steps: - name: 'Install desktop Qt' diff --git a/.gitmodules b/.gitmodules index 78d45e25..3ceaa56e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "client/3rd/amneziawg-apple"] path = client/3rd/amneziawg-apple url = https://github.com/amnezia-vpn/amneziawg-apple +[submodule "client/3rd/QSimpleCrypto"] + path = client/3rd/QSimpleCrypto + url = https://github.com/amnezia-vpn/QSimpleCrypto.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 51ca8edc..41e05838 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN) -project(${PROJECT} VERSION 4.6.1.0 +project(${PROJECT} VERSION 4.7.0.0 DESCRIPTION "AmneziaVPN" HOMEPAGE_URL "https://amnezia.org/" ) @@ -11,7 +11,7 @@ string(TIMESTAMP CURRENT_DATE "%Y-%m-%d") set(RELEASE_DATE "${CURRENT_DATE}") set(APP_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}) -set(APP_ANDROID_VERSION_CODE 56) +set(APP_ANDROID_VERSION_CODE 57) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(MZ_PLATFORM_NAME "linux") diff --git a/client/3rd/QSimpleCrypto b/client/3rd/QSimpleCrypto new file mode 160000 index 00000000..c99b33f0 --- /dev/null +++ b/client/3rd/QSimpleCrypto @@ -0,0 +1 @@ +Subproject commit c99b33f0e08b7206116ddff85c22d3b97ce1e79d diff --git a/client/3rd/QSimpleCrypto/QSimpleCrypto.cmake b/client/3rd/QSimpleCrypto/QSimpleCrypto.cmake deleted file mode 100644 index 7ec5498a..00000000 --- a/client/3rd/QSimpleCrypto/QSimpleCrypto.cmake +++ /dev/null @@ -1,20 +0,0 @@ -include_directories(${CMAKE_CURRENT_LIST_DIR}) - -set(HEADERS ${HEADERS} - ${CMAKE_CURRENT_LIST_DIR}/include/QAead.h - ${CMAKE_CURRENT_LIST_DIR}/include/QBlockCipher.h - ${CMAKE_CURRENT_LIST_DIR}/include/QCryptoError.h - ${CMAKE_CURRENT_LIST_DIR}/include/QRsa.h - ${CMAKE_CURRENT_LIST_DIR}/include/QSimpleCrypto_global.h - ${CMAKE_CURRENT_LIST_DIR}/include/QX509.h - ${CMAKE_CURRENT_LIST_DIR}/include/QX509Store.h -) - -set(SOURCES ${SOURCES} - ${CMAKE_CURRENT_LIST_DIR}/sources/QAead.cpp - ${CMAKE_CURRENT_LIST_DIR}/sources/QBlockCipher.cpp - ${CMAKE_CURRENT_LIST_DIR}/sources/QCryptoError.cpp - ${CMAKE_CURRENT_LIST_DIR}/sources/QRsa.cpp - ${CMAKE_CURRENT_LIST_DIR}/sources/QX509.cpp - ${CMAKE_CURRENT_LIST_DIR}/sources/QX509Store.cpp -) diff --git a/client/3rd/QSimpleCrypto/QSimpleCrypto.pri b/client/3rd/QSimpleCrypto/QSimpleCrypto.pri deleted file mode 100644 index 99a1c129..00000000 --- a/client/3rd/QSimpleCrypto/QSimpleCrypto.pri +++ /dev/null @@ -1,18 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/include/QAead.h \ - $$PWD/include/QBlockCipher.h \ - $$PWD/include/QCryptoError.h \ - $$PWD/include/QRsa.h \ - $$PWD/include/QSimpleCrypto_global.h \ - $$PWD/include/QX509.h \ - $$PWD/include/QX509Store.h - -SOURCES += \ - $$PWD/sources/QAead.cpp \ - $$PWD/sources/QBlockCipher.cpp \ - $$PWD/sources/QCryptoError.cpp \ - $$PWD/sources/QRsa.cpp \ - $$PWD/sources/QX509.cpp \ - $$PWD/sources/QX509Store.cpp diff --git a/client/3rd/QSimpleCrypto/include/QAead.h b/client/3rd/QSimpleCrypto/include/QAead.h deleted file mode 100644 index 11f60b31..00000000 --- a/client/3rd/QSimpleCrypto/include/QAead.h +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#ifndef QAEAD_H -#define QAEAD_H - -#include "QSimpleCrypto_global.h" - -#include - -#include - -#include -#include -#include -#include - -#include "QCryptoError.h" - -// clang-format off -namespace QSimpleCrypto -{ - class QSIMPLECRYPTO_EXPORT QAead { - public: - QAead(); - - /// - /// \brief encryptAesGcm - Function encrypts data with Gcm algorithm. - /// \param data - Data that will be encrypted. - /// \param key - AES key. - /// \param iv - Initialization vector. - /// \param tag - Authorization tag. - /// \param aad - Additional authenticated data. Must be nullptr, if not used. - /// \param cipher - Can be used with OpenSSL EVP_CIPHER (gcm) - 128, 192, 256. Example: EVP_aes_256_gcm(). - /// \return Returns encrypted data or "", if error happened. - /// - QByteArray encryptAesGcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad = "", const EVP_CIPHER* cipher = EVP_aes_256_gcm()); - - /// - /// \brief decryptAesGcm - Function decrypts data with Gcm algorithm. - /// \param data - Data that will be decrypted - /// \param key - AES key - /// \param iv - Initialization vector - /// \param tag - Authorization tag - /// \param aad - Additional authenticated data. Must be nullptr, if not used - /// \param cipher - Can be used with OpenSSL EVP_CIPHER (gcm) - 128, 192, 256. Example: EVP_aes_256_gcm() - /// \return Returns decrypted data or "", if error happened. - /// - QByteArray decryptAesGcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad = "", const EVP_CIPHER* cipher = EVP_aes_256_gcm()); - - /// - /// \brief encryptAesCcm - Function encrypts data with Ccm algorithm. - /// \param data - Data that will be encrypted. - /// \param key - AES key. - /// \param iv - Initialization vector. - /// \param tag - Authorization tag. - /// \param aad - Additional authenticated data. Must be nullptr, if not used. - /// \param cipher - Can be used with OpenSSL EVP_CIPHER (ccm) - 128, 192, 256. Example: EVP_aes_256_ccm(). - /// \return Returns encrypted data or "", if error happened. - /// - QByteArray encryptAesCcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad = "", const EVP_CIPHER* cipher = EVP_aes_256_ccm()); - - /// - /// \brief decryptAesCcm - Function decrypts data with Ccm algorithm. - /// \param data - Data that will be decrypted. - /// \param key - AES key. - /// \param iv - Initialization vector. - /// \param tag - Authorization tag. - /// \param aad - Additional authenticated data. Must be nullptr, if not used. - /// \param cipher - Can be used with OpenSSL EVP_CIPHER (ccm) - 128, 192, 256. Example: EVP_aes_256_ccm(). - /// \return Returns decrypted data or "", if error happened. - /// - QByteArray decryptAesCcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad = "", const EVP_CIPHER* cipher = EVP_aes_256_ccm()); - - /// - /// \brief error - Error handler class. - /// - QCryptoError error; - }; -} // namespace QSimpleCrypto - -#endif // QAEAD_H diff --git a/client/3rd/QSimpleCrypto/include/QBlockCipher.h b/client/3rd/QSimpleCrypto/include/QBlockCipher.h deleted file mode 100644 index e7b83a88..00000000 --- a/client/3rd/QSimpleCrypto/include/QBlockCipher.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#ifndef QBLOCKCIPHER_H -#define QBLOCKCIPHER_H - -#include "QSimpleCrypto_global.h" - -#include - -#include - -#include -#include -#include -#include - -#include "QCryptoError.h" - -// clang-format off -namespace QSimpleCrypto -{ - class QSIMPLECRYPTO_EXPORT QBlockCipher { - - #define Aes128Rounds 10 - #define Aes192Rounds 12 - #define Aes256Rounds 14 - - public: - QBlockCipher(); - - /// - /// \brief generateRandomBytes - Function generates random bytes by size. - /// \param size - Size of generated bytes. - /// \return Returns random bytes. - /// - QByteArray generateRandomBytes(const int& size); - QByteArray generateSecureRandomBytes(const int& size); - - /// - /// \brief encryptAesBlockCipher - Function encrypts data with Aes Block Cipher algorithm. - /// \param data - Data that will be encrypted. - /// \param key - AES key. - /// \param iv - Initialization vector. - /// \param password - Encryption password. - /// \param salt - Random delta. - /// \param rounds - Transformation rounds. - /// \param chiper - Can be used with OpenSSL EVP_CIPHER (ecb, cbc, cfb, ofb, ctr) - 128, 192, 256. Example: EVP_aes_256_cbc(). - /// \param md - Hash algroitm (OpenSSL EVP_MD). Example: EVP_sha512(). - /// \return Returns decrypted data or "", if error happened. - /// - QByteArray encryptAesBlockCipher(QByteArray data, QByteArray key, - QByteArray iv = "", const int& rounds = Aes256Rounds, - const EVP_CIPHER* cipher = EVP_aes_256_cbc(), const EVP_MD* md = EVP_sha512()); - - /// - /// \brief decryptAesBlockCipher - Function decrypts data with Aes Block Cipher algorithm. - /// \param data - Data that will be decrypted. - /// \param key - AES key. - /// \param iv - Initialization vector. - /// \param password - Decryption password. - /// \param salt - Random delta. - /// \param rounds - Transformation rounds. - /// \param chiper - Can be used with OpenSSL EVP_CIPHER (ecb, cbc, cfb, ofb, ctr) - 128, 192, 256. Example: EVP_aes_256_cbc(). - /// \param md - Hash algroitm (OpenSSL EVP_MD). Example: EVP_sha512(). - /// \return Returns decrypted data or "", if error happened. - /// - QByteArray decryptAesBlockCipher(QByteArray data, QByteArray key, - QByteArray iv = "", const int& rounds = Aes256Rounds, - const EVP_CIPHER* cipher = EVP_aes_256_cbc(), const EVP_MD* md = EVP_sha512()); - - /// - /// \brief error - Error handler class. - /// - QCryptoError error; - }; -} // namespace QSimpleCrypto - -#endif // QBLOCKCIPHER_H diff --git a/client/3rd/QSimpleCrypto/include/QCryptoError.h b/client/3rd/QSimpleCrypto/include/QCryptoError.h deleted file mode 100644 index fc059654..00000000 --- a/client/3rd/QSimpleCrypto/include/QCryptoError.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef QCRYPTOERROR_H -#define QCRYPTOERROR_H - -#include - -#include "QSimpleCrypto_global.h" - -/// TODO: Add Special error code for each error. - -// clang-format off -namespace QSimpleCrypto -{ - class QSIMPLECRYPTO_EXPORT QCryptoError : public QObject { - Q_OBJECT - - public: - explicit QCryptoError(QObject* parent = nullptr); - - /// - /// \brief setError - Sets error information - /// \param errorCode - Error code. - /// \param errorSummary - Error summary. - /// - inline void setError(const quint8 errorCode, const QString& errorSummary) - { - m_currentErrorCode = errorCode; - m_errorSummary = errorSummary; - } - - /// - /// \brief lastError - Returns last error. - /// \return Returns eror ID and error Text. - /// - inline QPair lastError() const - { - return QPair(m_currentErrorCode, m_errorSummary); - } - - private: - quint8 m_currentErrorCode; - QString m_errorSummary; - }; -} - -#endif // QCRYPTOERROR_H diff --git a/client/3rd/QSimpleCrypto/include/QRsa.h b/client/3rd/QSimpleCrypto/include/QRsa.h deleted file mode 100644 index 45eb3169..00000000 --- a/client/3rd/QSimpleCrypto/include/QRsa.h +++ /dev/null @@ -1,104 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#ifndef QRSA_H -#define QRSA_H - -#include "QSimpleCrypto_global.h" - -#include -#include - -#include - -#include -#include -#include - -#include "QCryptoError.h" - -// clang-format off -namespace QSimpleCrypto -{ - class QSIMPLECRYPTO_EXPORT QRsa { - - #define PublicEncrypt 0 - #define PrivateEncrypt 1 - #define PublicDecrypt 2 - #define PrivateDecrypt 3 - - public: - QRsa(); - - /// - /// \brief generateRsaKeys - Function generate Rsa Keys and returns them in OpenSSL structure. - /// \param bits - RSA key size. - /// \param rsaBigNumber - The exponent is an odd number, typically 3, 17 or 65537. - /// \return Returns 'OpenSSL RSA structure' or 'nullptr', if error happened. Returned value must be cleaned up with 'RSA_free()' to avoid memory leak. - /// - RSA* generateRsaKeys(const int& bits, const int& rsaBigNumber); - - /// - /// \brief savePublicKey - Saves to file RSA public key. - /// \param rsa - OpenSSL RSA structure. - /// \param publicKeyFileName - Public key file name. - /// - void savePublicKey(RSA *rsa, const QByteArray& publicKeyFileName); - - /// - /// \brief savePrivateKey - Saves to file RSA private key. - /// \param rsa - OpenSSL RSA structure. - /// \param privateKeyFileName - Private key file name. - /// \param password - Private key password. - /// \param cipher - Can be used with 'OpenSSL EVP_CIPHER' (ecb, cbc, cfb, ofb, ctr) - 128, 192, 256. Example: EVP_aes_256_cbc(). - /// - void savePrivateKey(RSA* rsa, const QByteArray& privateKeyFileName, QByteArray password = "", const EVP_CIPHER* cipher = nullptr); - - /// - /// \brief getPublicKeyFromFile - Gets RSA public key from a file. - /// \param filePath - File path to public key file. - /// \return Returns 'OpenSSL EVP_PKEY structure' or 'nullptr', if error happened. Returned value must be cleaned up with 'EVP_PKEY_free()' to avoid memory leak. - /// - EVP_PKEY* getPublicKeyFromFile(const QByteArray& filePath); - - /// - /// \brief getPrivateKeyFromFile - Gets RSA private key from a file. - /// \param filePath - File path to private key file. - /// \param password - Private key password. - /// \return - Returns 'OpenSSL EVP_PKEY structure' or 'nullptr', if error happened. Returned value must be cleaned up with 'EVP_PKEY_free()' to avoid memory leak. - /// - EVP_PKEY* getPrivateKeyFromFile(const QByteArray& filePath, const QByteArray& password = ""); - - /// - /// \brief encrypt - Encrypt data with RSA algorithm. - /// \param plaintext - Text that must be encrypted. - /// \param rsa - OpenSSL RSA structure. - /// \param encryptType - Public or private encrypt type. (PUBLIC_ENCRYPT, PRIVATE_ENCRYPT). - /// \param padding - OpenSSL RSA padding can be used with: 'RSA_PKCS1_PADDING', 'RSA_NO_PADDING' and etc. - /// \return Returns encrypted data or "", if error happened. - /// - QByteArray encrypt(QByteArray plainText, RSA* rsa, const int& encryptType = PublicEncrypt, const int& padding = RSA_PKCS1_PADDING); - - /// - /// \brief decrypt - Decrypt data with RSA algorithm. - /// \param cipherText - Text that must be decrypted. - /// \param rsa - OpenSSL RSA structure. - /// \param decryptType - Public or private type. (PUBLIC_DECRYPT, PRIVATE_DECRYPT). - /// \param padding - RSA padding can be used with: 'RSA_PKCS1_PADDING', 'RSA_NO_PADDING' and etc. - /// \return - Returns decrypted data or "", if error happened. - /// - QByteArray decrypt(QByteArray cipherText, RSA* rsa, const int& decryptType = PrivateDecrypt, const int& padding = RSA_PKCS1_PADDING); - - /// - /// \brief error - Error handler class. - /// - QCryptoError error; - }; -} // namespace QSimpleCrypto - -#endif // QRSA_H diff --git a/client/3rd/QSimpleCrypto/include/QSimpleCrypto_global.h b/client/3rd/QSimpleCrypto/include/QSimpleCrypto_global.h deleted file mode 100644 index fdd6c020..00000000 --- a/client/3rd/QSimpleCrypto/include/QSimpleCrypto_global.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef QSIMPLECRYPTO_GLOBAL_H -#define QSIMPLECRYPTO_GLOBAL_H - -#include -#include - -#define QSIMPLECRYPTO_EXPORT - -#endif // QSIMPLECRYPTO_GLOBAL_H diff --git a/client/3rd/QSimpleCrypto/include/QX509.h b/client/3rd/QSimpleCrypto/include/QX509.h deleted file mode 100644 index c31cb9e4..00000000 --- a/client/3rd/QSimpleCrypto/include/QX509.h +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#ifndef QX509_H -#define QX509_H - -#include "QSimpleCrypto_global.h" - -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include "QCryptoError.h" - -// clang-format off -namespace QSimpleCrypto -{ - class QSIMPLECRYPTO_EXPORT QX509 { - - #define oneYear 31536000L - #define x509LastVersion 2 - - public: - QX509(); - - /// - /// \brief loadCertificateFromFile - Function load X509 from file and returns OpenSSL structure. - /// \param fileName - File path to certificate. - /// \return Returns OpenSSL X509 structure or nullptr, if error happened. Returned value must be cleaned up with 'X509_free' to avoid memory leak. - /// - X509* loadCertificateFromFile(const QByteArray& fileName); - - /// - /// \brief signCertificate - Function signs X509 certificate and returns signed X509 OpenSSL structure. - /// \param endCertificate - Certificate that will be signed - /// \param caCertificate - CA certificate that will sign end certificate - /// \param caPrivateKey - CA certificate private key - /// \param fileName - With that name certificate will be saved. Leave "", if don't need to save it - /// \return Returns OpenSSL X509 structure or nullptr, if error happened. - /// - X509* signCertificate(X509* endCertificate, X509* caCertificate, EVP_PKEY* caPrivateKey, const QByteArray& fileName = ""); - - /// - /// \brief verifyCertificate - Function verifies X509 certificate and returns verified X509 OpenSSL structure. - /// \param x509 - OpenSSL X509. That certificate will be verified. - /// \param store - Trusted certificate must be added to X509_Store with 'addCertificateToStore(X509_STORE* ctx, X509* x509)'. - /// \return Returns OpenSSL X509 structure or nullptr, if error happened - /// - X509* verifyCertificate(X509* x509, X509_STORE* store); - - /// - /// \brief generateSelfSignedCertificate - Function generatesand returns self signed X509. - /// \param rsa - OpenSSL RSA. - /// \param additionalData - Certificate information. - /// \param certificateFileName - With that name certificate will be saved. Leave "", if don't need to save it. - /// \param md - OpenSSL EVP_MD structure. Example: EVP_sha512(). - /// \param serialNumber - X509 certificate serial number. - /// \param version - X509 certificate version. - /// \param notBefore - X509 start date. - /// \param notAfter - X509 end date. - /// \return Returns OpenSSL X509 structure or nullptr, if error happened. Returned value must be cleaned up with 'X509_free' to avoid memory leak. - /// - X509* generateSelfSignedCertificate(RSA* rsa, const QMap& additionalData, - const QByteArray& certificateFileName = "", const EVP_MD* md = EVP_sha512(), - const long& serialNumber = 1, const long& version = x509LastVersion, - const long& notBefore = 0, const long& notAfter = oneYear); - - /// - /// \brief error - Error handler class. - /// - QCryptoError error; - }; -} // namespace QSimpleCrypto - -#endif // QX509_H diff --git a/client/3rd/QSimpleCrypto/include/QX509Store.h b/client/3rd/QSimpleCrypto/include/QX509Store.h deleted file mode 100644 index 8cd8ca82..00000000 --- a/client/3rd/QSimpleCrypto/include/QX509Store.h +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#ifndef QX509STORE_H -#define QX509STORE_H - -#include "QSimpleCrypto_global.h" - -#include -#include -#include - -#include - -#include -#include -#include - -#include "QCryptoError.h" - -// clang-format off -namespace QSimpleCrypto -{ - class QSIMPLECRYPTO_EXPORT QX509Store { - public: - QX509Store(); - - /// - /// \brief addCertificateToStore - /// \param store - OpenSSL X509_STORE. - /// \param x509 - OpenSSL X509. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool addCertificateToStore(X509_STORE* store, X509* x509); - - /// - /// \brief addLookup - /// \param store - OpenSSL X509_STORE. - /// \param method - OpenSSL X509_LOOKUP_METHOD. Example: X509_LOOKUP_file. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool addLookup(X509_STORE* store, X509_LOOKUP_METHOD* method); - - /// - /// \brief setCertificateDepth - /// \param store - OpenSSL X509_STORE. - /// \param depth - That is the maximum number of untrusted CA certificates that can appear in a chain. Example: 0. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool setDepth(X509_STORE* store, const int& depth); - - /// - /// \brief setFlag - /// \param store - OpenSSL X509_STORE. - /// \param flag - The verification flags consists of zero or more of the following flags ored together. Example: X509_V_FLAG_CRL_CHECK. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool setFlag(X509_STORE* store, const unsigned long& flag); - - /// - /// \brief setFlag - /// \param store - OpenSSL X509_STORE. - /// \param purpose - Verification purpose in param to purpose. Example: X509_PURPOSE_ANY. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool setPurpose(X509_STORE* store, const int& purpose); - - /// - /// \brief setTrust - /// \param store - OpenSSL X509_STORE. - /// \param trust - Trust Level. Example: X509_TRUST_SSL_SERVER. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool setTrust(X509_STORE* store, const int& trust); - - /// - /// \brief setDefaultPaths - /// \param store - OpenSSL X509_STORE. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool setDefaultPaths(X509_STORE* store); - - /// - /// \brief loadLocations - /// \param store - OpenSSL X509_STORE. - /// \param fileName - File name. Example: "caCertificate.pem". - /// \param dirPath - Path to file. Example: "path/To/File". - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool loadLocations(X509_STORE* store, const QByteArray& fileName, const QByteArray& dirPath); - - /// - /// \brief loadLocations - /// \param store - OpenSSL X509_STORE. - /// \param file - Qt QFile that will be loaded. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool loadLocations(X509_STORE* store, const QFile& file); - - /// - /// \brief loadLocations - /// \param store - OpenSSL X509_STORE. - /// \param fileInfo - Qt QFileInfo. - /// \return Returns 'true' on success and 'false', if error happened. - /// - bool loadLocations(X509_STORE* store, const QFileInfo& fileInfo); - - /// - /// \brief error - Error handler class. - /// - QCryptoError error; - }; -} - -#endif // QX509STORE_H diff --git a/client/3rd/QSimpleCrypto/sources/QAead.cpp b/client/3rd/QSimpleCrypto/sources/QAead.cpp deleted file mode 100644 index 968c8841..00000000 --- a/client/3rd/QSimpleCrypto/sources/QAead.cpp +++ /dev/null @@ -1,364 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#include "include/QAead.h" - -QSimpleCrypto::QAead::QAead() -{ -} - -/// -/// \brief QSimpleCrypto::QAEAD::encryptAesGcm - Function encrypts data with Gcm algorithm. -/// \param data - Data that will be encrypted. -/// \param key - AES key. -/// \param iv - Initialization vector. -/// \param tag - Authorization tag. -/// \param aad - Additional authenticated data. Must be nullptr, if not used. -/// \param cipher - Can be used with OpenSSL EVP_CIPHER (gcm) - 128, 192, 256. Example: EVP_aes_256_gcm(). -/// \return Returns encrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QAead::encryptAesGcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad, const EVP_CIPHER* cipher) -{ - try { - /* Initialize EVP_CIPHER_CTX */ - std::unique_ptr encryptionCipher { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free }; - if (encryptionCipher == nullptr) { - throw std::runtime_error("Couldn't initialize \'encryptionCipher\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set data length */ - int plainTextLength = data.size(); - int cipherTextLength = 0; - - /* Initialize cipherText. Here encrypted data will be stored */ - std::unique_ptr cipherText { new unsigned char[plainTextLength]() }; - if (cipherText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'ciphertext'."); - } - - /* Initialize encryption operation. */ - if (!EVP_EncryptInit_ex(encryptionCipher.get(), cipher, nullptr, reinterpret_cast(key.data()), reinterpret_cast(iv.data()))) { - throw std::runtime_error("Couldn't initialize encryption operation. EVP_EncryptInit_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set IV length if default 12 bytes (96 bits) is not appropriate */ - if (!EVP_CIPHER_CTX_ctrl(encryptionCipher.get(), EVP_CTRL_GCM_SET_IVLEN, iv.length(), nullptr)) { - throw std::runtime_error("Couldn't set IV length. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - -// /* Check if aad need to be used */ -// if (aad.length() > 0) { -// /* Provide any AAD data. This can be called zero or more times as required */ -// if (!EVP_EncryptUpdate(encryptionCipher.get(), nullptr, &cipherTextLength, reinterpret_cast(aad.data()), aad.length())) { -// throw std::runtime_error("Couldn't provide aad data. EVP_EncryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); -// } -// } - - /* - * Provide the message to be encrypted, and obtain the encrypted output. - * EVP_EncryptUpdate can be called multiple times if necessary - */ - if (!EVP_EncryptUpdate(encryptionCipher.get(), cipherText.get(), &cipherTextLength, reinterpret_cast(data.data()), plainTextLength)) { - throw std::runtime_error("Couldn't provide message to be encrypted. EVP_EncryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* - * Finalize the encryption. Normally cipher text bytes may be written at - * this stage, but this does not occur in GCM mode - */ - if (!EVP_EncryptFinal_ex(encryptionCipher.get(), cipherText.get(), &plainTextLength)) { - throw std::runtime_error("Couldn't finalize encryption. EVP_EncryptFinal_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - -// /* Get tag */ -// if (!EVP_CIPHER_CTX_ctrl(encryptionCipher.get(), EVP_CTRL_GCM_GET_TAG, tag->length(), reinterpret_cast(tag->data()))) { -// throw std::runtime_error("Couldn't get tag. EVP_CIPHER_CTX_ctrl(. Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); -// } - - /* Finilize data to be readable with qt */ - QByteArray encryptedData = QByteArray(reinterpret_cast(cipherText.get()), cipherTextLength); - - return encryptedData; - - } catch (std::exception& exception) { - QSimpleCrypto::QAead::error.setError(1, exception.what()); - return QByteArray(); - } catch (...) { - QSimpleCrypto::QAead::error.setError(2, "Unknown error!"); - return QByteArray(); - } - - return QByteArray(); -} - -/// -/// \brief QSimpleCrypto::QAEAD::decryptAesGcm - Function decrypts data with Gcm algorithm. -/// \param data - Data that will be decrypted -/// \param key - AES key -/// \param iv - Initialization vector -/// \param tag - Authorization tag -/// \param aad - Additional authenticated data. Must be nullptr, if not used -/// \param cipher - Can be used with OpenSSL EVP_CIPHER (gcm) - 128, 192, 256. Example: EVP_aes_256_gcm() -/// \return Returns decrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QAead::decryptAesGcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad, const EVP_CIPHER* cipher) -{ - try { - /* Initialize EVP_CIPHER_CTX */ - std::unique_ptr decryptionCipher { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free }; - if (decryptionCipher.get() == nullptr) { - throw std::runtime_error("Couldn't initialize \'decryptionCipher\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set data length */ - int cipherTextLength = data.size(); - int plainTextLength = 0; - - /* Initialize plainText. Here decrypted data will be stored */ - std::unique_ptr plainText { new unsigned char[cipherTextLength]() }; - if (plainText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'plaintext'."); - } - - /* Initialize decryption operation. */ - if (!EVP_DecryptInit_ex(decryptionCipher.get(), cipher, nullptr, reinterpret_cast(key.data()), reinterpret_cast(iv.data()))) { - throw std::runtime_error("Couldn't initialize decryption operation. EVP_DecryptInit_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set IV length. Not necessary if this is 12 bytes (96 bits) */ - if (!EVP_CIPHER_CTX_ctrl(decryptionCipher.get(), EVP_CTRL_GCM_SET_IVLEN, iv.length(), nullptr)) { - throw std::runtime_error("Couldn't set IV length. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - -// /* Check if aad need to be used */ -// if (aad.length() > 0) { -// /* Provide any AAD data. This can be called zero or more times as required */ -// if (!EVP_DecryptUpdate(decryptionCipher.get(), nullptr, &plainTextLength, reinterpret_cast(aad.data()), aad.length())) { -// throw std::runtime_error("Couldn't provide aad data. EVP_DecryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); -// } -// } - - /* - * Provide the message to be decrypted, and obtain the plain text output. - * EVP_DecryptUpdate can be called multiple times if necessary - */ - if (!EVP_DecryptUpdate(decryptionCipher.get(), plainText.get(), &plainTextLength, reinterpret_cast(data.data()), cipherTextLength)) { - throw std::runtime_error("Couldn't provide message to be decrypted. EVP_DecryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - -// /* Set expected tag value. Works in OpenSSL 1.0.1d and later */ -// if (!EVP_CIPHER_CTX_ctrl(decryptionCipher.get(), EVP_CTRL_GCM_SET_TAG, tag->length(), reinterpret_cast(tag->data()))) { -// throw std::runtime_error("Coldn't set tag. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); -// } - - /* - * Finalize the decryption. A positive return value indicates success, - * anything else is a failure - the plain text is not trustworthy. - */ - if (!EVP_DecryptFinal_ex(decryptionCipher.get(), plainText.get(), &cipherTextLength)) { - throw std::runtime_error("Couldn't finalize decryption. EVP_DecryptFinal_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Finilize data to be readable with qt */ - QByteArray decryptedData = QByteArray(reinterpret_cast(plainText.get()), plainTextLength); - - return decryptedData; - - } catch (std::exception& exception) { - QSimpleCrypto::QAead::error.setError(1, exception.what()); - return QByteArray(); - } catch (...) { - QSimpleCrypto::QAead::error.setError(2, "Unknown error!"); - return QByteArray(); - } - - return QByteArray(); -} - -/// -/// \brief QSimpleCrypto::QAEAD::encryptAesCcm - Function encrypts data with Ccm algorithm. -/// \param data - Data that will be encrypted. -/// \param key - AES key. -/// \param iv - Initialization vector. -/// \param tag - Authorization tag. -/// \param aad - Additional authenticated data. Must be nullptr, if not used. -/// \param cipher - Can be used with OpenSSL EVP_CIPHER (ccm) - 128, 192, 256. Example: EVP_aes_256_ccm(). -/// \return Returns encrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QAead::encryptAesCcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad, const EVP_CIPHER* cipher) -{ - try { - /* Initialize EVP_CIPHER_CTX */ - std::unique_ptr encryptionCipher { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free }; - if (encryptionCipher == nullptr) { - throw std::runtime_error("Couldn't initialize \'encryptionCipher\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set data length */ - int plainTextLength = data.size(); - int cipherTextLength = 0; - - /* Initialize cipherText. Here encrypted data will be stored */ - std::unique_ptr cipherText { new unsigned char[plainTextLength]() }; - if (cipherText.get() == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'ciphertext'."); - } - - /* Initialize encryption operation. */ - if (!EVP_EncryptInit_ex(encryptionCipher.get(), cipher, nullptr, reinterpret_cast(key.data()), reinterpret_cast(iv.data()))) { - throw std::runtime_error("Couldn't initialize encryption operation. EVP_EncryptInit_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set IV length if default 12 bytes (96 bits) is not appropriate */ - if (!EVP_CIPHER_CTX_ctrl(encryptionCipher.get(), EVP_CTRL_CCM_SET_IVLEN, iv.length(), nullptr)) { - throw std::runtime_error("Couldn't set IV length. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set tag length */ - if (!EVP_CIPHER_CTX_ctrl(encryptionCipher.get(), EVP_CTRL_CCM_SET_TAG, tag->length(), nullptr)) { - throw std::runtime_error("Coldn't set tag. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Check if aad need to be used */ - if (aad.length() > 0) { - /* Provide the total plain text length */ - if (!EVP_EncryptUpdate(encryptionCipher.get(), nullptr, &cipherTextLength, nullptr, plainTextLength)) { - throw std::runtime_error("Couldn't provide total plaintext length. EVP_EncryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Provide any AAD data. This can be called zero or more times as required */ - if (!EVP_EncryptUpdate(encryptionCipher.get(), nullptr, &cipherTextLength, reinterpret_cast(aad.data()), aad.length())) { - throw std::runtime_error("Couldn't provide aad data. EVP_EncryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } - - /* - * Provide the message to be encrypted, and obtain the encrypted output. - * EVP_EncryptUpdate can be called multiple times if necessary - */ - if (!EVP_EncryptUpdate(encryptionCipher.get(), cipherText.get(), &cipherTextLength, reinterpret_cast(data.data()), plainTextLength)) { - throw std::runtime_error("Couldn't provide message to be encrypted. EVP_EncryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* - * Finalize the encryption. Normally ciphertext bytes may be written at - * this stage, but this does not occur in GCM mode - */ - if (!EVP_EncryptFinal_ex(encryptionCipher.get(), cipherText.get(), &plainTextLength)) { - throw std::runtime_error("Couldn't finalize encryption. EVP_EncryptFinal_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Get tag */ - if (!EVP_CIPHER_CTX_ctrl(encryptionCipher.get(), EVP_CTRL_CCM_GET_TAG, tag->length(), reinterpret_cast(tag->data()))) { - throw std::runtime_error("Couldn't get tag. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Finilize data to be readable with qt */ - QByteArray encryptedData = QByteArray(reinterpret_cast(cipherText.get()), cipherTextLength); - - return encryptedData; - - } catch (std::exception& exception) { - QSimpleCrypto::QAead::error.setError(1, exception.what()); - return QByteArray(); - } catch (...) { - QSimpleCrypto::QAead::error.setError(2, "Unknown error!"); - return QByteArray(); - } - - return QByteArray(); -} - -/// -/// \brief QSimpleCrypto::QAEAD::decryptAesCcm - Function decrypts data with Ccm algorithm. -/// \param data - Data that will be decrypted. -/// \param key - AES key. -/// \param iv - Initialization vector. -/// \param tag - Authorization tag. -/// \param aad - Additional authenticated data. Must be nullptr, if not used. -/// \param cipher - Can be used with OpenSSL EVP_CIPHER (ccm) - 128, 192, 256. Example: EVP_aes_256_ccm(). -/// \return Returns decrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QAead::decryptAesCcm(QByteArray data, QByteArray key, QByteArray iv, QByteArray* tag, QByteArray aad, const EVP_CIPHER* cipher) -{ - try { - /* Initialize EVP_CIPHER_CTX */ - std::unique_ptr decryptionCipher { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free }; - if (decryptionCipher.get() == nullptr) { - throw std::runtime_error("Couldn't initialize \'decryptionCipher\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set data length */ - int cipherTextLength = data.size(); - int plainTextLength = 0; - - /* Initialize plainText. Here decrypted data will be stored */ - std::unique_ptr plainText { new unsigned char[cipherTextLength]() }; - if (plainText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'plaintext'."); - } - - /* Initialize decryption operation. */ - if (!EVP_DecryptInit_ex(decryptionCipher.get(), cipher, nullptr, reinterpret_cast(key.data()), reinterpret_cast(iv.data()))) { - throw std::runtime_error("Couldn't initialize decryption operation. EVP_DecryptInit_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set IV length. Not necessary if this is 12 bytes (96 bits) */ - if (!EVP_CIPHER_CTX_ctrl(decryptionCipher.get(), EVP_CTRL_CCM_SET_IVLEN, iv.length(), nullptr)) { - throw std::runtime_error("Couldn't set IV length. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set expected tag value. Works in OpenSSL 1.0.1d and later */ - if (!EVP_CIPHER_CTX_ctrl(decryptionCipher.get(), EVP_CTRL_CCM_SET_TAG, tag->length(), reinterpret_cast(tag->data()))) { - throw std::runtime_error("Coldn't set tag. EVP_CIPHER_CTX_ctrl(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Check if aad need to be used */ - if (aad.length() > 0) { - /* Provide the total ciphertext length */ - if (!EVP_DecryptUpdate(decryptionCipher.get(), nullptr, &plainTextLength, nullptr, cipherTextLength)) { - throw std::runtime_error("Couldn't provide total plaintext length. EVP_DecryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Provide any AAD data. This can be called zero or more times as required */ - if (!EVP_DecryptUpdate(decryptionCipher.get(), nullptr, &plainTextLength, reinterpret_cast(aad.data()), aad.length())) { - throw std::runtime_error("Couldn't provide aad data. EVP_DecryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } - - /* - * Provide the message to be decrypted, and obtain the plaintext output. - * EVP_DecryptUpdate can be called multiple times if necessary - */ - if (!EVP_DecryptUpdate(decryptionCipher.get(), plainText.get(), &plainTextLength, reinterpret_cast(data.data()), cipherTextLength)) { - throw std::runtime_error("Couldn't provide message to be decrypted. EVP_DecryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* - * Finalize the decryption. A positive return value indicates success, - * anything else is a failure - the plaintext is not trustworthy. - */ - if (!EVP_DecryptFinal_ex(decryptionCipher.get(), plainText.get(), &cipherTextLength)) { - throw std::runtime_error("Couldn't finalize decryption. EVP_DecryptFinal_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Finilize data to be readable with qt */ - QByteArray decryptedData = QByteArray(reinterpret_cast(plainText.get()), plainTextLength); - - return decryptedData; - - } catch (std::exception& exception) { - QSimpleCrypto::QAead::error.setError(1, exception.what()); - return QByteArray(); - } catch (...) { - QSimpleCrypto::QAead::error.setError(2, "Unknown error!"); - return QByteArray(); - } - - return QByteArray(); -} diff --git a/client/3rd/QSimpleCrypto/sources/QBlockCipher.cpp b/client/3rd/QSimpleCrypto/sources/QBlockCipher.cpp deleted file mode 100644 index 8b86ab98..00000000 --- a/client/3rd/QSimpleCrypto/sources/QBlockCipher.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#include "include/QBlockCipher.h" - -QSimpleCrypto::QBlockCipher::QBlockCipher() -{ -} - -/// -/// \brief QSimpleCrypto::QBlockCipher::generateRandomBytes - Function generates random bytes by size. -/// \param size - Size of generated bytes. -/// \return Returns random bytes. -/// -QByteArray QSimpleCrypto::QBlockCipher::generateRandomBytes(const int& size) -{ - unsigned char arr[sizeof(size)]; - RAND_bytes(arr, sizeof(size)); - - QByteArray buffer = QByteArray(reinterpret_cast(arr), size); - return buffer; -} - -QByteArray QSimpleCrypto::QBlockCipher::generateSecureRandomBytes(const int &size) -{ - unsigned char arr[sizeof(size)]; - RAND_priv_bytes(arr, sizeof(size)); - - QByteArray buffer = QByteArray(reinterpret_cast(arr), size); - return buffer; -} - -/// -/// \brief QSimpleCrypto::QBlockCipher::encryptAesBlockCipher - Function encrypts data with Aes Block Cipher algorithm. -/// \param data - Data that will be encrypted. -/// \param key - AES key. -/// \param iv - Initialization vector. -/// \param password - Encryption password. -/// \param salt - Random delta. -/// \param rounds - Transformation rounds. -/// \param chiper - Can be used with OpenSSL EVP_CIPHER (ecb, cbc, cfb, ofb, ctr) - 128, 192, 256. Example: EVP_aes_256_cbc(). -/// \param md - Hash algroitm (OpenSSL EVP_MD). Example: EVP_sha512(). -/// \return Returns decrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QBlockCipher::encryptAesBlockCipher(QByteArray data, QByteArray key, - QByteArray iv, - const int& rounds, const EVP_CIPHER* cipher, const EVP_MD* md) -{ - try { - /* Initialize EVP_CIPHER_CTX */ - std::unique_ptr encryptionCipher { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free }; - if (encryptionCipher == nullptr) { - throw std::runtime_error("Couldn't initialize \'encryptionCipher\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Reinterpret values for multi use */ - unsigned char* m_key = reinterpret_cast(key.data()); - unsigned char* m_iv = reinterpret_cast(iv.data()); - - /* Set data length */ - int cipherTextLength(data.size() + AES_BLOCK_SIZE); - int finalLength = 0; - - /* Initialize cipcherText. Here encrypted data will be stored */ - std::unique_ptr cipherText { new unsigned char[cipherTextLength]() }; - if (cipherText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'cipherText'."); - } - - // Bug here -// /* Start encryption with password based encryption routine */ -// if (!EVP_BytesToKey(cipher, md, reinterpret_cast(salt.data()), reinterpret_cast(password.data()), password.length(), rounds, m_key, m_iv)) { -// throw std::runtime_error("Couldn't start encryption routine. EVP_BytesToKey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); -// } - - /* Initialize encryption operation. */ - if (!EVP_EncryptInit_ex(encryptionCipher.get(), cipher, nullptr, m_key, m_iv)) { - throw std::runtime_error("Couldn't initialize encryption operation. EVP_EncryptInit_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* - * Provide the message to be encrypted, and obtain the encrypted output. - * EVP_EncryptUpdate can be called multiple times if necessary - */ - if (!EVP_EncryptUpdate(encryptionCipher.get(), cipherText.get(), &cipherTextLength, reinterpret_cast(data.data()), data.size())) { - throw std::runtime_error("Couldn't provide message to be encrypted. EVP_EncryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Finalize the encryption. Normally ciphertext bytes may be written at this stage */ - if (!EVP_EncryptFinal(encryptionCipher.get(), cipherText.get() + cipherTextLength, &finalLength)) { - throw std::runtime_error("Couldn't finalize encryption. EVP_EncryptFinal(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Finilize data to be readable with qt */ - QByteArray encryptedData = QByteArray(reinterpret_cast(cipherText.get()), cipherTextLength + finalLength); - - return encryptedData; - - } catch (std::exception& exception) { - QSimpleCrypto::QBlockCipher::error.setError(1, exception.what()); - return QByteArray(); - } catch (...) { - QSimpleCrypto::QBlockCipher::error.setError(2, "Unknown error!"); - return QByteArray(); - } - - return QByteArray(); -} - -/// -/// \brief QSimpleCrypto::QBlockCipher::encryptAesBlockCipher - Function decrypts data with Aes Block Cipher algorithm. -/// \param data - Data that will be decrypted. -/// \param key - AES key. -/// \param iv - Initialization vector. -/// \param password - Decryption password. -/// \param salt - Random delta. -/// \param rounds - Transformation rounds. -/// \param chiper - Can be used with OpenSSL EVP_CIPHER (ecb, cbc, cfb, ofb, ctr) - 128, 192, 256. Example: EVP_aes_256_cbc(). -/// \param md - Hash algroitm (OpenSSL EVP_MD). Example: EVP_sha512(). -/// \return Returns decrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QBlockCipher::decryptAesBlockCipher(QByteArray data, QByteArray key, - QByteArray iv, - const int& rounds, const EVP_CIPHER* cipher, const EVP_MD* md) -{ - try { - /* Initialize EVP_CIPHER_CTX */ - std::unique_ptr decryptionCipher { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free }; - if (decryptionCipher == nullptr) { - throw std::runtime_error("Couldn't initialize \'decryptionCipher\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Reinterpret values for multi use */ - unsigned char* m_key = reinterpret_cast(key.data()); - unsigned char* m_iv = reinterpret_cast(iv.data()); - - /* Set data length */ - int plainTextLength(data.size()); - int finalLength = 0; - - /* Initialize plainText. Here decrypted data will be stored */ - std::unique_ptr plainText { new unsigned char[plainTextLength + AES_BLOCK_SIZE]() }; - if (plainText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for \'plainText\'. EVP_CIPHER_CTX_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - // Bug here -// /* Start encryption with password based encryption routine */ -// if (!EVP_BytesToKey(cipher, md, reinterpret_cast(salt.data()), reinterpret_cast(password.data()), password.length(), rounds, m_key, m_iv)) { -// throw std::runtime_error("Couldn't start decryption routine. EVP_BytesToKey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); -// } - - /* Initialize decryption operation. */ - if (!EVP_DecryptInit_ex(decryptionCipher.get(), cipher, nullptr, m_key, m_iv)) { - throw std::runtime_error("Couldn't initialize decryption operation. EVP_DecryptInit_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* - * Provide the message to be decrypted, and obtain the plaintext output. - * EVP_DecryptUpdate can be called multiple times if necessary - */ - if (!EVP_DecryptUpdate(decryptionCipher.get(), plainText.get(), &plainTextLength, reinterpret_cast(data.data()), data.size())) { - throw std::runtime_error("Couldn't provide message to be decrypted. EVP_DecryptUpdate(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* - * Finalize the decryption. A positive return value indicates success, - * anything else is a failure - the plaintext is not trustworthy. - */ - if (!EVP_DecryptFinal(decryptionCipher.get(), plainText.get() + plainTextLength, &finalLength)) { - throw std::runtime_error("Couldn't finalize decryption. EVP_DecryptFinal. Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Finilize data to be readable with qt */ - QByteArray decryptedData = QByteArray(reinterpret_cast(plainText.get()), plainTextLength + finalLength); - - return decryptedData; - - } catch (std::exception& exception) { - QSimpleCrypto::QBlockCipher::error.setError(1, exception.what()); - return QByteArray(exception.what()); - } catch (...) { - QSimpleCrypto::QBlockCipher::error.setError(2, "Unknown error!"); - return QByteArray(); - } - - return QByteArray(); -} diff --git a/client/3rd/QSimpleCrypto/sources/QCryptoError.cpp b/client/3rd/QSimpleCrypto/sources/QCryptoError.cpp deleted file mode 100644 index 234f55d7..00000000 --- a/client/3rd/QSimpleCrypto/sources/QCryptoError.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "include/QCryptoError.h" - -QSimpleCrypto::QCryptoError::QCryptoError(QObject* parent) - : QObject(parent) -{ -} diff --git a/client/3rd/QSimpleCrypto/sources/QRsa.cpp b/client/3rd/QSimpleCrypto/sources/QRsa.cpp deleted file mode 100644 index 544d6746..00000000 --- a/client/3rd/QSimpleCrypto/sources/QRsa.cpp +++ /dev/null @@ -1,274 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#include "include/QRsa.h" - -QSimpleCrypto::QRsa::QRsa() -{ -} - -/// -/// \brief QSimpleCrypto::QRSA::generateRsaKeys - Function generate Rsa Keys and returns them in OpenSSL structure. -/// \param bits - RSA key size. -/// \param rsaBigNumber - The exponent is an odd number, typically 3, 17 or 65537. -/// \return Returns 'OpenSSL RSA structure' or 'nullptr', if error happened. Returned value must be cleaned up with 'RSA_free()' to avoid memory leak. -/// -RSA* QSimpleCrypto::QRsa::generateRsaKeys(const int& bits, const int& rsaBigNumber) -{ - try { - /* Initialize big number */ - std::unique_ptr bigNumber { BN_new(), BN_free }; - if (bigNumber == nullptr) { - throw std::runtime_error("Couldn't initialize \'bigNumber\'. BN_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return nullptr; - } - - /* Set big number */ - if (!BN_set_word(bigNumber.get(), rsaBigNumber)) { - throw std::runtime_error("Couldn't set bigNumber. BN_set_word(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Initialize RSA */ - RSA* rsa = nullptr; - if (!(rsa = RSA_new())) { - throw std::runtime_error("Couldn't initialize x509. X509_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Generate key pair and store it in RSA */ - if (!RSA_generate_key_ex(rsa, bits, bigNumber.get(), nullptr)) { - throw std::runtime_error("Couldn't generate RSA. RSA_generate_key_ex(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - return rsa; - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return nullptr; - } -} - -/// -/// \brief QSimpleCrypto::QRSA::savePublicKey - Saves to file RSA public key. -/// \param rsa - OpenSSL RSA structure. -/// \param publicKeyFileName - Public key file name. -/// -void QSimpleCrypto::QRsa::savePublicKey(RSA* rsa, const QByteArray& publicKeyFileName) -{ - try { - /* Initialize BIO */ - std::unique_ptr bioPublicKey { BIO_new_file(publicKeyFileName.data(), "w+"), BIO_free_all }; - if (bioPublicKey == nullptr) { - throw std::runtime_error("Couldn't initialize \'bioPublicKey\'. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write public key on file */ - if (!PEM_write_bio_RSA_PUBKEY(bioPublicKey.get(), rsa)) { - throw std::runtime_error("Couldn't save public key. PEM_write_bio_RSAPublicKey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return; - } -} - -/// -/// \brief QSimpleCrypto::QRSA::savePrivateKey - Saves to file RSA private key. -/// \param rsa - OpenSSL RSA structure. -/// \param privateKeyFileName - Private key file name. -/// \param password - Private key password. -/// \param cipher - Can be used with 'OpenSSL EVP_CIPHER' (ecb, cbc, cfb, ofb, ctr) - 128, 192, 256. Example: EVP_aes_256_cbc(). -/// -void QSimpleCrypto::QRsa::savePrivateKey(RSA* rsa, const QByteArray& privateKeyFileName, QByteArray password, const EVP_CIPHER* cipher) -{ - try { - /* Initialize BIO */ - std::unique_ptr bioPrivateKey { BIO_new_file(privateKeyFileName.data(), "w+"), BIO_free_all }; - if (bioPrivateKey == nullptr) { - throw std::runtime_error("Couldn't initialize bioPrivateKey. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write private key to file */ - if (!PEM_write_bio_RSAPrivateKey(bioPrivateKey.get(), rsa, cipher, reinterpret_cast(password.data()), password.size(), nullptr, nullptr)) { - throw std::runtime_error("Couldn't save private key. PEM_write_bio_RSAPrivateKey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return; - } -} - -/// -/// \brief QSimpleCrypto::QRSA::getPublicKeyFromFile - Gets RSA public key from a file. -/// \param filePath - File path to public key file. -/// \return Returns 'OpenSSL EVP_PKEY structure' or 'nullptr', if error happened. Returned value must be cleaned up with 'EVP_PKEY_free()' to avoid memory leak. -/// -EVP_PKEY* QSimpleCrypto::QRsa::getPublicKeyFromFile(const QByteArray& filePath) -{ - try { - /* Initialize BIO */ - std::unique_ptr bioPublicKey { BIO_new_file(filePath.data(), "r"), BIO_free_all }; - if (bioPublicKey == nullptr) { - throw std::runtime_error("Couldn't initialize bioPublicKey. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Initialize EVP_PKEY */ - EVP_PKEY* keyStore = nullptr; - if (!(keyStore = EVP_PKEY_new())) { - throw std::runtime_error("Couldn't initialize keyStore. EVP_PKEY_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write private key to file */ - if (!PEM_read_bio_PUBKEY(bioPublicKey.get(), &keyStore, nullptr, nullptr)) { - throw std::runtime_error("Couldn't read private key. PEM_read_bio_PrivateKey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - return keyStore; - - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return nullptr; - } -} - -/// -/// \brief QSimpleCrypto::QRSA::getPrivateKeyFromFile - Gets RSA private key from a file. -/// \param filePath - File path to private key file. -/// \param password - Private key password. -/// \return - Returns 'OpenSSL EVP_PKEY structure' or 'nullptr', if error happened. Returned value must be cleaned up with 'EVP_PKEY_free()' to avoid memory leak. -/// -EVP_PKEY* QSimpleCrypto::QRsa::getPrivateKeyFromFile(const QByteArray& filePath, const QByteArray& password) -{ - try { - /* Initialize BIO */ - std::unique_ptr bioPrivateKey { BIO_new_file(filePath.data(), "r"), BIO_free_all }; - if (bioPrivateKey == nullptr) { - throw std::runtime_error("Couldn't initialize bioPrivateKey. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Initialize EVP_PKEY */ - EVP_PKEY* keyStore = nullptr; - if (!(keyStore = EVP_PKEY_new())) { - throw std::runtime_error("Couldn't initialize keyStore. EVP_PKEY_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write private key to file */ - if (!PEM_read_bio_PrivateKey(bioPrivateKey.get(), &keyStore, nullptr, (void*)password.data())) { - throw std::runtime_error("Couldn't read private key. PEM_read_bio_PrivateKey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - return keyStore; - - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return nullptr; - } -} - -/// -/// \brief QSimpleCrypto::QRSA::encrypt - Encrypt data with RSA algorithm. -/// \param plaintext - Text that must be encrypted. -/// \param rsa - OpenSSL RSA structure. -/// \param encryptType - Public or private encrypt type. (PUBLIC_ENCRYPT, PRIVATE_ENCRYPT). -/// \param padding - OpenSSL RSA padding can be used with: 'RSA_PKCS1_PADDING', 'RSA_NO_PADDING' and etc. -/// \return Returns encrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QRsa::encrypt(QByteArray plainText, RSA* rsa, const int& encryptType, const int& padding) -{ - try { - /* Initialize array. Here encrypted data will be saved */ - std::unique_ptr cipherText { new unsigned char[RSA_size(rsa)]() }; - if (cipherText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'cipherText'."); - } - - /* Result of encryption operation */ - short int result = 0; - - /* Execute encryption operation */ - if (encryptType == PublicDecrypt) { - result = RSA_public_encrypt(plainText.size(), reinterpret_cast(plainText.data()), cipherText.get(), rsa, padding); - } else if (encryptType == PrivateDecrypt) { - result = RSA_private_encrypt(plainText.size(), reinterpret_cast(plainText.data()), cipherText.get(), rsa, padding); - } - - /* Check for result */ - if (result <= -1) { - throw std::runtime_error("Couldn't encrypt data. Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Get encrypted data */ - const QByteArray& encryptedData = QByteArray(reinterpret_cast(cipherText.get()), RSA_size(rsa)); - - return encryptedData; - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return ""; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return ""; - } -} - -/// -/// \brief QSimpleCrypto::QRSA::decrypt - Decrypt data with RSA algorithm. -/// \param cipherText - Text that must be decrypted. -/// \param rsa - OpenSSL RSA structure. -/// \param decryptType - Public or private type. (PUBLIC_DECRYPT, PRIVATE_DECRYPT). -/// \param padding - RSA padding can be used with: 'RSA_PKCS1_PADDING', 'RSA_NO_PADDING' and etc. -/// \return - Returns decrypted data or "", if error happened. -/// -QByteArray QSimpleCrypto::QRsa::decrypt(QByteArray cipherText, RSA* rsa, const int& decryptType, const int& padding) -{ - try { - /* Initialize array. Here decrypted data will be saved */ - std::unique_ptr plainText { new unsigned char[cipherText.size()]() }; - if (plainText == nullptr) { - throw std::runtime_error("Couldn't allocate memory for 'plainText'."); - } - - /* Result of decryption operation */ - short int result = 0; - - /* Execute decryption operation */ - if (decryptType == PublicDecrypt) { - result = RSA_public_decrypt(RSA_size(rsa), reinterpret_cast(cipherText.data()), plainText.get(), rsa, padding); - } else if (decryptType == PrivateDecrypt) { - result = RSA_private_decrypt(RSA_size(rsa), reinterpret_cast(cipherText.data()), plainText.get(), rsa, padding); - } - - /* Check for result */ - if (result <= -1) { - throw std::runtime_error("Couldn't decrypt data. Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Get decrypted data */ - const QByteArray& decryptedData = QByteArray(reinterpret_cast(plainText.get())); - - return decryptedData; - } catch (std::exception& exception) { - QSimpleCrypto::QRsa::error.setError(1, exception.what()); - return ""; - } catch (...) { - QSimpleCrypto::QRsa::error.setError(2, "Unknown error!"); - return ""; - } -} diff --git a/client/3rd/QSimpleCrypto/sources/QX509.cpp b/client/3rd/QSimpleCrypto/sources/QX509.cpp deleted file mode 100644 index ac4fd270..00000000 --- a/client/3rd/QSimpleCrypto/sources/QX509.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#include "include/QX509.h" - -QSimpleCrypto::QX509::QX509() -{ -} - -/// -/// \brief QSimpleCrypto::QX509::loadCertificateFromFile - Function load X509 from file and returns OpenSSL structure. -/// \param fileName - File path to certificate. -/// \return Returns OpenSSL X509 structure or nullptr, if error happened. Returned value must be cleaned up with 'X509_free' to avoid memory leak. -/// -X509* QSimpleCrypto::QX509::loadCertificateFromFile(const QByteArray& fileName) -{ - try { - /* Initialize X509 */ - X509* x509 = nullptr; - if (!(x509 = X509_new())) { - throw std::runtime_error("Couldn't initialize X509. X509_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Initialize BIO */ - std::unique_ptr certFile { BIO_new_file(fileName.data(), "r+"), BIO_free_all }; - if (certFile == nullptr) { - throw std::runtime_error("Couldn't initialize certFile. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Read file */ - if (!PEM_read_bio_X509(certFile.get(), &x509, nullptr, nullptr)) { - throw std::runtime_error("Couldn't read certificate file from disk. PEM_read_bio_X509(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - return x509; - } catch (std::exception& exception) { - QSimpleCrypto::QX509::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QX509::error.setError(2, "Unknown error!"); - return nullptr; - } -} - -/// -/// \brief QSimpleCrypto::QX509::signCertificate - Function signs X509 certificate and returns signed X509 OpenSSL structure. -/// \param endCertificate - Certificate that will be signed -/// \param caCertificate - CA certificate that will sign end certificate -/// \param caPrivateKey - CA certificate private key -/// \param fileName - With that name certificate will be saved. Leave "", if don't need to save it -/// \return Returns OpenSSL X509 structure or nullptr, if error happened. -/// -X509* QSimpleCrypto::QX509::signCertificate(X509* endCertificate, X509* caCertificate, EVP_PKEY* caPrivateKey, const QByteArray& fileName) -{ - try { - /* Set issuer to CA's subject. */ - if (!X509_set_issuer_name(endCertificate, X509_get_subject_name(caCertificate))) { - throw std::runtime_error("Couldn't set issuer name for X509. X509_set_issuer_name(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Sign the certificate with key. */ - if (!X509_sign(endCertificate, caPrivateKey, EVP_sha256())) { - throw std::runtime_error("Couldn't sign X509. X509_sign(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write certificate file on disk. If needed */ - if (!fileName.isEmpty()) { - /* Initialize BIO */ - std::unique_ptr certFile { BIO_new_file(fileName.data(), "w+"), BIO_free_all }; - if (certFile == nullptr) { - throw std::runtime_error("Couldn't initialize certFile. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write file on disk */ - if (!PEM_write_bio_X509(certFile.get(), endCertificate)) { - throw std::runtime_error("Couldn't write certificate file on disk. PEM_write_bio_X509(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } - - return endCertificate; - } catch (std::exception& exception) { - QSimpleCrypto::QX509::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QX509::error.setError(2, "Unknown error!"); - return nullptr; - } -} - -/// -/// \brief QSimpleCrypto::QX509::verifyCertificate - Function verifies X509 certificate and returns verified X509 OpenSSL structure. -/// \param x509 - OpenSSL X509. That certificate will be verified. -/// \param store - Trusted certificate must be added to X509_Store with 'addCertificateToStore(X509_STORE* ctx, X509* x509)'. -/// \return Returns OpenSSL X509 structure or nullptr, if error happened -/// -X509* QSimpleCrypto::QX509::verifyCertificate(X509* x509, X509_STORE* store) -{ - try { - /* Initialize X509_STORE_CTX */ - std::unique_ptr ctx { X509_STORE_CTX_new(), X509_STORE_CTX_free }; - if (ctx == nullptr) { - throw std::runtime_error("Couldn't initialize keyStore. EVP_PKEY_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set up CTX for a subsequent verification operation */ - if (!X509_STORE_CTX_init(ctx.get(), store, x509, nullptr)) { - throw std::runtime_error("Couldn't initialize X509_STORE_CTX. X509_STORE_CTX_init(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Verify X509 */ - if (!X509_verify_cert(ctx.get())) { - throw std::runtime_error("Couldn't verify cert. X509_verify_cert(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - return x509; - } catch (std::exception& exception) { - QSimpleCrypto::QX509::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QX509::error.setError(2, "Unknown error!"); - return nullptr; - } -} - -/// -/// \brief QSimpleCrypto::QX509::generateSelfSignedCertificate - Function generatesand returns self signed X509. -/// \param rsa - OpenSSL RSA. -/// \param additionalData - Certificate information. -/// \param certificateFileName - With that name certificate will be saved. Leave "", if don't need to save it. -/// \param md - OpenSSL EVP_MD structure. Example: EVP_sha512(). -/// \param serialNumber - X509 certificate serial number. -/// \param version - X509 certificate version. -/// \param notBefore - X509 start date. -/// \param notAfter - X509 end date. -/// \return Returns OpenSSL X509 structure or nullptr, if error happened. Returned value must be cleaned up with 'X509_free' to avoid memory leak. -/// -X509* QSimpleCrypto::QX509::generateSelfSignedCertificate(RSA* rsa, const QMap& additionalData, - const QByteArray& certificateFileName, const EVP_MD* md, - const long& serialNumber, const long& version, - const long& notBefore, const long& notAfter) -{ - try { - /* Initialize X509 */ - X509* x509 = nullptr; - if (!(x509 = X509_new())) { - throw std::runtime_error("Couldn't initialize X509. X509_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Initialize EVP_PKEY */ - std::unique_ptr keyStore { EVP_PKEY_new(), EVP_PKEY_free }; - if (keyStore == nullptr) { - throw std::runtime_error("Couldn't initialize keyStore. EVP_PKEY_new(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Sign rsa key */ - if (!EVP_PKEY_assign_RSA(keyStore.get(), rsa)) { - throw std::runtime_error("Couldn't assign rsa. EVP_PKEY_assign_RSA(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set certificate serial number. */ - if (!ASN1_INTEGER_set(X509_get_serialNumber(x509), serialNumber)) { - throw std::runtime_error("Couldn't set serial number. ASN1_INTEGER_set(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set certificate version */ - if (!X509_set_version(x509, version)) { - throw std::runtime_error("Couldn't set version. X509_set_version(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Set certificate creation and expiration date */ - X509_gmtime_adj(X509_get_notBefore(x509), notBefore); - X509_gmtime_adj(X509_get_notAfter(x509), notAfter); - - /* Set certificate public key */ - if (!X509_set_pubkey(x509, keyStore.get())) { - throw std::runtime_error("Couldn't set public key. X509_set_pubkey(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Initialize X509_NAME */ - X509_NAME* x509Name = X509_get_subject_name(x509); - if (x509Name == nullptr) { - throw std::runtime_error("Couldn't initialize X509_NAME. X509_NAME(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Add additional data to certificate */ - QMapIterator certificateInformationList(additionalData); - while (certificateInformationList.hasNext()) { - /* Read next item in list */ - certificateInformationList.next(); - - /* Set additional data */ - if (!X509_NAME_add_entry_by_txt(x509Name, certificateInformationList.key().data(), MBSTRING_UTF8, reinterpret_cast(certificateInformationList.value().data()), -1, -1, 0)) { - throw std::runtime_error("Couldn't set additional information. X509_NAME_add_entry_by_txt(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } - - /* Set certificate info */ - if (!X509_set_issuer_name(x509, x509Name)) { - throw std::runtime_error("Couldn't set issuer name. X509_set_issuer_name(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Sign certificate */ - if (!X509_sign(x509, keyStore.get(), md)) { - throw std::runtime_error("Couldn't sign X509. X509_sign(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write certificate file on disk. If needed */ - if (!certificateFileName.isEmpty()) { - /* Initialize BIO */ - std::unique_ptr certFile { BIO_new_file(certificateFileName.data(), "w+"), BIO_free_all }; - if (certFile == nullptr) { - throw std::runtime_error("Couldn't initialize certFile. BIO_new_file(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - - /* Write file on disk */ - if (!PEM_write_bio_X509(certFile.get(), x509)) { - throw std::runtime_error("Couldn't write certificate file on disk. PEM_write_bio_X509(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - } - } - - return x509; - } catch (std::exception& exception) { - QSimpleCrypto::QX509::error.setError(1, exception.what()); - return nullptr; - } catch (...) { - QSimpleCrypto::QX509::error.setError(2, "Unknown error!"); - return nullptr; - } -} diff --git a/client/3rd/QSimpleCrypto/sources/QX509Store.cpp b/client/3rd/QSimpleCrypto/sources/QX509Store.cpp deleted file mode 100644 index bbbec1a8..00000000 --- a/client/3rd/QSimpleCrypto/sources/QX509Store.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright 2021 BrutalWizard (https://github.com/bru74lw1z4rd). All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution -**/ - -#include "include/QX509Store.h" - -QSimpleCrypto::QX509Store::QX509Store() -{ -} - -/// -/// \brief QSimpleCrypto::QX509::addCertificateToStore -/// \param store - OpenSSL X509_STORE. -/// \param x509 - OpenSSL X509. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::addCertificateToStore(X509_STORE* store, X509* x509) -{ - if (!X509_STORE_add_cert(store, x509)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't add certificate to X509_STORE. X509_STORE_add_cert(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::addLookup -/// \param store - OpenSSL X509_STORE. -/// \param method - OpenSSL X509_LOOKUP_METHOD. Example: X509_LOOKUP_file. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::addLookup(X509_STORE* store, X509_LOOKUP_METHOD* method) -{ - if (!X509_STORE_add_lookup(store, method)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't add lookup to X509_STORE. X509_STORE_add_lookup(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::setCertificateDepth -/// \param store - OpenSSL X509_STORE. -/// \param depth - That is the maximum number of untrusted CA certificates that can appear in a chain. Example: 0. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::setDepth(X509_STORE* store, const int& depth) -{ - if (!X509_STORE_set_depth(store, depth)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't set depth for X509_STORE. X509_STORE_set_depth(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::setFlag -/// \param store - OpenSSL X509_STORE. -/// \param flag - The verification flags consists of zero or more of the following flags ored together. Example: X509_V_FLAG_CRL_CHECK. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::setFlag(X509_STORE* store, const unsigned long& flag) -{ - if (!X509_STORE_set_flags(store, flag)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't set flag for X509_STORE. X509_STORE_set_flags(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::setFlag -/// \param store - OpenSSL X509_STORE. -/// \param purpose - Verification purpose in param to purpose. Example: X509_PURPOSE_ANY. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::setPurpose(X509_STORE* store, const int& purpose) -{ - if (!X509_STORE_set_purpose(store, purpose)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't set purpose for X509_STORE. X509_STORE_set_purpose(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::setTrust -/// \param store - OpenSSL X509_STORE. -/// \param trust - Trust Level. Example: X509_TRUST_SSL_SERVER. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::setTrust(X509_STORE* store, const int& trust) -{ - if (!X509_STORE_set_trust(store, trust)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't set trust for X509_STORE. X509_STORE_set_trust(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::setDefaultPaths -/// \param store - OpenSSL X509_STORE. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::setDefaultPaths(X509_STORE* store) -{ - if (!X509_STORE_set_default_paths(store)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't set default paths for X509_STORE. X509_STORE_set_default_paths(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::loadLocations -/// \param store - OpenSSL X509_STORE. -/// \param fileName - File name. Example: "caCertificate.pem". -/// \param dirPath - Path to file. Example: "path/To/File". -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::loadLocations(X509_STORE* store, const QByteArray& fileName, const QByteArray& dirPath) -{ - if (!X509_STORE_load_locations(store, fileName, dirPath)) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't load locations for X509_STORE. X509_STORE_load_locations(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::loadLocations -/// \param store - OpenSSL X509_STORE. -/// \param file - Qt QFile that will be loaded. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::loadLocations(X509_STORE* store, const QFile& file) -{ - /* Initialize QFileInfo to read information about file */ - QFileInfo info(file); - - if (!X509_STORE_load_locations(store, info.fileName().toLocal8Bit(), info.absoluteDir().path().toLocal8Bit())) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't load locations for X509_STORE. X509_STORE_load_locations(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} - -/// -/// \brief QSimpleCrypto::QX509Store::loadLocations -/// \param store - OpenSSL X509_STORE. -/// \param fileInfo - Qt QFileInfo. -/// \return Returns 'true' on success and 'false', if error happened. -/// -bool QSimpleCrypto::QX509Store::loadLocations(X509_STORE* store, const QFileInfo& fileInfo) -{ - if (!X509_STORE_load_locations(store, fileInfo.fileName().toLocal8Bit(), fileInfo.absoluteDir().path().toLocal8Bit())) { - QSimpleCrypto::QX509Store::error.setError(1, "Couldn't load locations for X509_STORE. X509_STORE_load_locations(). Error: " + QByteArray(ERR_error_string(ERR_get_error(), nullptr))); - return false; - } - - return true; -} diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 1fc28b82..327a83f6 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -24,6 +24,9 @@ execute_process( add_definitions(-DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}") +add_definitions(-DPROD_AGW_PUBLIC_KEY="$ENV{PROD_AGW_PUBLIC_KEY}") +add_definitions(-DPROD_PROXY_STORAGE_KEY="$ENV{PROD_PROXY_STORAGE_KEY}") + if(IOS) set(PACKAGES ${PACKAGES} Multimedia) endif() @@ -34,7 +37,7 @@ endif() find_package(Qt6 REQUIRED COMPONENTS ${PACKAGES}) -set(LIBS ${LIBS} +set(LIBS ${LIBS} Qt6::Core Qt6::Gui Qt6::Network Qt6::Xml Qt6::RemoteObjects Qt6::Quick Qt6::Svg Qt6::QuickControls2 @@ -136,6 +139,7 @@ set(HEADERS ${HEADERS} ${CMAKE_CURRENT_LIST_DIR}/core/networkUtilities.h ${CMAKE_CURRENT_LIST_DIR}/core/serialization/serialization.h ${CMAKE_CURRENT_LIST_DIR}/core/serialization/transfer.h + ${CMAKE_CURRENT_LIST_DIR}/core/enums/apiEnums.h ) # Mozilla headres @@ -252,7 +256,7 @@ set(SOURCES ${SOURCES} if(WIN32) configure_file( - ${CMAKE_CURRENT_LIST_DIR}/platforms/windows/amneziavpn.rc.in + ${CMAKE_CURRENT_LIST_DIR}/platforms/windows/amneziavpn.rc.in ${CMAKE_CURRENT_BINARY_DIR}/amneziavpn.rc ) diff --git a/client/amnezia_application.cpp b/client/amnezia_application.cpp index c3adfe31..b8ce5b00 100644 --- a/client/amnezia_application.cpp +++ b/client/amnezia_application.cpp @@ -3,13 +3,13 @@ #include #include #include +#include #include #include #include #include #include #include -#include #include "logger.h" #include "ui/models/installedAppsModel.h" @@ -116,7 +116,7 @@ void AmneziaApplication::init() } connect(AndroidController::instance(), &AndroidController::importConfigFromOutside, [this](QString data) { - m_pageController->replaceStartPage(); + m_pageController->goToPageHome(); m_importController->extractConfigFromData(data); m_pageController->goToPageViewConfig(); }); @@ -127,13 +127,13 @@ void AmneziaApplication::init() #ifdef Q_OS_IOS IosController::Instance()->initialize(); connect(IosController::Instance(), &IosController::importConfigFromOutside, [this](QString data) { - m_pageController->replaceStartPage(); + m_pageController->goToPageHome(); m_importController->extractConfigFromData(data); m_pageController->goToPageViewConfig(); }); connect(IosController::Instance(), &IosController::importBackupFromOutside, [this](QString filePath) { - m_pageController->replaceStartPage(); + m_pageController->goToPageHome(); m_pageController->goToPageSettingsBackup(); m_settingsController->importBackupFromOutside(filePath); }); @@ -361,6 +361,18 @@ void AmneziaApplication::initModels() m_engine->rootContext()->setContextProperty("ClientManagementModel", m_clientManagementModel.get()); connect(m_clientManagementModel.get(), &ClientManagementModel::adminConfigRevoked, m_serversModel.get(), &ServersModel::clearCachedProfile); + + m_apiServicesModel.reset(new ApiServicesModel(this)); + m_engine->rootContext()->setContextProperty("ApiServicesModel", m_apiServicesModel.get()); + + m_apiCountryModel.reset(new ApiCountryModel(this)); + m_engine->rootContext()->setContextProperty("ApiCountryModel", m_apiCountryModel.get()); + connect(m_serversModel.get(), &ServersModel::updateApiLanguageModel, this, [this]() { + m_apiCountryModel->updateModel(m_serversModel->getProcessedServerData("apiAvailableCountries").toJsonArray(), + m_serversModel->getProcessedServerData("apiServerCountryCode").toString()); + }); + connect(m_serversModel.get(), &ServersModel::updateApiServicesModel, this, + [this]() { m_apiServicesModel->updateModel(m_serversModel->getProcessedServerData("apiConfig").toJsonObject()); }); } void AmneziaApplication::initControllers() @@ -369,25 +381,26 @@ void AmneziaApplication::initControllers() new ConnectionController(m_serversModel, m_containersModel, m_clientManagementModel, m_vpnConnection, m_settings)); m_engine->rootContext()->setContextProperty("ConnectionController", m_connectionController.get()); - connect(m_connectionController.get(), qOverload(&ConnectionController::connectionErrorOccurred), this, [this](const QString &errorMessage) { - emit m_pageController->showErrorMessage(errorMessage); - emit m_vpnConnection->connectionStateChanged(Vpn::ConnectionState::Disconnected); - }); + connect(m_connectionController.get(), qOverload(&ConnectionController::connectionErrorOccurred), this, + [this](const QString &errorMessage) { + emit m_pageController->showErrorMessage(errorMessage); + emit m_vpnConnection->connectionStateChanged(Vpn::ConnectionState::Disconnected); + }); - connect(m_connectionController.get(), qOverload(&ConnectionController::connectionErrorOccurred), this, [this](ErrorCode errorCode) { - emit m_pageController->showErrorMessage(errorCode); - emit m_vpnConnection->connectionStateChanged(Vpn::ConnectionState::Disconnected); - }); + connect(m_connectionController.get(), qOverload(&ConnectionController::connectionErrorOccurred), this, + [this](ErrorCode errorCode) { + emit m_pageController->showErrorMessage(errorCode); + emit m_vpnConnection->connectionStateChanged(Vpn::ConnectionState::Disconnected); + }); connect(m_connectionController.get(), &ConnectionController::connectButtonClicked, m_connectionController.get(), &ConnectionController::toggleConnection, Qt::QueuedConnection); - connect(this, &AmneziaApplication::translationsUpdated, m_connectionController.get(), &ConnectionController::onTranslationsUpdated); - m_pageController.reset(new PageController(m_serversModel, m_settings)); m_engine->rootContext()->setContextProperty("PageController", m_pageController.get()); - m_installController.reset(new InstallController(m_serversModel, m_containersModel, m_protocolsModel, m_clientManagementModel, m_settings)); + m_installController.reset(new InstallController(m_serversModel, m_containersModel, m_protocolsModel, m_clientManagementModel, + m_apiServicesModel, m_settings)); m_engine->rootContext()->setContextProperty("InstallController", m_installController.get()); connect(m_installController.get(), &InstallController::passphraseRequestStarted, m_pageController.get(), &PageController::showPassphraseRequestDrawer); @@ -396,6 +409,30 @@ void AmneziaApplication::initControllers() connect(m_installController.get(), &InstallController::currentContainerUpdated, m_connectionController.get(), &ConnectionController::onCurrentContainerUpdated); + connect(m_installController.get(), &InstallController::updateServerFromApiFinished, this, [this]() { + disconnect(m_reloadConfigErrorOccurredConnection); + emit m_connectionController->configFromApiUpdated(); + }); + + connect(m_connectionController.get(), &ConnectionController::updateApiConfigFromGateway, this, [this]() { + m_reloadConfigErrorOccurredConnection = connect( + m_installController.get(), qOverload(&InstallController::installationErrorOccurred), this, + [this]() { emit m_vpnConnection->connectionStateChanged(Vpn::ConnectionState::Disconnected); }, + static_cast(Qt::AutoConnection || Qt::SingleShotConnection)); + m_installController->updateServiceFromApi(m_serversModel->getDefaultServerIndex(), "", ""); + }); + + connect(m_connectionController.get(), &ConnectionController::updateApiConfigFromTelegram, this, [this]() { + m_reloadConfigErrorOccurredConnection = connect( + m_installController.get(), qOverload(&InstallController::installationErrorOccurred), this, + [this]() { emit m_vpnConnection->connectionStateChanged(Vpn::ConnectionState::Disconnected); }, + static_cast(Qt::AutoConnection || Qt::SingleShotConnection)); + m_serversModel->removeApiConfig(m_serversModel->getDefaultServerIndex()); + m_installController->updateServiceFromTelegram(m_serversModel->getDefaultServerIndex()); + }); + + connect(this, &AmneziaApplication::translationsUpdated, m_connectionController.get(), &ConnectionController::onTranslationsUpdated); + m_importController.reset(new ImportController(m_serversModel, m_containersModel, m_settings)); m_engine->rootContext()->setContextProperty("ImportController", m_importController.get()); diff --git a/client/amnezia_application.h b/client/amnezia_application.h index b15d55d7..6fb61f44 100644 --- a/client/amnezia_application.h +++ b/client/amnezia_application.h @@ -45,6 +45,8 @@ #include "ui/models/sites_model.h" #include "ui/models/clientManagementModel.h" #include "ui/models/appSplitTunnelingModel.h" +#include "ui/models/apiServicesModel.h" +#include "ui/models/apiCountryModel.h" #define amnApp (static_cast(QCoreApplication::instance())) @@ -103,6 +105,8 @@ private: QSharedPointer m_sitesModel; QSharedPointer m_appSplitTunnelingModel; QSharedPointer m_clientManagementModel; + QSharedPointer m_apiServicesModel; + QSharedPointer m_apiCountryModel; QScopedPointer m_openVpnConfigModel; QScopedPointer m_shadowSocksConfigModel; @@ -134,6 +138,8 @@ private: QScopedPointer m_appSplitTunnelingController; QNetworkAccessManager *m_nam; + + QMetaObject::Connection m_reloadConfigErrorOccurredConnection; }; #endif // AMNEZIA_APPLICATION_H diff --git a/client/cmake/3rdparty.cmake b/client/cmake/3rdparty.cmake index ec544764..087f4961 100644 --- a/client/cmake/3rdparty.cmake +++ b/client/cmake/3rdparty.cmake @@ -8,9 +8,9 @@ endif() add_subdirectory(${CLIENT_ROOT_DIR}/3rd/SortFilterProxyModel) set(LIBS ${LIBS} SortFilterProxyModel) +include(${CLIENT_ROOT_DIR}/cmake/QSimpleCrypto.cmake) include(${CLIENT_ROOT_DIR}/3rd/qrcodegen/qrcodegen.cmake) -include(${CLIENT_ROOT_DIR}/3rd/QSimpleCrypto/QSimpleCrypto.cmake) set(LIBSSH_ROOT_DIR "${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/libssh/") set(OPENSSL_ROOT_DIR "${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/openssl/") @@ -83,13 +83,12 @@ set(BUILD_WITH_QT6 ON) add_subdirectory(${CLIENT_ROOT_DIR}/3rd/qtkeychain) set(LIBS ${LIBS} qt6keychain) - include_directories( ${OPENSSL_INCLUDE_DIR} ${LIBSSH_INCLUDE_DIR}/include ${LIBSSH_ROOT_DIR}/include ${CLIENT_ROOT_DIR}/3rd/libssh/include - ${CLIENT_ROOT_DIR}/3rd/QSimpleCrypto/include + ${CLIENT_ROOT_DIR}/3rd/QSimpleCrypto/src/include ${CLIENT_ROOT_DIR}/3rd/qtkeychain/qtkeychain ${CMAKE_CURRENT_BINARY_DIR}/3rd/qtkeychain ${CMAKE_CURRENT_BINARY_DIR}/3rd/libssh/include diff --git a/client/cmake/QSimpleCrypto.cmake b/client/cmake/QSimpleCrypto.cmake new file mode 100644 index 00000000..ec43cb83 --- /dev/null +++ b/client/cmake/QSimpleCrypto.cmake @@ -0,0 +1,21 @@ +set(CLIENT_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/..) +set(QSIMPLECRYPTO_DIR ${CLIENT_ROOT_DIR}/3rd/QSimpleCrypto/src) + +include_directories(${QSIMPLECRYPTO_DIR}) + +set(HEADERS ${HEADERS} + ${QSIMPLECRYPTO_DIR}/include/QAead.h + ${QSIMPLECRYPTO_DIR}/include/QBlockCipher.h + ${QSIMPLECRYPTO_DIR}/include/QRsa.h + ${QSIMPLECRYPTO_DIR}/include/QSimpleCrypto_global.h + ${QSIMPLECRYPTO_DIR}/include/QX509.h + ${QSIMPLECRYPTO_DIR}/include/QX509Store.h +) + +set(SOURCES ${SOURCES} + ${QSIMPLECRYPTO_DIR}/sources/QAead.cpp + ${QSIMPLECRYPTO_DIR}/sources/QBlockCipher.cpp + ${QSIMPLECRYPTO_DIR}/sources/QRsa.cpp + ${QSIMPLECRYPTO_DIR}/sources/QX509.cpp + ${QSIMPLECRYPTO_DIR}/sources/QX509Store.cpp +) diff --git a/client/core/controllers/apiController.cpp b/client/core/controllers/apiController.cpp index 35b459be..8e5f8ed5 100644 --- a/client/core/controllers/apiController.cpp +++ b/client/core/controllers/apiController.cpp @@ -5,7 +5,11 @@ #include #include +#include "QBlockCipher.h" +#include "QRsa.h" + #include "amnezia_application.h" +#include "core/enums/apiEnums.h" #include "configurators/wireguard_configurator.h" #include "version.h" @@ -25,25 +29,74 @@ namespace constexpr char uuid[] = "installation_uuid"; constexpr char osVersion[] = "os_version"; constexpr char appVersion[] = "app_version"; + + constexpr char userCountryCode[] = "user_country_code"; + constexpr char serverCountryCode[] = "server_country_code"; + constexpr char serviceType[] = "service_type"; + + constexpr char aesKey[] = "aes_key"; + constexpr char aesIv[] = "aes_iv"; + constexpr char aesSalt[] = "aes_salt"; + + constexpr char apiPayload[] = "api_payload"; + constexpr char keyPayload[] = "key_payload"; + } + + const QStringList proxyStorageUrl = {""}; + + ErrorCode checkErrors(const QList &sslErrors, QNetworkReply *reply) + { + if (!sslErrors.empty()) { + qDebug().noquote() << sslErrors; + return ErrorCode::ApiConfigSslError; + } else if (reply->error() == QNetworkReply::NoError) { + return ErrorCode::NoError; + } else if (reply->error() == QNetworkReply::NetworkError::OperationCanceledError + || reply->error() == QNetworkReply::NetworkError::TimeoutError) { + return ErrorCode::ApiConfigTimeoutError; + } else { + QString err = reply->errorString(); + qDebug() << QString::fromUtf8(reply->readAll()); + qDebug() << reply->error(); + qDebug() << err; + qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); + return ErrorCode::ApiConfigDownloadError; + } } } -ApiController::ApiController(QObject *parent) : QObject(parent) +ApiController::ApiController(const QString &gatewayEndpoint, QObject *parent) : QObject(parent), m_gatewayEndpoint(gatewayEndpoint) { } -void ApiController::processApiConfig(const QString &protocol, const ApiController::ApiPayloadData &apiPayloadData, QString &config) +void ApiController::fillServerConfig(const QString &protocol, const ApiController::ApiPayloadData &apiPayloadData, + const QByteArray &apiResponseBody, QJsonObject &serverConfig) { - if (protocol == configKey::cloak) { - config.replace("", "\n"); - config.replace("$OPENVPN_PRIV_KEY", apiPayloadData.certRequest.privKey); + QString data = QJsonDocument::fromJson(apiResponseBody).object().value(config_key::config).toString(); + + data.replace("vpn://", ""); + QByteArray ba = QByteArray::fromBase64(data.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); + + if (ba.isEmpty()) { + emit errorOccurred(ErrorCode::ApiConfigEmptyError); return; + } + + QByteArray ba_uncompressed = qUncompress(ba); + if (!ba_uncompressed.isEmpty()) { + ba = ba_uncompressed; + } + + QString configStr = ba; + if (protocol == configKey::cloak) { + configStr.replace("", "\n"); + configStr.replace("$OPENVPN_PRIV_KEY", apiPayloadData.certRequest.privKey); } else if (protocol == configKey::awg) { - config.replace("$WIREGUARD_CLIENT_PRIVATE_KEY", apiPayloadData.wireGuardClientPrivKey); - auto serverConfig = QJsonDocument::fromJson(config.toUtf8()).object(); + configStr.replace("$WIREGUARD_CLIENT_PRIVATE_KEY", apiPayloadData.wireGuardClientPrivKey); + auto serverConfig = QJsonDocument::fromJson(configStr.toUtf8()).object(); auto containers = serverConfig.value(config_key::containers).toArray(); if (containers.isEmpty()) { - return; + return; // todo process error } auto container = containers.at(0).toObject(); QString containerName = ContainerProps::containerTypeToString(DockerContainer::Awg); @@ -61,11 +114,75 @@ void ApiController::processApiConfig(const QString &protocol, const ApiControlle container[containerName] = containerConfig; containers.replace(0, container); serverConfig[config_key::containers] = containers; - config = QString(QJsonDocument(serverConfig).toJson()); + configStr = QString(QJsonDocument(serverConfig).toJson()); } + + QJsonObject apiConfig = QJsonDocument::fromJson(configStr.toUtf8()).object(); + serverConfig[config_key::dns1] = apiConfig.value(config_key::dns1); + serverConfig[config_key::dns2] = apiConfig.value(config_key::dns2); + serverConfig[config_key::containers] = apiConfig.value(config_key::containers); + serverConfig[config_key::hostName] = apiConfig.value(config_key::hostName); + + if (apiConfig.value(config_key::configVersion).toInt() == ApiConfigSources::AmneziaGateway) { + serverConfig[config_key::configVersion] = apiConfig.value(config_key::configVersion); + serverConfig[config_key::description] = apiConfig.value(config_key::description); + serverConfig[config_key::name] = apiConfig.value(config_key::name); + } + + auto defaultContainer = apiConfig.value(config_key::defaultContainer).toString(); + serverConfig[config_key::defaultContainer] = defaultContainer; + return; } +QStringList ApiController::getProxyUrls() +{ + QNetworkRequest request; + request.setTransferTimeout(7000); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + QEventLoop wait; + QList sslErrors; + QNetworkReply* reply; + + for (const auto &proxyStorageUrl : proxyStorageUrl) { + request.setUrl(proxyStorageUrl); + reply = amnApp->manager()->get(request); + + connect(reply, &QNetworkReply::finished, &wait, &QEventLoop::quit); + connect(reply, &QNetworkReply::sslErrors, [this, &sslErrors](const QList &errors) { sslErrors = errors; }); + wait.exec(); + + if (reply->error() == QNetworkReply::NetworkError::NoError) { + break; + } + reply->deleteLater(); + } + + auto encryptedResponseBody = reply->readAll(); + reply->deleteLater(); + + EVP_PKEY *privateKey = nullptr; + QByteArray responseBody; + try { + QByteArray key = PROD_PROXY_STORAGE_KEY; + QSimpleCrypto::QRsa rsa; + privateKey = rsa.getPrivateKeyFromByteArray(key, ""); + responseBody = rsa.decrypt(encryptedResponseBody, privateKey, RSA_PKCS1_PADDING); + } catch (...) { + qCritical() << "error loading private key from environment variables or decrypting payload"; + return {}; + } + + auto endpointsArray = QJsonDocument::fromJson(responseBody).array(); + + QStringList endpoints; + for (const auto &endpoint : endpointsArray) { + endpoints.push_back(endpoint.toString()); + } + return endpoints; +} + ApiController::ApiPayloadData ApiController::generateApiPayloadData(const QString &protocol) { ApiController::ApiPayloadData apiPayload; @@ -101,8 +218,6 @@ void ApiController::updateServerConfigFromApi(const QString &installationUuid, c QThread::msleep(10); #endif - auto containerConfig = serverConfig.value(config_key::containers).toArray(); - if (serverConfig.value(config_key::configVersion).toInt()) { QNetworkRequest request; request.setTransferTimeout(7000); @@ -120,39 +235,13 @@ void ApiController::updateServerConfigFromApi(const QString &installationUuid, c QByteArray requestBody = QJsonDocument(apiPayload).toJson(); - QNetworkReply *reply = amnApp->manager()->post(request, requestBody); // ?? + QNetworkReply *reply = amnApp->manager()->post(request, requestBody); QObject::connect(reply, &QNetworkReply::finished, [this, reply, protocol, apiPayloadData, serverIndex, serverConfig]() mutable { if (reply->error() == QNetworkReply::NoError) { - QString contents = QString::fromUtf8(reply->readAll()); - QString data = QJsonDocument::fromJson(contents.toUtf8()).object().value(config_key::config).toString(); - - data.replace("vpn://", ""); - QByteArray ba = QByteArray::fromBase64(data.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); - - if (ba.isEmpty()) { - emit errorOccurred(ErrorCode::ApiConfigEmptyError); - return; - } - - QByteArray ba_uncompressed = qUncompress(ba); - if (!ba_uncompressed.isEmpty()) { - ba = ba_uncompressed; - } - - QString configStr = ba; - processApiConfig(protocol, apiPayloadData, configStr); - - QJsonObject apiConfig = QJsonDocument::fromJson(configStr.toUtf8()).object(); - serverConfig[config_key::dns1] = apiConfig.value(config_key::dns1); - serverConfig[config_key::dns2] = apiConfig.value(config_key::dns2); - serverConfig[config_key::containers] = apiConfig.value(config_key::containers); - serverConfig[config_key::hostName] = apiConfig.value(config_key::hostName); - - auto defaultContainer = apiConfig.value(config_key::defaultContainer).toString(); - serverConfig[config_key::defaultContainer] = defaultContainer; - - emit configUpdated(true, serverConfig, serverIndex); + auto apiResponseBody = reply->readAll(); + fillServerConfig(protocol, apiPayloadData, apiResponseBody, serverConfig); + emit finished(serverConfig, serverIndex); } else { if (reply->error() == QNetworkReply::NetworkError::OperationCanceledError || reply->error() == QNetworkReply::NetworkError::TimeoutError) { @@ -178,3 +267,154 @@ void ApiController::updateServerConfigFromApi(const QString &installationUuid, c }); } } + +ErrorCode ApiController::getServicesList(QByteArray &responseBody) +{ +#ifdef Q_OS_IOS + IosController::Instance()->requestInetAccess(); + QThread::msleep(10); +#endif + + QNetworkRequest request; + request.setTransferTimeout(7000); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + request.setUrl(QString("%1v1/services").arg(m_gatewayEndpoint)); + + QNetworkReply* reply; + reply = amnApp->manager()->get(request); + + QEventLoop wait; + QObject::connect(reply, &QNetworkReply::finished, &wait, &QEventLoop::quit); + + QList sslErrors; + connect(reply, &QNetworkReply::sslErrors, [this, &sslErrors](const QList &errors) { sslErrors = errors; }); + wait.exec(); + + if (reply->error() == QNetworkReply::NetworkError::TimeoutError || reply->error() == QNetworkReply::NetworkError::OperationCanceledError) { + m_proxyUrls = getProxyUrls(); + for (const QString &proxyUrl : m_proxyUrls) { + request.setUrl(QString("%1v1/services").arg(proxyUrl)); + reply = amnApp->manager()->get(request); + + QObject::connect(reply, &QNetworkReply::finished, &wait, &QEventLoop::quit); + connect(reply, &QNetworkReply::sslErrors, [this, &sslErrors](const QList &errors) { sslErrors = errors; }); + wait.exec(); + if (reply->error() != QNetworkReply::NetworkError::TimeoutError && reply->error() != QNetworkReply::NetworkError::OperationCanceledError) { + break; + } + reply->deleteLater(); + } + } + + responseBody = reply->readAll(); + auto errorCode = checkErrors(sslErrors, reply); + reply->deleteLater(); + return errorCode; +} + +ErrorCode ApiController::getConfigForService(const QString &installationUuid, const QString &userCountryCode, const QString &serviceType, + const QString &protocol, const QString &serverCountryCode, QJsonObject &serverConfig) +{ +#ifdef Q_OS_IOS + IosController::Instance()->requestInetAccess(); + QThread::msleep(10); +#endif + + QNetworkAccessManager manager; + QNetworkRequest request; + request.setTransferTimeout(7000); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + request.setUrl(QString("%1v1/config").arg(m_gatewayEndpoint)); + + ApiPayloadData apiPayloadData = generateApiPayloadData(protocol); + + QJsonObject apiPayload = fillApiPayload(protocol, apiPayloadData); + apiPayload[configKey::userCountryCode] = userCountryCode; + if (!serverCountryCode.isEmpty()) { + apiPayload[configKey::serverCountryCode] = serverCountryCode; + } + apiPayload[configKey::serviceType] = serviceType; + apiPayload[configKey::uuid] = installationUuid; + + QSimpleCrypto::QBlockCipher blockCipher; + QByteArray key = blockCipher.generatePrivateSalt(32); + QByteArray iv = blockCipher.generatePrivateSalt(32); + QByteArray salt = blockCipher.generatePrivateSalt(8); + + QJsonObject keyPayload; + keyPayload[configKey::aesKey] = QString(key.toBase64()); + keyPayload[configKey::aesIv] = QString(iv.toBase64()); + keyPayload[configKey::aesSalt] = QString(salt.toBase64()); + + QByteArray encryptedKeyPayload; + QByteArray encryptedApiPayload; + try { + QSimpleCrypto::QRsa rsa; + + EVP_PKEY *publicKey = nullptr; + try { + QByteArray key = PROD_AGW_PUBLIC_KEY; + QSimpleCrypto::QRsa rsa; + publicKey = rsa.getPublicKeyFromByteArray(key); + } catch (...) { + qCritical() << "error loading public key from environment variables"; + return ErrorCode::ApiMissingAgwPublicKey; + } + + encryptedKeyPayload = rsa.encrypt(QJsonDocument(keyPayload).toJson(), publicKey, RSA_PKCS1_PADDING); + EVP_PKEY_free(publicKey); + + encryptedApiPayload = blockCipher.encryptAesBlockCipher(QJsonDocument(apiPayload).toJson(), key, iv, "", salt); + } catch (...) { // todo change error handling in QSimpleCrypto? + qCritical() << "error when encrypting the request body"; + } + + QJsonObject requestBody; + requestBody[configKey::keyPayload] = QString(encryptedKeyPayload.toBase64()); + requestBody[configKey::apiPayload] = QString(encryptedApiPayload.toBase64()); + + QNetworkReply* reply = manager.post(request, QJsonDocument(requestBody).toJson()); + + QEventLoop wait; + connect(reply, &QNetworkReply::finished, &wait, &QEventLoop::quit); + + QList sslErrors; + connect(reply, &QNetworkReply::sslErrors, [this, &sslErrors](const QList &errors) { sslErrors = errors; }); + wait.exec(); + + if (reply->error() == QNetworkReply::NetworkError::TimeoutError || reply->error() == QNetworkReply::NetworkError::OperationCanceledError) { + if (m_proxyUrls.isEmpty()) { + m_proxyUrls = getProxyUrls(); + } + for (const QString &proxyUrl : m_proxyUrls) { + request.setUrl(QString("%1v1/config").arg(proxyUrl)); + reply = manager.post(request, QJsonDocument(requestBody).toJson()); + + QObject::connect(reply, &QNetworkReply::finished, &wait, &QEventLoop::quit); + connect(reply, &QNetworkReply::sslErrors, [this, &sslErrors](const QList &errors) { sslErrors = errors; }); + wait.exec(); + if (reply->error() != QNetworkReply::NetworkError::TimeoutError && reply->error() != QNetworkReply::NetworkError::OperationCanceledError) { + break; + } + reply->deleteLater(); + } + } + + auto errorCode = checkErrors(sslErrors, reply); + if (errorCode) { + return errorCode; + } + + auto encryptedResponseBody = reply->readAll(); + reply->deleteLater(); + try { + auto responseBody = blockCipher.decryptAesBlockCipher(encryptedResponseBody, key, iv, "", salt); + fillServerConfig(protocol, apiPayloadData, responseBody, serverConfig); + } catch (...) { // todo change error handling in QSimpleCrypto? + qCritical() << "error when decrypting the request body"; + } + + return errorCode; +} diff --git a/client/core/controllers/apiController.h b/client/core/controllers/apiController.h index cc5d9f31..6cfde983 100644 --- a/client/core/controllers/apiController.h +++ b/client/core/controllers/apiController.h @@ -14,14 +14,18 @@ class ApiController : public QObject Q_OBJECT public: - explicit ApiController(QObject *parent = nullptr); + explicit ApiController(const QString &gatewayEndpoint, QObject *parent = nullptr); public slots: void updateServerConfigFromApi(const QString &installationUuid, const int serverIndex, QJsonObject serverConfig); + ErrorCode getServicesList(QByteArray &responseBody); + ErrorCode getConfigForService(const QString &installationUuid, const QString &userCountryCode, const QString &serviceType, + const QString &protocol, const QString &serverCountryCode, QJsonObject &serverConfig); + signals: void errorOccurred(ErrorCode errorCode); - void configUpdated(const bool updateConfig, const QJsonObject &config, const int serverIndex); + void finished(const QJsonObject &config, const int serverIndex); private: struct ApiPayloadData @@ -34,7 +38,12 @@ private: ApiPayloadData generateApiPayloadData(const QString &protocol); QJsonObject fillApiPayload(const QString &protocol, const ApiController::ApiPayloadData &apiPayloadData); - void processApiConfig(const QString &protocol, const ApiController::ApiPayloadData &apiPayloadData, QString &config); + void fillServerConfig(const QString &protocol, const ApiController::ApiPayloadData &apiPayloadData, const QByteArray &apiResponseBody, + QJsonObject &serverConfig); + QStringList getProxyUrls(); + + QString m_gatewayEndpoint; + QStringList m_proxyUrls; }; #endif // APICONTROLLER_H diff --git a/client/core/defs.h b/client/core/defs.h index a441ee1c..ebc07f4b 100644 --- a/client/core/defs.h +++ b/client/core/defs.h @@ -106,6 +106,7 @@ namespace amnezia ApiConfigEmptyError = 1102, ApiConfigTimeoutError = 1103, ApiConfigSslError = 1104, + ApiMissingAgwPublicKey = 1105, // QFile errors OpenError = 1200, diff --git a/client/core/enums/apiEnums.h b/client/core/enums/apiEnums.h new file mode 100644 index 00000000..1f050007 --- /dev/null +++ b/client/core/enums/apiEnums.h @@ -0,0 +1,9 @@ +#ifndef APIENUMS_H +#define APIENUMS_H + +enum ApiConfigSources { + Telegram = 1, + AmneziaGateway +}; + +#endif // APIENUMS_H diff --git a/client/core/errorstrings.cpp b/client/core/errorstrings.cpp index 645ec6c5..8c16d786 100644 --- a/client/core/errorstrings.cpp +++ b/client/core/errorstrings.cpp @@ -60,6 +60,7 @@ QString errorString(ErrorCode code) { case (ErrorCode::ApiConfigEmptyError): errorMessage = QObject::tr("In the response from the server, an empty config was received"); break; case (ErrorCode::ApiConfigSslError): errorMessage = QObject::tr("SSL error occurred"); break; case (ErrorCode::ApiConfigTimeoutError): errorMessage = QObject::tr("Server response timeout on api request"); break; + case (ErrorCode::ApiMissingAgwPublicKey): errorMessage = QObject::tr("Missing AGW public key"); break; // QFile errors case(ErrorCode::OpenError): errorMessage = QObject::tr("QFile error: The file could not be opened"); break; diff --git a/client/images/amneziaBigLogo.svg b/client/images/amneziaBigLogo.svg deleted file mode 100644 index c50c7743..00000000 --- a/client/images/amneziaBigLogo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/images/animation.gif b/client/images/animation.gif deleted file mode 100644 index 6f7f38e862f110b874aa3d4c55ede59bf8b770bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1185335 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

a}(FH;Fn_f%26gdy+2 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�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�aP7Fm0gRpC0sDzbvkn>8 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%0Aw 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%0A{10A}8g==6h} z&y#WV1)o}RU)TiQKT6abPR|;@F3}+SbJ(Q$YeL|>B1=w^DN>+T%UHY!x$Yv|wkU2C zL0<65j&^aA=@d#CB?1Ou)61zA*sSwFSO71`h|X~ze!3p!|0U2_CeJ~h3K*+{dD^cQ zu4R;*LQXR5-kC!DtBe~)WBN3BMFqo!2stLiYYXtT-Y-;GW9glKS`P%OD4IR%mQAT z{Dwh=9$5Txfc@NbfwiCK1HMX9OA1^} z&I7(+;~LSlU#H)k^5C{hvuH0F2rAsKMcb`rYBz#e0ig4cVo9oW2f%1)$mY0&f;pfk zs0Jc{hI84VS0F;|pgC2xJJ|Z4E8#>4t7|g$$_r51Qux@G*XGWtzr+ZhKBuQbSM^@0 zeQtzYbcwxmXfM(a3C)K-Wx8Ot1SreZ8^YM6d9!s~Zr_XoJJa-t=6q}^7rK9>9Mon3 zgNPd}tc!BzLYnY(l37nnd^`Ddqr0!K1xlxBRvz!@Kr+)B?#TxlI?;Z7bIrckSY&=% zBjsZGZ_vlh^F5IQAF-fYFB1&b^*N*TH4ZPJ1e%5P{C;~&BsJ+9PPoCp+l+r`R<#$r zgC?8Uy2+a>&9JaA#g$?h)dYIwOX>-A-pqcG^yFeIrnU*E7Rn@~@lL+Mpo3fZMZ9~p zzab6i@&?P~h;mOr;&l90JB8-IMt@RmyG9QZ`r!En$u~}{!vjs)!tCge&C;(4O~O7% zIUu}U__=Je?F!dHe{l2xDb)w|RftXCbdG|D`Db}Aht3N!#K^1r`K7y+Usqt`CJEI% zEi!UBo}h?NROS>;cZxQI9OXRA#O;*6-vHjLv(b`DM1* z6xVy1CjFQI>i#Bm?w}&`hrTeT}wYeJO@wMISFs7*xjM9}0vpwB6d=NL&Kz z5I%cmBeqcaeD<`f;9+$(Gk-v%oK>VBG$0B6k6%m%mx0>GY`6lv43zj`j#JbU)q7&hy(!>1u@IE0+7=_*7!L z#nBGjFP0{ahbdQA*wVvRIvT>hsY@6^!>1`7^r2_p{9hVAzH&mq4=KJ@O2!RVORO{= zIP0f&0uisFcVE??ZizbPCWcIsGX-~BpS!k~RdHO0$=CVbTZt@r%v-tF&wq^-`p3Kp z1-%_9VDun;(tEaZx~%PRkR1bz8lkf1

wbt}a$Vm`?{wY*M@P`aXHf{2AApFz^ri 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