diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-21 02:07:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-24 11:56:00 +0000 |
| commit | 06daf51fe1f4910847a94c0137710012e0dfac8c (patch) | |
| tree | 8ab039355faf4f9a070c0c3a0212e5e1b79ce85f | |
| parent | 057a602f4f7230d889a6031d74df347d21ad8f8a (diff) | |
| download | mullvadvpn-06daf51fe1f4910847a94c0137710012e0dfac8c.tar.xz mullvadvpn-06daf51fe1f4910847a94c0137710012e0dfac8c.zip | |
Move daemon file preparation to `DaemonInstance`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt | 31 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 28 |
2 files changed, 31 insertions, 28 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt index 291d9bb4cb..7a8c7f08dd 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt @@ -1,5 +1,6 @@ package net.mullvad.mullvadvpn.service +import java.io.File import kotlin.properties.Delegates.observable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -9,6 +10,9 @@ import kotlinx.coroutines.channels.ReceiveChannel import kotlinx.coroutines.channels.actor import kotlinx.coroutines.channels.sendBlocking +private const val API_IP_ADDRESS_FILE = "api-ip-address.txt" +private const val RELAYS_FILE = "relays.json" + class DaemonInstance(val vpnService: MullvadVpnService, val listener: (MullvadDaemon?) -> Unit) { private enum class Command { START, @@ -36,6 +40,8 @@ class DaemonInstance(val vpnService: MullvadVpnService, val listener: (MullvadDa private fun spawnActor() = GlobalScope.actor<Command>(Dispatchers.Default, Channel.UNLIMITED) { var isRunning = true + prepareFiles() + while (isRunning) { if (!waitForCommand(channel, Command.START)) { break @@ -64,6 +70,25 @@ class DaemonInstance(val vpnService: MullvadVpnService, val listener: (MullvadDa } } + private fun prepareFiles() { + FileMigrator(File("/data/data/net.mullvad.mullvadvpn"), vpnService.filesDir).apply { + migrate(RELAYS_FILE) + migrate("settings.json") + migrate("daemon.log") + migrate("daemon.old.log") + migrate("wireguard.log") + migrate("wireguard.old.log") + } + + val shouldOverwriteRelayList = + lastUpdatedTime() > File(vpnService.filesDir, RELAYS_FILE).lastModified() + + FileResourceExtractor(vpnService).apply { + extract(API_IP_ADDRESS_FILE, false) + extract(RELAYS_FILE, shouldOverwriteRelayList) + } + } + private fun startDaemon() { daemon = MullvadDaemon(vpnService).apply { onDaemonStopped = { @@ -75,4 +100,10 @@ class DaemonInstance(val vpnService: MullvadVpnService, val listener: (MullvadDa private fun stopDaemon() { daemon?.shutdown() } + + private fun lastUpdatedTime(): Long { + return vpnService.run { + packageManager.getPackageInfo(packageName, 0).lastUpdateTime + } + } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt index ecfbe29948..62ade7f4d7 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -7,7 +7,6 @@ import android.net.VpnService import android.os.Binder import android.os.IBinder import android.util.Log -import java.io.File import kotlin.properties.Delegates.observable import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers @@ -21,9 +20,6 @@ import net.mullvad.mullvadvpn.ui.MainActivity import net.mullvad.talpid.TalpidVpnService import net.mullvad.talpid.util.EventNotifier -private const val API_IP_ADDRESS_FILE = "api-ip-address.txt" -private const val RELAYS_FILE = "relays.json" - class MullvadVpnService : TalpidVpnService() { companion object { private val TAG = "mullvad" @@ -225,7 +221,6 @@ class MullvadVpnService : TalpidVpnService() { private fun startDaemon() = GlobalScope.launch(Dispatchers.Default) { Log.d(TAG, "Starting daemon") - prepareFiles() splitTunneling.await() daemonInstance.start() } @@ -240,25 +235,6 @@ class MullvadVpnService : TalpidVpnService() { } } - private fun prepareFiles() { - FileMigrator(File("/data/data/net.mullvad.mullvadvpn"), filesDir).apply { - migrate(RELAYS_FILE) - migrate("settings.json") - migrate("daemon.log") - migrate("daemon.old.log") - migrate("wireguard.log") - migrate("wireguard.old.log") - } - - val shouldOverwriteRelayList = - lastUpdatedTime() > File(filesDir, RELAYS_FILE).lastModified() - - FileResourceExtractor(this).apply { - extract(API_IP_ADDRESS_FILE, false) - extract(RELAYS_FILE, shouldOverwriteRelayList) - } - } - private suspend fun setUpInstance(daemon: MullvadDaemon, settings: Settings) { val settingsListener = SettingsListener(daemon, settings) val connectionProxy = ConnectionProxy(this, daemon) @@ -330,8 +306,4 @@ class MullvadVpnService : TalpidVpnService() { startActivity(intent) } - - private fun lastUpdatedTime(): Long { - return packageManager.getPackageInfo(packageName, 0).lastUpdateTime - } } |
