From 609e688d87a12629638ae3d37d0f1444de11ab3e Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 15 Jan 2026 14:30:10 +0800 Subject: [PATCH] Fix HYSTERIA2 string --- .../src/main/java/com/v2ray/ang/AppConfig.kt | 1 + .../java/com/v2ray/ang/dto/EConfigType.kt | 1 + .../java/com/v2ray/ang/dto/V2rayConfig.kt | 130 +----------------- .../com/v2ray/ang/handler/AngConfigManager.kt | 1 + .../v2ray/ang/handler/V2rayConfigManager.kt | 4 +- .../java/com/v2ray/ang/ui/ServerActivity.kt | 1 + 6 files changed, 14 insertions(+), 124 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt index 98eed86d..d72bf027 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt @@ -171,6 +171,7 @@ object AppConfig { const val TROJAN = "trojan://" const val WIREGUARD = "wireguard://" const val TUIC = "tuic://" + const val HYSTERIA = "hysteria://" const val HYSTERIA2 = "hysteria2://" const val HY2 = "hy2://" diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/EConfigType.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/EConfigType.kt index cbc5ee21..ee8f8d09 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/EConfigType.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/EConfigType.kt @@ -14,6 +14,7 @@ enum class EConfigType(val value: Int, val protocolScheme: String) { // TUIC(8, AppConfig.TUIC), HYSTERIA2(9, AppConfig.HYSTERIA2), + HYSTERIA(900, AppConfig.HYSTERIA), HTTP(10, AppConfig.HTTP), POLICYGROUP (101, AppConfig.CUSTOM); diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt index 335c2003..dd14e717 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.dto import com.google.gson.annotations.SerializedName import com.v2ray.ang.AppConfig -import com.v2ray.ang.util.Utils data class V2rayConfig( var remarks: String? = null, @@ -334,11 +333,14 @@ data class V2rayConfig( || 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?.first()?.address } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { return settings?.peers?.first()?.endpoint?.substringBeforeLast(":") + } else if (protocol.equals(EConfigType.HYSTERIA2.name, true) + || protocol.equals(EConfigType.HYSTERIA.name, true) + ) { + return settings?.address as String? } return null } @@ -352,132 +354,14 @@ data class V2rayConfig( || 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?.first()?.port } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { return settings?.peers?.first()?.endpoint?.substringAfterLast(":")?.toInt() - } - return null - } - - fun getServerAddressAndPort(): String { - val address = getServerAddress().orEmpty() - val port = getServerPort() - return Utils.getIpv6Address(address) + ":" + port - } - - fun getPassword(): String? { - if (protocol.equals(EConfigType.VMESS.name, true) - || protocol.equals(EConfigType.VLESS.name, true) + } else if (protocol.equals(EConfigType.HYSTERIA2.name, true) + || protocol.equals(EConfigType.HYSTERIA.name, true) ) { - 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?.first()?.password - } else if (protocol.equals(EConfigType.SOCKS.name, true) - || protocol.equals(EConfigType.HTTP.name, true) - ) { - return settings?.servers?.first()?.users?.first()?.pass - } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { - return settings?.secretKey - } - return null - } - - fun getSecurityEncryption(): String? { - return when { - 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 - } - } - - fun getTransportSettingDetails(): List? { - if (protocol.equals(EConfigType.VMESS.name, true) - || protocol.equals(EConfigType.VLESS.name, true) - || protocol.equals(EConfigType.TROJAN.name, true) - || protocol.equals(EConfigType.SHADOWSOCKS.name, true) - ) { - val transport = streamSettings?.network ?: return null - return when (transport) { - NetworkType.TCP.type -> { - val tcpSetting = streamSettings?.tcpSettings ?: return null - listOf( - tcpSetting.header.type, - tcpSetting.header.request?.headers?.Host?.joinToString(",").orEmpty(), - tcpSetting.header.request?.path?.joinToString(",").orEmpty() - ) - } - - NetworkType.KCP.type -> { - val kcpSetting = streamSettings?.kcpSettings ?: return null - listOf( - kcpSetting.header.type, - "", - kcpSetting.seed.orEmpty() - ) - } - - NetworkType.WS.type -> { - val wsSetting = streamSettings?.wsSettings ?: return null - listOf( - "", - wsSetting.headers.Host, - wsSetting.path - ) - } - - NetworkType.HTTP_UPGRADE.type -> { - val httpupgradeSetting = streamSettings?.httpupgradeSettings ?: return null - listOf( - "", - httpupgradeSetting.host, - httpupgradeSetting.path - ) - } - - NetworkType.XHTTP.type -> { - val xhttpSettings = streamSettings?.xhttpSettings ?: return null - listOf( - "", - xhttpSettings.host, - xhttpSettings.path - ) - } - - NetworkType.H2.type -> { - val h2Setting = streamSettings?.httpSettings ?: return null - listOf( - "", - h2Setting.host.joinToString(","), - h2Setting.path - ) - } - -// "quic" -> { -// val quicSetting = streamSettings?.quicSettings ?: return null -// listOf( -// quicSetting.header.type, -// quicSetting.security, -// quicSetting.key -// ) -// } - - NetworkType.GRPC.type -> { - val grpcSetting = streamSettings?.grpcSettings ?: return null - listOf( - if (grpcSetting.multiMode == true) "multi" else "gun", - grpcSetting.authority.orEmpty(), - grpcSetting.serviceName - ) - } - - else -> null - } + return settings?.port } return null } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt index eef2ea33..33311750 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt @@ -142,6 +142,7 @@ object AngConfigManager { EConfigType.WIREGUARD -> WireguardFmt.toUri(config) EConfigType.HYSTERIA2 -> Hysteria2Fmt.toUri(config) EConfigType.POLICYGROUP -> "" + else -> {} } } catch (e: Exception) { Log.e(AppConfig.TAG, "Failed to share config for GUID: $guid", e) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt index 486c3f0d..c612b783 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt @@ -1003,6 +1003,7 @@ object V2rayConfigManager { EConfigType.HYSTERIA2 -> Hysteria2Fmt.toOutbound(profileItem) EConfigType.HTTP -> HttpFmt.toOutbound(profileItem) EConfigType.POLICYGROUP -> null + else -> null } } @@ -1051,9 +1052,10 @@ object V2rayConfigManager { ) ) + EConfigType.HYSTERIA, EConfigType.HYSTERIA2 -> return OutboundBean( - protocol = "hysteria", + protocol = EConfigType.HYSTERIA.name.lowercase(), settings = OutSettingsBean( servers = null ), diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerActivity.kt index 3931e39f..c55bdc50 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerActivity.kt @@ -154,6 +154,7 @@ class ServerActivity : BaseActivity() { EConfigType.WIREGUARD -> R.layout.activity_server_wireguard EConfigType.HYSTERIA2 -> R.layout.activity_server_hysteria2 EConfigType.POLICYGROUP -> null + else -> null } ?: return setContentViewWithToolbar(layoutId, showHomeAsUp = true, title = (config?.configType ?: createConfigType).toString())