From e8585a82c62b8e413b4d86e30419a653fa235a9a Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Wed, 29 Apr 2026 20:53:28 +0800 Subject: [PATCH] Remove echForceQuery Remove echForceQuery support across the app: delete the echForceQuery fields from ProfileItem and V2rayConfig, stop mapping it in V2rayConfigManager, and remove the related UI spinner and containers in ServerActivity and layout_tls.xml. Also delete the ech_force_query_value array and all localized string entries for the ECH force query label, and adjust focus navigation to skip the removed control. This cleans up a deprecated/unused ECH force query setting. --- .../java/com/v2ray/ang/dto/ProfileItem.kt | 1 - .../java/com/v2ray/ang/dto/V2rayConfig.kt | 1 - .../v2ray/ang/handler/V2rayConfigManager.kt | 1 - .../java/com/v2ray/ang/ui/ServerActivity.kt | 14 ----------- .../app/src/main/res/layout/layout_tls.xml | 24 ++----------------- .../app/src/main/res/values-ar/strings.xml | 1 - .../app/src/main/res/values-bn/strings.xml | 1 - .../src/main/res/values-bqi-rIR/strings.xml | 1 - .../app/src/main/res/values-fa/strings.xml | 1 - .../app/src/main/res/values-ru/strings.xml | 1 - .../app/src/main/res/values-vi/strings.xml | 1 - .../src/main/res/values-zh-rCN/strings.xml | 1 - .../src/main/res/values-zh-rTW/strings.xml | 1 - V2rayNG/app/src/main/res/values/arrays.xml | 6 ----- V2rayNG/app/src/main/res/values/strings.xml | 1 - 15 files changed, 2 insertions(+), 54 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/ProfileItem.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/ProfileItem.kt index 9d4b1c40..2c4bb147 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/ProfileItem.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/ProfileItem.kt @@ -46,7 +46,6 @@ data class ProfileItem( var fingerPrint: String? = null, var insecure: Boolean? = null, var echConfigList: String? = null, - var echForceQuery: String? = null, var pinnedCA256: String? = null, var publicKey: String? = null, 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 b65d6827..ce93c026 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 @@ -256,7 +256,6 @@ data class V2rayConfig( val disableSystemRoot: Boolean? = null, val enableSessionResumption: Boolean? = null, var echConfigList: String? = null, - var echForceQuery: String? = null, var pinnedPeerCertSha256: String? = null, // REALITY settings val show: Boolean = false, 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 4b5e00b0..43564ce3 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 @@ -1516,7 +1516,6 @@ object V2rayConfigManager { fingerprint = profileItem.fingerPrint.nullIfBlank(), alpn = profileItem.alpn?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }.takeIf { !it.isNullOrEmpty() }, echConfigList = profileItem.echConfigList.nullIfBlank(), - echForceQuery = profileItem.echForceQuery.nullIfBlank(), pinnedPeerCertSha256 = profileItem.pinnedCA256.nullIfBlank(), publicKey = profileItem.publicKey.nullIfBlank(), shortId = profileItem.shortId.nullIfBlank(), 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 b792d5ba..8fae6678 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 @@ -84,9 +84,6 @@ class ServerActivity : BaseActivity() { private val xhttpMode: Array by lazy { resources.getStringArray(R.array.xhttp_mode) } - private val echForceQuerys: Array by lazy { - resources.getStringArray(R.array.ech_force_query_value) - } // Kotlin synthetics was used, but since it is removed in 1.8. We switch to old manual approach. @@ -140,8 +137,6 @@ class ServerActivity : BaseActivity() { private val layout_extra: LinearLayout? by lazy { findViewById(R.id.layout_extra) } private val et_ech_config_list: EditText? by lazy { findViewById(R.id.et_ech_config_list) } private val container_ech_config_list: LinearLayout? by lazy { findViewById(R.id.lay_ech_config_list) } - private val sp_ech_force_query: Spinner? by lazy { findViewById(R.id.sp_ech_force_query) } - private val container_ech_force_query: LinearLayout? by lazy { findViewById(R.id.lay_ech_force_query) } private val et_pinned_ca256: EditText? by lazy { findViewById(R.id.et_pinned_ca256) } private val container_pinned_ca256: LinearLayout? by lazy { findViewById(R.id.lay_pinned_ca256) } @@ -290,7 +285,6 @@ class ServerActivity : BaseActivity() { container_spider_x, container_mldsa65_verify, container_ech_config_list, - container_ech_force_query, container_pinned_ca256 ).forEach { it?.visibility = View.GONE } } @@ -303,7 +297,6 @@ class ServerActivity : BaseActivity() { container_alpn, container_allow_insecure, container_ech_config_list, - container_ech_force_query, container_pinned_ca256 ).forEach { it?.visibility = View.VISIBLE } listOf( @@ -324,7 +317,6 @@ class ServerActivity : BaseActivity() { container_alpn, container_allow_insecure, container_ech_config_list, - container_ech_force_query, container_pinned_ca256 ).forEach { it?.visibility = View.GONE } listOf( @@ -408,10 +400,6 @@ class ServerActivity : BaseActivity() { sp_allow_insecure?.setSelection(allowinsecure) } et_ech_config_list?.text = Utils.getEditable(config.echConfigList) - config.echForceQuery?.let { it -> - val index = Utils.arrayFind(echForceQuerys, it) - index.let { sp_ech_force_query?.setSelection(if (it >= 0) it else 0) } - } et_pinned_ca256?.text = Utils.getEditable(config.pinnedCA256) } else if (config.security == REALITY) { et_public_key?.text = Utils.getEditable(config.publicKey.orEmpty()) @@ -595,7 +583,6 @@ class ServerActivity : BaseActivity() { val spiderX = et_spider_x?.text?.toString() val mldsa65Verify = et_mldsa65_verify?.text?.toString() val echConfigList = et_ech_config_list?.text?.toString() - val echForceQueryIndex = sp_ech_force_query?.selectedItemPosition ?: 0 val pinnedCA256 = et_pinned_ca256?.text?.toString() val allowInsecure = @@ -615,7 +602,6 @@ class ServerActivity : BaseActivity() { config.spiderX = spiderX config.mldsa65Verify = mldsa65Verify config.echConfigList = echConfigList - config.echForceQuery = echForceQuerys[echForceQueryIndex] config.pinnedCA256 = pinnedCA256 } diff --git a/V2rayNG/app/src/main/res/layout/layout_tls.xml b/V2rayNG/app/src/main/res/layout/layout_tls.xml index 15de8788..7c2f0ceb 100644 --- a/V2rayNG/app/src/main/res/layout/layout_tls.xml +++ b/V2rayNG/app/src/main/res/layout/layout_tls.xml @@ -134,30 +134,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" - android:nextFocusDown="@+id/sp_ech_force_query" /> + android:nextFocusDown="@+id/et_pinned_ca256" /> - - - - - - - + android:nextFocusDown="@+id/et_public_key" /> diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index bdab62cc..de6ee652 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -117,7 +117,6 @@ XHTTP Extra raw JSON, format: { XHTTPObject } finalMask raw JSON, format: { FinalMaskObject } EchConfigList - EchForceQuery Certificate fingerprint (SHA-256) diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 03a7da93..63fec7ec 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -116,7 +116,6 @@ XHTTP Extra raw JSON, format: { XHTTPObject } finalMask raw JSON, format: { FinalMaskObject } EchConfigList - EchForceQuery Certificate fingerprint (SHA-256) diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml index e4f5e568..9d1c2904 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -116,7 +116,6 @@ XHTTP Extra خام JSON، قالوو: { XHTTPObject } finalMask خام JSON، قالوو: { FinalMaskObject } نومگه کانفیگ Ech - پورس وو جۊ اجباری Ech Certificate fingerprint (SHA-256) diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 60450338..581e90e5 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -116,7 +116,6 @@ خام JSON XHTTP Extra، قالب: { XHTTPObject } finalMask raw JSON, format: { FinalMaskObject } لیست کانفیگ Ech - EchForceQuery Certificate fingerprint (SHA-256) diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index aef049aa..623017ab 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -116,7 +116,6 @@ Необработанный JSON XHTTP Extra, формат: { XHTTPObject } Необработанный JSON FinalMask, формат: { FinalMaskObject } EchConfigList - EchForceQuery Отпечаток сертификата (SHA-256) diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index c15d7689..8232249d 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -116,7 +116,6 @@ XHTTP Extra raw JSON, format: { XHTTPObject } finalMask raw JSON, format: { FinalMaskObject } EchConfigList - EchForceQuery Certificate fingerprint (SHA-256) 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 35fd1704..53ad90d1 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -116,7 +116,6 @@ XHTTP Extra 原始 JSON,格式: { XHTTPObject } FinalMask 原始 JSON 格式: { FinalMaskObject } EchConfigList - EchForceQuery 证书指纹 (SHA-256) 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 67d87c10..8efd19fa 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -116,7 +116,6 @@ XHTTP Extra 原始 JSON,格式: { XHTTPObject } FinalMask 原始 JSON 格式: { FinalMaskObject } EchConfigList - EchForceQuery 證書指紋 (SHA-256) diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml index e4ceda63..55f7f65c 100644 --- a/V2rayNG/app/src/main/res/values/arrays.xml +++ b/V2rayNG/app/src/main/res/values/arrays.xml @@ -215,11 +215,5 @@ 2 - - - none - half - full - \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index f11b19c7..10a170ac 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -117,7 +117,6 @@ XHTTP Extra raw JSON, format: { XHTTPObject } finalMask raw JSON, format: { FinalMaskObject } EchConfigList - EchForceQuery Certificate fingerprint (SHA-256)