diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 591c6a19..084f5ff7 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -305,13 +305,14 @@ if(IOS) find_library(FW_AUTHENTICATIONSERVICES AuthenticationServices) find_library(FW_UIKIT UIKit) + find_library(FW_AVFOUNDATION AVFoundation) find_library(FW_FOUNDATION Foundation) find_library(FW_STOREKIT StoreKit) find_library(FW_USERNOTIFICATIONS UserNotifications) set(LIBS ${LIBS} ${FW_AUTHENTICATIONSERVICES} ${FW_UIKIT} - ${FW_FOUNDATION} ${FW_STOREKIT} + ${FW_AVFOUNDATION} ${FW_FOUNDATION} ${FW_STOREKIT} ${FW_USERNOTIFICATIONS} ) @@ -465,14 +466,13 @@ if(IOS) PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" ) -target_sources(${PROJECT} PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/ios/Media.xcassets - -) -set_source_files_properties( - ${CMAKE_CURRENT_LIST_DIR}/ios/Media.xcassets - PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" -) + target_sources(${PROJECT} PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/ios/Media.xcassets + ) + set_source_files_properties( + ${CMAKE_CURRENT_LIST_DIR}/ios/Media.xcassets + PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" + ) add_subdirectory(ios/networkextension) add_dependencies(${PROJECT} networkextension) @@ -500,19 +500,13 @@ set_source_files_properties( ) set_target_properties (${PROJECT} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual) - set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "match AppStore org.amnezia.AmneziaVPN") - set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER[variant=Debug] "match Development org.amnezia.AmneziaVPN") - - set_target_properties ("networkextension" PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual) - + set_target_properties("networkextension" PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual) set_target_properties("networkextension" PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "match AppStore org.amnezia.AmneziaVPN.network-extension") - set_target_properties("networkextension" PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER[variant=Debug] "match Development org.amnezia.AmneziaVPN.network-extension") - endif() if(ANDROID) diff --git a/client/android/build.gradle b/client/android/build.gradle index 94604ad8..16507a89 100644 --- a/client/android/build.gradle +++ b/client/android/build.gradle @@ -135,7 +135,7 @@ android { defaultConfig { resConfig "en" minSdkVersion = 24 - targetSdkVersion = 30 + targetSdkVersion = 31 versionCode 10 // Change to a higher number versionName "2.0.10" // Change to a higher number diff --git a/client/android/shadowsocks/build.gradle b/client/android/shadowsocks/build.gradle index d87139fe..69ebd0bd 100644 --- a/client/android/shadowsocks/build.gradle +++ b/client/android/shadowsocks/build.gradle @@ -53,7 +53,7 @@ dependencies { implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" implementation "androidx.room:room-runtime:2.2.5" // runtime implementation "androidx.preference:preference:1.1.0" - implementation "androidx.work:work-runtime-ktx:2.3.4" + implementation "androidx.work:work-runtime-ktx:2.7.1" implementation "androidx.browser:browser:1.3.0-alpha01" implementation "androidx.constraintlayout:constraintlayout:1.1.3" implementation "com.google.android.material:material:1.2.0-alpha05" diff --git a/client/android/shadowsocks/src/main/AndroidManifest.xml b/client/android/shadowsocks/src/main/AndroidManifest.xml index 9769ab7a..ee498ab8 100644 --- a/client/android/shadowsocks/src/main/AndroidManifest.xml +++ b/client/android/shadowsocks/src/main/AndroidManifest.xml @@ -68,7 +68,8 @@ android:name="org.amnezia.vpn.shadowsocks.core.BootReceiver" android:directBootAware="true" android:enabled="false" - android:process=":QtOnlyProcess"> + android:process=":QtOnlyProcess" + android:exported="true"> diff --git a/client/android/shadowsocks/src/main/java/org/amnezia/vpn/shadowsocks/core/Core.kt b/client/android/shadowsocks/src/main/java/org/amnezia/vpn/shadowsocks/core/Core.kt index 170bfb75..93bfcacc 100644 --- a/client/android/shadowsocks/src/main/java/org/amnezia/vpn/shadowsocks/core/Core.kt +++ b/client/android/shadowsocks/src/main/java/org/amnezia/vpn/shadowsocks/core/Core.kt @@ -84,8 +84,9 @@ object Core { fun init(app: Application, configureClass: KClass) { Core.app = app configureIntent = { - PendingIntent.getActivity(it, 0, Intent(it, configureClass.java) - .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT), 0) + PendingIntent.getActivity(it, 0, + Intent(it, configureClass.java).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT), + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) } if (Build.VERSION.SDK_INT >= 24) { // migrate old files @@ -99,7 +100,6 @@ object Core { // overhead of debug mode is minimal: https://github.com/Kotlin/kotlinx.coroutines/blob/f528898/docs/debugging.md#debug-mode System.setProperty(DEBUG_PROPERTY_NAME, DEBUG_PROPERTY_VALUE_ON) - WorkManager.initialize(deviceStorage, Configuration.Builder().build()) // handle data restored/crash if (Build.VERSION.SDK_INT >= 24 && DataStore.directBootAware && diff --git a/client/android/src/org/amnezia/vpn/NotificationUtil.kt b/client/android/src/org/amnezia/vpn/NotificationUtil.kt index 15e706ed..d2808d5d 100644 --- a/client/android/src/org/amnezia/vpn/NotificationUtil.kt +++ b/client/android/src/org/amnezia/vpn/NotificationUtil.kt @@ -99,7 +99,7 @@ object NotificationUtil { val mainActivityName = "org.amnezia.vpn.qt.VPNActivity" val activity = Class.forName(mainActivityName) val intent = Intent(service, activity) - val pendingIntent = PendingIntent.getActivity(service, 0, intent, 0) + val pendingIntent = PendingIntent.getActivity(service, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT) // Build our notification sNotificationBuilder?.let { it.setSmallIcon(org.amnezia.vpn.R.drawable.ic_amnezia_round) diff --git a/client/core/servercontroller.cpp b/client/core/servercontroller.cpp index 01a47cc2..e0847dba 100644 --- a/client/core/servercontroller.cpp +++ b/client/core/servercontroller.cpp @@ -922,7 +922,7 @@ ErrorCode ServerController::getAlreadyInstalledContainers(const ServerCredential if (containerInfo.isEmpty()) { continue; } - const static QRegularExpression containerAndPortRegExp("(amnezia[-a-z]*).*?>([0-9]*)/(udp|tcp).*"); + const static QRegularExpression containerAndPortRegExp("(amnezia[-a-z]*).*?:([0-9]*)->[0-9]*/(udp|tcp).*"); QRegularExpressionMatch containerAndPortMatch = containerAndPortRegExp.match(containerInfo); if (containerAndPortMatch.hasMatch()) { QString name = containerAndPortMatch.captured(1); diff --git a/client/server_scripts/install_docker.sh b/client/server_scripts/install_docker.sh index baff7cb6..bb14e4cf 100644 --- a/client/server_scripts/install_docker.sh +++ b/client/server_scripts/install_docker.sh @@ -6,4 +6,5 @@ if [[ -f "$pm_apt" ]]; then export DEBIAN_FRONTEND=noninteractive; fi;\ if [[ -z "$docker_service" ]]; then sudo $pm update -y -q; sudo $pm install -y -q curl $docker_pkg; fi;\ docker_service=$(systemctl list-units --full -all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\ if [[ -z "$docker_service" ]]; then sleep 5 && sudo systemctl start docker && sleep 5; fi;\ +if [[ -f "$pm_yum" ]]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\ docker --version diff --git a/client/ui/pages_logic/ServerListLogic.cpp b/client/ui/pages_logic/ServerListLogic.cpp index 79d13c8b..e91b1e33 100644 --- a/client/ui/pages_logic/ServerListLogic.cpp +++ b/client/ui/pages_logic/ServerListLogic.cpp @@ -21,6 +21,7 @@ void ServerListLogic::onServerListPushbuttonDefaultClicked(int index) void ServerListLogic::onServerListPushbuttonSettingsClicked(int index) { uiLogic()->m_selectedServerIndex = index; + uiLogic()->m_installCredentials = m_settings->serverCredentials(index); uiLogic()->goToPage(Page::ServerSettings); } diff --git a/client/ui/qml/Pages/PageSetupWizardHighLevel.qml b/client/ui/qml/Pages/PageSetupWizardHighLevel.qml index 8b4bd322..e0f194ff 100644 --- a/client/ui/qml/Pages/PageSetupWizardHighLevel.qml +++ b/client/ui/qml/Pages/PageSetupWizardHighLevel.qml @@ -54,12 +54,12 @@ You SHOULD set this website address to some foreign website which is not blocked text: WizardLogic.lineEditHighWebsiteMaskingText onEditingFinished: { let _text = website_masking.text - _text.replace("http://", ""); - _text.replace("https://", ""); + _text = _text.replace("http://", ""); + _text = _text.replace("https://", ""); if (!_text) { return } - _text = _text.split("/").first(); + _text = _text.split("/")[0]; WizardLogic.lineEditHighWebsiteMaskingText = _text } onAccepted: { diff --git a/client/vpnconnection.cpp b/client/vpnconnection.cpp index 4ff67a07..e01f7e61 100644 --- a/client/vpnconnection.cpp +++ b/client/vpnconnection.cpp @@ -105,8 +105,8 @@ void VpnConnection::onConnectionStateChanged(VpnProtocol::VpnConnectionState sta } else { m_isIOSConnected = false; - m_receivedBytes = 0; - m_sentBytes = 0; +// m_receivedBytes = 0; +// m_sentBytes = 0; } #endif emit connectionStateChanged(state);