summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-21 02:07:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-24 11:56:00 +0000
commit06daf51fe1f4910847a94c0137710012e0dfac8c (patch)
tree8ab039355faf4f9a070c0c3a0212e5e1b79ce85f
parent057a602f4f7230d889a6031d74df347d21ad8f8a (diff)
downloadmullvadvpn-06daf51fe1f4910847a94c0137710012e0dfac8c.tar.xz
mullvadvpn-06daf51fe1f4910847a94c0137710012e0dfac8c.zip
Move daemon file preparation to `DaemonInstance`
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt31
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt28
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
- }
}