From 73fad4357319474436417b27f37ed4fce3ce13ee Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Mon, 1 Jan 2024 22:16:07 -0500 Subject: [PATCH] Handle IPv6 address correctly --- .../app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt | 6 +----- .../app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt | 3 ++- V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt index 915bf23b..b4cd3e16 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt @@ -69,10 +69,6 @@ data class ServerConfig( fun getV2rayPointDomainAndPort(): String { val address = getProxyOutbound()?.getServerAddress().orEmpty() val port = getProxyOutbound()?.getServerPort() - return if (Utils.isIpv6Address(address)) { - String.format("[%s]:%s", address, port) - } else { - String.format("%s:%s", address, port) - } + return Utils.getIpv6Address(address) + ":" + port } } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt index 5b7f08d1..11016d57 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt @@ -21,6 +21,7 @@ import com.v2ray.ang.util.MmkvManager import com.v2ray.ang.util.MmkvManager.ID_MAIN import com.v2ray.ang.util.MmkvManager.KEY_SELECTED_SERVER import com.v2ray.ang.util.Utils +import com.v2ray.ang.util.Utils.getIpv6Address class ServerActivity : BaseActivity() { @@ -411,7 +412,7 @@ class ServerActivity : BaseActivity() { private fun savePeer(wireguard: V2rayConfig.OutboundBean.OutSettingsBean, port: Int) { wireguard.secretKey = et_id.text.toString().trim() wireguard.peers?.get(0)?.publicKey = et_public_key?.text.toString().trim() - wireguard.peers?.get(0)?.endpoint = et_address.text.toString().trim() + ":" + port + wireguard.peers?.get(0)?.endpoint = getIpv6Address(et_address.text.toString().trim()) + ":" + port val reserved1 = Utils.parseInt(et_reserved1?.text.toString()) val reserved2 = Utils.parseInt(et_reserved2?.text.toString()) val reserved3 = Utils.parseInt(et_reserved3?.text.toString()) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt index 07ea467b..b0f01eb0 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt @@ -366,7 +366,7 @@ object Utils { } fun getIpv6Address(address: String): String { - return if (isIpv6Address(address)) { + return if (isIpv6Address(address) && !address.contains('[') && !address.contains(']')) { String.format("[%s]", address) } else { address