diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt index 880d4675..b9e39749 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt @@ -11,7 +11,6 @@ import androidx.preference.SwitchPreference import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.net.Routing import be.mygod.vpnhotspot.net.Routing.Companion.IPTABLES -import be.mygod.vpnhotspot.net.monitor.FallbackUpstreamMonitor import be.mygod.vpnhotspot.net.monitor.IpMonitor import be.mygod.vpnhotspot.net.monitor.UpstreamMonitor import be.mygod.vpnhotspot.preference.AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat @@ -132,24 +131,23 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { override fun onDisplayPreferenceDialog(preference: Preference) { when (preference.key) { - UpstreamMonitor.KEY, FallbackUpstreamMonitor.KEY -> - AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat().apply { - setArguments(preference.key, try { - NetworkInterface.getNetworkInterfaces().asSequence() - .filter { - try { - it.isUp && !it.isLoopback && it.interfaceAddresses.isNotEmpty() - } catch (_: SocketException) { - false - } + UpstreamMonitor.KEY -> AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat().apply { + setArguments(preference.key, try { + NetworkInterface.getNetworkInterfaces().asSequence() + .filter { + try { + it.isUp && !it.isLoopback && it.interfaceAddresses.isNotEmpty() + } catch (_: SocketException) { + false } - .map { it.name }.sorted().toList().toTypedArray() - } catch (e: SocketException) { - Timber.d(e) - emptyArray() - }) - setTargetFragment(this@SettingsPreferenceFragment, 0) - }.show(fragmentManager ?: return, preference.key) + } + .map { it.name }.sorted().toList().toTypedArray() + } catch (e: SocketException) { + Timber.d(e) + emptyArray() + }) + setTargetFragment(this@SettingsPreferenceFragment, 0) + }.show(fragmentManager ?: return, preference.key) else -> super.onDisplayPreferenceDialog(preference) } } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/Routing.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/Routing.kt index 535029c8..d749a9f4 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/Routing.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/Routing.kt @@ -3,7 +3,7 @@ package be.mygod.vpnhotspot.net import android.os.Build import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.R -import be.mygod.vpnhotspot.net.monitor.FallbackUpstreamMonitor +import be.mygod.vpnhotspot.net.monitor.DefaultNetworkMonitor import be.mygod.vpnhotspot.net.monitor.IpNeighbourMonitor import be.mygod.vpnhotspot.net.monitor.TrafficRecorder import be.mygod.vpnhotspot.net.monitor.UpstreamMonitor @@ -283,16 +283,14 @@ class Routing(val downstream: String, ownerAddress: InterfaceAddress? = null) : fun stop() { IpNeighbourMonitor.unregisterCallback(this) - FallbackUpstreamMonitor.unregisterCallback(fallbackUpstream) + DefaultNetworkMonitor.unregisterCallback(fallbackUpstream) UpstreamMonitor.unregisterCallback(upstream) } fun commit(localOnly: Boolean = false) { transaction.commit() Timber.i("Started routing for $downstream") - if (localOnly || masqueradeMode != MasqueradeMode.Netd) { - FallbackUpstreamMonitor.registerCallback(fallbackUpstream) - } + if (localOnly || masqueradeMode != MasqueradeMode.Netd) DefaultNetworkMonitor.registerCallback(fallbackUpstream) UpstreamMonitor.registerCallback(upstream) IpNeighbourMonitor.registerCallback(this) } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/FallbackUpstreamMonitor.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/FallbackUpstreamMonitor.kt deleted file mode 100644 index b6eb2c50..00000000 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/FallbackUpstreamMonitor.kt +++ /dev/null @@ -1,41 +0,0 @@ -package be.mygod.vpnhotspot.net.monitor - -import android.content.SharedPreferences -import be.mygod.vpnhotspot.App.Companion.app - -abstract class FallbackUpstreamMonitor private constructor() : UpstreamMonitor() { - companion object : SharedPreferences.OnSharedPreferenceChangeListener { - const val KEY = "service.upstream.fallback" - - init { - app.pref.registerOnSharedPreferenceChangeListener(this) - } - - private fun generateMonitor(): UpstreamMonitor { - val upstream = app.pref.getString(KEY, null) - return if (upstream.isNullOrEmpty()) DefaultNetworkMonitor else InterfaceMonitor(upstream) - } - private var monitor = generateMonitor() - - fun registerCallback(callback: Callback) = synchronized(this) { monitor.registerCallback(callback) } - fun unregisterCallback(callback: Callback) = synchronized(this) { monitor.unregisterCallback(callback) } - - override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { - if (key == KEY) synchronized(this) { - val old = monitor - val callbacks = synchronized(old) { - val callbacks = old.callbacks.toList() - old.callbacks.clear() - old.destroyLocked() - callbacks - } - val new = generateMonitor() - monitor = new - for (callback in callbacks) { - callback.onLost() - new.registerCallback(callback) - } - } - } - } -} diff --git a/mobile/src/main/res/drawable/ic_action_settings_input_component.xml b/mobile/src/main/res/drawable/ic_action_settings_input_component.xml deleted file mode 100644 index 2a87e5bd..00000000 --- a/mobile/src/main/res/drawable/ic_action_settings_input_component.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/mobile/src/main/res/values-zh-rCN/strings.xml b/mobile/src/main/res/values-zh-rCN/strings.xml index cd32c5e0..bdb7639a 100644 --- a/mobile/src/main/res/values-zh-rCN/strings.xml +++ b/mobile/src/main/res/values-zh-rCN/strings.xml @@ -100,8 +100,6 @@ 备用 DNS 服务器[:端口] 上游网络接口 自动检测系统 VPN - 备用上游接口 - 自动检测系统默认网络 清理/重新应用路由规则 将修改的设置应用到当前启用的服务上。也可用于修复偶尔会发生的竞态条件。 尝试修复 DHCP diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index 9e80294e..fa009924 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -106,8 +106,6 @@ Fallback DNS server[:port] Upstream network interface Auto detect system VPN - Fallback upstream interface - Auto detect system default network Enable DHCP workaround Use this if clients cannot obtain IP addresses. Clean/reapply routing rules diff --git a/mobile/src/main/res/xml/pref_settings.xml b/mobile/src/main/res/xml/pref_settings.xml index 4a5694b5..280ce008 100644 --- a/mobile/src/main/res/xml/pref_settings.xml +++ b/mobile/src/main/res/xml/pref_settings.xml @@ -12,11 +12,6 @@ app:icon="@drawable/ic_action_settings_ethernet" app:title="@string/settings_service_upstream" app:summary="@string/settings_service_upstream_auto"/> -