From e257c4cb56dc59f834eeb715a1c35ea45638aca5 Mon Sep 17 00:00:00 2001 From: tiou Date: Mon, 23 Aug 2021 16:49:35 +0800 Subject: [PATCH 1/2] Subscription support http basic authentication in url. --- V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 c8db3d86..aab86467 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 @@ -459,10 +459,15 @@ object Utils { } @Throws(IOException::class) - fun getUrlContentWithCustomUserAgent(url: String?): String { - val conn = URL(url).openConnection() + fun getUrlContentWithCustomUserAgent(urlStr: String?): String { + val url = URL(urlStr) + val conn = url.openConnection() conn.setRequestProperty("Connection", "close") conn.setRequestProperty("User-agent", "v2rayNG/${BuildConfig.VERSION_NAME}") + url.userInfo?.let { + conn.setRequestProperty("Authorization", + "Basic ${encode(URLDecoder.decode(it,"UTF-8"))}") + } conn.useCaches = false return conn.inputStream.use { it.bufferedReader().readText() From bdc27dd18030ae5d356d34481386f51e9f789a06 Mon Sep 17 00:00:00 2001 From: tiou Date: Mon, 23 Aug 2021 16:58:48 +0800 Subject: [PATCH 2/2] Use built-in urlDecode. --- V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 aab86467..a7c2251e 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 @@ -466,7 +466,7 @@ object Utils { conn.setRequestProperty("User-agent", "v2rayNG/${BuildConfig.VERSION_NAME}") url.userInfo?.let { conn.setRequestProperty("Authorization", - "Basic ${encode(URLDecoder.decode(it,"UTF-8"))}") + "Basic ${encode(urlDecode(it))}") } conn.useCaches = false return conn.inputStream.use {