mirror of
https://github.com/M66B/NetGuard.git
synced 2024-12-25 01:07:52 +00:00
parent
8ccdcdfdf8
commit
c8cec0839e
1 changed files with 39 additions and 32 deletions
|
@ -969,47 +969,54 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
builder.addDnsServer(dns);
|
||||
}
|
||||
|
||||
// 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));
|
||||
}
|
||||
// Routing
|
||||
Configuration config = getResources().getConfiguration();
|
||||
if (config.mcc == 310 && config.mnc == 260) {
|
||||
// T-Mobile Wi-Fi calling
|
||||
listExclude.add(new IPUtil.CIDR("66.94.2.0", 24));
|
||||
listExclude.add(new IPUtil.CIDR("66.94.6.0", 23));
|
||||
listExclude.add(new IPUtil.CIDR("66.94.8.0", 22));
|
||||
listExclude.add(new IPUtil.CIDR("208.54.0.0", 16));
|
||||
}
|
||||
listExclude.add(new IPUtil.CIDR("224.0.0.0", 3)); // broadcast
|
||||
if (tethering || (config.mcc == 310 && config.mnc == 260)) {
|
||||
// Exclude IP ranges
|
||||
List<IPUtil.CIDR> listExclude = new ArrayList<>();
|
||||
listExclude.add(new IPUtil.CIDR("127.0.0.0", 8)); // localhost
|
||||
|
||||
Collections.sort(listExclude);
|
||||
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));
|
||||
}
|
||||
|
||||
try {
|
||||
InetAddress start = InetAddress.getByName("0.0.0.0");
|
||||
for (IPUtil.CIDR exclude : listExclude) {
|
||||
Log.i(TAG, "Exclude " + exclude.getStart().getHostAddress() + "..." + exclude.getEnd().getHostAddress());
|
||||
for (IPUtil.CIDR include : IPUtil.toCIDR(start, IPUtil.minus1(exclude.getStart())))
|
||||
if (config.mcc == 310 && config.mnc == 260) {
|
||||
// T-Mobile Wi-Fi calling
|
||||
listExclude.add(new IPUtil.CIDR("66.94.2.0", 24));
|
||||
listExclude.add(new IPUtil.CIDR("66.94.6.0", 23));
|
||||
listExclude.add(new IPUtil.CIDR("66.94.8.0", 22));
|
||||
listExclude.add(new IPUtil.CIDR("208.54.0.0", 16));
|
||||
}
|
||||
|
||||
listExclude.add(new IPUtil.CIDR("224.0.0.0", 3)); // broadcast
|
||||
|
||||
Collections.sort(listExclude);
|
||||
|
||||
try {
|
||||
InetAddress start = InetAddress.getByName("0.0.0.0");
|
||||
for (IPUtil.CIDR exclude : listExclude) {
|
||||
Log.i(TAG, "Exclude " + exclude.getStart().getHostAddress() + "..." + exclude.getEnd().getHostAddress());
|
||||
for (IPUtil.CIDR include : IPUtil.toCIDR(start, IPUtil.minus1(exclude.getStart())))
|
||||
try {
|
||||
builder.addRoute(include.address, include.prefix);
|
||||
} catch (Throwable ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
start = IPUtil.plus1(exclude.getEnd());
|
||||
}
|
||||
for (IPUtil.CIDR include : IPUtil.toCIDR("224.0.0.0", "255.255.255.255"))
|
||||
try {
|
||||
builder.addRoute(include.address, include.prefix);
|
||||
} catch (Throwable ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
start = IPUtil.plus1(exclude.getEnd());
|
||||
} catch (UnknownHostException ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
for (IPUtil.CIDR include : IPUtil.toCIDR("224.0.0.0", "255.255.255.255"))
|
||||
try {
|
||||
builder.addRoute(include.address, include.prefix);
|
||||
} catch (Throwable ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
} catch (UnknownHostException ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
} else
|
||||
builder.addRoute("0.0.0.0", 0);
|
||||
|
||||
builder.addRoute("0:0:0:0:0:0:0:0", 0);
|
||||
|
||||
|
|
Loading…
Reference in a new issue