Skip to content

Commit e14646e

Browse files
2dustAnGgIt886
authored andcommitted
Update subscriptions through the proxy first, then update them directly
2dust/v2rayNG#3627
1 parent 8622740 commit e14646e

File tree

7 files changed

+29
-26
lines changed

7 files changed

+29
-26
lines changed

app/src/main/kotlin/com/neko/v2ray/service/SubscriptionUpdater.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.neko.v2ray.AppConfig.SUBSCRIPTION_UPDATE_CHANNEL
1515
import com.neko.v2ray.AppConfig.SUBSCRIPTION_UPDATE_CHANNEL_NAME
1616
import com.neko.v2ray.R
1717
import com.neko.v2ray.util.AngConfigManager
18+
import com.neko.v2ray.util.AngConfigManager.updateConfigViaSub
1819
import com.neko.v2ray.util.MmkvManager
1920
import com.neko.v2ray.util.Utils
2021

@@ -40,8 +41,8 @@ object SubscriptionUpdater {
4041

4142
val subs = MmkvManager.decodeSubscriptions().filter { it.second.autoUpdate }
4243

43-
for (i in subs) {
44-
val subscription = i.second
44+
for (sub in subs) {
45+
val subItem = sub.second
4546

4647
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
4748
notification.setChannelId(SUBSCRIPTION_UPDATE_CHANNEL)
@@ -56,11 +57,10 @@ object SubscriptionUpdater {
5657
notificationManager.notify(3, notification.build())
5758
Log.d(
5859
AppConfig.ANG_PACKAGE,
59-
"subscription automatic update: ---${subscription.remarks}"
60+
"subscription automatic update: ---${subItem.remarks}"
6061
)
61-
val configs = Utils.getUrlContentWithCustomUserAgent(subscription.url)
62-
AngConfigManager.importBatchConfig(configs, i.first, false)
63-
notification.setContentText("Updating ${subscription.remarks}")
62+
updateConfigViaSub(Pair(sub.first, subItem))
63+
notification.setContentText("Updating ${subItem.remarks}")
6464
}
6565
notificationManager.cancel(3)
6666
return Result.success()

app/src/main/kotlin/com/neko/v2ray/service/V2RayVpnService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
203203
}
204204

205205
private fun runTun2socks() {
206-
val socksPort = Utils.parseInt(settingsStorage?.decodeString(AppConfig.PREF_SOCKS_PORT), AppConfig.PORT_SOCKS.toInt())
206+
val socksPort = SettingsManager.getSocksPort()
207207
val cmd = arrayListOf(
208208
File(applicationContext.applicationInfo.nativeLibraryDir, TUN2SOCKS).absolutePath,
209209
"--netif-ipaddr", PRIVATE_VLAN4_ROUTER,

app/src/main/kotlin/com/neko/v2ray/ui/UserAssetActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.neko.v2ray.extension.toTrafficString
3333
import com.neko.v2ray.extension.toast
3434
import com.neko.v2ray.util.MmkvManager
3535
import com.neko.v2ray.util.MmkvManager.settingsStorage
36+
import com.neko.v2ray.util.SettingsManager
3637
import com.neko.v2ray.util.Utils
3738
import kotlinx.coroutines.Dispatchers
3839
import kotlinx.coroutines.launch
@@ -182,7 +183,7 @@ class UserAssetActivity : BaseActivity() {
182183
.show()
183184
toast(R.string.msg_downloading_content)
184185

185-
val httpPort = Utils.parseInt(settingsStorage?.decodeString(AppConfig.PREF_HTTP_PORT), AppConfig.PORT_HTTP.toInt())
186+
val httpPort = SettingsManager.getHttpPort()
186187
var assets = MmkvManager.decodeAssetUrls()
187188
assets = addBuiltInGeoItems(assets)
188189

app/src/main/kotlin/com/neko/v2ray/util/AngConfigManager.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import com.neko.v2ray.AppConfig
1414
import com.neko.v2ray.AppConfig.HY2
1515
import com.neko.v2ray.R
1616
import com.neko.v2ray.dto.*
17-
import com.neko.v2ray.util.MmkvManager.settingsStorage
1817
import com.neko.v2ray.util.fmt.Hysteria2Fmt
1918
import com.neko.v2ray.util.fmt.ShadowsocksFmt
2019
import com.neko.v2ray.util.fmt.SocksFmt
@@ -373,19 +372,17 @@ object AngConfigManager {
373372
return 0
374373
}
375374
Log.d(AppConfig.ANG_PACKAGE, url)
375+
376376
var configText = try {
377-
Utils.getUrlContentWithCustomUserAgent(url)
377+
val httpPort = SettingsManager.getHttpPort()
378+
Utils.getUrlContentWithCustomUserAgent(url, 30000, httpPort)
378379
} catch (e: Exception) {
379380
e.printStackTrace()
380381
""
381382
}
382383
if (configText.isEmpty()) {
383384
configText = try {
384-
val httpPort = Utils.parseInt(
385-
settingsStorage?.decodeString(AppConfig.PREF_HTTP_PORT),
386-
AppConfig.PORT_HTTP.toInt()
387-
)
388-
Utils.getUrlContentWithCustomUserAgent(url, 30000, httpPort)
385+
Utils.getUrlContentWithCustomUserAgent(url)
389386
} catch (e: Exception) {
390387
e.printStackTrace()
391388
""

app/src/main/kotlin/com/neko/v2ray/util/PluginUtil.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ object PluginUtil {
3232
if (outbound.protocol.equals(EConfigType.HYSTERIA2.name, true)) {
3333
Log.d(packageName, "runPlugin $HYSTERIA2")
3434

35-
val socksPort = 100 + Utils.parseInt(settingsStorage?.decodeString(AppConfig.PREF_SOCKS_PORT), AppConfig.PORT_SOCKS.toInt())
35+
val socksPort = 100 + SettingsManager.getSocksPort()
3636
val hy2Config = Hysteria2Fmt.toNativeConfig(config, socksPort) ?: return
3737

3838
val configFile = File(context.noBackupFilesDir, "hy2_${SystemClock.elapsedRealtime()}.json")

app/src/main/kotlin/com/neko/v2ray/util/SettingsManager.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ package com.neko.v2ray.util
22

33
import android.content.Context
44
import android.text.TextUtils
5-
import com.google.gson.Gson
5+
import com.google.gson.Gsonl
6+
import com.neko.v2ray.AppConfig
67
import com.neko.v2ray.dto.RulesetItem
78
import com.neko.v2ray.dto.ServerConfig
89
import com.neko.v2ray.util.MmkvManager.decodeProfileConfig
910
import com.neko.v2ray.util.MmkvManager.decodeServerConfig
1011
import com.neko.v2ray.util.MmkvManager.decodeServerList
12+
import com.neko.v2ray.util.MmkvManager.settingsStorage
13+
import com.neko.v2ray.util.Utils.parseInt
1114
import java.util.Collections
1215

1316
object SettingsManager {
@@ -140,4 +143,12 @@ object SettingsManager {
140143
return null
141144
}
142145

146+
fun getSocksPort(): Int {
147+
return parseInt(settingsStorage?.decodeString(AppConfig.PREF_SOCKS_PORT), AppConfig.PORT_SOCKS.toInt())
148+
}
149+
150+
fun getHttpPort(): Int {
151+
return parseInt(settingsStorage?.decodeString(AppConfig.PREF_HTTP_PORT), AppConfig.PORT_HTTP.toInt())
152+
}
153+
143154
}

app/src/main/kotlin/com/neko/v2ray/util/V2rayConfigUtil.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,8 @@ object V2rayConfigUtil {
101101

102102
private fun inbounds(v2rayConfig: V2rayConfig): Boolean {
103103
try {
104-
val socksPort = Utils.parseInt(
105-
settingsStorage?.decodeString(AppConfig.PREF_SOCKS_PORT),
106-
AppConfig.PORT_SOCKS.toInt()
107-
)
108-
val httpPort = Utils.parseInt(
109-
settingsStorage?.decodeString(AppConfig.PREF_HTTP_PORT),
110-
AppConfig.PORT_HTTP.toInt()
111-
)
104+
val socksPort = SettingsManager.getSocksPort()
105+
val httpPort = SettingsManager.getHttpPort()
112106

113107
v2rayConfig.inbounds.forEach { curInbound ->
114108
if (settingsStorage?.decodeBool(AppConfig.PREF_PROXY_SHARING) != true) {
@@ -149,7 +143,7 @@ object V2rayConfigUtil {
149143

150144
private fun outbounds(v2rayConfig: V2rayConfig, outbound: V2rayConfig.OutboundBean, isPlugin: Boolean): Pair<Boolean, String> {
151145
if (isPlugin) {
152-
val socksPort = 100 + Utils.parseInt(settingsStorage?.decodeString(AppConfig.PREF_SOCKS_PORT), AppConfig.PORT_SOCKS.toInt())
146+
val socksPort = 100 + SettingsManager.getSocksPort()
153147
val outboundNew = V2rayConfig.OutboundBean(
154148
mux = null,
155149
protocol = EConfigType.SOCKS.name.lowercase(),

0 commit comments

Comments
 (0)