diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-08-26 10:35:29 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2024-08-26 12:44:32 +0200 |
| commit | 4cefa1584d102d47110606b9797f78801103f35f (patch) | |
| tree | ea679771695dc63c0d6b4a6906d90998c2eaabcd /android/lib | |
| parent | ec2098841f78621b31708ab6427c740f7e42ce5a (diff) | |
| download | mullvadvpn-4cefa1584d102d47110606b9797f78801103f35f.tar.xz mullvadvpn-4cefa1584d102d47110606b9797f78801103f35f.zip | |
Add support for feature indicators for tunnel state
Diffstat (limited to 'android/lib')
3 files changed, 60 insertions, 6 deletions
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 9baa426696..ca4e924b6c 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 @@ -34,6 +34,7 @@ import net.mullvad.mullvadvpn.lib.model.DnsState import net.mullvad.mullvadvpn.lib.model.Endpoint import net.mullvad.mullvadvpn.lib.model.ErrorState import net.mullvad.mullvadvpn.lib.model.ErrorStateCause +import net.mullvad.mullvadvpn.lib.model.FeatureIndicator import net.mullvad.mullvadvpn.lib.model.GeoIpLocation import net.mullvad.mullvadvpn.lib.model.GeoLocationId import net.mullvad.mullvadvpn.lib.model.Mtu @@ -89,7 +90,8 @@ internal fun ManagementInterface.TunnelState.toDomain(): TunnelState = if (hasLocation()) { location.toDomain() } else null - } + }, + featureIndicators = connected.featureIndicators.toDomain() ) ManagementInterface.TunnelState.StateCase.CONNECTED -> TunnelState.Connected( @@ -101,7 +103,8 @@ internal fun ManagementInterface.TunnelState.toDomain(): TunnelState = } else { null } - } + }, + featureIndicators = connected.featureIndicators.toDomain() ) ManagementInterface.TunnelState.StateCase.DISCONNECTING -> TunnelState.Disconnecting( @@ -578,3 +581,28 @@ internal fun ManagementInterface.Socks5Remote.toDomain(): ApiAccessMethod.Custom internal fun ManagementInterface.SocksAuth.toDomain(): SocksAuth = SocksAuth(username = username, password = password) + +internal fun ManagementInterface.FeatureIndicators.toDomain(): List<FeatureIndicator> = + this.activeFeaturesList.map { it.toDomain() } + +internal fun ManagementInterface.FeatureIndicator.toDomain() = + when (this) { + ManagementInterface.FeatureIndicator.QUANTUM_RESISTANCE -> + FeatureIndicator.QUANTUM_RESISTANCE + ManagementInterface.FeatureIndicator.SPLIT_TUNNELING -> FeatureIndicator.SPLIT_TUNNELING + ManagementInterface.FeatureIndicator.UDP_2_TCP -> FeatureIndicator.UDP_2_TCP + ManagementInterface.FeatureIndicator.LAN_SHARING -> FeatureIndicator.LAN_SHARING + ManagementInterface.FeatureIndicator.DNS_CONTENT_BLOCKERS -> + FeatureIndicator.DNS_CONTENT_BLOCKERS + ManagementInterface.FeatureIndicator.CUSTOM_DNS -> FeatureIndicator.CUSTOM_DNS + ManagementInterface.FeatureIndicator.SERVER_IP_OVERRIDE -> + FeatureIndicator.SERVER_IP_OVERRIDE + ManagementInterface.FeatureIndicator.CUSTOM_MTU -> FeatureIndicator.CUSTOM_MTU + ManagementInterface.FeatureIndicator.LOCKDOWN_MODE, + ManagementInterface.FeatureIndicator.SHADOWSOCKS, + ManagementInterface.FeatureIndicator.MULTIHOP, + ManagementInterface.FeatureIndicator.BRIDGE_MODE, + ManagementInterface.FeatureIndicator.CUSTOM_MSS_FIX, + ManagementInterface.FeatureIndicator.DAITA, + ManagementInterface.FeatureIndicator.UNRECOGNIZED -> error("Feature not supported") + } diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/FeatureIndicator.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/FeatureIndicator.kt new file mode 100644 index 0000000000..7ad0b3ab69 --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/FeatureIndicator.kt @@ -0,0 +1,20 @@ +package net.mullvad.mullvadvpn.lib.model + +enum class FeatureIndicator { + QUANTUM_RESISTANCE, + SPLIT_TUNNELING, + UDP_2_TCP, + LAN_SHARING, + DNS_CONTENT_BLOCKERS, + CUSTOM_DNS, + SERVER_IP_OVERRIDE, + CUSTOM_MTU, + // Currently not supported + // LOCKDOWN_MODE, + // SHADOWSOCKS, + // MULTIHOP, + // BRIDGE_MODE, + // CUSTOM_MSS_FIX, + // DAITA, + // UNRECOGNIZED, +} diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt index 3fae41802a..8ed43bd294 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelState.kt @@ -3,11 +3,17 @@ package net.mullvad.mullvadvpn.lib.model sealed class TunnelState { data class Disconnected(val location: GeoIpLocation? = null) : TunnelState() - data class Connecting(val endpoint: TunnelEndpoint?, val location: GeoIpLocation?) : - TunnelState() + data class Connecting( + val endpoint: TunnelEndpoint?, + val location: GeoIpLocation?, + val featureIndicators: List<FeatureIndicator> + ) : TunnelState() - data class Connected(val endpoint: TunnelEndpoint, val location: GeoIpLocation?) : - TunnelState() + data class Connected( + val endpoint: TunnelEndpoint, + val location: GeoIpLocation?, + val featureIndicators: List<FeatureIndicator> + ) : TunnelState() data class Disconnecting(val actionAfterDisconnect: ActionAfterDisconnect) : TunnelState() |
