From 6914b9ee1bce6a57bf26737d7565d49648e913a1 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:32:13 +0800 Subject: [PATCH] Bug fix https://github.com/2dust/v2rayNG/issues/3911 --- .../kotlin/com/v2ray/ang/dto/V2rayConfig.kt | 24 +++++++++---------- .../main/kotlin/com/v2ray/ang/fmt/HttpFmt.kt | 2 +- .../com/v2ray/ang/fmt/ShadowsocksFmt.kt | 2 +- .../main/kotlin/com/v2ray/ang/fmt/SocksFmt.kt | 2 +- .../kotlin/com/v2ray/ang/fmt/TrojanFmt.kt | 2 +- .../main/kotlin/com/v2ray/ang/fmt/VlessFmt.kt | 2 +- .../main/kotlin/com/v2ray/ang/fmt/VmessFmt.kt | 2 +- .../kotlin/com/v2ray/ang/fmt/WireguardFmt.kt | 4 ++-- .../com/v2ray/ang/handler/MigrateManager.kt | 8 +++---- .../v2ray/ang/handler/V2rayConfigManager.kt | 2 +- .../com/v2ray/ang/service/V2RayTestService.kt | 2 +- 11 files changed, 26 insertions(+), 26 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt index c1b3ab64..9ea7b596 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt @@ -470,16 +470,16 @@ data class V2rayConfig( if (protocol.equals(EConfigType.VMESS.name, true) || protocol.equals(EConfigType.VLESS.name, true) ) { - return settings?.vnext?.get(0)?.address + return settings?.vnext?.first()?.address } else if (protocol.equals(EConfigType.SHADOWSOCKS.name, true) || protocol.equals(EConfigType.SOCKS.name, true) || protocol.equals(EConfigType.HTTP.name, true) || protocol.equals(EConfigType.TROJAN.name, true) || protocol.equals(EConfigType.HYSTERIA2.name, true) ) { - return settings?.servers?.get(0)?.address + return settings?.servers?.first()?.address } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { - return settings?.peers?.get(0)?.endpoint?.substringBeforeLast(":") + return settings?.peers?.first()?.endpoint?.substringBeforeLast(":") } return null } @@ -488,16 +488,16 @@ data class V2rayConfig( if (protocol.equals(EConfigType.VMESS.name, true) || protocol.equals(EConfigType.VLESS.name, true) ) { - return settings?.vnext?.get(0)?.port + return settings?.vnext?.first()?.port } else if (protocol.equals(EConfigType.SHADOWSOCKS.name, true) || protocol.equals(EConfigType.SOCKS.name, true) || protocol.equals(EConfigType.HTTP.name, true) || protocol.equals(EConfigType.TROJAN.name, true) || protocol.equals(EConfigType.HYSTERIA2.name, true) ) { - return settings?.servers?.get(0)?.port + return settings?.servers?.first()?.port } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { - return settings?.peers?.get(0)?.endpoint?.substringAfterLast(":")?.toInt() + return settings?.peers?.first()?.endpoint?.substringAfterLast(":")?.toInt() } return null } @@ -512,16 +512,16 @@ data class V2rayConfig( if (protocol.equals(EConfigType.VMESS.name, true) || protocol.equals(EConfigType.VLESS.name, true) ) { - return settings?.vnext?.get(0)?.users?.get(0)?.id + return settings?.vnext?.first()?.users?.first()?.id } else if (protocol.equals(EConfigType.SHADOWSOCKS.name, true) || protocol.equals(EConfigType.TROJAN.name, true) || protocol.equals(EConfigType.HYSTERIA2.name, true) ) { - return settings?.servers?.get(0)?.password + return settings?.servers?.first()?.password } else if (protocol.equals(EConfigType.SOCKS.name, true) || protocol.equals(EConfigType.HTTP.name, true) ) { - return settings?.servers?.get(0)?.users?.get(0)?.pass + return settings?.servers?.first()?.users?.first()?.pass } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { return settings?.secretKey } @@ -530,9 +530,9 @@ data class V2rayConfig( fun getSecurityEncryption(): String? { return when { - protocol.equals(EConfigType.VMESS.name, true) -> settings?.vnext?.get(0)?.users?.get(0)?.security - protocol.equals(EConfigType.VLESS.name, true) -> settings?.vnext?.get(0)?.users?.get(0)?.encryption - protocol.equals(EConfigType.SHADOWSOCKS.name, true) -> settings?.servers?.get(0)?.method + protocol.equals(EConfigType.VMESS.name, true) -> settings?.vnext?.first()?.users?.first()?.security + protocol.equals(EConfigType.VLESS.name, true) -> settings?.vnext?.first()?.users?.first()?.encryption + protocol.equals(EConfigType.SHADOWSOCKS.name, true) -> settings?.servers?.first()?.method else -> null } } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/HttpFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/HttpFmt.kt index f65f5b63..0c85b171 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/HttpFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/HttpFmt.kt @@ -10,7 +10,7 @@ object HttpFmt : FmtBase() { fun toOutbound(profileItem: ProfileItem): OutboundBean? { val outboundBean = OutboundBean.create(EConfigType.HTTP) - outboundBean?.settings?.servers?.get(0)?.let { server -> + outboundBean?.settings?.servers?.first()?.let { server -> server.address = profileItem.server.orEmpty() server.port = profileItem.serverPort.orEmpty().toInt() if (profileItem.username.isNotNullEmpty()) { diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/ShadowsocksFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/ShadowsocksFmt.kt index 610bbb56..1b47966a 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/ShadowsocksFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/ShadowsocksFmt.kt @@ -94,7 +94,7 @@ object ShadowsocksFmt : FmtBase() { fun toOutbound(profileItem: ProfileItem): OutboundBean? { val outboundBean = OutboundBean.create(EConfigType.SHADOWSOCKS) - outboundBean?.settings?.servers?.get(0)?.let { server -> + outboundBean?.settings?.servers?.first()?.let { server -> server.address = profileItem.server.orEmpty() server.port = profileItem.serverPort.orEmpty().toInt() server.password = profileItem.password diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/SocksFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/SocksFmt.kt index d071eabc..b610a9da 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/SocksFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/SocksFmt.kt @@ -45,7 +45,7 @@ object SocksFmt : FmtBase() { fun toOutbound(profileItem: ProfileItem): OutboundBean? { val outboundBean = OutboundBean.create(EConfigType.SOCKS) - outboundBean?.settings?.servers?.get(0)?.let { server -> + outboundBean?.settings?.servers?.first()?.let { server -> server.address = profileItem.server.orEmpty() server.port = profileItem.serverPort.orEmpty().toInt() if (profileItem.username.isNotNullEmpty()) { diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/TrojanFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/TrojanFmt.kt index f8e6a216..9c474e0a 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/TrojanFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/TrojanFmt.kt @@ -67,7 +67,7 @@ object TrojanFmt : FmtBase() { fun toOutbound(profileItem: ProfileItem): OutboundBean? { val outboundBean = OutboundBean.create(EConfigType.TROJAN) - outboundBean?.settings?.servers?.get(0)?.let { server -> + outboundBean?.settings?.servers?.first()?.let { server -> server.address = profileItem.server.orEmpty() server.port = profileItem.serverPort.orEmpty().toInt() server.password = profileItem.password diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VlessFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VlessFmt.kt index fd43fcf8..477c101d 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VlessFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VlessFmt.kt @@ -65,7 +65,7 @@ object VlessFmt : FmtBase() { fun toOutbound(profileItem: ProfileItem): OutboundBean? { val outboundBean = OutboundBean.create(EConfigType.VLESS) - outboundBean?.settings?.vnext?.get(0)?.let { vnext -> + outboundBean?.settings?.vnext?.first()?.let { vnext -> vnext.address = profileItem.server.orEmpty() vnext.port = profileItem.serverPort.orEmpty().toInt() vnext.users[0].id = profileItem.password.orEmpty() diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VmessFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VmessFmt.kt index 00ba2f7e..a8fe469e 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VmessFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/VmessFmt.kt @@ -162,7 +162,7 @@ object VmessFmt : FmtBase() { fun toOutbound(profileItem: ProfileItem): OutboundBean? { val outboundBean = OutboundBean.create(EConfigType.VMESS) - outboundBean?.settings?.vnext?.get(0)?.let { vnext -> + outboundBean?.settings?.vnext?.first()?.let { vnext -> vnext.address = profileItem.server.orEmpty() vnext.port = profileItem.serverPort.orEmpty().toInt() vnext.users[0].id = profileItem.password.orEmpty() diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/WireguardFmt.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/WireguardFmt.kt index 4d7504d5..57f97a90 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/WireguardFmt.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/fmt/WireguardFmt.kt @@ -82,8 +82,8 @@ object WireguardFmt : FmtBase() { outboundBean?.settings?.let { wireguard -> wireguard.secretKey = profileItem.secretKey wireguard.address = (profileItem.localAddress ?: WIREGUARD_LOCAL_ADDRESS_V4).split(",") - wireguard.peers?.get(0)?.publicKey = profileItem.publicKey.orEmpty() - wireguard.peers?.get(0)?.endpoint = Utils.getIpv6Address(profileItem.server) + ":${profileItem.serverPort}" + wireguard.peers?.first()?.publicKey = profileItem.publicKey.orEmpty() + wireguard.peers?.first()?.endpoint = Utils.getIpv6Address(profileItem.server) + ":${profileItem.serverPort}" wireguard.mtu = profileItem.mtu?.toInt() wireguard.reserved = profileItem.reserved?.split(",")?.map { it.toInt() } } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/MigrateManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/MigrateManager.kt index d6c233e1..e8df7729 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/MigrateManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/MigrateManager.kt @@ -36,7 +36,7 @@ object MigrateManager { //check and remove old decodeServerConfig(guid) ?: continue - //serverStorage.remove(guid) + serverStorage.remove(guid) Log.d(ANG_PACKAGE, "migrateServerConfig2Profile-" + config.remarks) } Log.d(ANG_PACKAGE, "migrateServerConfig2Profile-end") @@ -70,7 +70,7 @@ object MigrateManager { config.serverPort = outbound.getServerPort().toString() config.method = outbound.getSecurityEncryption() config.password = outbound.getPassword() - config.flow = outbound?.settings?.vnext?.get(0)?.users?.get(0)?.flow ?: outbound?.settings?.servers?.get(0)?.flow + config.flow = outbound?.settings?.vnext?.first()?.users?.first()?.flow ?: outbound?.settings?.servers?.first()?.flow config.network = outbound?.streamSettings?.network ?: "tcp" outbound.getTransportSettingDetails()?.let { transportDetails -> @@ -107,7 +107,7 @@ object MigrateManager { config.remarks = configOld.remarks config.server = outbound.getServerAddress() config.serverPort = outbound.getServerPort().toString() - config.username = outbound.settings?.servers?.get(0)?.users?.get(0)?.user + config.username = outbound.settings?.servers?.first()?.users?.first()?.user config.password = outbound.getPassword() return config @@ -120,7 +120,7 @@ object MigrateManager { config.remarks = configOld.remarks config.server = outbound.getServerAddress() config.serverPort = outbound.getServerPort().toString() - config.username = outbound.settings?.servers?.get(0)?.users?.get(0)?.user + config.username = outbound.settings?.servers?.first()?.users?.first()?.user config.password = outbound.getPassword() return config diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/V2rayConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/V2rayConfigManager.kt index 0dacaa52..09ff5200 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/V2rayConfigManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/handler/V2rayConfigManager.kt @@ -419,7 +419,7 @@ object V2rayConfigManager { ) { muxEnabled = false } else if (protocol.equals(EConfigType.VLESS.name, true) - && outbound.settings?.vnext?.get(0)?.users?.get(0)?.flow?.isNotEmpty() == true + && outbound.settings?.vnext?.first()?.users?.first()?.flow?.isNotEmpty() == true ) { muxEnabled = false } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt index d3cbd424..52742312 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt @@ -24,7 +24,7 @@ import libv2ray.Libv2ray import java.util.concurrent.Executors class V2RayTestService : Service() { - private val realTestScope by lazy { CoroutineScope(Executors.newFixedThreadPool(10).asCoroutineDispatcher()) } + private val realTestScope by lazy { CoroutineScope(Executors.newFixedThreadPool(2).asCoroutineDispatcher()) } override fun onCreate() { super.onCreate()