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 15374923..e28dfaa0 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 @@ -135,6 +135,7 @@ data class V2rayConfig( var tcpSettings: TcpSettingsBean? = null, var kcpSettings: KcpSettingsBean? = null, var wsSettings: WsSettingsBean? = null, + var httpupgradeSettings: HttpupgradeSettingsBean? = null, var httpSettings: HttpSettingsBean? = null, var tlsSettings: TlsSettingsBean? = null, var quicSettings: QuicSettingBean? = null, @@ -184,6 +185,10 @@ data class V2rayConfig( data class HeadersBean(var Host: String = "") } + data class HttpupgradeSettingsBean(var path: String = "", + var host: String = "", + val acceptProxyProtocol: Boolean? = null) + data class HttpSettingsBean(var host: List = ArrayList(), var path: String = "") @@ -259,6 +264,13 @@ data class V2rayConfig( wssetting.path = path ?: "/" wsSettings = wssetting } + "httpupgrade" -> { + val httpupgradeSetting = HttpupgradeSettingsBean() + httpupgradeSetting.host = host ?: "" + sni = httpupgradeSetting.host + httpupgradeSetting.path = path ?: "/" + httpupgradeSettings = httpupgradeSetting + } "h2", "http" -> { network = "h2" val h2Setting = HttpSettingsBean() @@ -388,6 +400,12 @@ data class V2rayConfig( wsSetting.headers.Host, wsSetting.path) } + "httpupgrade" -> { + val httpupgradeSetting = streamSettings?.httpupgradeSettings ?: return null + listOf("", + httpupgradeSetting.host, + httpupgradeSetting.path) + } "h2" -> { val h2Setting = streamSettings?.httpSettings ?: return null listOf("", diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt index 01a78938..9bccd603 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt @@ -731,7 +731,7 @@ object AngConfigManager { } } - "ws" -> { + "ws", "httpupgrade" -> { if (!TextUtils.isEmpty(transportDetails[1])) { dicQuery["host"] = Utils.urlEncode(transportDetails[1]) } diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 17b907bf..0dfe8577 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -46,8 +46,8 @@ 底层传输方式(transport) 伪装类型(type) gRPC 传输模式(mode) - 伪装域名(host)(host/ws host/h2 host)/QUIC 加密方式 - path(ws path/h2 path)/QUIC 加密密钥/kcp seed/gRPC serviceName + 伪装域名(host)(host/ws host/httpupgrade host/h2 host)/QUIC 加密方式 + path(ws path/httpupgrade path/h2 path)/QUIC 加密密钥/kcp seed/gRPC serviceName 传输层安全(TLS) 跳过证书验证(allowInsecure) SNI diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index 921fb01a..6ccce4de 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -46,8 +46,8 @@ 底層傳輸方式 (transport) 標頭類型 gRPC 傳輸模式 (mode) - 要求主機 (host)(host/ws host/h2 host)/QUIC 加密方式 - path(ws path/h2 path)/QUIC 加密金鑰/kcp seed/gRPC serviceName + 要求主機 (host)(host/ws host/httpupgrade host/h2 host)/QUIC 加密方式 + path(ws path/httpupgrade path/h2 path)/QUIC 加密金鑰/kcp seed/gRPC serviceName 傳輸層安全 (TLS) 跳過憑證驗證 (allowInsecure) SNI diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml index a10330e4..861200e3 100644 --- a/V2rayNG/app/src/main/res/values/arrays.xml +++ b/V2rayNG/app/src/main/res/values/arrays.xml @@ -25,6 +25,7 @@ tcp kcp ws + httpupgrade h2 quic grpc diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 287723d9..e72813d5 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -47,8 +47,8 @@ Transport head type gRPC mode - request host(host/ws host/h2 host)/QUIC security - path(ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName + request host(host/ws host/httpupgrade host/h2 host)/QUIC security + path(ws path/httpupgrade path/h2 path)/QUIC key/kcp seed/gRPC serviceName TLS Fingerprint Alpn diff --git a/V2rayNG/build.gradle.kts b/V2rayNG/build.gradle.kts index 8adb9ddf..9f13047e 100644 --- a/V2rayNG/build.gradle.kts +++ b/V2rayNG/build.gradle.kts @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.3.0" apply false - id("com.android.library") version "8.3.0" apply false + id("com.android.application") version "8.2.2" apply false + id("com.android.library") version "8.2.2" apply false id("org.jetbrains.kotlin.android") version "1.9.23" apply false } \ No newline at end of file