diff options
| author | David Lönnhager <david.l@mullvad.net> | 2023-06-28 16:29:44 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2023-06-28 16:29:44 +0200 |
| commit | 63b7607e4ab4f4d6e992d24a081cf8fdd9e25b54 (patch) | |
| tree | 9dd5cdab2fed35424b8b4fb32f3568182f572b31 /android | |
| parent | c3dba6d769c346ecabba148d0277841b798b82d1 (diff) | |
| parent | 4a6838d7a877e17fd4687b66c0c0b19bcde2db19 (diff) | |
| download | mullvadvpn-63b7607e4ab4f4d6e992d24a081cf8fdd9e25b54.tar.xz mullvadvpn-63b7607e4ab4f4d6e992d24a081cf8fdd9e25b54.zip | |
Merge branch 'wireguard-port-selection-daemon-changes-droid-178'
Diffstat (limited to 'android')
7 files changed, 58 insertions, 6 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt index 7ff4a63ff4..b2af9c989d 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt @@ -8,6 +8,7 @@ import net.mullvad.mullvadvpn.model.DnsOptions import net.mullvad.mullvadvpn.model.LocationConstraint import net.mullvad.mullvadvpn.model.ObfuscationSettings import net.mullvad.mullvadvpn.model.QuantumResistantState +import net.mullvad.mullvadvpn.model.WireguardConstraints // Requests that the service can handle sealed class Request : Message.RequestMessage() { @@ -87,6 +88,9 @@ sealed class Request : Message.RequestMessage() { @Parcelize data class SetObfuscationSettings(val settings: ObfuscationSettings?) : Request() @Parcelize + data class SetWireguardConstraints(val wireguardConstraints: WireguardConstraints?) : Request() + + @Parcelize data class SetWireGuardQuantumResistant(val quantumResistant: QuantumResistantState) : Request() diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt new file mode 100644 index 0000000000..52f495a7a7 --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/Port.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class Port(val value: Int) : Parcelable diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt index 9b02e043ad..da2acb39f6 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraints.kt @@ -3,4 +3,8 @@ package net.mullvad.mullvadvpn.model import android.os.Parcelable import kotlinx.parcelize.Parcelize -@Parcelize data class RelayConstraints(val location: Constraint<LocationConstraint>) : Parcelable +@Parcelize +data class RelayConstraints( + val location: Constraint<LocationConstraint>, + val wireguardConstraints: WireguardConstraints +) : Parcelable diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt index 94aa58c56a..bd5bfb9605 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt @@ -1,3 +1,6 @@ package net.mullvad.mullvadvpn.model -data class RelayConstraintsUpdate(var location: Constraint<LocationConstraint>?) +data class RelayConstraintsUpdate( + var location: Constraint<LocationConstraint>?, + var wireguardConstraints: WireguardConstraints? +) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt new file mode 100644 index 0000000000..1725b01f0f --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/WireguardConstraints.kt @@ -0,0 +1,6 @@ +package net.mullvad.mullvadvpn.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class WireguardConstraints(val port: Constraint<Port>) : Parcelable diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt index 7515bad230..4fa531eeb4 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt @@ -14,12 +14,14 @@ import net.mullvad.mullvadvpn.model.LocationConstraint import net.mullvad.mullvadvpn.model.RelayConstraintsUpdate import net.mullvad.mullvadvpn.model.RelayList import net.mullvad.mullvadvpn.model.RelaySettingsUpdate +import net.mullvad.mullvadvpn.model.WireguardConstraints import net.mullvad.mullvadvpn.service.MullvadDaemon class RelayListListener(endpoint: ServiceEndpoint) { companion object { private enum class Command { SetRelayLocation, + SetWireguardConstraints } } @@ -30,6 +32,10 @@ class RelayListListener(endpoint: ServiceEndpoint) { observable<LocationConstraint?>(null) { _, _, _ -> commandChannel.trySendBlocking(Command.SetRelayLocation) } + private var selectedWireguardConstraints by + observable<WireguardConstraints?>(null) { _, _, _ -> + commandChannel.trySendBlocking(Command.SetWireguardConstraints) + } var relayList by observable<RelayList?>(null) { _, _, relays -> @@ -48,6 +54,10 @@ class RelayListListener(endpoint: ServiceEndpoint) { endpoint.dispatcher.registerHandler(Request.SetRelayLocation::class) { request -> selectedRelayLocation = request.relayLocation } + + endpoint.dispatcher.registerHandler(Request.SetWireguardConstraints::class) { request -> + selectedWireguardConstraints = request.wireguardConstraints + } } fun onDestroy() { @@ -72,7 +82,8 @@ class RelayListListener(endpoint: ServiceEndpoint) { try { for (command in channel) { when (command) { - Command.SetRelayLocation -> updateRelayConstraints() + Command.SetRelayLocation, + Command.SetWireguardConstraints -> updateRelayConstraints() } } } catch (exception: ClosedReceiveChannelException) { @@ -81,10 +92,12 @@ class RelayListListener(endpoint: ServiceEndpoint) { } private suspend fun updateRelayConstraints() { - val constraint: Constraint<LocationConstraint> = + val location: Constraint<LocationConstraint> = selectedRelayLocation?.let { location -> Constraint.Only(location) } ?: Constraint.Any() + val wireguardConstraints: WireguardConstraints? = selectedWireguardConstraints - val update = RelaySettingsUpdate.Normal(RelayConstraintsUpdate(constraint)) + val update = + RelaySettingsUpdate.Normal(RelayConstraintsUpdate(location, wireguardConstraints)) daemon.await().updateRelaySettings(update) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt index 5a92eea719..5d18cca679 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt @@ -8,6 +8,7 @@ import net.mullvad.mullvadvpn.model.Constraint import net.mullvad.mullvadvpn.model.LocationConstraint import net.mullvad.mullvadvpn.model.RelayConstraints import net.mullvad.mullvadvpn.model.RelaySettings +import net.mullvad.mullvadvpn.model.WireguardConstraints import net.mullvad.mullvadvpn.relaylist.RelayItem import net.mullvad.mullvadvpn.relaylist.RelayList @@ -33,6 +34,18 @@ class RelayListListener( connection.send(Request.SetRelayLocation(value).message) } + var selectedWireguardConstraints: WireguardConstraints? + get() { + val settings = relaySettings as? RelaySettings.Normal + + return settings?.relayConstraints?.wireguardConstraints?.port?.let { port -> + WireguardConstraints(port) + } + } + set(value) { + connection.send(Request.SetWireguardConstraints(value).message) + } + var onRelayListChange: ((RelayList, RelayItem?) -> Unit)? = null set(value) { field = value @@ -66,7 +79,10 @@ class RelayListListener( val relayList = this.relayList relaySettings = - newRelaySettings ?: RelaySettings.Normal(RelayConstraints(Constraint.Any())) + newRelaySettings + ?: RelaySettings.Normal( + RelayConstraints(Constraint.Any(), WireguardConstraints(Constraint.Any())) + ) if (relayList != null) { relayListChanged(relayList) |
