Roam like at home

This commit is contained in:
M66B 2017-06-15 19:43:03 +02:00
parent 25816599ac
commit e04db5d0f9
7 changed files with 254 additions and 157 deletions

View File

@ -50,6 +50,13 @@
<sourceFolder url="file://$MODULE_DIR$/src/allDebug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/allDebug/renderscript" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/allDebug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/all/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/all/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAllDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAllDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAllDebug/assets" type="java-test-resource" />
@ -58,13 +65,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testAllDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAllDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAllDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/all/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/all/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/all/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/all/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/all/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/all/assets" type="java-resource" />
@ -72,14 +72,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/all/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/all/renderscript" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/all/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestAll/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestAll/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestAll/assets" type="java-test-resource" />
@ -88,6 +80,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTestAll/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestAll/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestAll/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testAll/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />

View File

@ -105,9 +105,10 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
private static final int REQUEST_METERED2 = 3;
private static final int REQUEST_METERED3 = 4;
private static final int REQUEST_METERED4 = 5;
private static final int REQUEST_ROAMING_NATIONAL = 6;
private static final int REQUEST_ROAMING_INTERNATIONAL = 7;
private static final int REQUEST_HOSTS = 8;
private static final int REQUEST_ROAMING_EU = 6;
private static final int REQUEST_ROAMING_NATIONAL = 7;
private static final int REQUEST_ROAMING_INTERNATIONAL = 8;
private static final int REQUEST_HOSTS = 9;
private AlertDialog dialogFilter = null;
@ -583,6 +584,15 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
} else
ServiceSinkhole.reload("changed " + name, this);
} else if ("eu_roaming".equals(name)) {
if (prefs.getBoolean(name, false)) {
if (Util.hasPhoneStatePermission(this))
ServiceSinkhole.reload("changed " + name, this);
else
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_ROAMING_EU);
} else
ServiceSinkhole.reload("changed " + name, this);
} else if ("national_roaming".equals(name)) {
if (prefs.getBoolean(name, false)) {
if (Util.hasPhoneStatePermission(this))
@ -807,6 +817,14 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
}
// Check if permission was revoked
if (prefs.getBoolean("eu_roaming", false))
if (!Util.hasPhoneStatePermission(this)) {
prefs.edit().putBoolean("eu_roaming", false).apply();
((TwoStatePreference) screen.findPreference("eu_roaming")).setChecked(false);
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_ROAMING_EU);
}
if (prefs.getBoolean("national_roaming", false))
if (!Util.hasPhoneStatePermission(this)) {
prefs.edit().putBoolean("national_roaming", false).apply();
@ -835,6 +853,10 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
prefs.edit().putBoolean("unmetered_4g", granted).apply();
((TwoStatePreference) screen.findPreference("unmetered_4g")).setChecked(granted);
} else if (requestCode == REQUEST_ROAMING_EU) {
prefs.edit().putBoolean("eu_roaming", granted).apply();
((TwoStatePreference) screen.findPreference("eu_roaming")).setChecked(granted);
} else if (requestCode == REQUEST_ROAMING_NATIONAL) {
prefs.edit().putBoolean("national_roaming", granted).apply();
((TwoStatePreference) screen.findPreference("national_roaming")).setChecked(granted);

View File

@ -1582,6 +1582,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
boolean unmetered_3g = prefs.getBoolean("unmetered_3g", false);
boolean unmetered_4g = prefs.getBoolean("unmetered_4g", false);
boolean roaming = Util.isRoaming(ServiceSinkhole.this);
boolean eu = prefs.getBoolean("eu_roaming", false);
boolean national = prefs.getBoolean("national_roaming", false);
boolean tethering = prefs.getBoolean("tethering", false);
boolean filter = prefs.getBoolean("filter", false);
@ -1611,8 +1612,10 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
boolean lockdown = isLockedDown(last_metered);
// Update roaming state
if (roaming && eu)
roaming = !Util.isEU(this);
if (roaming && national)
roaming = Util.isInternational(this);
roaming = !Util.isNational(this);
Log.i(TAG, "Get allowed" +
" connected=" + last_connected +
@ -2060,7 +2063,8 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
private PhoneStateListener phoneStateListener = new PhoneStateListener() {
private String last_generation = null;
private int last_international = -1;
private int last_eu = -1;
private int last_national = -1;
@Override
public void onDataConnectionStateChanged(int state, int networkType) {
@ -2084,17 +2088,29 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
@Override
public void onServiceStateChanged(ServiceState serviceState) {
if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
int current_international = (Util.isInternational(ServiceSinkhole.this) ? 1 : 0);
Log.i(TAG, "In service international=" + current_international);
int current_eu = (Util.isEU(ServiceSinkhole.this) ? 1 : 0);
int current_national = (Util.isNational(ServiceSinkhole.this) ? 1 : 0);
Log.i(TAG, "In service eu=" + current_eu + " national=" + current_national);
if (last_international != current_international) {
Log.i(TAG, "New international=" + current_international);
last_international = current_international;
boolean reload = false;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSinkhole.this);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSinkhole.this);
if (prefs.getBoolean("national_roaming", false))
reload("service state changed", ServiceSinkhole.this);
if (last_eu != current_eu) {
Log.i(TAG, "New eu=" + current_eu);
last_eu = current_eu;
if (prefs.getBoolean("eu_roaming", false))
reload = true;
}
if (last_national != current_national) {
Log.i(TAG, "New national=" + current_national);
last_national = current_national;
if (prefs.getBoolean("national_roaming", false))
reload = true;
}
if (reload)
reload("service state changed", ServiceSinkhole.this);
}
}
};

View File

@ -73,7 +73,6 @@ import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.URL;
import java.nio.Buffer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DateFormat;
@ -92,6 +91,41 @@ public class Util {
private static final int NETWORK_TYPE_IWLAN = 18;
private static final String TAG = "NetGuard.Util";
// Roam like at home
private static final List<String> listEU = Arrays.asList(
"AT", // Austria
"BE", // Belgium
"BG", // Bulgaria
"HR", // Croatia
"CY", // Cyprus
"CZ", // Czech Republic
"DK", // Denmark
"EE", // Estonia
"FI", // Finland
"FR", // France
"DE", // Germany
"GR", // Greece
"HU", // Hungary
"IS", // Iceland
"IE", // Ireland
"IT", // Italy
"LV", // Latvia
"LI", // Liechtenstein
"LT", // Lithuania
"LU", // Luxembourg
"MT", // Malta
"NL", // Netherlands
"NO", // Norway
"PL", // Poland
"PT", // Portugal
"RO", // Romania
"SK", // Slovakia
"SI", // Slovenia
"ES", // Spain
"SE", // Sweden
"GB" // United Kingdom
);
private static native String jni_getprop(String name);
private static native boolean is_numeric_address(String ip);
@ -164,15 +198,28 @@ public class Util {
return (ni != null && ni.isRoaming());
}
public static boolean isInternational(Context context) {
public static boolean isNational(Context context) {
try {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return (tm != null && tm.getSimCountryIso() != null && !tm.getSimCountryIso().equals(tm.getNetworkCountryIso()));
return (tm != null && tm.getSimCountryIso() != null && tm.getSimCountryIso().equals(tm.getNetworkCountryIso()));
} catch (Throwable ignored) {
return false;
}
}
public static boolean isEU(Context context) {
try {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return (tm != null && isEU(tm.getSimCountryIso()) && isEU(tm.getNetworkCountryIso()));
} catch (Throwable ignored) {
return false;
}
}
public static boolean isEU(String country) {
return (country != null && listEU.contains(country.toUpperCase()));
}
public static String getNetworkGeneration(int networkType) {
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_1xRTT:

View File

@ -81,6 +81,7 @@ however it is impossible to guarantee NetGuard will work correctly on every devi
<string name="setting_metered_3g">Consider 3G unmetered</string>
<string name="setting_metered_4g">Consider LTE unmetered</string>
<string name="setting_national_roaming">Ignore national roaming</string>
<string name="setting_eu_roaming">Ignore EU roaming</string>
<string name="setting_lockdown_wifi">Lockdown Wi-Fi</string>
<string name="setting_lockdown_other">Lockdown mobile</string>
@ -143,6 +144,7 @@ however it is impossible to guarantee NetGuard will work correctly on every devi
<string name="summary_metered_3g">Apply Wi-Fi network rules for 3G data connections</string>
<string name="summary_metered_4g">Apply Wi-Fi network rules for LTE data connections</string>
<string name="summary_national_roaming">Do not apply roaming rules when the SIM and mobile network country are the same</string>
<string name="summary_eu_roaming">Do not apply roaming rules when the SIM and mobile network country are within the EU (roam like at home)</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_log_app">Log attempts to access the internet for applications. This might result in extra battery usage.</string>

View File

@ -9,29 +9,29 @@
<CheckBoxPreference
android:defaultValue="true"
android:key="whitelist_wifi"
android:title="@string/setting_whitelist_wifi"/>
android:title="@string/setting_whitelist_wifi" />
<CheckBoxPreference
android:defaultValue="true"
android:key="whitelist_other"
android:title="@string/setting_whitelist_other"/>
android:title="@string/setting_whitelist_other" />
<CheckBoxPreference
android:defaultValue="true"
android:key="screen_on"
android:title="@string/setting_screen_on"/>
android:title="@string/setting_screen_on" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="screen_on"
android:key="screen_wifi"
android:title="@string/setting_screen_wifi"/>
android:title="@string/setting_screen_wifi" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="screen_on"
android:key="screen_other"
android:title="@string/setting_screen_other"/>
android:title="@string/setting_screen_other" />
<CheckBoxPreference
android:defaultValue="false"
android:key="whitelist_roaming"
android:title="@string/setting_whitelist_roaming"/>
android:title="@string/setting_whitelist_roaming" />
</PreferenceCategory>
</PreferenceScreen>
@ -45,31 +45,31 @@
android:defaultValue="teal"
android:entries="@array/themeNames"
android:entryValues="@array/themeValues"
android:key="theme"/>
android:key="theme" />
<CheckBoxPreference
android:defaultValue="false"
android:key="dark_theme"
android:title="@string/setting_dark"/>
android:title="@string/setting_dark" />
<CheckBoxPreference
android:defaultValue="true"
android:key="install"
android:summary="@string/summary_install"
android:title="@string/setting_install"/>
android:title="@string/setting_install" />
<EditTextPreference
android:defaultValue="0"
android:inputType="number"
android:key="auto_enable"
android:summary="@string/summary_auto"/>
android:summary="@string/summary_auto" />
<EditTextPreference
android:defaultValue="0"
android:inputType="number"
android:key="screen_delay"
android:summary="@string/summary_delay"/>
android:summary="@string/summary_delay" />
<CheckBoxPreference
android:defaultValue="true"
android:key="update_check"
android:summary="@string/summary_update"
android:title="@string/setting_update"/>
android:title="@string/setting_update" />
</PreferenceCategory>
</PreferenceScreen>
@ -83,56 +83,61 @@
android:defaultValue="false"
android:key="subnet"
android:summary="@string/summary_subnet"
android:title="@string/setting_subnet"/>
android:title="@string/setting_subnet" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="subnet"
android:key="tethering"
android:summary="@string/summary_tethering"
android:title="@string/setting_tethering"/>
android:title="@string/setting_tethering" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="subnet"
android:key="lan"
android:summary="@string/summary_lan"
android:title="@string/setting_lan"/>
android:title="@string/setting_lan" />
<MultiSelectListPreference
android:defaultValue="@array/default_wifi_home"
android:key="wifi_homes"
android:summary="@string/summary_wifi_home"/>
android:summary="@string/summary_wifi_home" />
<CheckBoxPreference
android:defaultValue="false"
android:key="use_metered"
android:summary="@string/summary_metered"
android:title="@string/setting_metered"/>
android:title="@string/setting_metered" />
<CheckBoxPreference
android:defaultValue="false"
android:key="unmetered_2g"
android:summary="@string/summary_metered_2g"
android:title="@string/setting_metered_2g"/>
android:title="@string/setting_metered_2g" />
<CheckBoxPreference
android:defaultValue="false"
android:key="unmetered_3g"
android:summary="@string/summary_metered_3g"
android:title="@string/setting_metered_3g"/>
android:title="@string/setting_metered_3g" />
<CheckBoxPreference
android:defaultValue="false"
android:key="unmetered_4g"
android:summary="@string/summary_metered_4g"
android:title="@string/setting_metered_4g"/>
android:title="@string/setting_metered_4g" />
<CheckBoxPreference
android:defaultValue="false"
android:key="national_roaming"
android:summary="@string/summary_national_roaming"
android:title="@string/setting_national_roaming"/>
android:title="@string/setting_national_roaming" />
<CheckBoxPreference
android:defaultValue="false"
android:key="eu_roaming"
android:summary="@string/summary_eu_roaming"
android:title="@string/setting_eu_roaming" />
<CheckBoxPreference
android:defaultValue="true"
android:key="lockdown_wifi"
android:title="@string/setting_lockdown_wifi"/>
android:title="@string/setting_lockdown_wifi" />
<CheckBoxPreference
android:defaultValue="true"
android:key="lockdown_other"
android:title="@string/setting_lockdown_other"/>
android:title="@string/setting_lockdown_other" />
</PreferenceCategory>
</PreferenceScreen>
@ -146,113 +151,113 @@
android:defaultValue="false"
android:key="manage_system"
android:summary="@string/summary_system"
android:title="@string/setting_system"/>
android:title="@string/setting_system" />
<CheckBoxPreference
android:defaultValue="false"
android:key="log_app"
android:summary="@string/summary_log_app"
android:title="@string/setting_log_app"/>
android:title="@string/setting_log_app" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="log_app"
android:key="notify_access"
android:summary="@string/summary_access"
android:title="@string/setting_access"/>
android:title="@string/setting_access" />
<CheckBoxPreference
android:defaultValue="false"
android:key="filter"
android:summary="@string/summary_filter"
android:title="@string/setting_filter"/>
android:title="@string/setting_filter" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="filter"
android:key="clear_onreload"
android:title="@string/setting_clear_onreload"/>
android:title="@string/setting_clear_onreload" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="filter"
android:key="track_usage"
android:summary="@string/summary_track_usage"
android:title="@string/setting_track_usage"/>
android:title="@string/setting_track_usage" />
<Preference
android:key="reset_usage"
android:title="@string/setting_reset_usage"/>
android:title="@string/setting_reset_usage" />
<CheckBoxPreference
android:defaultValue="true"
android:dependency="filter"
android:key="use_hosts"
android:summary="@string/summary_block_domains"
android:title="@string/setting_block_domains"/>
android:title="@string/setting_block_domains" />
<EditTextPreference
android:dependency="filter"
android:inputType="number"
android:key="rcode"
android:summary="@string/summary_rcode"/>
android:summary="@string/summary_rcode" />
<Preference
android:dependency="filter"
android:key="forwarding"
android:title="@string/setting_forwarding"/>
android:title="@string/setting_forwarding" />
<EditTextPreference
inputType="phone"
android:hint="10.1.10.1"
android:inputType="phone"
android:key="vpn4"/>
android:key="vpn4" />
<EditTextPreference
android:hint="fd00:1:fd00:1:fd00:1:fd00:1"
android:inputType="text"
android:key="vpn6"/>
android:key="vpn6" />
<EditTextPreference
android:dependency="filter"
android:inputType="text"
android:key="dns"/>
android:key="dns" />
<EditTextPreference
android:dependency="filter"
android:inputType="text"
android:key="dns2"/>
android:key="dns2" />
<EditTextPreference
android:dependency="filter"
android:inputType="number"
android:key="ttl"/>
android:key="ttl" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="filter"
android:key="socks5_enabled"
android:summary="@string/summary_socks5_enabled"
android:title="@string/setting_socks5_enabled"/>
android:title="@string/setting_socks5_enabled" />
<EditTextPreference
android:dependency="filter"
android:hint="127.0.0.1"
android:inputType="text"
android:key="socks5_addr"/>
android:key="socks5_addr" />
<EditTextPreference
android:dependency="filter"
android:hint="1080"
android:inputType="number"
android:key="socks5_port"/>
android:key="socks5_port" />
<EditTextPreference
android:dependency="filter"
android:inputType="text"
android:key="socks5_username"/>
android:key="socks5_username" />
<EditTextPreference
android:dependency="filter"
android:inputType="textPassword"
android:key="socks5_password"/>
android:key="socks5_password" />
<EditTextPreference
android:defaultValue="64"
android:inputType="number"
android:key="pcap_record_size"/>
android:key="pcap_record_size" />
<EditTextPreference
android:defaultValue="2"
android:inputType="number"
android:key="pcap_file_size"/>
android:key="pcap_file_size" />
<EditTextPreference
android:defaultValue="0"
android:inputType="number"
android:key="watchdog"
android:summary="@string/summary_watchdog"/>
android:summary="@string/summary_watchdog" />
<Preference
android:key="show_resolved"
android:title="@string/setting_show_resolved"/>
android:title="@string/setting_show_resolved" />
</PreferenceCategory>
</PreferenceScreen>
@ -266,22 +271,22 @@
android:defaultValue="false"
android:key="show_stats"
android:summary="@string/summary_stats"
android:title="@string/setting_stats"/>
android:title="@string/setting_stats" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="show_stats"
android:key="show_top"
android:title="@string/setting_stats_top"/>
android:title="@string/setting_stats_top" />
<EditTextPreference
android:defaultValue="1000"
android:dependency="show_stats"
android:inputType="number"
android:key="stats_frequency"/>
android:key="stats_frequency" />
<EditTextPreference
android:defaultValue="90"
android:dependency="show_stats"
android:inputType="number"
android:key="stats_samples"/>
android:key="stats_samples" />
</PreferenceCategory>
</PreferenceScreen>
@ -293,22 +298,22 @@
android:title="@string/setting_backup">
<Preference
android:key="export"
android:title="@string/setting_export"/>
android:title="@string/setting_export" />
<Preference
android:key="import"
android:title="@string/setting_import"/>
android:title="@string/setting_import" />
<Preference
android:key="hosts_import"
android:title="@string/setting_hosts"/>
android:title="@string/setting_hosts" />
<EditTextPreference
android:defaultValue="https://www.netguard.me/hosts"
android:hint="https://www.netguard.me/hosts"
android:key="hosts_url"
android:title="@string/setting_hosts_url"/>
android:title="@string/setting_hosts_url" />
<Preference
android:dependency="hosts_url"
android:key="hosts_download"
android:title="@string/setting_hosts_download"/>
android:title="@string/setting_hosts_download" />
</PreferenceCategory>
</PreferenceScreen>
@ -324,20 +329,20 @@
android:entryValues="@array/logLevelValues"
android:key="loglevel"
android:summary="Log level verbose, debug and info will impact performance and battery usage"
android:title="Native log level"/>
android:title="Native log level" />
<CheckBoxPreference
android:defaultValue="true"
android:key="ip6"
android:summary="@string/summary_ip6"
android:title="@string/setting_ip6"/>
android:title="@string/setting_ip6" />
<CheckBoxPreference
android:defaultValue="false"
android:key="debug_iab"
android:title="Debug IAB"/>
android:title="Debug IAB" />
<CheckBoxPreference
android:defaultValue="false"
android:key="debug_ads"
android:title="Debug advertisements"/>
android:title="Debug advertisements" />
</PreferenceCategory>
</PreferenceScreen>
@ -349,13 +354,13 @@
android:title="@string/setting_technical">
<Preference
android:key="technical_info"
android:title="@string/setting_technical_general"/>
android:title="@string/setting_technical_general" />
<Preference
android:key="technical_network"
android:title="@string/setting_technical_networks"/>
android:title="@string/setting_technical_networks" />
<Preference
android:key="technical_subscription"
android:title="@string/setting_technical_subscription"/>
android:title="@string/setting_technical_subscription" />
</PreferenceCategory>
</PreferenceScreen>
</PreferenceScreen>

View File

@ -9,29 +9,29 @@
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="whitelist_wifi"
android:title="@string/setting_whitelist_wifi"/>
android:title="@string/setting_whitelist_wifi" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="whitelist_other"
android:title="@string/setting_whitelist_other"/>
android:title="@string/setting_whitelist_other" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="screen_on"
android:title="@string/setting_screen_on"/>
android:title="@string/setting_screen_on" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="screen_on"
android:key="screen_wifi"
android:title="@string/setting_screen_wifi"/>
android:title="@string/setting_screen_wifi" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="screen_on"
android:key="screen_other"
android:title="@string/setting_screen_other"/>
android:title="@string/setting_screen_other" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="whitelist_roaming"
android:title="@string/setting_whitelist_roaming"/>
android:title="@string/setting_whitelist_roaming" />
</PreferenceCategory>
</PreferenceScreen>
@ -45,31 +45,31 @@
android:defaultValue="teal"
android:entries="@array/themeNames"
android:entryValues="@array/themeValues"
android:key="theme"/>
android:key="theme" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="dark_theme"
android:title="@string/setting_dark"/>
android:title="@string/setting_dark" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="install"
android:summary="@string/summary_install"
android:title="@string/setting_install"/>
android:title="@string/setting_install" />
<EditTextPreference
android:defaultValue="0"
android:inputType="number"
android:key="auto_enable"
android:summary="@string/summary_auto"/>
android:summary="@string/summary_auto" />
<EditTextPreference
android:defaultValue="0"
android:inputType="number"
android:key="screen_delay"
android:summary="@string/summary_delay"/>
android:summary="@string/summary_delay" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="update_check"
android:summary="@string/summary_update"
android:title="@string/setting_update"/>
android:title="@string/setting_update" />
</PreferenceCategory>
</PreferenceScreen>
@ -83,56 +83,61 @@
android:defaultValue="false"
android:key="subnet"
android:summary="@string/summary_subnet"
android:title="@string/setting_subnet"/>
android:title="@string/setting_subnet" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="subnet"
android:key="tethering"
android:summary="@string/summary_tethering"
android:title="@string/setting_tethering"/>
android:title="@string/setting_tethering" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="subnet"
android:key="lan"
android:summary="@string/summary_lan"
android:title="@string/setting_lan"/>
android:title="@string/setting_lan" />
<MultiSelectListPreference
android:defaultValue="@array/default_wifi_home"
android:key="wifi_homes"
android:summary="@string/summary_wifi_home"/>
android:summary="@string/summary_wifi_home" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="use_metered"
android:summary="@string/summary_metered"
android:title="@string/setting_metered"/>
android:title="@string/setting_metered" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="unmetered_2g"
android:summary="@string/summary_metered_2g"
android:title="@string/setting_metered_2g"/>
android:title="@string/setting_metered_2g" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="unmetered_3g"
android:summary="@string/summary_metered_3g"
android:title="@string/setting_metered_3g"/>
android:title="@string/setting_metered_3g" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="unmetered_4g"
android:summary="@string/summary_metered_4g"
android:title="@string/setting_metered_4g"/>
android:title="@string/setting_metered_4g" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="national_roaming"
android:summary="@string/summary_national_roaming"
android:title="@string/setting_national_roaming"/>
android:title="@string/setting_national_roaming" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="eu_roaming"
android:summary="@string/summary_eu_roaming"
android:title="@string/setting_eu_roaming" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="lockdown_wifi"
android:title="@string/setting_lockdown_wifi"/>
android:title="@string/setting_lockdown_wifi" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="lockdown_other"
android:title="@string/setting_lockdown_other"/>
android:title="@string/setting_lockdown_other" />
</PreferenceCategory>
</PreferenceScreen>
@ -146,113 +151,113 @@
android:defaultValue="false"
android:key="manage_system"
android:summary="@string/summary_system"
android:title="@string/setting_system"/>
android:title="@string/setting_system" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="log_app"
android:summary="@string/summary_log_app"
android:title="@string/setting_log_app"/>
android:title="@string/setting_log_app" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="log_app"
android:key="notify_access"
android:summary="@string/summary_access"
android:title="@string/setting_access"/>
android:title="@string/setting_access" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="filter"
android:summary="@string/summary_filter"
android:title="@string/setting_filter"/>
android:title="@string/setting_filter" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="filter"
android:key="clear_onreload"
android:title="@string/setting_clear_onreload"/>
android:title="@string/setting_clear_onreload" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="filter"
android:key="track_usage"
android:summary="@string/summary_track_usage"
android:title="@string/setting_track_usage"/>
android:title="@string/setting_track_usage" />
<Preference
android:key="reset_usage"
android:title="@string/setting_reset_usage"/>
android:title="@string/setting_reset_usage" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:dependency="filter"
android:key="use_hosts"
android:summary="@string/summary_block_domains"
android:title="@string/setting_block_domains"/>
android:title="@string/setting_block_domains" />
<EditTextPreference
android:dependency="filter"
android:inputType="number"
android:key="rcode"
android:summary="@string/summary_rcode"/>
android:summary="@string/summary_rcode" />
<Preference
android:dependency="filter"
android:key="forwarding"
android:title="@string/setting_forwarding"/>
android:title="@string/setting_forwarding" />
<EditTextPreference
inputType="phone"
android:hint="10.1.10.1"
android:inputType="phone"
android:key="vpn4"/>
android:key="vpn4" />
<EditTextPreference
android:hint="fd00:1:fd00:1:fd00:1:fd00:1"
android:inputType="text"
android:key="vpn6"/>
android:key="vpn6" />
<EditTextPreference
android:dependency="filter"
android:inputType="text"
android:key="dns"/>
android:key="dns" />
<EditTextPreference
android:dependency="filter"
android:inputType="text"
android:key="dns2"/>
android:key="dns2" />
<EditTextPreference
android:dependency="filter"
android:inputType="number"
android:key="ttl"/>
android:key="ttl" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="filter"
android:key="socks5_enabled"
android:summary="@string/summary_socks5_enabled"
android:title="@string/setting_socks5_enabled"/>
android:title="@string/setting_socks5_enabled" />
<EditTextPreference
android:dependency="filter"
android:hint="127.0.0.1"
android:inputType="text"
android:key="socks5_addr"/>
android:key="socks5_addr" />
<EditTextPreference
android:dependency="filter"
android:hint="1080"
android:inputType="number"
android:key="socks5_port"/>
android:key="socks5_port" />
<EditTextPreference
android:dependency="filter"
android:inputType="text"
android:key="socks5_username"/>
android:key="socks5_username" />
<EditTextPreference
android:dependency="filter"
android:inputType="textPassword"
android:key="socks5_password"/>
android:key="socks5_password" />
<EditTextPreference
android:defaultValue="64"
android:inputType="number"
android:key="pcap_record_size"/>
android:key="pcap_record_size" />
<EditTextPreference
android:defaultValue="2"
android:inputType="number"
android:key="pcap_file_size"/>
android:key="pcap_file_size" />
<EditTextPreference
android:defaultValue="0"
android:inputType="number"
android:key="watchdog"
android:summary="@string/summary_watchdog"/>
android:summary="@string/summary_watchdog" />
<Preference
android:key="show_resolved"
android:title="@string/setting_show_resolved"/>
android:title="@string/setting_show_resolved" />
</PreferenceCategory>
</PreferenceScreen>
@ -266,22 +271,22 @@
android:defaultValue="false"
android:key="show_stats"
android:summary="@string/summary_stats"
android:title="@string/setting_stats"/>
android:title="@string/setting_stats" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:dependency="show_stats"
android:key="show_top"
android:title="@string/setting_stats_top"/>
android:title="@string/setting_stats_top" />
<EditTextPreference
android:defaultValue="1000"
android:dependency="show_stats"
android:inputType="number"
android:key="stats_frequency"/>
android:key="stats_frequency" />
<EditTextPreference
android:defaultValue="90"
android:dependency="show_stats"
android:inputType="number"
android:key="stats_samples"/>
android:key="stats_samples" />
</PreferenceCategory>
</PreferenceScreen>
@ -293,22 +298,22 @@
android:title="@string/setting_backup">
<Preference
android:key="export"
android:title="@string/setting_export"/>
android:title="@string/setting_export" />
<Preference
android:key="import"
android:title="@string/setting_import"/>
android:title="@string/setting_import" />
<Preference
android:key="hosts_import"
android:title="@string/setting_hosts"/>
android:title="@string/setting_hosts" />
<EditTextPreference
android:defaultValue="https://www.netguard.me/hosts"
android:hint="https://www.netguard.me/hosts"
android:key="hosts_url"
android:title="@string/setting_hosts_url"/>
android:title="@string/setting_hosts_url" />
<Preference
android:dependency="hosts_url"
android:key="hosts_download"
android:title="@string/setting_hosts_download"/>
android:title="@string/setting_hosts_download" />
</PreferenceCategory>
</PreferenceScreen>
@ -324,20 +329,20 @@
android:entryValues="@array/logLevelValues"
android:key="loglevel"
android:summary="Log level verbose, debug and info will impact performance and battery usage"
android:title="Native log level"/>
android:title="Native log level" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="true"
android:key="ip6"
android:summary="@string/summary_ip6"
android:title="@string/setting_ip6"/>
android:title="@string/setting_ip6" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="debug_iab"
android:title="Debug IAB"/>
android:title="Debug IAB" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="debug_ads"
android:title="Debug advertisements"/>
android:title="Debug advertisements" />
</PreferenceCategory>
</PreferenceScreen>
@ -349,13 +354,13 @@
android:title="@string/setting_technical">
<Preference
android:key="technical_info"
android:title="@string/setting_technical_general"/>
android:title="@string/setting_technical_general" />
<Preference
android:key="technical_network"
android:title="@string/setting_technical_networks"/>
android:title="@string/setting_technical_networks" />
<Preference
android:key="technical_subscription"
android:title="@string/setting_technical_subscription"/>
android:title="@string/setting_technical_subscription" />
</PreferenceCategory>
</PreferenceScreen>
</PreferenceScreen>