From 796a9cd9b0fb568a4d9c387b3ca315b1ee525bbd Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Thu, 23 Mar 2023 22:31:53 +0900 Subject: [PATCH] updateUnderlyingNetwork --- .../io/nekohasekai/sagernet/bg/BaseService.kt | 3 + .../io/nekohasekai/sagernet/bg/VpnService.kt | 61 +++---------------- buildSrc/src/main/kotlin/Helpers.kt | 4 +- 3 files changed, 13 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sagernet/bg/BaseService.kt b/app/src/main/java/io/nekohasekai/sagernet/bg/BaseService.kt index 0ad3c7e..1a80b08 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/bg/BaseService.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/bg/BaseService.kt @@ -246,6 +246,9 @@ class BaseService { suspend fun preInit() { DefaultNetworkListener.start(this) { SagerNet.connectivity.getLinkProperties(it)?.also { link -> + SagerNet.underlyingNetwork = it + DataStore.vpnService?.updateUnderlyingNetwork() + // val oldName = upstreamInterfaceName if (oldName != link.interfaceName) { upstreamInterfaceName = link.interfaceName diff --git a/app/src/main/java/io/nekohasekai/sagernet/bg/VpnService.kt b/app/src/main/java/io/nekohasekai/sagernet/bg/VpnService.kt index f1205ec..b6f0b43 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/bg/VpnService.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/bg/VpnService.kt @@ -127,13 +127,7 @@ class VpnService : BaseVpnService(), } } - // ? - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - // TODO listen for change? - if (SagerNet.underlyingNetwork != null) { - builder.setUnderlyingNetworks(arrayOf(SagerNet.underlyingNetwork)) - } - } + updateUnderlyingNetwork(builder) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) builder.setMetered(metered) // app route @@ -212,51 +206,14 @@ class VpnService : BaseVpnService(), return conn!!.fd } -// -// val appStats = mutableListOf() -// -// override fun updateStats(stats: AppStats) { -// appStats.add(stats) -// } -// -// fun persistAppStats() { -// if (!DataStore.appTrafficStatistics) return -// val tun = getTun() ?: return -// appStats.clear() -// tun.readAppTraffics(this) -// val toUpdate = mutableListOf() -// val all = SagerDatabase.statsDao.all().associateBy { it.packageName } -// for (stats in appStats) { -// if (stats.nekoConnectionsJSON.isNotBlank()) continue -// val packageName = if (stats.uid >= 10000) { -// PackageCache.uidMap[stats.uid]?.iterator()?.next() ?: "android" -// } else { -// "android" -// } -// if (!all.containsKey(packageName)) { -// SagerDatabase.statsDao.create( -// StatsEntity( -// packageName = packageName, -// tcpConnections = stats.tcpConnTotal, -// udpConnections = stats.udpConnTotal, -// uplink = stats.uplinkTotal, -// downlink = stats.downlinkTotal -// ) -// ) -// } else { -// val entity = all[packageName]!! -// entity.tcpConnections += stats.tcpConnTotal -// entity.udpConnections += stats.udpConnTotal -// entity.uplink += stats.uplinkTotal -// entity.downlink += stats.downlinkTotal -// toUpdate.add(entity) -// } -// if (toUpdate.isNotEmpty()) { -// SagerDatabase.statsDao.update(toUpdate) -// } -// -// } -// } + fun updateUnderlyingNetwork(builder: Builder? = null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { + SagerNet.underlyingNetwork?.let { + builder?.setUnderlyingNetworks(arrayOf(SagerNet.underlyingNetwork)) + ?: setUnderlyingNetworks(arrayOf(SagerNet.underlyingNetwork)) + } + } + } override fun onRevoke() = stopRunner() diff --git a/buildSrc/src/main/kotlin/Helpers.kt b/buildSrc/src/main/kotlin/Helpers.kt index 3bbfb4d..432f437 100644 --- a/buildSrc/src/main/kotlin/Helpers.kt +++ b/buildSrc/src/main/kotlin/Helpers.kt @@ -224,9 +224,7 @@ fun Project.setupApp() { productFlavors { create("oss") create("fdroid") - create("play") { - versionCode = verCode + 1 - } + create("play") } applicationVariants.all {