summaryrefslogtreecommitdiffhomepage
path: root/android/lib
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-04-04 08:49:59 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-04-04 09:53:14 +0200
commit637af3c22b57b9fc06e74c1ca2c34952aecc1f70 (patch)
treeed91e4e8ce381d83d98885a277895e9e5ab64b97 /android/lib
parent119925c7887f735c688eaf491ea64d9e1b80b0c5 (diff)
downloadmullvadvpn-637af3c22b57b9fc06e74c1ca2c34952aecc1f70.tar.xz
mullvadvpn-637af3c22b57b9fc06e74c1ca2c34952aecc1f70.zip
Show correct in ip when using multihop
Diffstat (limited to 'android/lib')
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt22
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt1
2 files changed, 15 insertions, 8 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 5e2f7fb831..40ee4d6bcf 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
@@ -176,16 +176,15 @@ internal fun ManagementInterface.GeoIpLocation.toDomain(): GeoIpLocation =
internal fun ManagementInterface.TunnelEndpoint.toDomain(): TunnelEndpoint =
TunnelEndpoint(
endpoint =
- with(address) {
- val indexOfSeparator = indexOfLast { it == ':' }
- val ipPart =
- address.substring(0, indexOfSeparator).filter { it !in listOf('[', ']') }
- val portPart = address.substring(indexOfSeparator + 1)
-
+ Endpoint(address = address.toInetSocketAddress(), protocol = protocol.toDomain()),
+ entryEndpoint =
+ if (hasEntryEndpoint()) {
Endpoint(
- address = InetSocketAddress(InetAddress.getByName(ipPart), portPart.toInt()),
- protocol = protocol.toDomain(),
+ address = entryEndpoint.address.toInetSocketAddress(),
+ protocol = entryEndpoint.protocol.toDomain(),
)
+ } else {
+ null
},
quantumResistant = quantumResistant,
obfuscation =
@@ -204,6 +203,13 @@ internal fun ManagementInterface.ObfuscationEndpoint.toDomain(): ObfuscationEndp
obfuscationType = obfuscationType.toDomain(),
)
+private fun String.toInetSocketAddress(): InetSocketAddress {
+ val indexOfSeparator = indexOfLast { it == ':' }
+ val ipPart = substring(0, indexOfSeparator).filter { it !in listOf('[', ']') }
+ val portPart = substring(indexOfSeparator + 1)
+ return InetSocketAddress(InetAddress.getByName(ipPart), portPart.toInt())
+}
+
internal fun ManagementInterface.ObfuscationEndpoint.ObfuscationType.toDomain(): ObfuscationType =
when (this) {
ManagementInterface.ObfuscationEndpoint.ObfuscationType.UDP2TCP -> ObfuscationType.Udp2Tcp
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt
index 3902e5c965..0092b4a09c 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/TunnelEndpoint.kt
@@ -1,6 +1,7 @@
package net.mullvad.mullvadvpn.lib.model
data class TunnelEndpoint(
+ val entryEndpoint: Endpoint?,
val endpoint: Endpoint,
val quantumResistant: Boolean,
val obfuscation: ObfuscationEndpoint?,