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/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/ui/controllers/pageController.cpp b/client/ui/controllers/pageController.cpp
index d515df49..01d73f70 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)