fix(network): trigger VPN bypass on handshake failure too

This commit is contained in:
klockky
2026-05-16 08:34:54 +03:00
parent bfde7133ca
commit 07290614ec
5 changed files with 113 additions and 35 deletions
@@ -60,11 +60,25 @@ class MainActivity : FlutterActivity() {
}
return mapOf(
"hasTun" to tunNames.isNotEmpty(),
"hasVpn" to hasVpnTransport(),
"tunNames" to tunNames,
"directInterfaces" to directNames,
)
}
// VPN активен, даже если tun-интерфейс не виден приложению (Android 10+).
private fun hasVpnTransport(): Boolean {
val cm = connectivityManager()
for (network in cm.allNetworks) {
val caps = cm.getNetworkCapabilities(network) ?: continue
if (caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) return true
if (!caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
return true
}
}
return false
}
// Привязывает процесс к не-VPN сети: Wi-Fi → Ethernet → моб.
private fun bindToNonVpnNetwork(): Map<String, Any?> {
val cm = connectivityManager()