mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
* added changelog drawer * Created a scaffold for Linux installation * implement Linux updating * Add debug logs about installer in service * Add client side of installation logic for Windows and MacOS * Add service side of installation logic for Windows * ru readme * Update README_RU.md * Add files via upload * chore: added clang-format config files (#1293) * Update README_RU.md * Update README.md * feature: added subscription expiration date for premium v2 (#1261) * feature: added subscription expiration date for premium v2 * feature: added a check for the presence of the “services” field in the response body of the getServicesList() function * feature: added prohibition to change location when connection is active * bugfix: renamed public_key->end_date to public_key->expires_at according to the changes on the backend * feature/xray user management (#972) * feature: implement client management functionality for Xray --------- Co-authored-by: aiamnezia <ai@amnezia.org> Co-authored-by: vladimir.kuznetsov <nethiuswork@gmail.com> * Fix formatting * Add some logs * Add logs from installattion shell on Windows * Fix installation for Windows and MacOS * Optimized code * Move installer running to client side for Ubuntu * Move installer launch logic to client side for Windows * Clean service code * Add linux_install script to resources * Add logs for UpdateController * Add draft for MacOS installation * Disable updates checking for Android and iOS * chore: fixed macos update script * chore: remove duplicate lines * chore: post merge fixes * chore: add missing ifdef * decrease version for testing * chore: added changelog text processing depend on OS * add .vscode to .gitignore * Change updater downloading method to retrieving link from the gateway * add Release date file creation to s3 deploy script * Add release date downloading from endpoint * update check refactoring * feat: switch macOS auto-update from DMG to ZIP+PKG installer - Update macOS artifact URL from .dmg to .zip - Rewrite mac_installer.sh to extract ZIP and install PKG via osascript - Increase download timeout to 30s for larger ZIP files * fix: fix Android build * feat: Change get request for updater link to post * refactor: preparing NewsModel for update notifications - Changed `updateModel` to `setNewsList` for better semantic meaning. - Delegate model container updating to private method updateModel - Updated the logic for marking news as read to use item IDs instead of a boolean flag. * feat: Move update notification in news list - Updated `UpdateController` to handle empty release dates in header text. - Added `getVersion` method to `UpdateController` for version retrieval. - Enhanced `NewsModel` to support update notifications with new methods for marking updates as skipped and setting update notifications. - Updated QML pages to display update information and provide actions for updates and skipping them. - Introduced `isUpdate` property in `NewsItem` to differentiate between regular news and updates. * feat: Implement rate limit workaround for gateway requests - Added a delay before contacting the gateway in both `UpdateController` and `ApiNewsController` to prevent rate limit issues caused by simultaneous requests. * refactor: Convert synchronous network requests to asynchronous in UpdateController - Updated `UpdateController` to use asynchronous network requests for fetching gateway URL, version info, changelog, and release date. - Introduced `doGetAsync` method to handle asynchronous GET requests with error handling. - Removed synchronous methods to improve responsiveness and prevent blocking the UI during network operations. - Added a mechanism to prevent multiple concurrent update checks. * chore: Decrease AmneziaVPN version to 4.8.10.0 in CMakeLists.txt for testing * refactor: Improve update check handling to avoid rate limit issues - Updated `CoreController` to initiate update checks after news fetching is complete. - Removed synchronous waiting in `ApiNewsController` to streamline the fetching process. * fix: fixed typo in IsReadRole * fix: fix updater filenames * chore: move updateController to core * refactor: update to mvvm * chore: tiny fix --------- Co-authored-by: aiamnezia <ai@amnezia.org> Co-authored-by: aiamnezia <ai@amnezia.com> Co-authored-by: Pokamest Nikak <pokamest@gmail.com> Co-authored-by: KsZnak <ksu@amnezia.org> Co-authored-by: Cyril Anisimov <cyan84@gmail.com> Co-authored-by: vkamn <vk@amnezia.org>
292 lines
12 KiB
CMake
292 lines
12 KiB
CMake
set(CLIENT_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
|
|
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/core/utils/migrations.h
|
|
${CLIENT_ROOT_DIR}/../ipc/ipc.h
|
|
${CLIENT_ROOT_DIR}/amneziaApplication.h
|
|
${CLIENT_ROOT_DIR}/core/utils/errorCodes.h
|
|
${CLIENT_ROOT_DIR}/core/utils/routeModes.h
|
|
${CLIENT_ROOT_DIR}/core/utils/commonStructs.h
|
|
${CLIENT_ROOT_DIR}/core/utils/containerEnum.h
|
|
${CLIENT_ROOT_DIR}/core/utils/protocolEnum.h
|
|
${CLIENT_ROOT_DIR}/core/utils/containers/containerUtils.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/protocolUtils.h
|
|
${CLIENT_ROOT_DIR}/core/utils/constants/configKeys.h
|
|
${CLIENT_ROOT_DIR}/core/utils/constants/protocolConstants.h
|
|
${CLIENT_ROOT_DIR}/core/utils/constants/apiKeys.h
|
|
${CLIENT_ROOT_DIR}/core/utils/constants/apiConstants.h
|
|
${CLIENT_ROOT_DIR}/core/utils/api/apiEnums.h
|
|
${CLIENT_ROOT_DIR}/core/utils/errorStrings.h
|
|
${CLIENT_ROOT_DIR}/core/utils/selfhosted/scriptsRegistry.h
|
|
${CLIENT_ROOT_DIR}/core/utils/qrCodeUtils.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/coreController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/coreSignalHandlers.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/gatewayController.h
|
|
${CLIENT_ROOT_DIR}/core/utils/selfhosted/sshSession.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/serversController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/usersController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/installController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/exportController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/importController.h
|
|
${CLIENT_ROOT_DIR}/core/installers/installerBase.h
|
|
${CLIENT_ROOT_DIR}/core/installers/awgInstaller.h
|
|
${CLIENT_ROOT_DIR}/core/installers/wireguardInstaller.h
|
|
${CLIENT_ROOT_DIR}/core/installers/openvpnInstaller.h
|
|
${CLIENT_ROOT_DIR}/core/installers/xrayInstaller.h
|
|
${CLIENT_ROOT_DIR}/core/installers/torInstaller.h
|
|
${CLIENT_ROOT_DIR}/core/installers/sftpInstaller.h
|
|
${CLIENT_ROOT_DIR}/core/installers/socks5Installer.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/appSplitTunnelingController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/ipSplitTunnelingController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/allowedDnsController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/exportController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/connectionController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/settingsController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/api/servicesCatalogController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/api/subscriptionController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/api/newsController.h
|
|
${CLIENT_ROOT_DIR}/core/controllers/updateController.h
|
|
${CLIENT_ROOT_DIR}/core/repositories/secureServersRepository.h
|
|
${CLIENT_ROOT_DIR}/core/repositories/secureAppSettingsRepository.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/qmlRegisterProtocols.h
|
|
${CLIENT_ROOT_DIR}/ui/utils/pages.h
|
|
${CLIENT_ROOT_DIR}/ui/utils/qAutoStart.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/vpnProtocol.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/version.h
|
|
${CLIENT_ROOT_DIR}/core/utils/selfhosted/sshClient.h
|
|
${CLIENT_ROOT_DIR}/core/utils/networkUtilities.h
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/serialization.h
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/transfer.h
|
|
${CLIENT_ROOT_DIR}/../common/logger/logger.h
|
|
${CLIENT_ROOT_DIR}/ui/utils/qmlUtils.h
|
|
${CLIENT_ROOT_DIR}/core/utils/api/apiUtils.h
|
|
${CLIENT_ROOT_DIR}/core/utils/osSignalHandler.h
|
|
${CLIENT_ROOT_DIR}/core/utils/utilities.h
|
|
${CLIENT_ROOT_DIR}/core/utils/managementServer.h
|
|
${CLIENT_ROOT_DIR}/core/utils/constants.h
|
|
)
|
|
|
|
# Mozilla headres
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/mozilla/models/server.h
|
|
${CLIENT_ROOT_DIR}/mozilla/shared/ipaddress.h
|
|
${CLIENT_ROOT_DIR}/mozilla/shared/leakdetector.h
|
|
${CLIENT_ROOT_DIR}/mozilla/controllerimpl.h
|
|
)
|
|
|
|
if(NOT IOS AND NOT MACOS_NE)
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/platforms/ios/QRCodeReaderBase.h
|
|
)
|
|
endif()
|
|
|
|
if(NOT ANDROID)
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/ui/utils/notificationHandler.h
|
|
)
|
|
endif()
|
|
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/core/utils/migrations.cpp
|
|
${CLIENT_ROOT_DIR}/amneziaApplication.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/errorStrings.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/containers/containerUtils.cpp
|
|
${CLIENT_ROOT_DIR}/core/protocols/protocolUtils.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/selfhosted/scriptsRegistry.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/qrCodeUtils.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/coreController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/coreSignalHandlers.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/gatewayController.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/selfhosted/sshSession.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/serversController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/usersController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/installController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/exportController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/importController.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/installerBase.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/awgInstaller.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/wireguardInstaller.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/openvpnInstaller.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/xrayInstaller.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/torInstaller.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/sftpInstaller.cpp
|
|
${CLIENT_ROOT_DIR}/core/installers/socks5Installer.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/appSplitTunnelingController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/ipSplitTunnelingController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/allowedDnsController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/selfhosted/exportController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/connectionController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/settingsController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/api/servicesCatalogController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/api/subscriptionController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/api/newsController.cpp
|
|
${CLIENT_ROOT_DIR}/core/controllers/updateController.cpp
|
|
${CLIENT_ROOT_DIR}/core/repositories/secureServersRepository.cpp
|
|
${CLIENT_ROOT_DIR}/core/repositories/secureAppSettingsRepository.cpp
|
|
${CLIENT_ROOT_DIR}/ui/utils/qAutoStart.cpp
|
|
${CLIENT_ROOT_DIR}/core/protocols/vpnProtocol.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/selfhosted/sshClient.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/networkUtilities.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/outbound.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/inbound.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/ss.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/ssd.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/vless.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/trojan.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/vmess.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/serialization/vmess_new.cpp
|
|
${CLIENT_ROOT_DIR}/../common/logger/logger.cpp
|
|
${CLIENT_ROOT_DIR}/ui/utils/qmlUtils.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/api/apiUtils.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/osSignalHandler.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/utilities.cpp
|
|
${CLIENT_ROOT_DIR}/core/utils/managementServer.cpp
|
|
)
|
|
|
|
# Mozilla sources
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/mozilla/models/server.cpp
|
|
${CLIENT_ROOT_DIR}/mozilla/shared/ipaddress.cpp
|
|
${CLIENT_ROOT_DIR}/mozilla/shared/leakdetector.cpp
|
|
)
|
|
|
|
if(NOT IOS AND NOT MACOS_NE)
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/platforms/ios/QRCodeReaderBase.cpp
|
|
)
|
|
endif()
|
|
|
|
# Include native macOS platform helpers (dock/status-item)
|
|
if(APPLE AND NOT IOS)
|
|
list(APPEND HEADERS
|
|
${CLIENT_ROOT_DIR}/platforms/macos/macosutils.h
|
|
${CLIENT_ROOT_DIR}/platforms/macos/macosstatusicon.h
|
|
${CLIENT_ROOT_DIR}/ui/utils/macosUtil.h
|
|
)
|
|
list(APPEND SOURCES
|
|
${CLIENT_ROOT_DIR}/platforms/macos/macosutils.mm
|
|
${CLIENT_ROOT_DIR}/platforms/macos/macosstatusicon.mm
|
|
${CLIENT_ROOT_DIR}/ui/utils/macosUtil.mm
|
|
)
|
|
endif()
|
|
|
|
if(NOT ANDROID)
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/ui/utils/notificationHandler.cpp
|
|
)
|
|
endif()
|
|
|
|
set(COMMON_FILES_H
|
|
${CLIENT_ROOT_DIR}/amneziaApplication.h
|
|
${CLIENT_ROOT_DIR}/secureQSettings.h
|
|
${CLIENT_ROOT_DIR}/vpnConnection.h
|
|
)
|
|
|
|
set(COMMON_FILES_CPP
|
|
${CLIENT_ROOT_DIR}/amneziaApplication.cpp
|
|
${CLIENT_ROOT_DIR}/secureQSettings.cpp
|
|
${CLIENT_ROOT_DIR}/vpnConnection.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE PAGE_LOGIC_H CONFIGURE_DEPENDS ${CLIENT_ROOT_DIR}/ui/pages_logic/*.h)
|
|
file(GLOB_RECURSE PAGE_LOGIC_CPP CONFIGURE_DEPENDS ${CLIENT_ROOT_DIR}/ui/pages_logic/*.cpp)
|
|
|
|
file(GLOB CONFIGURATORS_H CONFIGURE_DEPENDS ${CLIENT_ROOT_DIR}/core/configurators/*.h)
|
|
file(GLOB CONFIGURATORS_CPP CONFIGURE_DEPENDS ${CLIENT_ROOT_DIR}/core/configurators/*.cpp)
|
|
|
|
file(GLOB_RECURSE CORE_MODELS_H CONFIGURE_DEPENDS ${CLIENT_ROOT_DIR}/core/models/*.h)
|
|
file(GLOB_RECURSE CORE_MODELS_CPP CONFIGURE_DEPENDS ${CLIENT_ROOT_DIR}/core/models/*.cpp)
|
|
|
|
file(GLOB UI_MODELS_H CONFIGURE_DEPENDS
|
|
${CLIENT_ROOT_DIR}/ui/models/*.h
|
|
${CLIENT_ROOT_DIR}/ui/models/protocols/*.h
|
|
${CLIENT_ROOT_DIR}/ui/models/services/*.h
|
|
${CLIENT_ROOT_DIR}/ui/models/api/*.h
|
|
)
|
|
file(GLOB UI_MODELS_CPP CONFIGURE_DEPENDS
|
|
${CLIENT_ROOT_DIR}/ui/models/*.cpp
|
|
${CLIENT_ROOT_DIR}/ui/models/protocols/*.cpp
|
|
${CLIENT_ROOT_DIR}/ui/models/services/*.cpp
|
|
${CLIENT_ROOT_DIR}/ui/models/api/*.cpp
|
|
)
|
|
|
|
file(GLOB UI_CONTROLLERS_H CONFIGURE_DEPENDS
|
|
${CLIENT_ROOT_DIR}/ui/controllers/*.h
|
|
${CLIENT_ROOT_DIR}/ui/controllers/api/*.h
|
|
${CLIENT_ROOT_DIR}/ui/controllers/qml/*.h
|
|
${CLIENT_ROOT_DIR}/ui/controllers/selfhosted/*.h
|
|
)
|
|
file(GLOB UI_CONTROLLERS_CPP CONFIGURE_DEPENDS
|
|
${CLIENT_ROOT_DIR}/ui/controllers/*.cpp
|
|
${CLIENT_ROOT_DIR}/ui/controllers/api/*.cpp
|
|
${CLIENT_ROOT_DIR}/ui/controllers/qml/*.cpp
|
|
${CLIENT_ROOT_DIR}/ui/controllers/selfhosted/*.cpp
|
|
)
|
|
|
|
set(HEADERS ${HEADERS}
|
|
${COMMON_FILES_H}
|
|
${PAGE_LOGIC_H}
|
|
${CONFIGURATORS_H}
|
|
${CORE_MODELS_H}
|
|
${UI_MODELS_H}
|
|
${UI_CONTROLLERS_H}
|
|
)
|
|
set(SOURCES ${SOURCES}
|
|
${COMMON_FILES_CPP}
|
|
${PAGE_LOGIC_CPP}
|
|
${CONFIGURATORS_CPP}
|
|
${CORE_MODELS_CPP}
|
|
${UI_MODELS_CPP}
|
|
${UI_CONTROLLERS_CPP}
|
|
)
|
|
|
|
if(WIN32)
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/core/protocols/ikev2VpnProtocolWindows.h
|
|
)
|
|
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/core/protocols/ikev2VpnProtocolWindows.cpp
|
|
)
|
|
|
|
set(RESOURCES ${RESOURCES}
|
|
${CMAKE_CURRENT_BINARY_DIR}/amneziavpn.rc
|
|
)
|
|
endif()
|
|
|
|
if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID))
|
|
message("Client desktop build")
|
|
add_compile_definitions(AMNEZIA_DESKTOP)
|
|
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/core/utils/ipcClient.h
|
|
${CLIENT_ROOT_DIR}/ui/utils/systemTrayNotificationHandler.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/openVpnProtocol.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/wireGuardProtocol.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/xrayProtocol.h
|
|
${CLIENT_ROOT_DIR}/core/protocols/awgProtocol.h
|
|
${CLIENT_ROOT_DIR}/mozilla/localsocketcontroller.h
|
|
)
|
|
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/core/utils/ipcClient.cpp
|
|
${CLIENT_ROOT_DIR}/mozilla/localsocketcontroller.cpp
|
|
${CLIENT_ROOT_DIR}/ui/utils/systemTrayNotificationHandler.cpp
|
|
${CLIENT_ROOT_DIR}/core/protocols/openVpnProtocol.cpp
|
|
${CLIENT_ROOT_DIR}/core/protocols/wireGuardProtocol.cpp
|
|
${CLIENT_ROOT_DIR}/core/protocols/xrayProtocol.cpp
|
|
${CLIENT_ROOT_DIR}/core/protocols/awgProtocol.cpp
|
|
)
|
|
endif()
|
|
|
|
if(APPLE AND MACOS_NE)
|
|
# Include only the tray notification handler in NE builds
|
|
set(HEADERS ${HEADERS}
|
|
${CLIENT_ROOT_DIR}/ui/utils/systemTrayNotificationHandler.h
|
|
)
|
|
|
|
set(SOURCES ${SOURCES}
|
|
${CLIENT_ROOT_DIR}/ui/utils/systemTrayNotificationHandler.cpp
|
|
)
|
|
endif()
|