Ensure default ip monitor mode is used

This commit is contained in:
Mygod
2020-06-11 06:36:39 +08:00
parent b656b71577
commit c20298e13a
3 changed files with 10 additions and 7 deletions

View File

@@ -39,6 +39,7 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() {
// handle complicated default value and possible system upgrades // handle complicated default value and possible system upgrades
WifiDoubleLock.mode = WifiDoubleLock.mode WifiDoubleLock.mode = WifiDoubleLock.mode
RoutingManager.masqueradeMode = RoutingManager.masqueradeMode RoutingManager.masqueradeMode = RoutingManager.masqueradeMode
IpMonitor.currentMode = IpMonitor.currentMode
preferenceManager.preferenceDataStore = SharedPreferenceDataStore(app.pref) preferenceManager.preferenceDataStore = SharedPreferenceDataStore(app.pref)
addPreferencesFromResource(R.xml.pref_settings) addPreferencesFromResource(R.xml.pref_settings)
SummaryFallbackProvider(findPreference(UpstreamMonitor.KEY)!!) SummaryFallbackProvider(findPreference(UpstreamMonitor.KEY)!!)

View File

@@ -3,6 +3,7 @@ package be.mygod.vpnhotspot.net.monitor
import android.os.Build import android.os.Build
import android.system.ErrnoException import android.system.ErrnoException
import android.system.OsConstants import android.system.OsConstants
import androidx.core.content.edit
import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.App.Companion.app
import be.mygod.vpnhotspot.R import be.mygod.vpnhotspot.R
import be.mygod.vpnhotspot.util.RootSession import be.mygod.vpnhotspot.util.RootSession
@@ -21,12 +22,14 @@ abstract class IpMonitor : Runnable {
// https://android.googlesource.com/platform/external/iproute2/+/7f7a711/lib/libnetlink.c#493 // https://android.googlesource.com/platform/external/iproute2/+/7f7a711/lib/libnetlink.c#493
private val errorMatcher = ("(^Cannot bind netlink socket: |" + private val errorMatcher = ("(^Cannot bind netlink socket: |" +
"Dump (was interrupted and may be inconsistent.|terminated)$)").toRegex() "Dump (was interrupted and may be inconsistent.|terminated)$)").toRegex()
private val currentMode: Mode get() { var currentMode: Mode
get() {
val defaultMode = if (Build.VERSION.SDK_INT < 30) @Suppress("DEPRECATION") { val defaultMode = if (Build.VERSION.SDK_INT < 30) @Suppress("DEPRECATION") {
Mode.Poll Mode.Poll
} else Mode.MonitorRoot } else Mode.MonitorRoot
return Mode.valueOf(app.pref.getString(KEY, defaultMode.toString()) ?: "") return Mode.valueOf(app.pref.getString(KEY, defaultMode.toString()) ?: "")
} }
set(value) = app.pref.edit { putString(KEY, value.toString()) }
} }
enum class Mode(val isMonitor: Boolean = false) { enum class Mode(val isMonitor: Boolean = false) {

View File

@@ -73,7 +73,6 @@
app:icon="@drawable/ic_hardware_device_hub" app:icon="@drawable/ic_hardware_device_hub"
app:entries="@array/settings_service_ip_monitor" app:entries="@array/settings_service_ip_monitor"
app:entryValues="@array/settings_service_ip_monitor_values" app:entryValues="@array/settings_service_ip_monitor_values"
app:defaultValue="Poll"
app:title="@string/settings_service_ip_monitor" app:title="@string/settings_service_ip_monitor"
app:useSimpleSummaryProvider="true"/> app:useSimpleSummaryProvider="true"/>
</PreferenceCategory> </PreferenceCategory>