diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-06-04 08:27:30 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-06-04 08:27:30 +0200 |
| commit | 45c369fe355a5eadc29dd3e6f492ff6d7430ee5d (patch) | |
| tree | 70925bd8ab3348533ca7217606ac4c2d42356453 /android/lib/daemon-grpc/src | |
| parent | 3ac0f264402e42a16f0bd6c76e1a6a67e01ed4ef (diff) | |
| parent | 571c620b51cdc6b4338a3244b500f70e79b3ca7d (diff) | |
| download | mullvadvpn-45c369fe355a5eadc29dd3e6f492ff6d7430ee5d.tar.xz mullvadvpn-45c369fe355a5eadc29dd3e6f492ff6d7430ee5d.zip | |
Merge branch 'add-setting-for-udp2tcp-port-droid-249'
Diffstat (limited to 'android/lib/daemon-grpc/src')
3 files changed, 53 insertions, 25 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..40fd17d715 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 @@ -67,12 +67,13 @@ import net.mullvad.mullvadvpn.lib.model.GetAccountHistoryError 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 @@ -84,6 +85,7 @@ import net.mullvad.mullvadvpn.lib.model.RelayList as ModelRelayList import net.mullvad.mullvadvpn.lib.model.RelayList import net.mullvad.mullvadvpn.lib.model.RelaySettings import net.mullvad.mullvadvpn.lib.model.RemoveSplitTunnelingAppError +import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation import net.mullvad.mullvadvpn.lib.model.SetAllowLanError import net.mullvad.mullvadvpn.lib.model.SetAutoConnectError import net.mullvad.mullvadvpn.lib.model.SetDnsOptionsError @@ -106,7 +108,9 @@ import net.mullvad.mullvadvpn.lib.model.location 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.selectedObfuscation import net.mullvad.mullvadvpn.lib.model.state +import net.mullvad.mullvadvpn.lib.model.udp2tcp import net.mullvad.mullvadvpn.lib.model.wireguardConstraints @Suppress("TooManyFunctions") @@ -379,10 +383,31 @@ class ManagementService( grpc.setRelaySettings(value.fromDomain()) } - suspend fun setObfuscationOptions( - value: ModelObfuscationSettings + suspend fun setObfuscation( + value: SelectedObfuscation ): Either<SetObfuscationOptionsError, Unit> = - Either.catch { grpc.setObfuscationSettings(value.fromDomain()) } + Either.catch { + val updatedObfuscationSettings = + ObfuscationSettings.selectedObfuscation.modify( + getSettings().obfuscationSettings + ) { + value + } + grpc.setObfuscationSettings(updatedObfuscationSettings.fromDomain()) + } + .mapLeft(SetObfuscationOptionsError::Unknown) + .mapEmpty() + + suspend fun setObfuscationPort( + portConstraint: Constraint<Port> + ): Either<SetObfuscationOptionsError, Unit> = + Either.catch { + val updatedSettings = + ObfuscationSettings.udp2tcp.modify(getSettings().obfuscationSettings) { + it.copy(port = portConstraint) + } + grpc.setObfuscationSettings(updatedSettings.fromDomain()) + } .mapLeft(SetObfuscationOptionsError::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 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, |
