From e5aba5d99bc71e418d4ce4bd0f2a80583382f819 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Mon, 21 Oct 2024 14:25:05 +0800 Subject: [PATCH] Adding checks for subscription url --- .../app/src/main/kotlin/com/v2ray/ang/AppConfig.kt | 2 -- .../main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt | 8 ++++---- .../kotlin/com/v2ray/ang/util/AngConfigManager.kt | 2 +- .../app/src/main/kotlin/com/v2ray/ang/util/Utils.kt | 12 ++++++++++++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt index 04e367a8..69250932 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -60,8 +60,6 @@ object AppConfig { const val CACHE_KEYWORD_FILTER = "cache_keyword_filter" /** Protocol identifiers. */ - const val PROTOCOL_HTTP: String = "http://" - const val PROTOCOL_HTTPS: String = "https://" const val PROTOCOL_FREEDOM: String = "freedom" /** Broadcast actions. */ diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt index 86b27da5..880a7b29 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt @@ -81,10 +81,10 @@ class SubEditActivity : BaseActivity() { toast(R.string.sub_setting_remarks) return false } -// if (TextUtils.isEmpty(subItem.url)) { -// toast(R.string.sub_setting_url) -// return false -// } + if (!Utils.isValidSubUrl(subItem.url)) { + toast(R.string.toast_invalid_url) + return false + } MmkvManager.encodeSubscription(editSubId, subItem) toast(R.string.toast_success) 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 b4e1b7c4..ab4a4b9e 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 @@ -219,7 +219,7 @@ object AngConfigManager { var count = 0 servers.lines() .forEach { str -> - if (str.startsWith(AppConfig.PROTOCOL_HTTP) || str.startsWith(AppConfig.PROTOCOL_HTTPS)) { + if (Utils.isValidSubUrl(str)) { count += importUrlAsSubscription(str) } } 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 687fac9b..4a30a474 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 @@ -465,5 +465,17 @@ object Utils { // if the program gets here, no port in the range was found throw IOException("no free port found") } + + fun isValidSubUrl(value: String?): Boolean { + try { + if (value.isNullOrEmpty()) return false + if (URLUtil.isHttpsUrl(value)) return true + if (URLUtil.isHttpUrl(value) && value.contains(LOOPBACK)) return true + } catch (e: Exception) { + e.printStackTrace() + } + return false + } + }