diff --git a/client/3rd/OpenVPNAdapter b/client/3rd/OpenVPNAdapter
index 7c821a8d..33afba08 160000
--- a/client/3rd/OpenVPNAdapter
+++ b/client/3rd/OpenVPNAdapter
@@ -1 +1 @@
-Subproject commit 7c821a8d5c1ad5ad94e0763b4f25a875b5a6fe1b
+Subproject commit 33afba081c8592e8632128c7f9d6ebe53cae3d08
diff --git a/client/3rd/OpenVPNAdapter.bk b/client/3rd/OpenVPNAdapter.bk
new file mode 160000
index 00000000..7c821a8d
--- /dev/null
+++ b/client/3rd/OpenVPNAdapter.bk
@@ -0,0 +1 @@
+Subproject commit 7c821a8d5c1ad5ad94e0763b4f25a875b5a6fe1b
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index b217c509..e712fd4a 100644
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -35,7 +35,7 @@ if(IOS OR MACOS_NE)
endif()
#Macos Network Extension doesn't need Widgets
-if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (NOT MACOS_NE))
+if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (NOT DEFINED MACOS_NE))
set(PACKAGES ${PACKAGES} Widgets)
endif()
@@ -51,16 +51,16 @@ set(LIBS ${LIBS}
if(IOS OR MACOS_NE)
set(LIBS ${LIBS} Qt6::Multimedia)
endif()
-message("Client desktop build ", ${MACOS_NE})
+# message("Client desktop build ", ${MACOS_NE})
#Macos Network Extension doesn't need Widgets
-if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT MACOS_NE))
+if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT DEFINED MACOS_NE))
set(LIBS ${LIBS} Qt6::Widgets)
endif()
qt_standard_project_setup()
qt_add_executable(${PROJECT} MANUAL_FINALIZATION)
-if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT MACOS_NE))
+if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT DEFINED MACOS_NE))
qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_interface.rep)
qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_process_interface.rep)
qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_process_tun2socks.rep)
@@ -170,12 +170,24 @@ include_directories(mozilla)
include_directories(mozilla/shared)
include_directories(mozilla/models)
-if((NOT IOS) OR (NOT MACOS_NE))
+if(MACOS_NE)
+ message("MACOS_NE is ON")
+ add_definitions(-DQ_OS_IOS)
+ add_definitions(-DMACOS_NE)
+ message("Add macros for MacOS Network Extension")
+else()
+ message("MACOS_NE is OFF")
+endif()
+
+
+if(NOT IOS AND NOT MACOS_NE)
+ message(" Add header for non-IOS and non-MACOS_NE")
set(HEADERS ${HEADERS}
${CMAKE_CURRENT_LIST_DIR}/platforms/ios/QRCodeReaderBase.h
)
endif()
+
if(NOT ANDROID)
set(HEADERS ${HEADERS}
${CMAKE_CURRENT_LIST_DIR}/ui/notificationhandler.h
@@ -220,7 +232,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(${PROJECT} PRIVATE "MZ_DEBUG")
endif()
-if((NOT IOS) OR (NOT MACOS_NE))
+if(NOT IOS AND NOT MACOS_NE)
set(SOURCES ${SOURCES}
${CMAKE_CURRENT_LIST_DIR}/platforms/ios/QRCodeReaderBase.cpp
)
@@ -328,8 +340,12 @@ if(LINUX AND NOT ANDROID)
link_directories(${CMAKE_CURRENT_LIST_DIR}/platforms/linux)
endif()
+if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID))
+ message("Run this block when MACOS_NE is not defined or set to FALSE")
+endif()
+
# Macos Network Extension doesn't need
-if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID) OR (APPLE AND NOT MACOS_NE))
+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)
@@ -365,11 +381,12 @@ endif()
if(IOS)
include(cmake/ios.cmake)
include(cmake/ios-arch-fixup.cmake)
-elseif(APPLE AND NOT IOS AND NOT MACOS_NE)
+elseif(APPLE AND NOT IOS AND NOT DEFINED MACOS_NE)
include(cmake/osxtools.cmake)
include(cmake/macos.cmake)
- elseif(APPLE AND NOT IOS AND MACOS_NE)
- include(cmake/macos_ne.cmake)
+elseif(APPLE AND NOT IOS AND MACOS_NE)
+ include(cmake/osxtools.cmake)
+ include(cmake/macos_ne.cmake)
endif()
target_link_libraries(${PROJECT} PRIVATE ${LIBS})
diff --git a/client/cmake/macos_ne.cmake b/client/cmake/macos_ne.cmake
index 85fe4fa6..e60c8e1b 100644
--- a/client/cmake/macos_ne.cmake
+++ b/client/cmake/macos_ne.cmake
@@ -34,22 +34,22 @@ set(LIBS ${LIBS}
set(HEADERS ${HEADERS}
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/ios_controller.h
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/ios_controller_wrapper.h
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/iosnotificationhandler.h
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/QtAppDelegate.h
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/QtAppDelegate-C-Interface.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/ios_controller.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/ios_controller_wrapper.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/iosnotificationhandler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/QtAppDelegate.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/QtAppDelegate-C-Interface.h
)
-set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/ios_controller.h PROPERTIES OBJECTIVE_CPP_HEADER TRUE)
+set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/ios_controller.h PROPERTIES OBJECTIVE_CPP_HEADER TRUE)
set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/ios_controller.mm
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/ios_controller_wrapper.mm
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/iosnotificationhandler.mm
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/iosglue.mm
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/QRCodeReaderBase.mm
- ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/QtAppDelegate.mm
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/ios_controller.mm
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/ios_controller_wrapper.mm
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/iosnotificationhandler.mm
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/iosglue.mm
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/QRCodeReaderBase.mm
+ ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos_ne/QtAppDelegate.mm
)
set(ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/app.icns)
@@ -71,7 +71,7 @@ target_include_directories(${PROJECT} PRIVATE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
set_target_properties(${PROJECT} PROPERTIES
XCODE_LINK_BUILD_PHASE_MODE KNOWN_LOCATION
- MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/ios/app/Info.plist.in
+ MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/Info.plist.in
#MACOSX_BUNDLE_ICON_FILE "AppIcon"
MACOSX_BUNDLE_INFO_STRING "AmneziaVPN"
MACOSX_BUNDLE_BUNDLE_NAME "AmneziaVPN"
@@ -79,7 +79,7 @@ set_target_properties(${PROJECT} PROPERTIES
MACOSX_BUNDLE_LONG_VERSION_STRING "${APPLE_PROJECT_VERSION}-${CMAKE_PROJECT_VERSION_TWEAK}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${APPLE_PROJECT_VERSION}"
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${BUILD_IOS_APP_IDENTIFIER}"
- XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/ios/app/main.entitlements"
+ XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/macos/app/main.entitlements"
XCODE_ATTRIBUTE_MARKETING_VERSION "${APPLE_PROJECT_VERSION}"
XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION "${CMAKE_PROJECT_VERSION_TWEAK}"
XCODE_ATTRIBUTE_PRODUCT_NAME "AmneziaVPN"
@@ -96,14 +96,14 @@ set_target_properties(${PROJECT} PROPERTIES
XCODE_EMBED_APP_EXTENSIONS networkextension
XCODE_ATTRIBUTE_CODE_SIGN_STYLE Automatic
- #XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual
+ # XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual
- #XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Distribution: Privacy Technologies OU (X7UJ388FXK)"
- #XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY[variant=Debug] "Apple Development"
+ # XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Distribution: Privacy Technologies OU (X7UJ388FXK)"
+ # XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY[variant=Debug] "Apple Development"
- #XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "Mac AppStore AmneziaVPN"
- #XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER[variant=Debug] "Mac AppStore AmneziaVPN"
+ # XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "Mac AppStore AmneziaVPN"
+ # XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER[variant=Debug] "Mac AppStore AmneziaVPN"
)
set_target_properties(${PROJECT} PROPERTIES
@@ -127,23 +127,23 @@ set(WG_APPLE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rd/amneziawg-apple/Sources)
target_sources(${PROJECT} PRIVATE
# ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/iosvpnprotocol.swift
${WG_APPLE_SOURCE_DIR}/WireGuardKitC/x25519.c
- ${CLIENT_ROOT_DIR}/platforms/ios/LogController.swift
- ${CLIENT_ROOT_DIR}/platforms/ios/Log.swift
- ${CLIENT_ROOT_DIR}/platforms/ios/LogRecord.swift
- ${CLIENT_ROOT_DIR}/platforms/ios/ScreenProtection.swift
- ${CLIENT_ROOT_DIR}/platforms/ios/VPNCController.swift
+ ${CLIENT_ROOT_DIR}/platforms/macos_ne/LogController.swift
+ ${CLIENT_ROOT_DIR}/platforms/macos_ne/Log.swift
+ ${CLIENT_ROOT_DIR}/platforms/macos_ne/LogRecord.swift
+ ${CLIENT_ROOT_DIR}/platforms/macos_ne/ScreenProtection.swift
+ ${CLIENT_ROOT_DIR}/platforms/macos_ne/VPNCController.swift
)
target_sources(${PROJECT} PRIVATE
- #${CMAKE_CURRENT_SOURCE_DIR}/ios/app/AmneziaVPNLaunchScreen.storyboard
- ${CMAKE_CURRENT_SOURCE_DIR}/ios/app/Media.xcassets
- ${CMAKE_CURRENT_SOURCE_DIR}/ios/app/PrivacyInfo.xcprivacy
+ #${CMAKE_CURRENT_SOURCE_DIR}/macos_ne/app/AmneziaVPNLaunchScreen.storyboard
+ ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/Media.xcassets
+ ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/PrivacyInfo.xcprivacy
)
set_property(TARGET ${PROJECT} APPEND PROPERTY RESOURCE
- #${CMAKE_CURRENT_SOURCE_DIR}/ios/app/AmneziaVPNLaunchScreen.storyboard
- ${CMAKE_CURRENT_SOURCE_DIR}/ios/app/Media.xcassets
- ${CMAKE_CURRENT_SOURCE_DIR}/ios/app/PrivacyInfo.xcprivacy
+ #${CMAKE_CURRENT_SOURCE_DIR}/macos/app/AmneziaVPNLaunchScreen.storyboard
+ ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/Media.xcassets
+ ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/PrivacyInfo.xcprivacy
)
add_subdirectory(macos/networkextension)
diff --git a/client/cmake/osxtools.cmake b/client/cmake/osxtools.cmake
index a28c9680..ff8c8a77 100644
--- a/client/cmake/osxtools.cmake
+++ b/client/cmake/osxtools.cmake
@@ -141,6 +141,7 @@ function(osx_codesign_target TARGET)
endif()
foreach(FILE ${CODESIGN_FILES})
+ message(STATUS "Signing ${TARGET}: ${FILE}")
add_custom_command(TARGET ${TARGET} POST_BUILD VERBATIM
COMMAND ${COMMENT_ECHO_COMMAND} "Signing ${TARGET}: ${FILE}"
COMMAND ${CODESIGN_BIN} ${CODESIGN_ARGS} ${FILE}
diff --git a/client/configurators/ssh_configurator.cpp b/client/configurators/ssh_configurator.cpp
index 308f5947..d21360e3 100644
--- a/client/configurators/ssh_configurator.cpp
+++ b/client/configurators/ssh_configurator.cpp
@@ -102,7 +102,9 @@ QProcessEnvironment SshConfigurator::prepareEnv()
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\cygwin;");
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\openvpn;");
#elif defined(Q_OS_MACX)
+#if !defined(MACOS_NE)
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "/Contents/MacOS");
+#endif
#endif
env.insert("PATH", pathEnvVar);
diff --git a/client/macos/app/AmneziaVPNLaunchScreen.storyboard b/client/macos/app/AmneziaVPNLaunchScreen.storyboard
new file mode 100644
index 00000000..92f79f7e
--- /dev/null
+++ b/client/macos/app/AmneziaVPNLaunchScreen.storyboard
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/macos/app/Info.plist.in b/client/macos/app/Info.plist.in
new file mode 100644
index 00000000..a10160be
--- /dev/null
+++ b/client/macos/app/Info.plist.in
@@ -0,0 +1,178 @@
+
+
+
+
+ CFBundleAllowMixedLocalizations
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ ${QT_INTERNAL_DOLLAR_VAR}{PRODUCT_NAME}
+ CFBundleExecutable
+ ${MACOSX_BUNDLE_EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${MACOSX_BUNDLE_GUI_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${MACOSX_BUNDLE_BUNDLE_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ ${MACOSX_BUNDLE_SHORT_VERSION_STRING}
+ CFBundleVersion
+ ${MACOSX_BUNDLE_BUNDLE_VERSION}
+ NSHumanReadableCopyright
+ ${MACOSX_BUNDLE_COPYRIGHT}
+ ITSAppUsesNonExemptEncryption
+
+ LSRequiresIPhoneOS
+
+ LSSupportsOpeningDocumentsInPlace
+
+ UILaunchStoryboardName
+ AmneziaVPNLaunchScreen
+ UIRequiredDeviceCapabilities
+
+ UIRequiresFullScreen
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIUserInterfaceStyle
+ Light
+ com.wireguard.ios.app_group_id
+ group.org.amnezia.AmneziaVPN
+ UIViewControllerBasedStatusBarAppearance
+
+ NSCameraUsageDescription
+ Amnezia VPN needs access to the camera for reading QR-codes.
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
+
+
+ CFBundleIcons
+
+ CFBundleIcons~ipad
+
+ UTImportedTypeDeclarations
+
+
+ UTTypeConformsTo
+
+ public.data
+
+ UTTypeDescription
+ Amnezia VPN config
+ UTTypeIconFiles
+
+ UTTypeIdentifier
+ org.amnezia.AmneziaVPN.amnezia-config
+ UTTypeTagSpecification
+
+ public.filename-extension
+
+ vpn
+
+ public.mime-type
+
+ text/plain
+
+
+
+
+ UTTypeConformsTo
+
+ public.data
+
+ UTTypeDescription
+ WireGuard config
+ UTTypeIconFiles
+
+ UTTypeIdentifier
+ org.amnezia.AmneziaVPN.wireguard-config
+ UTTypeTagSpecification
+
+ public.filename-extension
+
+ conf
+ cfg
+
+ public.mime-type
+
+ text/plain
+
+
+
+
+ UTTypeConformsTo
+
+ public.data
+
+ UTTypeDescription
+ OpenVPN config
+ UTTypeIconFiles
+
+ UTTypeIdentifier
+ org.amnezia.AmneziaVPN.openvpn-config
+ UTTypeTagSpecification
+
+ public.filename-extension
+
+ ovpn
+
+ public.mime-type
+
+ text/plain
+
+
+
+
+ UTTypeConformsTo
+
+ public.data
+
+ UTTypeDescription
+ AmneziaVPN backup file
+ UTTypeIconFiles
+
+ UTTypeIdentifier
+ org.amnezia.AmneziaVPN.backup-config
+ UTTypeTagSpecification
+
+ public.filename-extension
+
+ backup
+
+ public.mime-type
+
+ text/plain
+
+
+
+
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeName
+ Amnezia VPN config
+ LSHandlerRank
+ Alternate
+ LSItemContentTypes
+
+ org.amnezia.AmneziaVPN.amnezia-config
+ org.amnezia.AmneziaVPN.wireguard-config
+ org.amnezia.AmneziaVPN.openvpn-config
+ org.amnezia.AmneziaVPN.backup-config
+
+
+
+
+
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/100.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/100.png
new file mode 100644
index 00000000..bbe3d546
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/100.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/1024.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/1024.png
new file mode 100644
index 00000000..0f2ba915
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/1024.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/114.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/114.png
new file mode 100644
index 00000000..f88f66c7
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/114.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/120.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/120.png
new file mode 100644
index 00000000..51829dc1
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/120.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/144.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/144.png
new file mode 100644
index 00000000..0e28bd7b
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/144.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/152.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/152.png
new file mode 100644
index 00000000..81066df7
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/152.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/167.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/167.png
new file mode 100644
index 00000000..44858c5a
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/167.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/180.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/180.png
new file mode 100644
index 00000000..911f5491
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/180.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/20.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/20.png
new file mode 100644
index 00000000..bb44c366
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/20.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/29.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/29.png
new file mode 100644
index 00000000..bf9a2c19
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/29.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/40.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/40.png
new file mode 100644
index 00000000..dbcf6fad
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/40.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/50.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/50.png
new file mode 100644
index 00000000..83c3e6b7
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/50.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/57.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/57.png
new file mode 100644
index 00000000..f2a56e74
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/57.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/58.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/58.png
new file mode 100644
index 00000000..2714c6bf
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/58.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/60.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/60.png
new file mode 100644
index 00000000..a7303586
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/60.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/72.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/72.png
new file mode 100644
index 00000000..d0f20363
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/72.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/76.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/76.png
new file mode 100644
index 00000000..ccf90ddc
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/76.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/80.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/80.png
new file mode 100644
index 00000000..9f7b1037
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/80.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/87.png b/client/macos/app/Media.xcassets/AppIcon.appiconset/87.png
new file mode 100644
index 00000000..918e04f6
Binary files /dev/null and b/client/macos/app/Media.xcassets/AppIcon.appiconset/87.png differ
diff --git a/client/macos/app/Media.xcassets/AppIcon.appiconset/Contents.json b/client/macos/app/Media.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..3d771d98
--- /dev/null
+++ b/client/macos/app/Media.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,290 @@
+{
+ "images" : [
+ {
+ "filename" : "40.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "60.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "29.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "58.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "87.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "80.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "120.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "57.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "57x57"
+ },
+ {
+ "filename" : "114.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "57x57"
+ },
+ {
+ "filename" : "120.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "180.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "20.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "40.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "29.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "58.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "40.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "80.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "50.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "50x50"
+ },
+ {
+ "filename" : "100.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "50x50"
+ },
+ {
+ "filename" : "72.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "72x72"
+ },
+ {
+ "filename" : "144.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "72x72"
+ },
+ {
+ "filename" : "76.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "152.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "167.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "83.5x83.5"
+ },
+ {
+ "filename" : "1024.png",
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "notificationCenter",
+ "scale" : "2x",
+ "size" : "24x24",
+ "subtype" : "38mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "notificationCenter",
+ "scale" : "2x",
+ "size" : "27.5x27.5",
+ "subtype" : "42mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "companionSettings",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "companionSettings",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "notificationCenter",
+ "scale" : "2x",
+ "size" : "33x33",
+ "subtype" : "45mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "appLauncher",
+ "scale" : "2x",
+ "size" : "40x40",
+ "subtype" : "38mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "appLauncher",
+ "scale" : "2x",
+ "size" : "44x44",
+ "subtype" : "40mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "appLauncher",
+ "scale" : "2x",
+ "size" : "46x46",
+ "subtype" : "41mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "appLauncher",
+ "scale" : "2x",
+ "size" : "50x50",
+ "subtype" : "44mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "appLauncher",
+ "scale" : "2x",
+ "size" : "51x51",
+ "subtype" : "45mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "appLauncher",
+ "scale" : "2x",
+ "size" : "54x54",
+ "subtype" : "49mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "quickLook",
+ "scale" : "2x",
+ "size" : "86x86",
+ "subtype" : "38mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "quickLook",
+ "scale" : "2x",
+ "size" : "98x98",
+ "subtype" : "42mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "quickLook",
+ "scale" : "2x",
+ "size" : "108x108",
+ "subtype" : "44mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "quickLook",
+ "scale" : "2x",
+ "size" : "117x117",
+ "subtype" : "45mm"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "quickLook",
+ "scale" : "2x",
+ "size" : "129x129",
+ "subtype" : "49mm"
+ },
+ {
+ "idiom" : "watch-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ },
+ {
+ "idiom" : "car",
+ "scale" : "2x",
+ "size" : "60"
+ },
+ {
+ "idiom" : "car",
+ "scale" : "3x",
+ "size" : "60"
+ },
+ {
+ "idiom" : "watch",
+ "role" : "longLook",
+ "scale" : "2x",
+ "size" : "44x44",
+ "subtype" : "42mm"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/client/macos/app/Media.xcassets/Contents.json b/client/macos/app/Media.xcassets/Contents.json
new file mode 100644
index 00000000..73c00596
--- /dev/null
+++ b/client/macos/app/Media.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/client/macos/app/PrivacyInfo.xcprivacy b/client/macos/app/PrivacyInfo.xcprivacy
new file mode 100644
index 00000000..24e32f37
--- /dev/null
+++ b/client/macos/app/PrivacyInfo.xcprivacy
@@ -0,0 +1,33 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ 1C8F.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+
+
diff --git a/client/macos/app/launch.png b/client/macos/app/launch.png
new file mode 100644
index 00000000..175b1afc
Binary files /dev/null and b/client/macos/app/launch.png differ
diff --git a/client/macos/app/main.entitlements b/client/macos/app/main.entitlements
new file mode 100644
index 00000000..d9f00bb1
--- /dev/null
+++ b/client/macos/app/main.entitlements
@@ -0,0 +1,20 @@
+
+
+
+
+ com.apple.developer.networking.networkextension
+
+ packet-tunnel-provider
+
+ com.apple.security.application-groups
+
+ group.org.amnezia.AmneziaVPN
+
+ com.apple.security.files.user-selected.read-write
+
+ keychain-access-groups
+
+ $(AppIdentifierPrefix)group.org.amnezia.AmneziaVPN
+
+
+
diff --git a/client/macos/networkextension/CMakeLists.txt b/client/macos/networkextension/CMakeLists.txt
index 5ae76c44..1f63b0ab 100644
--- a/client/macos/networkextension/CMakeLists.txt
+++ b/client/macos/networkextension/CMakeLists.txt
@@ -30,7 +30,7 @@ set_target_properties(networkextension PROPERTIES
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/../../Frameworks"
- # XCODE_ATTRIBUTE_CODE_SIGN_STYLE Automatic
+ XCODE_ATTRIBUTE_CODE_SIGN_STYLE Automatic
# #XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual
# #XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Distribution: Privacy Technologies OU (X7UJ388FXK)"
@@ -187,7 +187,7 @@ target_sources(networkextension PRIVATE
target_include_directories(networkextension PRIVATE ${CLIENT_ROOT_DIR})
target_include_directories(networkextension PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
-target_link_libraries(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/ios/arm64/libwg-go.a)
+target_link_libraries(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/macos/x86_64/libwg-go.a)
# Print the root directory for debugging purposes
message("---------")
diff --git a/client/platforms/macos_ne/PacketTunnelProvider+OpenVPN.swift b/client/platforms/macos_ne/PacketTunnelProvider+OpenVPN.swift
index 3e0a4a07..bb002f27 100644
--- a/client/platforms/macos_ne/PacketTunnelProvider+OpenVPN.swift
+++ b/client/platforms/macos_ne/PacketTunnelProvider+OpenVPN.swift
@@ -47,7 +47,8 @@ extension PacketTunnelProvider {
let configuration = OpenVPNConfiguration()
configuration.fileContent = ovpnConfiguration
if str.contains("cloak") {
- configuration.setPTCloak()
+ // TODO disable cloak
+// configuration.setPTCloak()
}
let evaluation: OpenVPNConfigurationEvaluation?
diff --git a/client/platforms/macos_ne/iosnotificationhandler.mm b/client/platforms/macos_ne/iosnotificationhandler.mm
index 5759c892..a1aa3d8d 100644
--- a/client/platforms/macos_ne/iosnotificationhandler.mm
+++ b/client/platforms/macos_ne/iosnotificationhandler.mm
@@ -2,15 +2,14 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#include "platforms/ios/iosnotificationhandler.h"
+#include "platforms/macos_ne/iosnotificationhandler.h"
#import
#import
-//#import
-/*
+// Removed the UIResponder and UIApplicationDelegate references as these are not available in macOS
@interface IOSNotificationDelegate
- : UIResponder {
+ : NSObject {
IOSNotificationHandler* m_iosNotificationHandler;
}
@end
@@ -18,7 +17,7 @@
@implementation IOSNotificationDelegate
- (id)initWithObject:(IOSNotificationHandler*)notification {
- self = [super init];
+ self = [super init]; // Removed `super init` as it refers to UIResponder, which is iOS specific
if (self) {
m_iosNotificationHandler = notification;
}
@@ -30,7 +29,7 @@
withCompletionHandler:
(void (^)(UNNotificationPresentationOptions options))completionHandler {
Q_UNUSED(center)
- completionHandler(UNNotificationPresentationOptionAlert);
+ completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
}
- (void)userNotificationCenter:(UNUserNotificationCenter*)center
@@ -79,7 +78,7 @@ void IOSNotificationHandler::notify(NotificationHandler::Message type, const QSt
trigger:trigger];
UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
- center.delegate = id(m_delegate);
+ center.delegate = (id)m_delegate;
[center addNotificationRequest:request
withCompletionHandler:^(NSError* _Nullable error) {
@@ -87,4 +86,4 @@ void IOSNotificationHandler::notify(NotificationHandler::Message type, const QSt
NSLog(@"Local Notification failed");
}
}];
-}*/
+}
diff --git a/client/protocols/vpnprotocol.cpp b/client/protocols/vpnprotocol.cpp
index 056089b8..3b2375cb 100644
--- a/client/protocols/vpnprotocol.cpp
+++ b/client/protocols/vpnprotocol.cpp
@@ -109,7 +109,7 @@ VpnProtocol *VpnProtocol::factory(DockerContainer container, const QJsonObject &
#if defined(Q_OS_WINDOWS)
case DockerContainer::Ipsec: return new Ikev2Protocol(configuration);
#endif
-#if defined(Q_OS_WINDOWS) || defined(Q_OS_MACX) || (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID))
+#if defined(Q_OS_WINDOWS) || defined(Q_OS_MACX) and !defined MACOS_NE || (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID))
case DockerContainer::OpenVpn: return new OpenVpnProtocol(configuration);
case DockerContainer::Cloak: return new OpenVpnOverCloakProtocol(configuration);
case DockerContainer::ShadowSocks: return new ShadowSocksVpnProtocol(configuration);
diff --git a/client/translations/amneziavpn_ar_EG.ts b/client/translations/amneziavpn_ar_EG.ts
index e176d8eb..515abd56 100644
--- a/client/translations/amneziavpn_ar_EG.ts
+++ b/client/translations/amneziavpn_ar_EG.ts
@@ -258,18 +258,18 @@ Can't be disabled for current server
غير قادر علي فتح الملف
-
-
+
+ Invalid configuration fileملف تكوين غير صحيح
-
+ Scanned %1 of %2.تم فحص%1 من %2.
-
+ In the imported configuration, potentially dangerous lines were found:في التكوين المستورد، تم العثور على سطور يحتمل أن تكون خطرة:
@@ -401,28 +401,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNAmneziaVPN
-
+ VPN Connectedتم الاتصال
-
+ VPN Disconnectedتم إنهاء الاتصال
-
+ AmneziaVPN notificationإشعار من AmneziaVPN
-
+ Unsecured network detected: تم العثور علي شبكة غير مؤمنة:
@@ -2426,12 +2426,12 @@ Already installed containers were found on the server. All installed containers
عنوان خادم IP [:منفذ]
-
+ Continueواصل
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesستظل جميع البيانات التي تدخلها سرية للغاية ولن تتم مشاركتها أو الكشف عنها ل Amnezia أو أي طرف ثالث
@@ -2441,42 +2441,42 @@ Already installed containers were found on the server. All installed containers
-
+ SSH Username
-
+ Password or SSH private keyكلمة مرور او مفتاح SSH خاص
-
+ How to run your VPN serverكيف تقوم بتشغيل خادم ال VPN الخاص بك
-
+ Where to get connection data, step-by-step instructions for buying a VPSاين تحصل علي بيانات الاتصال, تعليمات خطوة ب خطوة لشراء VPS
-
+ Ip address cannot be emptyلا يمكن لعنوان IP ان يكون فارغ
-
+ Enter the address in the format 255.255.255.255:88ادخل العنوان في شكل 255.255.255.255:88
-
+ Login cannot be emptyتسجيل دخول لا يمكن ان يكون فارغ
-
+ Password/private key cannot be emptyكلمة مرور/مفتاح خاص لأ يمكن ان يكونو فارغين
@@ -2791,42 +2791,47 @@ Already installed containers were found on the server. All installed containers
البيانات المٌرسلة: %1
-
+
+ Allowed IPs: %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إلغاء
@@ -4100,12 +4105,12 @@ While it offers a blend of security, stability, and speed, it's essential t
main2
-
+ Private key passphraseعبارة المرور الخاصة بالمفتاح
-
+ Saveاحفظ
diff --git a/client/translations/amneziavpn_fa_IR.ts b/client/translations/amneziavpn_fa_IR.ts
index 6cd78e77..468f16b4 100644
--- a/client/translations/amneziavpn_fa_IR.ts
+++ b/client/translations/amneziavpn_fa_IR.ts
@@ -263,18 +263,18 @@ Can't be disabled for current server
نمیتوان فایل را باز کرد.
-
-
+
+ Invalid configuration fileفایل پیکربندی نامعتبر است.
-
+ Scanned %1 of %2.ارزیابی %1 از %2.
-
+ In the imported configuration, potentially dangerous lines were found:در پیکربندی وارد شده، خطوطی که ممکن است خطرناک باشند، یافت شدند:
@@ -405,28 +405,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNAmneziaVPN
-
+ VPN Connectedویپیان وصل شد
-
+ VPN Disconnectedویپیان قطع شد
-
+ AmneziaVPN notificationاخطار AmneziaVPN
-
+ Unsecured network detected: شبکه ناامن شناسایی شد:
@@ -2544,12 +2544,12 @@ It's okay as long as it's from someone you trust.
آدرس آیپی سرور (:پورت)
-
+ Continueادامه
-
+ Enter the address in the format 255.255.255.255:88آدرس را با فرمت 255.255.255.255:88 وارد کنید
@@ -2564,42 +2564,42 @@ It's okay as long as it's from someone you trust.
-
+ SSH Username
-
+ Password or SSH private keyرمز عبور یا کلید خصوصی SSH
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesتمام دادههایی که شما وارد میکنید به شدت محرمانه است و با Amnezia یا هر شخص ثالث دیگری به اشتراک گذاشته نمیشود
-
+ How to run your VPN serverچگونه سرور VPN خود را اجرا کنید
-
+ Where to get connection data, step-by-step instructions for buying a VPSدادههای اتصال را از کجا دریافت کنید و دستورالعملهای مرحله به مرحله برای خرید یک VPS
-
+ Ip address cannot be emptyآدرس آیپی نمیتواند خالی باشد
-
+ Login cannot be emptyنامکاربری نمیتواند خالی باشد
-
+ Password/private key cannot be emptyپسورد یا کلید خصوصی نمیتواند خالی باشد
@@ -2958,47 +2958,52 @@ It's okay as long as it's from someone you trust.
Data sent: %1دادههای ارسال شده: %1
+
+
+ Allowed IPs: %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کنسل
@@ -4316,12 +4321,12 @@ For more detailed information, you can
main2
-
+ Private key passphraseعبارت کلید خصوصی
-
+ Saveذخیره
diff --git a/client/translations/amneziavpn_hi_IN.ts b/client/translations/amneziavpn_hi_IN.ts
index ab459b7c..92cebd8c 100644
--- a/client/translations/amneziavpn_hi_IN.ts
+++ b/client/translations/amneziavpn_hi_IN.ts
@@ -259,18 +259,18 @@ Can't be disabled for current server
फाइल खोलने में असमर्थ
-
-
+
+ Invalid configuration fileअमान्य कॉन्फ़िगरेशन फ़ाइल
-
+ Scanned %1 of %2.%2 में से %1 स्कैन किया गया.
-
+ In the imported configuration, potentially dangerous lines were found:
@@ -401,28 +401,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNAmneziaVPN
-
+ VPN Connectedकनेक्ट
-
+ VPN Disconnectedकनेक्ट
-
+ AmneziaVPN notificationAmneziaVPN अधिसूचना
-
+ Unsecured network detected: असुरक्षित नेटवर्क का पता चला:
@@ -2494,12 +2494,12 @@ Already installed containers were found on the server. All installed containers
सर्वर आईपी पता [:पोर्ट]
-
+ Continueजारी रखना
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesआपके द्वारा दर्ज किया गया सभी डेटा पूरी तरह से गोपनीय रहेगा और एमनेज़िया या किसी तीसरे पक्ष को साझा या प्रकट नहीं किया जाएगा
@@ -2509,42 +2509,42 @@ Already installed containers were found on the server. All installed containers
255.255.255.255:22
-
+ SSH UsernameSSH उपयोगकर्ता नाम
-
+ Password or SSH private keyपासवर्ड या SSH निजी कुंजी
-
+ How to run your VPN server
-
+ Where to get connection data, step-by-step instructions for buying a VPS
-
+ Ip address cannot be emptyआईपी पता खाली नहीं हो सकता
-
+ Enter the address in the format 255.255.255.255:88पता 255.255.255.255:88 प्रारूप में दर्ज करें
-
+ Login cannot be emptyलॉगिन खाली नहीं हो सकता
-
+ Password/private key cannot be emptyपासवर्ड/निजी कुंजी खाली नहीं हो सकती
@@ -2876,47 +2876,52 @@ Already installed containers were found on the server. All installed containers
Data sent: %1डेटा भेजा गया: %1
+
+
+ Allowed IPs: %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रद्द करना
@@ -4208,12 +4213,12 @@ While it offers a blend of security, stability, and speed, it's essential t
main2
-
+ Private key passphraseनिजी कुंजी पासफ़्रेज़
-
+ Saveसहेजें
diff --git a/client/translations/amneziavpn_my_MM.ts b/client/translations/amneziavpn_my_MM.ts
index 3e964cc9..7479e454 100644
--- a/client/translations/amneziavpn_my_MM.ts
+++ b/client/translations/amneziavpn_my_MM.ts
@@ -259,18 +259,18 @@ Can't be disabled for current server
ဖိုင်ကိုဖွင့်၍မရပါ
-
-
+
+ Invalid configuration fileConfiguration ဖိုင် မမှန်ကန်ပါ
-
+ Scanned %1 of %2.%2 ၏ %1 ကို စကင်န်ဖတ်ထားသည်.
-
+ In the imported configuration, potentially dangerous lines were found:တင်သွင်းသည့် configuration တွင်၊ အန္တရာယ်ရှိနိုင်သည့်စာလိုင်းများကို တွေ့ရှိခဲ့သည်:
@@ -401,28 +401,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNAmneziaVPN
-
+ VPN ConnectedVPN ချိတ်ဆက်ထားပါပြီ
-
+ VPN DisconnectedVPN ဖြုတ်လိုက်ပါပြီ
-
+ AmneziaVPN notificationAmneziaVPN နိုတီ
-
+ Unsecured network detected: လုံခြုံမှုမရှိသောကွန်ရက်မှန်း ထောက်လှန်းမိသည်:
@@ -2430,12 +2430,12 @@ Already installed containers were found on the server. All installed containers
ဆာဗာ IP လိပ်စာ [:port]
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Enter the address in the format 255.255.255.255:88လိပ်စာကို 255.255.255.255:88 ဖော်မတ်ဖြင့် ထည့်ပါ
@@ -2450,42 +2450,42 @@ Already installed containers were found on the server. All installed containers
255.255.255.255:22
-
+ SSH UsernameSSH အသုံးပြုသူအမည်
-
+ Password or SSH private keyစကားဝှက် သိုမဟုတ် SSH private key
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesသင်ထည့်သွင်းသည့်ဒေတာအားလုံးကို တင်းကြပ်လုံခြုံစွာလျှို့ဝှက်ထားမည်ဖြစ်ပြီး Amnezia သို့မဟုတ် မည်သည့်ပြင်ပအဖွဲ့အစည်းကိုမျှ မျှဝေမည် သို့မဟုတ် ထုတ်ဖော်မည်မဟုတ်ပါ
-
+ How to run your VPN serverသင်၏ဆာဗာကို လည်ပတ်ပုံလည်ပတ်နည်း
-
+ Where to get connection data, step-by-step instructions for buying a VPSချိတ်ဆက်မှုဒေတာကို ဘယ်မှာရနိုင်မလဲ၊ VPS ဝယ်ယူပုံဝယ်ယူနည်းအတွက် အဆင့်ဆင့် ညွှန်ကြားချက်များ
-
+ Ip address cannot be emptyIP လိပ်စာသည် ဗလာမဖြစ်ရပါ
-
+ Login cannot be emptyလော့ဂ်အင်အချက်အလက်သည် ဗလာမဖြစ်ရပါ
-
+ Password/private key cannot be emptyစကားဝှက်/private key သည် ဗလာမဖြစ်ရပါ
@@ -2825,42 +2825,47 @@ Already installed containers were found on the server. All installed containers
ပေးပို့လိုက်သည့်ဒေတာ: %1
-
+
+ Allowed IPs: %1
+
+
+
+ Renameအမည်ပြောင်းမည်
-
+ Client nameကလိုင်းရင့်အမည်
-
+ Saveသိမ်းဆည်းမည်
-
+ Revokeပြန်ရုပ်သိမ်းမည်
-
+ Revoke the config for a user - %1?အသုံးပြုသူ %1 အတွက် config ကို ပြန်လည်ရုပ်သိမ်းမည်လား?
-
+ The user will no longer be able to connect to your server.ဤအသုံးပြုသူသည် သင့်ဆာဗာသို့ ချိတ်ဆက်နိုင်တော့မည်မဟုတ်ပါ.
-
+ Continueဆက်လက်လုပ်ဆောင်မည်
-
+ Cancelပယ်ဖျက်မည်
@@ -4105,12 +4110,12 @@ For more detailed information, you can
main2
-
+ Private key passphraseကိုယ်ပိုင် key စကားဝှက်
-
+ Saveသိမ်းဆည်းမည်
diff --git a/client/translations/amneziavpn_ru_RU.ts b/client/translations/amneziavpn_ru_RU.ts
index 2fb21259..b8f1a242 100644
--- a/client/translations/amneziavpn_ru_RU.ts
+++ b/client/translations/amneziavpn_ru_RU.ts
@@ -263,18 +263,18 @@ Can't be disabled for current server
Невозможно открыть файл
-
-
+
+ Invalid configuration fileНеверный файл конфигурации
-
+ Scanned %1 of %2.Отсканировано %1 из %2.
-
+ In the imported configuration, potentially dangerous lines were found:В импортированной конфигурации были обнаружены потенциально опасные строки:
@@ -405,28 +405,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNAmneziaVPN
-
+ VPN ConnectedVPN подключен
-
+ VPN DisconnectedVPN выключен
-
+ AmneziaVPN notificationУведомление AmneziaVPN
-
+ Unsecured network detected: Обнаружена незащищенная сеть:
@@ -2628,7 +2628,7 @@ It's okay as long as it's from someone you trust.
Password / SSH private key
-
+ ContinueПродолжить
@@ -2638,7 +2638,7 @@ and will not be shared or disclosed to the Amnezia or any third parties
Все данные, которые вы вводите, останутся строго конфиденциальными и не будут переданы или раскрыты Amnezia или каким-либо третьим лицам
-
+ Enter the address in the format 255.255.255.255:88Введите адрес в формате 255.255.255.255:88
@@ -2657,42 +2657,42 @@ and will not be shared or disclosed to the Amnezia or any third parties
255.255.255.255:22
-
+ SSH UsernameИмя пользователя SSH
-
+ Password or SSH private keyПароль или закрытый ключ SSH
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesВсе данные, которые вы вводите, останутся строго конфиденциальными и не будут переданы или раскрыты Amnezia или каким-либо третьим лицам
-
+ How to run your VPN serverКак создать VPN на собственном сервере
-
+ Where to get connection data, step-by-step instructions for buying a VPSГде взять данные для подключения, пошаговые инстуркции по покупке VPS
-
+ Ip address cannot be emptyПоле с IP-адресом не может быть пустым
-
+ Login cannot be emptyПоле с логином не может быть пустым
-
+ Password/private key cannot be emptyПоле с паролем/закрытым ключом не может быть пустым
@@ -3087,47 +3087,52 @@ and will not be shared or disclosed to the Amnezia or any third parties
Data sent: %1Отправлено данных: %1
+
+
+ Allowed IPs: %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Отменить
@@ -4547,12 +4552,12 @@ This means that AmneziaWG keeps the fast performance of the original while addin
main2
-
+ Private key passphraseПарольная фраза для закрытого ключа
-
+ SaveСохранить
diff --git a/client/translations/amneziavpn_uk_UA.ts b/client/translations/amneziavpn_uk_UA.ts
index c7195119..73a731ec 100644
--- a/client/translations/amneziavpn_uk_UA.ts
+++ b/client/translations/amneziavpn_uk_UA.ts
@@ -290,18 +290,18 @@ Can't be disabled for current server
Неможливо відкрити файл
-
-
+
+ Invalid configuration fileНедійсний файл конфігурації
-
+ Scanned %1 of %2.Відскановано %1 з %2.
-
+ In the imported configuration, potentially dangerous lines were found:У імпортованій конфігурації знайдено потенційно небезпечні рядки:
@@ -431,28 +431,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNAmneziaVPN
-
+ VPN ConnectedVPN Підключено
-
+ VPN DisconnectedVPN Вимкнено
-
+ AmneziaVPN notificationСповіщення AmneziaVPN
-
+ Unsecured network detected: Знайдена не захищена мережа:
@@ -2714,7 +2714,7 @@ It's okay as long as it's from someone you trust.
Password / SSH private key
-
+ ContinueПродовжити
@@ -2725,7 +2725,7 @@ and will not be shared or disclosed to the Amnezia or any third parties
і не будуть передані чи розголошені Amnezia або будь-яким третім особам
-
+ Enter the address in the format 255.255.255.255:88Введіть адресу в форматі 255.255.255.255:88
@@ -2744,42 +2744,42 @@ and will not be shared or disclosed to the Amnezia or any third parties
255.255.255.255:22
-
+ SSH UsernameSSH Username
-
+ Password or SSH private keyПароль або SSH ключ
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesУсі дані, які ви вводите, залишатимуться суворо конфіденційними та не будуть передані чи розголошені Amnezia або будь-яким третім особам
-
+ How to run your VPN serverЯк запустити ваш VPN-сервер
-
+ Where to get connection data, step-by-step instructions for buying a VPSДе отримати дані для підключення: покрокові інструкції з придбання VPS
-
+ Ip address cannot be emptyПоле IP address не може бути пустим
-
+ Login cannot be emptyПоле Login не може бути пустим
-
+ Password/private key cannot be emptyПоле Password/Private key не може бути пустим
@@ -3182,47 +3182,52 @@ and will not be shared or disclosed to the Amnezia or any third parties
Data sent: %1Відправлено даних: %1
+
+
+ Allowed IPs: %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Відмінити
@@ -4624,12 +4629,12 @@ This means that AmneziaWG keeps the fast performance of the original while addin
main2
-
+ Private key passphraseПароль для особистого ключа
-
+ SaveЗберегти
diff --git a/client/translations/amneziavpn_ur_PK.ts b/client/translations/amneziavpn_ur_PK.ts
index cf445bfa..5faa241a 100644
--- a/client/translations/amneziavpn_ur_PK.ts
+++ b/client/translations/amneziavpn_ur_PK.ts
@@ -257,18 +257,18 @@ Can't be disabled for current server
فائل کو کھولنے سے قاصر ہے
-
-
+
+ Invalid configuration fileغلط کنفیگریشن فائل
-
+ Scanned %1 of %2.سکین%1 کی%2.
-
+ In the imported configuration, potentially dangerous lines were found:
@@ -399,30 +399,30 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPNThe translation of "AmneziaVPN" in Urdu would be:
امنیزیا وی پی ای
-
+ VPN Connectedوی پی این متصل ہوگیا
-
+ VPN Disconnectedوی پی این منقطع ہوگیا
-
+ AmneziaVPN notificationامنیزیا وی پی این کی اطلاعات
-
+ Unsecured network detected: غیر محفوظ نیٹ ورک کا پتہ لگایا گیا ہے:
@@ -2498,12 +2498,12 @@ Already installed containers were found on the server. All installed containers
سرور آئی پی پتہ [:پورٹ]
-
+ Continueبراہ کرم جاری رکھیں
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third partiesآپ جو ڈیٹا داخل کریں گے وہ بالکل خفیہ رہے گا اور نہ تو امنیزیا یا کسی تیسری شخصیت کے ساتھ اشتراک کیا جائے گا
@@ -2513,42 +2513,42 @@ Already installed containers were found on the server. All installed containers
-
+ SSH Usernameایس ایس ایچ صارف نام
-
+ Password or SSH private keyپاس ورڈ یا SSH نجی کلید
-
+ How to run your VPN server
-
+ Where to get connection data, step-by-step instructions for buying a VPS
-
+ Ip address cannot be emptyآئی پی پتہ خالی نہیں ہو سکتا
-
+ Enter the address in the format 255.255.255.255:88ایڈریس درج کریں فارمیٹ 255.255.255.255:88
-
+ Login cannot be emptyلاگ ان نام خالی نہیں ہو سکتا
-
+ Password/private key cannot be emptyپاس ورڈ یا نجی کلید خالی نہیں ہو سکتی
@@ -2880,47 +2880,52 @@ Already installed containers were found on the server. All installed containers
Data sent: %1
+
+
+ Allowed IPs: %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منسوخ
@@ -4154,12 +4159,12 @@ While it offers a blend of security, stability, and speed, it's essential t
main2
-
+ Private key passphraseنجی کلید پاس فریز
-
+ Saveمحفوظ کریں
diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts
index 39b6bee0..8015c249 100644
--- a/client/translations/amneziavpn_zh_CN.ts
+++ b/client/translations/amneziavpn_zh_CN.ts
@@ -262,18 +262,18 @@ Can't be disabled for current server
-
-
+
+ Invalid configuration file
-
+ Scanned %1 of %2.扫描 %1 of %2.
-
+ In the imported configuration, potentially dangerous lines were found:
@@ -427,28 +427,28 @@ Already installed containers were found on the server. All installed containers
NotificationHandler
-
-
+
+ AmneziaVPN
-
+ VPN Connected已连接到VPN
-
+ VPN Disconnected已从VPN断开
-
+ AmneziaVPN notificationAmneziaVPN 提示
-
+ Unsecured network detected: 发现不安全网络
@@ -2673,12 +2673,12 @@ It's okay as long as it's from someone you trust.
密码 或 私钥
-
+ Continue继续
-
+ All data you enter will remain strictly confidential and will not be shared or disclosed to the Amnezia or any third parties您输入的所有数据将严格保密,不会与 Amnezia 或任何第三方共享或披露
@@ -2694,42 +2694,42 @@ and will not be shared or disclosed to the Amnezia or any third parties
-
+ SSH UsernameSSH 用户名
-
+ Password or SSH private key密码或 SSH 私钥
-
+ How to run your VPN server
-
+ Where to get connection data, step-by-step instructions for buying a VPS
-
+ Ip address cannot be emptyIP不能为空
-
+ Enter the address in the format 255.255.255.255:88按照这种格式输入 255.255.255.255:88
-
+ Login cannot be empty账号不能为空
-
+ Password/private key cannot be empty密码或私钥不能为空
@@ -3086,47 +3086,52 @@ and will not be shared or disclosed to the Amnezia or any third parties
Data sent: %1
+
+
+ Allowed IPs: %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取消
@@ -4610,12 +4615,12 @@ While it offers a blend of security, stability, and speed, it's essential t
main2
-
+ Private key passphrase私钥密码
-
+ Save保存
diff --git a/client/ui/controllers/pageController.cpp b/client/ui/controllers/pageController.cpp
index bbcc55a1..a00eba43 100644
--- a/client/ui/controllers/pageController.cpp
+++ b/client/ui/controllers/pageController.cpp
@@ -24,7 +24,7 @@ PageController::PageController(const QSharedPointer &serversModel,
AndroidController::instance()->setNavigationBarColor(initialPageNavigationBarColor);
#endif
-#if defined Q_OS_MACX
+#if defined Q_OS_MACX and !defined MACOS_NE
connect(this, &PageController::raiseMainWindow, []() { setDockIconVisible(true); });
connect(this, &PageController::hideMainWindow, []() { setDockIconVisible(false); });
#endif
@@ -114,7 +114,7 @@ void PageController::showOnStartup()
} else {
#if defined(Q_OS_WIN) || (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID))
emit hideMainWindow();
-#elif defined Q_OS_MACX
+#elif defined Q_OS_MACX and !defined MACOS_NE
setDockIconVisible(false);
#endif
}
diff --git a/client/ui/notificationhandler.cpp b/client/ui/notificationhandler.cpp
index 5efb45c4..ae588600 100644
--- a/client/ui/notificationhandler.cpp
+++ b/client/ui/notificationhandler.cpp
@@ -5,12 +5,15 @@
#include
#include "notificationhandler.h"
-#if defined(Q_OS_IOS)
+#if defined(Q_OS_IOS) && !defined(MACOS_NE)
# include "platforms/ios/iosnotificationhandler.h"
+#elif defined(MACOS_NE)
+# include "platforms/macos_ne/iosnotificationhandler.h"
#else
# include "systemtray_notificationhandler.h"
#endif
+
// static
NotificationHandler* NotificationHandler::create(QObject* parent) {
#if defined(Q_OS_IOS)