diff --git a/build.gradle b/build.gradle index a750949c43aa3f1d671fe70c0969d49ac79443fa..ec0443d6550d9ad17bbace116ef8b491ac40a8aa 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { ext.kotlin_version = "1.6.10" ext.orbot_version = "orbot-16.6.2" - ext.advanced_privacy_version = "1.2.0" + ext.advanced_privacy_version = "1.3.0" repositories { google() diff --git a/privacymoduletor/src/main/java/foundation/e/privacymodules/ipscramblermodule/IpScramblerModule.kt b/privacymoduletor/src/main/java/foundation/e/privacymodules/ipscramblermodule/IpScramblerModule.kt index 2e9be19bef9bf380ac37221ee5705a7b3a158d8d..faabc8dee8519a1430189b90b862e485b3848449 100644 --- a/privacymoduletor/src/main/java/foundation/e/privacymodules/ipscramblermodule/IpScramblerModule.kt +++ b/privacymoduletor/src/main/java/foundation/e/privacymodules/ipscramblermodule/IpScramblerModule.kt @@ -32,8 +32,8 @@ import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule.Listener import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule.Status import java.security.InvalidParameterException -import java.util.* import org.torproject.android.service.OrbotConstants +import org.torproject.android.service.OrbotConstants.ACTION_STOP_FOREGROUND_TASK import org.torproject.android.service.OrbotService import org.torproject.android.service.util.Prefs @@ -56,6 +56,18 @@ class IpScramblerModule(private val context: Context): IIpScramblerModule { private val localBroadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val action = intent.action ?: return + if (action == OrbotConstants.ACTION_RUNNING_SYNC) { + try { + intent.getStringExtra(OrbotConstants.EXTRA_STATUS)?.let { + val newStatus = Status.valueOf(it) + currentStatus = newStatus + } + } catch (e: Exception) { + Log.e(TAG, "Can't parse Orbot service status.") + } + return + } + val msg = messageHandler.obtainMessage() msg.obj = action msg.data = intent.extras @@ -168,8 +180,7 @@ class IpScramblerModule(private val context: Context): IIpScramblerModule { ).commit() if (isServiceRunning()) { - sendIntentToService(OrbotConstants.ACTION_STOP_VPN) - sendIntentToService(OrbotConstants.ACTION_START_VPN) + sendIntentToService(OrbotConstants.ACTION_RESTART_VPN) } } @@ -218,12 +229,19 @@ class IpScramblerModule(private val context: Context): IIpScramblerModule { } override fun stop() { + updateStatus(Status.STOPPING) + Prefs.putUseVpn(false) Prefs.putStartOnBoot(false) sendIntentToService(OrbotConstants.ACTION_STOP_VPN) - sendIntentToService(OrbotConstants.ACTION_STOP) - context.stopService(Intent(context, OrbotService::class.java)) + sendIntentToService( + action = OrbotConstants.ACTION_STOP, + extra = Bundle().apply { putBoolean(ACTION_STOP_FOREGROUND_TASK, true) } + ) + Handler(Looper.getMainLooper()).postDelayed({ + requestStatus() + }, 1000) } override fun requestStatus() {