summaryrefslogtreecommitdiffhomepage
path: root/android/lib/daemon-grpc
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-12-02 10:46:36 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-12-02 11:05:06 +0100
commite0ef5463c2087f073fbf86a347903644aa4543ed (patch)
tree0308fdc27a7800608898ca00b96c959b2b87f81f /android/lib/daemon-grpc
parent64a5704fd0dc57cc73669251da43d4285fa42e92 (diff)
downloadmullvadvpn-e0ef5463c2087f073fbf86a347903644aa4543ed.tar.xz
mullvadvpn-e0ef5463c2087f073fbf86a347903644aa4543ed.zip
Implement support for daita with multihop
Diffstat (limited to 'android/lib/daemon-grpc')
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt18
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt7
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt6
3 files changed, 19 insertions, 12 deletions
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
index bd27574cbe..d4cedd1e61 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
@@ -123,6 +123,7 @@ import net.mullvad.mullvadvpn.lib.model.WebsiteAuthToken
import net.mullvad.mullvadvpn.lib.model.WireguardEndpointData as ModelWireguardEndpointData
import net.mullvad.mullvadvpn.lib.model.addresses
import net.mullvad.mullvadvpn.lib.model.customOptions
+import net.mullvad.mullvadvpn.lib.model.enabled
import net.mullvad.mullvadvpn.lib.model.entryLocation
import net.mullvad.mullvadvpn.lib.model.isMultihopEnabled
import net.mullvad.mullvadvpn.lib.model.location
@@ -507,17 +508,12 @@ class ManagementService(
.mapEmpty()
suspend fun setDaitaEnabled(enabled: Boolean): Either<SetDaitaSettingsError, Unit> =
- Either.catch {
- val daitaSettings =
- ManagementInterface.DaitaSettings.newBuilder()
- .setEnabled(enabled)
- // Before Multihop is supported on Android, calling `setDirectOnly` with
- // false will cause undefined behaviour. Will be fixed by as part of
- // DROID-1412.
- .setDirectOnly(true)
- .build()
- grpc.setDaitaSettings(daitaSettings)
- }
+ Either.catch { grpc.setEnableDaita(BoolValue.of(enabled)) }
+ .mapLeft(SetDaitaSettingsError::Unknown)
+ .mapEmpty()
+
+ suspend fun setDaitaDirectOnly(enabled: Boolean): Either<SetDaitaSettingsError, Unit> =
+ Either.catch { grpc.setDaitaDirectOnly(BoolValue.of(enabled)) }
.mapLeft(SetDaitaSettingsError::Unknown)
.mapEmpty()
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt
index b3fe88bdc8..f62124a171 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt
@@ -8,6 +8,7 @@ import net.mullvad.mullvadvpn.lib.model.Constraint
import net.mullvad.mullvadvpn.lib.model.CustomDnsOptions
import net.mullvad.mullvadvpn.lib.model.CustomList
import net.mullvad.mullvadvpn.lib.model.CustomListId
+import net.mullvad.mullvadvpn.lib.model.DaitaSettings
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
import net.mullvad.mullvadvpn.lib.model.DnsOptions
import net.mullvad.mullvadvpn.lib.model.DnsState
@@ -253,3 +254,9 @@ internal fun ShadowsocksSettings.fromDomain(): ManagementInterface.ShadowsocksSe
is Constraint.Only ->
ManagementInterface.ShadowsocksSettings.newBuilder().setPort(port.value.value).build()
}
+
+internal fun DaitaSettings.fromDomain(): ManagementInterface.DaitaSettings =
+ ManagementInterface.DaitaSettings.newBuilder()
+ .setEnabled(enabled)
+ .setDirectOnly(directOnly)
+ .build()
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
index 0412871f43..c7f47b0c29 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
@@ -26,6 +26,7 @@ import net.mullvad.mullvadvpn.lib.model.CustomDnsOptions
import net.mullvad.mullvadvpn.lib.model.CustomList
import net.mullvad.mullvadvpn.lib.model.CustomListId
import net.mullvad.mullvadvpn.lib.model.CustomListName
+import net.mullvad.mullvadvpn.lib.model.DaitaSettings
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceId
@@ -436,9 +437,12 @@ internal fun ManagementInterface.TunnelOptions.WireguardOptions.toDomain(): Wire
WireguardTunnelOptions(
mtu = if (hasMtu()) Mtu(mtu) else null,
quantumResistant = quantumResistant.toDomain(),
- daita = daita.enabled,
+ daitaSettings = daita.toDomain(),
)
+internal fun ManagementInterface.DaitaSettings.toDomain(): DaitaSettings =
+ DaitaSettings(enabled = enabled, directOnly = directOnly)
+
internal fun ManagementInterface.QuantumResistantState.toDomain(): QuantumResistantState =
when (state) {
ManagementInterface.QuantumResistantState.State.AUTO -> QuantumResistantState.Auto