diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-06-03 13:48:17 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-06-04 08:27:03 +0200 |
| commit | 270c44a7a5e0f427d2fb4efc3de7a2dda178cb30 (patch) | |
| tree | d6dfc363ad439b0284100ff6a2500844082c8109 /android/lib/daemon-grpc/src | |
| parent | 3ac0f264402e42a16f0bd6c76e1a6a67e01ed4ef (diff) | |
| download | mullvadvpn-270c44a7a5e0f427d2fb4efc3de7a2dda178cb30.tar.xz mullvadvpn-270c44a7a5e0f427d2fb4efc3de7a2dda178cb30.zip | |
Add support for UDP-over-TCP port
Diffstat (limited to 'android/lib/daemon-grpc/src')
3 files changed, 43 insertions, 21 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 53aefe13db..268f664840 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 @@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.lib.daemon.grpc import android.net.LocalSocketAddress import android.util.Log import arrow.core.Either +import arrow.core.raise.either import arrow.optics.copy import arrow.optics.dsl.index import arrow.optics.typeclasses.Index @@ -68,11 +69,13 @@ import net.mullvad.mullvadvpn.lib.model.GetDeviceListError import net.mullvad.mullvadvpn.lib.model.GetDeviceStateError import net.mullvad.mullvadvpn.lib.model.LoginAccountError import net.mullvad.mullvadvpn.lib.model.ObfuscationSettings as ModelObfuscationSettings +import net.mullvad.mullvadvpn.lib.model.ObfuscationSettings import net.mullvad.mullvadvpn.lib.model.Ownership as ModelOwnership import net.mullvad.mullvadvpn.lib.model.PlayPurchase import net.mullvad.mullvadvpn.lib.model.PlayPurchaseInitError import net.mullvad.mullvadvpn.lib.model.PlayPurchasePaymentToken import net.mullvad.mullvadvpn.lib.model.PlayPurchaseVerifyError +import net.mullvad.mullvadvpn.lib.model.Port import net.mullvad.mullvadvpn.lib.model.Providers import net.mullvad.mullvadvpn.lib.model.QuantumResistantState as ModelQuantumResistantState import net.mullvad.mullvadvpn.lib.model.RedeemVoucherError @@ -107,6 +110,7 @@ import net.mullvad.mullvadvpn.lib.model.ownership import net.mullvad.mullvadvpn.lib.model.providers import net.mullvad.mullvadvpn.lib.model.relayConstraints import net.mullvad.mullvadvpn.lib.model.state +import net.mullvad.mullvadvpn.lib.model.udp2tcp import net.mullvad.mullvadvpn.lib.model.wireguardConstraints @Suppress("TooManyFunctions") @@ -386,6 +390,21 @@ class ManagementService( .mapLeft(SetObfuscationOptionsError::Unknown) .mapEmpty() + suspend fun setObfuscationPort( + portConstraint: Constraint<Port> + ): Either<SetObfuscationOptionsError, Unit> = either { + val updatedObfuscationSettings = + Either.catch { + val obfuscationSettings = getSettings().obfuscationSettings + ObfuscationSettings.udp2tcp.modify(obfuscationSettings) { + it.copy(port = portConstraint) + } + } + .mapLeft(SetObfuscationOptionsError::Unknown) + .bind() + setObfuscationOptions(updatedObfuscationSettings).bind() + } + suspend fun setAutoConnect(isEnabled: Boolean): Either<SetAutoConnectError, Unit> = Either.catch { grpc.setAutoConnect(BoolValue.of(isEnabled)) } .mapLeft(SetAutoConnectError::Unknown) 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 df4625228f..4efd8c452e 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 @@ -17,6 +17,8 @@ import net.mullvad.mullvadvpn.lib.model.Port import net.mullvad.mullvadvpn.lib.model.Providers import net.mullvad.mullvadvpn.lib.model.RelayItemId import net.mullvad.mullvadvpn.lib.model.RelaySettings +import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation +import net.mullvad.mullvadvpn.lib.model.Udp2TcpObfuscationSettings import net.mullvad.mullvadvpn.lib.model.WireguardConstraints internal fun Constraint<RelayItemId>.fromDomain(): ManagementInterface.LocationConstraint = @@ -70,10 +72,30 @@ internal fun DefaultDnsOptions.fromDomain(): ManagementInterface.DefaultDnsOptio internal fun ObfuscationSettings.fromDomain(): ManagementInterface.ObfuscationSettings = ManagementInterface.ObfuscationSettings.newBuilder() - .setSelectedObfuscation(selectedObfuscation.toDomain()) - .setUdp2Tcp(udp2tcp.toDomain()) + .setSelectedObfuscation(selectedObfuscation.fromDomain()) + .setUdp2Tcp(udp2tcp.fromDomain()) .build() +internal fun SelectedObfuscation.fromDomain(): + ManagementInterface.ObfuscationSettings.SelectedObfuscation = + when (this) { + SelectedObfuscation.Udp2Tcp -> + ManagementInterface.ObfuscationSettings.SelectedObfuscation.UDP2TCP + SelectedObfuscation.Auto -> ManagementInterface.ObfuscationSettings.SelectedObfuscation.AUTO + SelectedObfuscation.Off -> ManagementInterface.ObfuscationSettings.SelectedObfuscation.OFF + } + +internal fun Udp2TcpObfuscationSettings.fromDomain(): + ManagementInterface.Udp2TcpObfuscationSettings = + when (val port = port) { + is Constraint.Any -> + ManagementInterface.Udp2TcpObfuscationSettings.newBuilder().clearPort().build() + is Constraint.Only -> + ManagementInterface.Udp2TcpObfuscationSettings.newBuilder() + .setPort(port.value.value) + .build() + } + internal fun GeoLocationId.fromDomain(): ManagementInterface.GeographicLocationConstraint = ManagementInterface.GeographicLocationConstraint.newBuilder() .apply { 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 636e6c5176..0fe64e09f2 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 @@ -409,25 +409,6 @@ internal fun QuantumResistantState.toDomain(): ManagementInterface.QuantumResist ) .build() -internal fun SelectedObfuscation.toDomain(): - ManagementInterface.ObfuscationSettings.SelectedObfuscation = - when (this) { - SelectedObfuscation.Udp2Tcp -> - ManagementInterface.ObfuscationSettings.SelectedObfuscation.UDP2TCP - SelectedObfuscation.Auto -> ManagementInterface.ObfuscationSettings.SelectedObfuscation.AUTO - SelectedObfuscation.Off -> ManagementInterface.ObfuscationSettings.SelectedObfuscation.OFF - } - -internal fun Udp2TcpObfuscationSettings.toDomain(): ManagementInterface.Udp2TcpObfuscationSettings = - when (val port = port) { - is Constraint.Any -> - ManagementInterface.Udp2TcpObfuscationSettings.newBuilder().clearPort().build() - is Constraint.Only -> - ManagementInterface.Udp2TcpObfuscationSettings.newBuilder() - .setPort(port.value.value) - .build() - } - internal fun ManagementInterface.AppVersionInfo.toDomain(): AppVersionInfo = AppVersionInfo( supported = supported, |
