Added setting to allow LAN

This commit is contained in:
M66B 2016-03-31 09:51:18 +02:00
parent d8a4c8b944
commit 1b0b7819b1
4 changed files with 41 additions and 4 deletions

View File

@ -80,7 +80,11 @@ import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URL;
import java.net.UnknownHostException;
import java.text.DateFormat;
@ -89,6 +93,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@ -948,6 +953,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
private Builder getBuilder(List<Rule> listAllowed, List<Rule> listRule) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean tethering = prefs.getBoolean("tethering", false);
boolean lan = prefs.getBoolean("lan", false);
boolean filter = prefs.getBoolean("filter", false);
boolean system = prefs.getBoolean("manage_system", false);
@ -972,11 +978,30 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
// Exclude IP ranges
List<IPUtil.CIDR> listExclude = new ArrayList<>();
listExclude.add(new IPUtil.CIDR("127.0.0.0", 8)); // localhost
if (tethering) {
// USB Tethering 192.168.42.x
// Wi-Fi Tethering 192.168.43.x
listExclude.add(new IPUtil.CIDR("192.168.42.0", 23));
}
if (lan) {
try {
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
while (nis.hasMoreElements()) {
NetworkInterface ni = nis.nextElement();
for (InterfaceAddress ia : ni.getInterfaceAddresses())
if (ia.getAddress() instanceof Inet4Address) {
IPUtil.CIDR local = new IPUtil.CIDR(ia.getAddress(), ia.getNetworkPrefixLength());
Log.i(TAG, "Excluding " + ni.getName() + " " + local);
listExclude.add(local);
}
}
} catch (SocketException ex) {
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
}
}
Configuration config = getResources().getConfiguration();
if (config.mcc == 310 && config.mnc == 260) {
// T-Mobile Wi-Fi calling

View File

@ -65,6 +65,7 @@ however it is impossible to guarantee NetGuard will work correctly on every devi
<string name="setting_network_options">Network options</string>
<string name="setting_tethering">Allow tethering</string>
<string name="setting_lan">Allow LAN access</string>
<string name="setting_wifi_home">Wi-Fi home networks: %1$s</string>
<string name="setting_metered">Handle metered Wi-Fi networks</string>
<string name="setting_metered_2g">Consider 2G unmetered</string>
@ -111,6 +112,7 @@ however it is impossible to guarantee NetGuard will work correctly on every devi
<string name="summary_update">Check for new releases on GitHub twice daily</string>
<string name="summary_tethering">Depending on the Android version, tethering may work or may not work. Tethered traffic cannot be filtered.</string>
<string name="summary_lan">Allow applications to connect to local area network addresses, like 10.0.0.0/8 and 192.168.0.0/16</string>
<string name="summary_wifi_home">Apply Wi-Fi network rules for selected network only (apply mobile network rules for other Wi-Fi networks)</string>
<string name="summary_metered">Apply mobile network rules to metered (paid, tethered) Wi-Fi networks</string>
<string name="summary_metered_2g">Apply Wi-Fi network rules for 2G data connections</string>

View File

@ -62,6 +62,11 @@
android:key="tethering"
android:summary="@string/summary_tethering"
android:title="@string/setting_tethering" />
<CheckBoxPreference
android:defaultValue="false"
android:key="lan"
android:summary="@string/summary_lan"
android:title="@string/setting_lan" />
<MultiSelectListPreference
android:defaultValue="@array/default_wifi_home"
android:key="wifi_homes"
@ -194,14 +199,14 @@
android:key="import"
android:title="@string/setting_import" />
<Preference
android:key="hosts_import"
android:dependency="filter"
android:key="hosts_import"
android:title="@string/setting_hosts" />
<EditTextPreference
android:defaultValue="http://www.netguard.me/hosts"
android:dependency="filter"
android:hint="http://www.netguard.me/hosts"
android:key="hosts_url"
android:dependency="filter"
android:title="@string/setting_hosts_url" />
<Preference
android:dependency="hosts_url"

View File

@ -62,6 +62,11 @@
android:key="tethering"
android:summary="@string/summary_tethering"
android:title="@string/setting_tethering" />
<eu.faircode.netguard.SwitchPreference
android:defaultValue="false"
android:key="lan"
android:summary="@string/summary_lan"
android:title="@string/setting_lan" />
<MultiSelectListPreference
android:defaultValue="@array/default_wifi_home"
android:key="wifi_homes"
@ -194,14 +199,14 @@
android:key="import"
android:title="@string/setting_import" />
<Preference
android:key="hosts_import"
android:dependency="filter"
android:key="hosts_import"
android:title="@string/setting_hosts" />
<EditTextPreference
android:defaultValue="http://www.netguard.me/hosts"
android:dependency="filter"
android:hint="http://www.netguard.me/hosts"
android:key="hosts_url"
android:dependency="filter"
android:title="@string/setting_hosts_url" />
<Preference
android:dependency="hosts_url"