From a1d68fcde3b759f11d0b2d1e10aae5439fdef182 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 5 May 2024 17:08:05 +0800 Subject: [PATCH] Added attempt to update subscription via proxy https://github.com/2dust/v2rayNG/issues/2760 --- .../main/kotlin/com/v2ray/ang/ui/MainActivity.kt | 14 +++++++++++++- .../src/main/kotlin/com/v2ray/ang/util/Utils.kt | 13 +++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index cd33f7f2..81b708c2 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -540,10 +540,22 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList } Log.d(ANG_PACKAGE, url) lifecycleScope.launch(Dispatchers.IO) { - val configText = try { + var configText = try { Utils.getUrlContentWithCustomUserAgent(url) } catch (e: Exception) { e.printStackTrace() + "" + } + if(configText.isEmpty()) { + configText = try { + val httpPort = Utils.parseInt(settingsStorage?.decodeString(AppConfig.PREF_HTTP_PORT), AppConfig.PORT_HTTP.toInt()) + Utils.getUrlContentWithCustomUserAgent(url, httpPort) + } catch (e: Exception) { + e.printStackTrace() + "" + } + } + if(configText.isEmpty()) { launch(Dispatchers.Main) { toast("\"" + it.second.remarks + "\" " + getString(R.string.toast_failure)) } 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 c7492e4c..902de261 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 @@ -352,9 +352,18 @@ object Utils { } @Throws(IOException::class) - fun getUrlContentWithCustomUserAgent(urlStr: String?): String { + fun getUrlContentWithCustomUserAgent(urlStr: String?, httpPort: Int = 0): String { val url = URL(urlStr) - val conn = url.openConnection() + val conn = if (httpPort == 0) { + url.openConnection() + } else { + url.openConnection( + Proxy( + Proxy.Type.HTTP, + InetSocketAddress("127.0.0.1", httpPort) + ) + ) + } conn.setRequestProperty("Connection", "close") conn.setRequestProperty("User-agent", "v2rayNG/${BuildConfig.VERSION_NAME}") url.userInfo?.let {