From 599bf9c9e0e1e72d77813386ef76e85025362b6e Mon Sep 17 00:00:00 2001 From: Zane Schepke Date: Sat, 14 Jun 2025 15:39:22 -0400 Subject: [PATCH] fix: wifi name surrounding quotes, prevent multiple auto-tunnel jobs #768 #797 --- .../service/autotunnel/AutoTunnelService.kt | 5 +++++ .../networkmonitor/AndroidNetworkMonitor.kt | 20 ++++++++++--------- .../zaneschepke/networkmonitor/Extensions.kt | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/autotunnel/AutoTunnelService.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/autotunnel/AutoTunnelService.kt index ab35fdff..ea16c602 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/autotunnel/AutoTunnelService.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/autotunnel/AutoTunnelService.kt @@ -73,6 +73,8 @@ class AutoTunnelService : LifecycleService() { private val binder = LocalBinder(this) + private var isServiceRunning = false + override fun onCreate() { super.onCreate() launchWatcherNotification() @@ -91,6 +93,8 @@ class AutoTunnelService : LifecycleService() { } fun start() { + if (isServiceRunning) return + isServiceRunning = true kotlin .runCatching { launchWatcherNotification() @@ -103,6 +107,7 @@ class AutoTunnelService : LifecycleService() { } fun stop() { + isServiceRunning = false wakeLock?.let { if (it.isHeld) it.release() } stopSelf() } diff --git a/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/AndroidNetworkMonitor.kt b/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/AndroidNetworkMonitor.kt index 1d73efb6..e5263b45 100644 --- a/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/AndroidNetworkMonitor.kt +++ b/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/AndroidNetworkMonitor.kt @@ -181,8 +181,16 @@ class AndroidNetworkMonitor(context: Context, val wifiDetectionMethod: WifiDetec activeWifiNetworks.add(network.toString()) currentSsid = when (wifiDetectionMethod) { - WifiDetectionMethod.DEFAULT -> - networkCapabilities?.getWifiSsid() ?: getWifiSsid() + WifiDetectionMethod.DEFAULT -> { + if (networkCapabilities == null) { + Timber.d("Capabilities not available, getting SSID via legacy API") + getWifiSsid() + } else + networkCapabilities.getWifiSsid().also { + Timber.d("Got SSID from capabilities") + } + } + WifiDetectionMethod.LEGACY -> getWifiSsid() WifiDetectionMethod.ROOT -> rootShell.getCurrentWifiName() // TODO implement Shizuku @@ -212,18 +220,12 @@ class AndroidNetworkMonitor(context: Context, val wifiDetectionMethod: WifiDetec } else -> object : ConnectivityManager.NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) { - private var netCapabilities: NetworkCapabilities? = null - - override fun onAvailable(network: Network) { - Timber.i("Wi-Fi change detected using new API") - launch { handleOnWifiAvailable(network, netCapabilities) } - } override fun onCapabilitiesChanged( network: Network, networkCapabilities: NetworkCapabilities, ) { - launch { wifiMutex.withLock { netCapabilities = networkCapabilities } } + launch { handleOnWifiAvailable(network, networkCapabilities) } } override fun onLost(network: Network) { diff --git a/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/Extensions.kt b/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/Extensions.kt index 53ff1cad..1bd647ee 100644 --- a/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/Extensions.kt +++ b/networkmonitor/src/main/java/com/zaneschepke/networkmonitor/Extensions.kt @@ -29,7 +29,7 @@ fun NetworkCapabilities.getWifiSsid(): String? { val info: WifiInfo if (transportInfo is WifiInfo) { info = transportInfo as WifiInfo - return info.ssid + return info.ssid.removeSurrounding("\"").trim() } } return null