From 1b78a71529bd38af3ffee09c2a4cb92b17b130ce Mon Sep 17 00:00:00 2001 From: Yaroslav Date: Thu, 10 Jul 2025 05:04:59 +0300 Subject: [PATCH 01/14] feat: ci/cd for macos signed pkg bundle (#1699) * Fixing broken ci/cd for macos pkg bundle * chore: fix cert parsing * chore: added notarization flag to macos build * refactor: update certificate import logic in build_macos.sh script --------- Co-authored-by: vladimir.kuznetsov --- .github/workflows/deploy.yml | 34 +++++++++++++++++++++--- .gitignore | 1 + deploy/build_macos.sh | 51 +++++++++++++++++++++++++++++++++--- 3 files changed, 79 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0c9dfb32..d08b1409 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -255,6 +255,20 @@ jobs: env: # Keep compat with MacOS 10.15 aka Catalina by Qt 6.4 QT_VERSION: 6.4.3 + + MAC_TEAM_ID: ${{ secrets.MAC_TEAM_ID }} + + MAC_APP_CERT_CERT: ${{ secrets.MAC_APP_CERT_CERT }} + MAC_SIGNER_ID: ${{ secrets.MAC_SIGNER_ID }} + MAC_APP_CERT_PW: ${{ secrets.MAC_APP_CERT_PW }} + + MAC_INSTALLER_SIGNER_CERT: ${{ secrets.MAC_INSTALLER_SIGNER_CERT }} + MAC_INSTALLER_SIGNER_ID: ${{ secrets.MAC_INSTALLER_SIGNER_ID }} + MAC_INSTALL_CERT_PW: ${{ secrets.MAC_INSTALL_CERT_PW }} + + APPLE_DEV_EMAIL: ${{ secrets.APPLE_DEV_EMAIL }} + APPLE_DEV_PASSWORD: ${{ secrets.APPLE_DEV_PASSWORD }} + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} PROD_S3_ENDPOINT: ${{ secrets.PROD_S3_ENDPOINT }} DEV_AGW_PUBLIC_KEY: ${{ secrets.DEV_AGW_PUBLIC_KEY }} @@ -295,7 +309,7 @@ jobs: - name: 'Build project' run: | export QT_BIN_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/macos/bin" - bash deploy/build_macos.sh + bash deploy/build_macos.sh -n - name: 'Upload installer artifact' uses: actions/upload-artifact@v4 @@ -317,7 +331,21 @@ jobs: runs-on: macos-latest env: - QT_VERSION: 6.8.0 + QT_VERSION: 6.9.1 + + MAC_TEAM_ID: ${{ secrets.MAC_TEAM_ID }} + + MAC_APP_CERT_CERT: ${{ secrets.MAC_APP_CERT_CERT }} + MAC_SIGNER_ID: ${{ secrets.MAC_SIGNER_ID }} + MAC_APP_CERT_PW: ${{ secrets.MAC_APP_CERT_PW }} + + MAC_INSTALLER_SIGNER_CERT: ${{ secrets.MAC_INSTALLER_SIGNER_CERT }} + MAC_INSTALLER_SIGNER_ID: ${{ secrets.MAC_INSTALLER_SIGNER_ID }} + MAC_INSTALL_CERT_PW: ${{ secrets.MAC_INSTALL_CERT_PW }} + + APPLE_DEV_EMAIL: ${{ secrets.APPLE_DEV_EMAIL }} + APPLE_DEV_PASSWORD: ${{ secrets.APPLE_DEV_PASSWORD }} + PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} PROD_S3_ENDPOINT: ${{ secrets.PROD_S3_ENDPOINT }} DEV_AGW_PUBLIC_KEY: ${{ secrets.DEV_AGW_PUBLIC_KEY }} @@ -358,7 +386,7 @@ jobs: - name: 'Build project' run: | export QT_BIN_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/macos/bin" - bash deploy/build_macos.sh + bash deploy/build_macos.sh -n - name: 'Upload installer artifact' uses: actions/upload-artifact@v4 diff --git a/.gitignore b/.gitignore index 503adc2d..d905f1e3 100644 --- a/.gitignore +++ b/.gitignore @@ -138,3 +138,4 @@ CMakeFiles/ ios-ne-build.sh macos-ne-build.sh macos-signed-build.sh +macos-with-sign-build.sh diff --git a/deploy/build_macos.sh b/deploy/build_macos.sh index 03f286fc..6e67ee79 100644 --- a/deploy/build_macos.sh +++ b/deploy/build_macos.sh @@ -71,11 +71,54 @@ cmake --build . --config release --target all KEYCHAIN_PATH="$PROJECT_DIR/mac_sign.keychain" trap 'echo "Cleaning up mac_sign.keychain..."; security delete-keychain "$KEYCHAIN_PATH" 2>/dev/null || true; rm -f "$KEYCHAIN_PATH" 2>/dev/null || true' EXIT KEYCHAIN=$(security default-keychain -d user | tr -d '"[:space:]"') -security list-keychains -d user -s "$KEYCHAIN_PATH" "$KEYCHAIN" "$(security list-keychains -d user | tr '\n' ' ')" -security create-keychain -p "" "$KEYCHAIN_PATH" -security import "$DEPLOY_DIR/DeveloperIdApplicationCertificate.p12" -k "$KEYCHAIN_PATH" -P "$MAC_APP_CERT_PW" -T /usr/bin/codesign -security import "$DEPLOY_DIR/DeveloperIdInstallerCertificate.p12" -k "$KEYCHAIN_PATH" -P "$MAC_INSTALL_CERT_PW" -T /usr/bin/codesign + +# Build a clean list of the *existing* user key-chains. The raw output of +# security list-keychains -d user +# looks roughly like: +# " \"/Users/foo/Library/Keychains/login.keychain-db\"\n \"/Library/Keychains/System.keychain\"" +# Every entry is surrounded by quotes and indented with a few blanks. Feeding +# that verbatim back to `security list-keychains -s` inside a single quoted +# argument leads to one long, invalid path on some systems. We therefore strip +# the quotes and rely on the shell to split the string on whitespace so that +# each path becomes its own argument. + +read -ra EXISTING_KEYCHAINS <<< "$(security list-keychains -d user | tr -d '"')" + +security list-keychains -d user -s "$KEYCHAIN_PATH" "$KEYCHAIN" "${EXISTING_KEYCHAINS[@]}" +KEYCHAIN_PWD="" # Empty password keeps things simple for CI jobs +# Create, unlock and configure the temporary key-chain so that `codesign` can +# access the imported identities without triggering interactive prompts. +security create-keychain -p "$KEYCHAIN_PWD" "$KEYCHAIN_PATH" +# Keep the key-chain unlocked for the duration of the job (6 hours is plenty). +security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH" +security unlock-keychain -p "$KEYCHAIN_PWD" "$KEYCHAIN_PATH" + +# Import the signing certificates only when the corresponding passwords are +# available in the environment. This allows the script to run in environments +# where code-signing is intentionally turned off (e.g. CI jobs that just build +# the artefacts without releasing them). + +if [ -n "${MAC_APP_CERT_PW-}" ]; then + # If the certificate is provided via environment variable, decode it. + if [ -n "${MAC_APP_CERT_CERT-}" ]; then + echo "$MAC_APP_CERT_CERT" | base64 -d > "$DEPLOY_DIR/DeveloperIdApplicationCertificate.p12" + fi + security import "$DEPLOY_DIR/DeveloperIdApplicationCertificate.p12" \ + -k "$KEYCHAIN_PATH" -P "$MAC_APP_CERT_PW" -A +fi + +if [ -n "${MAC_INSTALL_CERT_PW-}" ]; then + # Same logic for the installer certificate. + if [ -n "${MAC_INSTALLER_SIGNER_CERT-}" ]; then + echo "$MAC_INSTALLER_SIGNER_CERT" | base64 -d > "$DEPLOY_DIR/DeveloperIdInstallerCertificate.p12" + fi + security import "$DEPLOY_DIR/DeveloperIdInstallerCertificate.p12" \ + -k "$KEYCHAIN_PATH" -P "$MAC_INSTALL_CERT_PW" -A +fi + +# This certificate has no password. security import "$DEPLOY_DIR/DeveloperIDG2CA.cer" -k "$KEYCHAIN_PATH" -T /usr/bin/codesign + security list-keychains -d user -s "$KEYCHAIN_PATH" echo "____________________________________" From 6710fd18b37f74a6f77f0f3086494815e7c15cb4 Mon Sep 17 00:00:00 2001 From: Nethius Date: Thu, 10 Jul 2025 19:40:18 +0800 Subject: [PATCH 02/14] chore: bump version (#1703) --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fec613de..712d256c 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.8.8.1 +project(${PROJECT} VERSION 4.8.8.3 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 2087) +set(APP_ANDROID_VERSION_CODE 2089) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(MZ_PLATFORM_NAME "linux") From c9337457079fb89d80079d22c38d07877d52762d Mon Sep 17 00:00:00 2001 From: Nethius Date: Thu, 10 Jul 2025 19:48:03 +0800 Subject: [PATCH 03/14] chore: downgrade qt version for macos cicd build (#1705) --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d08b1409..3fd06279 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -331,7 +331,7 @@ jobs: runs-on: macos-latest env: - QT_VERSION: 6.9.1 + QT_VERSION: 6.8.0 MAC_TEAM_ID: ${{ secrets.MAC_TEAM_ID }} From c5c81735a098260e70a33613bb8f4ae02a33aa8f Mon Sep 17 00:00:00 2001 From: aiamnezia Date: Wed, 16 Jul 2025 06:04:49 +0400 Subject: [PATCH 04/14] fix: split tunneling with vless api configs (#1716) --- client/vpnconnection.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/vpnconnection.cpp b/client/vpnconnection.cpp index 3de0f035..139dc3c3 100644 --- a/client/vpnconnection.cpp +++ b/client/vpnconnection.cpp @@ -85,8 +85,7 @@ void VpnConnection::onConnectionStateChanged(Vpn::ConnectionState state) IpcClient::Interface()->resetIpStack(); IpcClient::Interface()->flushDns(); - if (!m_vpnConfiguration.value(config_key::configVersion).toInt() && container != DockerContainer::Awg - && container != DockerContainer::WireGuard) { + if (container != DockerContainer::Awg && container != DockerContainer::WireGuard) { QString dns1 = m_vpnConfiguration.value(config_key::dns1).toString(); QString dns2 = m_vpnConfiguration.value(config_key::dns2).toString(); From a96df5d518abc51c856d7e7ed47ded6b92641af1 Mon Sep 17 00:00:00 2001 From: Nethius Date: Wed, 16 Jul 2025 13:26:19 +0800 Subject: [PATCH 05/14] fix: temporarily removed vless for api native configs (#1724) --- client/core/controllers/coreController.cpp | 3 --- client/ui/controllers/api/apiConfigsController.cpp | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/client/core/controllers/coreController.cpp b/client/core/controllers/coreController.cpp index 0e72ef1a..a4dbc6d6 100644 --- a/client/core/controllers/coreController.cpp +++ b/client/core/controllers/coreController.cpp @@ -299,13 +299,10 @@ void CoreController::setQmlRoot() void CoreController::initApiCountryModelUpdateHandler() { - // TODO connect(m_serversModel.get(), &ServersModel::updateApiCountryModel, 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 CoreController::initContainerModelUpdateHandler() diff --git a/client/ui/controllers/api/apiConfigsController.cpp b/client/ui/controllers/api/apiConfigsController.cpp index 0f42beb7..500c4896 100644 --- a/client/ui/controllers/api/apiConfigsController.cpp +++ b/client/ui/controllers/api/apiConfigsController.cpp @@ -248,10 +248,10 @@ bool ApiConfigsController::exportNativeConfig(const QString &serverCountryCode, apiConfigObject.value(configKey::userCountryCode).toString(), serverCountryCode, apiConfigObject.value(configKey::serviceType).toString(), - m_apiServicesModel->getSelectedServiceProtocol(), + configKey::awg, // apiConfigObject.value(configKey::serviceProtocol).toString(), serverConfigObject.value(configKey::authData).toObject() }; - QString protocol = apiConfigObject.value(configKey::serviceProtocol).toString(); + QString protocol = gatewayRequestData.serviceProtocol; ProtocolData protocolData = generateProtocolData(protocol); QJsonObject apiPayload = gatewayRequestData.toJsonObject(); @@ -283,7 +283,7 @@ bool ApiConfigsController::revokeNativeConfig(const QString &serverCountryCode) apiConfigObject.value(configKey::userCountryCode).toString(), serverCountryCode, apiConfigObject.value(configKey::serviceType).toString(), - m_apiServicesModel->getSelectedServiceProtocol(), + configKey::awg, // apiConfigObject.value(configKey::serviceProtocol).toString(), serverConfigObject.value(configKey::authData).toObject() }; QJsonObject apiPayload = gatewayRequestData.toJsonObject(); From 669a95d975c2a738a8079f401268d37b007a0e2e Mon Sep 17 00:00:00 2001 From: MrMirDan <58086007+MrMirDan@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:26:49 +0300 Subject: [PATCH 06/14] chore: updated amnezia_ru_RU.ts (#1720) * Update amneziavpn_ru_RU.ts * Update amneziavpn_ru_RU.ts * Update amneziavpn_ru_RU.ts * Deleted corrupted ru translation * Updated amneziavpn_ru_RU.ts * Saved amneziavpn_ru_RU.ts * Rewrite some back on english * Rewrite small issues * Rewrite another small issues * Create deploy_mod.yml Modificated deploy.yml - removed Linux, IOS and MacOS jobs Made just for test and learning * some changes * deleted my uneccessary file * new translations --- client/translations/amneziavpn_ru_RU.ts | 558 ++++++++++++++---------- 1 file changed, 337 insertions(+), 221 deletions(-) diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts index 1d8766ac..6458d3ef 100644 --- a/client/translations/amneziavpn_ru_RU.ts +++ b/client/translations/amneziavpn_ru_RU.ts @@ -89,17 +89,17 @@ ApiConfigsController - + %1 installed successfully. %1 успешно установлен. - + API config reloaded Конфигурация API перезагружена - + Successfully changed the country of connection to %1 Страна подключения изменена на %1 @@ -358,7 +358,7 @@ ContextMenuType - + C&ut Вырезать @@ -368,12 +368,12 @@ Копировать - + &Paste Вставить - + &SelectAll Выбрать всё @@ -436,17 +436,17 @@ Can't be disabled for current server ImportController - + Scanned %1 of %2. Отсканировано %1 из %2. - + This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious scripts, so only add it if you fully trust the provider of this config. Эта конфигурация содержит настройки OpenVPN. Конфигурации OpenVPN могут содержать вредоносные скрипты, поэтому добавляйте их только в том случае, если полностью доверяете источнику этого файла. - + <br>In the imported configuration, potentially dangerous lines were found: <br>В импортированной конфигурации обнаружены потенциально опасные строки: @@ -454,71 +454,71 @@ Can't be disabled for current server InstallController - + %1 installed successfully. %1 успешно установлен. - + %1 is already installed on the server. %1 уже установлен на сервер. - + Added containers that were already installed on the server Добавлены сервисы и протоколы, которые были ранее установлены на сервер - + Already installed containers were found on the server. All installed containers have been added to the application На сервере обнаружены установленные протоколы и сервисы. Все они были добавлены в приложение - + Settings updated successfully Настройки успешно обновлены - + Server '%1' was rebooted Сервер '%1' был перезагружен - + Server '%1' was removed Сервер '%1' был удален - + All containers from server '%1' have been removed Все протоколы и сервисы были удалены с сервера '%1' - + %1 has been removed from the server '%2' %1 был удален с сервера '%2' - + Api config removed Конфигурация API удалена - + %1 cached profile cleared %1 закэшированный профиль очищен - + Please login as the user Пожалуйста, войдите в систему от имени пользователя - + Server added successfully Сервер успешно добавлен @@ -690,42 +690,87 @@ Thank you for staying with us! MTU - + + I1 - First special junk packet + I1 - First special junk packet + + + + I2 - Second special junk packet + I2 - Second special junk packet + + + + I3 - Third special junk packet + I3 - Third special junk packet + + + + I4 - Fourth special junk packet + I4 - Fourth special junk packet + + + + I5 - Fifth special junk packet + I5 - Fifth special junk packet + + + + J1 - First controlled junk packet + J1 - First controlled junk packet + + + + J2 - Second controlled junk packet + J2 - Second controlled junk packet + + + + J3 - Third controlled junk packet + J3 - Third controlled junk packet + + + + Itime - Special handshake timeout + Itime - Special handshake timeout + + + Server settings Настройки сервера - + Port Порт - + Save Сохранить - + Save settings? Сохранить настройки? - + Only the settings for this device will be changed Будут изменены настройки только для этого устройства - + Continue Продолжить - + Cancel Отменить - + Unable change settings while there is an active connection Невозможно изменить настройки во время активного соединения @@ -743,12 +788,12 @@ Thank you for staying with us! Порт - + All users with whom you shared a connection with will no longer be able to connect to it. Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться. - + Save Сохранить @@ -758,77 +803,77 @@ Thank you for staying with us! Подсеть VPN-адресов - + Jc - Junk packet count Jc - Junk packet count - + Jmin - Junk packet minimum size Jmin - Junk packet minimum size - + Jmax - Junk packet maximum size Jmax - Junk packet maximum size - + S1 - Init packet junk size S1 - Init packet junk size - + S2 - Response packet junk size S2 - Response packet junk size - + H1 - Init packet magic header H1 - Init packet magic header - + H2 - Response packet magic header H2 - Response packet magic header - + H4 - Transport packet magic header H4 - Transport packet magic header - + H3 - Underload packet magic header H3 - Underload packet magic header - + The values of the H1-H4 fields must be unique Значения в полях H1-H4 должны быть уникальными - + The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92) Значение в поле S1 + размер инициации сообщения (148) не должно равняться значению в поле S2 + размер ответа на сообщение (92) - + Save settings? Сохранить настройки? - + Continue Продолжить - + Cancel Отменить - + Unable change settings while there is an active connection Невозможно изменить настройки во время активного соединения @@ -836,33 +881,53 @@ Thank you for staying with us! PageProtocolCloakSettings - + Cloak settings Настройки Cloak - + Disguised as traffic from Замаскировать трафик под - + Port Порт - - + + Cipher Шифрование - + Save Сохранить - + + Save settings? + Сохранить настройки? + + + + All users with whom you shared a connection with will no longer be able to connect to it. + Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться. + + + + Continue + Продолжить + + + + Cancel + Отменить + + + Unable change settings while there is an active connection Невозможно изменить настройки во время активного соединения @@ -870,175 +935,195 @@ Thank you for staying with us! PageProtocolOpenVpnSettings - + OpenVPN settings Настройки OpenVPN - + VPN address subnet Подсеть VPN-адресов - + Network protocol Сетевой протокол - + Port Порт - + Auto-negotiate encryption Шифрование с автоматическим согласованием - - + + Hash Хэш - + SHA512 SHA512 - + SHA384 SHA384 - + SHA256 SHA256 - + SHA3-512 SHA3-512 - + SHA3-384 SHA3-384 - + SHA3-256 SHA3-256 - + whirlpool whirlpool - + BLAKE2b512 BLAKE2b512 - + BLAKE2s256 BLAKE2s256 - + SHA1 SHA1 - - + + Cipher Шифрование - + AES-256-GCM AES-256-GCM - + AES-192-GCM AES-192-GCM - + AES-128-GCM AES-128-GCM - + AES-256-CBC AES-256-CBC - + AES-192-CBC AES-192-CBC - + AES-128-CBC AES-128-CBC - + ChaCha20-Poly1305 ChaCha20-Poly1305 - + ARIA-256-CBC ARIA-256-CBC - + CAMELLIA-256-CBC CAMELLIA-256-CBC - + none none - + TLS auth TLS авторизация - + Block DNS requests outside of VPN Блокировать DNS-запросы за пределами VPN - + Additional client configuration commands Дополнительные команды конфигурации клиента - - + + Commands: Команды: - + Additional server configuration commands Дополнительные команды конфигурации сервера - + + Save settings? + Сохранить настройки? + + + + All users with whom you shared a connection with will no longer be able to connect to it. + Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться. + + + + Continue + Продолжить + + + + Cancel + Отменить + + + Unable change settings while there is an active connection Невозможно изменить настройки во время активного соединения - + Save Сохранить @@ -1093,28 +1178,48 @@ Thank you for staying with us! PageProtocolShadowSocksSettings - + Shadowsocks settings Настройки Shadowsocks - + Port Порт + - Cipher Шифрование - + Save Сохранить + + + Save settings? + Сохранить настройки? + + + + All users with whom you shared a connection with will no longer be able to connect to it. + Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться. + + Continue + Продолжить + + + + Cancel + Отменить + + + Unable change settings while there is an active connection Невозможно изменить настройки во время активного соединения @@ -1223,27 +1328,47 @@ Thank you for staying with us! PageProtocolXraySettings - + XRay settings Настройки XRay - + Disguised as traffic from Замаскировать трафик под - + Port Порт - + Save Сохранить - + + Save settings? + Сохранить настройки? + + + + All users with whom you shared a connection with will no longer be able to connect to it. + Все пользователи, с которыми вы поделились конфигурацией вашего VPN, больше не смогут к нему подключаться. + + + + Continue + Продолжить + + + + Cancel + Отменить + + + Unable change settings while there is an active connection Невозможно изменить настройки во время активного соединения @@ -1521,10 +1646,6 @@ Thank you for staying with us! Support Amnezia Поддержите Amnezia - - Show other methods on GithHub - Показать другие способы на GitHub - Amnezia is a free and open-source application. You can support the developers if you like it. @@ -1846,22 +1967,22 @@ Thank you for staying with us! PageSettingsApiServerInfo - + Configurations have been updated for some countries. Download and install the updated configuration files Сетевые адреса одного или нескольких серверов были обновлены. Пожалуйста, удалите старые конфигурацию и загрузите новые файлы - + Amnezia Premium subscription key Ключ подписки Amnezia Premium - + Copy VPN key Скопировать VPN ключ - + Manage configuration files Управление файлами конфигурации @@ -1881,101 +2002,111 @@ Thank you for staying with us! Активные соединения - + + Use VLESS protocol + Использовать протокол VLESS + + + + Cannot change protocol during active connection + Невозможно изменить протокол во время активного соединения + + + Subscription Key Ключ для подключения - + Save VPN key as a file Сохранить VPN-ключ в файл - + Configuration Files Файлы конфигурации - + Active Devices Активные устройства - + Manage currently connected devices Управление подключенными устройствами - + Support Поддержка - + How to connect on another device Как подключить другие устройства - + Reload API config Перезагрузить конфигурацию API - + Reload API config? Перезагрузить конфигурацию API? - - - + + + Continue Продолжить - - - + + + Cancel Отменить - + Cannot reload API config during active connection Невозможно перзагрузить API конфигурацию при активном соединении - + Unlink this device Отвязать это устройство - + Are you sure you want to unlink this device? Вы уверены, что хотите отвязать это устройство? - + This will unlink the device from your subscription. You can reconnect it anytime by pressing "Reload API config" in subscription settings on device. Это отключит устройство от вашей подписки. Вы можете повторно подключить его в любое время, нажав "Перезагрузить конфигурацию API" в настройках подписки на устройстве. - + Cannot unlink device during active connection Невозможно отвязать устройство во время активного соединения - + Remove from application Удалить из приложения - + Remove from application? Удалить из приложения? - + Cannot remove server during active connection Невозможно удалить сервер во время активного соединения @@ -2412,42 +2543,42 @@ Thank you for staying with us! Доступ в интернет блокируется при разрыве VPN-соединения - + Strict KillSwitch Strict KillSwitch - + Internet connection is blocked even when VPN is turned off manually or hasn't started Доступ в интернет блокируется, даже если VPN отключен вручную или не был запущен - + Just a little heads-up Небольшое предупреждение - + If the VPN disconnects or drops while Strict KillSwitch is enabled, internet access will be blocked. To restore access, reconnect VPN or disable/change the KillSwitch. Если VPN отключится или соединение прервётся при включённом Strict KillSwitch, доступ в интернет будет заблокирован. Чтобы восстановить доступ, снова подключитесь к VPN или отключите (измените) режим KillSwitch. - + Continue Продолжить - + Cancel Отменить - + DNS Exceptions Исключения для DNS - + DNS servers listed here will remain accessible when KillSwitch is active. DNS-серверы из этого списка останутся доступными при активном KillSwitch. @@ -2459,14 +2590,6 @@ Thank you for staying with us! DNS Exceptions Исключения для DNS - - DNS servers listed here will be excluded from KillSwitch restrictions and remain accessible when KillSwitch is active. - Перечисленные DNS-серверы будут исключены из ограничений KillSwitch и останутся доступными при активном KillSwitch. - - - DNS servers from the list will remain accessible when KillSwitch is triggered - DNS-серверы из этого списка будут исключены из ограничений KillSwitch и останутся доступными при активном KillSwitch. - DNS servers listed here will remain accessible when KillSwitch is active @@ -2768,10 +2891,6 @@ Thank you for staying with us! Management Управление - - Data - Данные - PageSettingsServerProtocol @@ -2863,10 +2982,6 @@ Thank you for staying with us! Default server does not support split tunneling function Сервер по умолчанию не поддерживает раздельное туннелирование - - Only the sites listed here will be accessed via VPN - Только адреса из списка должны открываться через VPN - Addresses from the list should not be accessed via VPN @@ -3521,7 +3636,7 @@ Thank you for staying with us! - + Users Пользователи @@ -3531,72 +3646,72 @@ Thank you for staying with us! Имя пользователя - + Search Поиск - + Creation date: %1 Дата создания: %1 - + Latest handshake: %1 Последнее рукопожатие: %1 - + Data received: %1 Получено данных: %1 - + Data sent: %1 Отправлено данных: %1 - + Allowed IPs: %1 Разрешенные подсети: %1 - + 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 Отменить @@ -3612,14 +3727,14 @@ Thank you for staying with us! Протокол - - + + Connection format Формат подключения - + Share Поделиться @@ -4029,209 +4144,210 @@ Thank you for staying with us! Server error: cgroup mountpoint не существует - + + Docker error: The pull rate limit has been reached + Docker error: достигнут лимит скорости вытягивания + + + SSH request was denied SSH-запрос был отклонён - + SSH request was interrupted SSH-запрос был прерван - + SSH internal error Внутренняя ошибка SSH - + Invalid private key or invalid passphrase entered Введен неверный закрытый ключ или неверная парольная фраза - + The selected private key format is not supported, use openssh ED25519 key types or PEM key types Выбранный формат закрытого ключа не поддерживается, используйте типы ключей openssh ED25519 или PEM - + Timeout connecting to server Тайм-аут подключения к серверу - + SCP error: Generic failure Ошибка SCP: общий сбой - + The config does not contain any containers and credentials for connecting to the server Конфигурация не содержит каких-либо контейнеров и учетных данных для подключения к серверу - - + + Error when retrieving configuration from API Ошибка при получении конфигурации из API - + This config has already been added to the application Данная конфигурация уже была добавлена в приложение - + A migration error has occurred. Please contact our technical support Произошла ошибка миграции. Обратитесь в нашу техническую поддержку - + Please update the application to use this feature Пожалуйста, обновите приложение, чтобы использовать эту функцию - + ErrorCode: %1. Код ошибки: %1. - + OpenVPN config missing Отсутствует конфигурация OpenVPN - + OpenVPN management server error Серверная ошибка управлением OpenVPN - + OpenVPN executable missing Отсутствует исполняемый файл OpenVPN - + Shadowsocks (ss-local) executable missing Отсутствует исполняемый файл Shadowsocks (ss-local) - + Cloak (ck-client) executable missing Отсутствует исполняемый файл Cloak (ck-client) - + Amnezia helper service error Ошибка вспомогательной службы Amnezia - + OpenSSL failed Ошибка OpenSSL - + Can't connect: another VPN connection is active Невозможно подключиться: активно другое VPN-соединение - + Can't setup OpenVPN TAP network adapter Невозможно настроить сетевой адаптер OpenVPN TAP - + VPN pool error: no available addresses Ошибка пула VPN: нет доступных адресов - + Unable to open config file Не удалось открыть файл конфигурации - + VPN Protocols is not installed. Please install VPN container at first VPN-протоколы не установлены. Пожалуйста, установите протокол - + VPN connection error Ошибка VPN-соединения - + In the response from the server, an empty config was received В ответе от сервера была получена пустая конфигурация - + SSL error occurred Произошла ошибка SSL - + Server response timeout on api request Тайм-аут ответа сервера на запрос API - + Missing AGW public key Отсутствует публичный ключ AGW - + Failed to decrypt response payload - + Не удалось расшифровать ответ полезной нагрузки - + Missing list of available services Отсутствует список доступных сервисов - + The limit of allowed configurations per subscription has been exceeded Превышен лимит разрешенных конфигураций для одной подписки - A migration has error occurred. Please contact our technical support - Произошла ошибка миграции. Обратитесь в нашу техническую поддержку - - - + QFile error: The file could not be opened Ошибка QFile: не удалось открыть файл - + QFile error: An error occurred when reading from the file Ошибка QFile: произошла ошибка при чтении из файла - + QFile error: The file could not be accessed Ошибка QFile: не удалось получить доступ к файлу - + QFile error: An unspecified error occurred Ошибка QFile: произошла неизвестная ошибка - + QFile error: A fatal error occurred Ошибка QFile: произошла фатальная ошибка - + QFile error: The operation was aborted Ошибка QFile: операция была прервана - + Internal error Внутренняя ошибка @@ -4766,12 +4882,12 @@ For more detailed information, you can SettingsController - + All settings have been reset to default values Все настройки сброшены до значений по умолчанию - + Backup file is corrupted Файл резервной копии поврежден From e027c504ae770c4d4c12f9328efa64f3f6a4ba90 Mon Sep 17 00:00:00 2001 From: Nethius Date: Wed, 16 Jul 2025 13:49:29 +0800 Subject: [PATCH 07/14] chore: bump version and add version to amneziavpn-service (#1725) --- CMakeLists.txt | 5 +++-- service/CMakeLists.txt | 2 +- service/server/CMakeLists.txt | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 712d256c..20a28dcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,9 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN) +set(AMNEZIAVPN_VERSION 4.8.9.0) -project(${PROJECT} VERSION 4.8.8.3 +project(${PROJECT} VERSION ${AMNEZIAVPN_VERSION} DESCRIPTION "AmneziaVPN" HOMEPAGE_URL "https://amnezia.org/" ) @@ -11,7 +12,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 2089) +set(APP_ANDROID_VERSION_CODE 2090) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(MZ_PLATFORM_NAME "linux") diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt index f05dbb23..5ed98ab4 100644 --- a/service/CMakeLists.txt +++ b/service/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT service) -project(${PROJECT}) +project(${PROJECT} VERSION ${AMNEZIAVPN_VERSION}) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/service/server/CMakeLists.txt b/service/server/CMakeLists.txt index aa7661fa..7916a576 100644 --- a/service/server/CMakeLists.txt +++ b/service/server/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN-service) -project(${PROJECT}) +project(${PROJECT} VERSION ${AMNEZIAVPN_VERSION}) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) From d767214f10ff74926d5f862f09305da3c08afe73 Mon Sep 17 00:00:00 2001 From: Nethius Date: Thu, 17 Jul 2025 15:22:21 +0800 Subject: [PATCH 08/14] chore: fixed amneziavpn-service version (#1726) --- client/cmake/macos.cmake | 10 ++++++- service/server/CMakeLists.txt | 13 ++++++++- service/server/amneziavpn-service.rc.in | 38 +++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 service/server/amneziavpn-service.rc.in diff --git a/client/cmake/macos.cmake b/client/cmake/macos.cmake index 7b7cd381..2320a7c4 100644 --- a/client/cmake/macos.cmake +++ b/client/cmake/macos.cmake @@ -18,7 +18,15 @@ set(LIBS ${LIBS} ${FW_NETWORK_EXTENSION} ) -set_target_properties(${PROJECT} PROPERTIES MACOSX_BUNDLE TRUE) +set_target_properties(${PROJECT} PROPERTIES + MACOSX_BUNDLE TRUE + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/Info.plist + XCODE_ATTRIBUTE_MARKETING_VERSION "${APP_MAJOR_VERSION}" + XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION "${BUILD_ID}" + XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${BUILD_OSX_APP_IDENTIFIER} + XCODE_ATTRIBUTE_PRODUCT_NAME "AmneziaVPN" + XCODE_ATTRIBUTE_EXECUTABLE_NAME "AmneziaVPN" +) set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE INTERNAL "" FORCE) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15) diff --git a/service/server/CMakeLists.txt b/service/server/CMakeLists.txt index 7916a576..9da5a108 100644 --- a/service/server/CMakeLists.txt +++ b/service/server/CMakeLists.txt @@ -162,7 +162,14 @@ if (WIN32 OR APPLE OR LINUX) ) endif() +set(RESOURCES) + if(WIN32) + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/amneziavpn-service.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/amneziavpn-service.rc + ) + set(HEADERS ${HEADERS} ${CMAKE_CURRENT_LIST_DIR}/tapcontroller_win.h ${CMAKE_CURRENT_LIST_DIR}/router_win.h @@ -203,6 +210,10 @@ if(WIN32) ${CMAKE_CURRENT_SOURCE_DIR}/../../client/platforms/windows/windowsutils.cpp ) + set(RESOURCES ${RESOURCES} + ${CMAKE_CURRENT_BINARY_DIR}/amneziavpn-service.rc + ) + set(LIBS user32 rasapi32 @@ -308,7 +319,7 @@ include_directories( ) -add_executable(${PROJECT} ${SOURCES} ${HEADERS}) +add_executable(${PROJECT} ${SOURCES} ${HEADERS} ${RESOURCES}) target_link_libraries(${PROJECT} PRIVATE Qt6::Core Qt6::Widgets Qt6::Network Qt6::RemoteObjects Qt6::Core5Compat Qt6::DBus ${LIBS}) target_compile_definitions(${PROJECT} PRIVATE "MZ_$") diff --git a/service/server/amneziavpn-service.rc.in b/service/server/amneziavpn-service.rc.in new file mode 100644 index 00000000..8ba60d38 --- /dev/null +++ b/service/server/amneziavpn-service.rc.in @@ -0,0 +1,38 @@ +#include +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#define VER_COMPANYNAME_STR "AmneziaVPN" +#define VER_FILEDESCRIPTION_STR "AmneziaVPN Service" +#define VER_INTERNALNAME_STR VER_FILEDESCRIPTION_STR +#define VER_LEGALCOPYRIGHT_STR "AmneziaVPN." +#define VER_LEGALTRADEMARKS1_STR "All Rights Reserved" +#define VER_LEGALTRADEMARKS2_STR VER_LEGALTRADEMARKS1_STR +#define VER_ORIGINALFILENAME_STR "AmneziaVPN-service.exe" +#define VER_PRODUCTNAME_STR VER_FILEDESCRIPTION_STR + +VS_VERSION_INFO VERSIONINFO +FILEVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@,@CMAKE_PROJECT_VERSION_TWEAK@ +PRODUCTVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@ +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileDescription", VER_FILEDESCRIPTION_STR + VALUE "FileVersion", "@CMAKE_PROJECT_VERSION@" + VALUE "InternalName", VER_INTERNALNAME_STR + VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR + VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR + VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR + VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", "@CMAKE_PROJECT_VERSION@" + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END From c8378fd32dc3afa2001e80aa8f48e76f7e7686aa Mon Sep 17 00:00:00 2001 From: Nethius Date: Tue, 22 Jul 2025 19:50:57 +0800 Subject: [PATCH 09/14] chore: update link to submodule (#1733) --- client/3rd-prebuilt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt index 840b7b07..3396058b 160000 --- a/client/3rd-prebuilt +++ b/client/3rd-prebuilt @@ -1 +1 @@ -Subproject commit 840b7b070e6ac8b90dda2fac6e98859b23727c0c +Subproject commit 3396058b87a844bbaeb657d66dd69102c76cc9a2 From f51fd2bf3eaaf43d420a433e4324beb359ca79f3 Mon Sep 17 00:00:00 2001 From: Nethius Date: Thu, 24 Jul 2025 10:13:14 +0800 Subject: [PATCH 10/14] chore: update link to submodule (#1738) --- client/3rd-prebuilt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt index 3396058b..63d3c17a 160000 --- a/client/3rd-prebuilt +++ b/client/3rd-prebuilt @@ -1 +1 @@ -Subproject commit 3396058b87a844bbaeb657d66dd69102c76cc9a2 +Subproject commit 63d3c17adb02206119378f2fc5f89b711c5aa20a From 9f9da885b7d1ef8ff3ef59bbfb86850331fbb9f6 Mon Sep 17 00:00:00 2001 From: Yaroslav Date: Fri, 25 Jul 2025 18:03:11 +0300 Subject: [PATCH 11/14] fix: bundle version added, icon returned (#1745) --- client/cmake/macos.cmake | 8 ++---- client/macos/app/Info.plist | 50 ------------------------------------- 2 files changed, 2 insertions(+), 56 deletions(-) delete mode 100644 client/macos/app/Info.plist diff --git a/client/cmake/macos.cmake b/client/cmake/macos.cmake index 2320a7c4..cedbce1b 100644 --- a/client/cmake/macos.cmake +++ b/client/cmake/macos.cmake @@ -20,12 +20,8 @@ set(LIBS ${LIBS} set_target_properties(${PROJECT} PROPERTIES MACOSX_BUNDLE TRUE - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/Info.plist - XCODE_ATTRIBUTE_MARKETING_VERSION "${APP_MAJOR_VERSION}" - XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION "${BUILD_ID}" - XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${BUILD_OSX_APP_IDENTIFIER} - XCODE_ATTRIBUTE_PRODUCT_NAME "AmneziaVPN" - XCODE_ATTRIBUTE_EXECUTABLE_NAME "AmneziaVPN" + MACOSX_BUNDLE_SHORT_VERSION_STRING "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}" + MACOSX_BUNDLE_BUNDLE_VERSION "${CMAKE_PROJECT_VERSION_TWEAK}" ) set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE INTERNAL "" FORCE) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15) diff --git a/client/macos/app/Info.plist b/client/macos/app/Info.plist deleted file mode 100644 index c5372ec1..00000000 --- a/client/macos/app/Info.plist +++ /dev/null @@ -1,50 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - - CFBundleAllowMixedLocalizations - - - CFBundleExecutable - ${EXECUTABLE_NAME} - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - - CFBundleInfoDictionaryVersion - 6.0 - - CFBundleName - $(PRODUCT_NAME) - - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - - CFBundleShortVersionString - $(MARKETING_VERSION) - - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - - ITSAppUsesNonExemptEncryption - - - LSApplicationCategoryType - public.app-category.utilities - - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - - LSMultipleInstancesProhibited - - - NSPrincipalClass - NSApplication - - NSSupportsAutomaticGraphicsSwitching - - - From ac0ce8a6f6e65857cc174eaa6070b306d927a2b6 Mon Sep 17 00:00:00 2001 From: Nethius Date: Fri, 25 Jul 2025 23:21:18 +0800 Subject: [PATCH 12/14] chore: bump version (#1746) --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 20a28dcc..e5d771c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN) -set(AMNEZIAVPN_VERSION 4.8.9.0) +set(AMNEZIAVPN_VERSION 4.8.9.1) project(${PROJECT} VERSION ${AMNEZIAVPN_VERSION} DESCRIPTION "AmneziaVPN" @@ -12,7 +12,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 2090) +set(APP_ANDROID_VERSION_CODE 2091) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(MZ_PLATFORM_NAME "linux") From 99b554e7c3cb01fd8327312b0e25cbed2cbfcc67 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Tue, 29 Jul 2025 12:17:29 +0800 Subject: [PATCH 13/14] chore: update link to submodule --- client/3rd-prebuilt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/3rd-prebuilt b/client/3rd-prebuilt index 63d3c17a..522e8d33 160000 --- a/client/3rd-prebuilt +++ b/client/3rd-prebuilt @@ -1 +1 @@ -Subproject commit 63d3c17adb02206119378f2fc5f89b711c5aa20a +Subproject commit 522e8d33a959b4d550fd0d72debf5d356a94945f From 90efaaff92119ef1018d492fefd2463d4796b6c1 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Tue, 29 Jul 2025 12:19:54 +0800 Subject: [PATCH 14/14] chore: bump version --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e5d771c9..368e0d7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN) -set(AMNEZIAVPN_VERSION 4.8.9.1) +set(AMNEZIAVPN_VERSION 4.8.9.2) project(${PROJECT} VERSION ${AMNEZIAVPN_VERSION} DESCRIPTION "AmneziaVPN" @@ -12,7 +12,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 2091) +set(APP_ANDROID_VERSION_CODE 2092) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(MZ_PLATFORM_NAME "linux")