Add multiple remote dns support and remove alternative dns in global mode (#1217)
* Add multiple remote dns support. Remove alternative dns in global mode. * Remove a redundant comment
This commit is contained in:
@@ -21,7 +21,6 @@
|
||||
package com.github.shadowsocks
|
||||
|
||||
import java.io.{File, IOException}
|
||||
import java.net.InetAddress
|
||||
import java.util
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.{Timer, TimerTask}
|
||||
@@ -365,18 +364,25 @@ trait BaseService extends Service {
|
||||
makeDns("Primary-1", "119.29.29.29", edns = false),
|
||||
makeDns("Primary-2", "114.114.114.114", edns = false)
|
||||
)))
|
||||
.put("AlternativeDNS", new JSONArray().put(makeDns("Alternative",
|
||||
buildRemoteDns(profile.remoteDns.trim))))
|
||||
.put("AlternativeDNS", new JSONArray(
|
||||
for (remoteDns <- profile.remoteDns.split(","))
|
||||
yield makeDns(remoteDns.trim, buildRemoteDns(remoteDns.trim)
|
||||
)))
|
||||
.put("IPNetworkFile", "china_ip_list.txt")
|
||||
.put("DomainFile", "gfwlist.txt")
|
||||
case Acl.CHINALIST => config
|
||||
.put("PrimaryDNS", new JSONArray().put(makeDns("Primary", "119.29.29.29")))
|
||||
.put("AlternativeDNS", new JSONArray().put(makeDns("Alternative",
|
||||
buildRemoteDns(profile.remoteDns.trim))))
|
||||
.put("AlternativeDNS", new JSONArray(
|
||||
for (remoteDns <- profile.remoteDns.split(","))
|
||||
yield makeDns(remoteDns.trim, buildRemoteDns(remoteDns.trim)
|
||||
)))
|
||||
case _ => config
|
||||
.put("PrimaryDNS", new JSONArray().put(makeDns("Primary",
|
||||
buildRemoteDns(profile.remoteDns.trim))))
|
||||
.put("AlternativeDNS", new JSONArray().put(makeDns("Alternative", "208.67.222.222")))
|
||||
.put("PrimaryDNS", new JSONArray(
|
||||
for (remoteDns <- profile.remoteDns.split(","))
|
||||
yield makeDns(remoteDns.trim, buildRemoteDns(remoteDns.trim)
|
||||
)))
|
||||
// no need to setup AlternativeDNS in Acl.ALL/BYPASS_LAN mode
|
||||
.put("OnlyPrimaryDNS", true)
|
||||
}
|
||||
IOUtils.writeString(new File(getFilesDir, file), config.toString)
|
||||
file
|
||||
|
||||
@@ -74,7 +74,7 @@ class ShadowsocksNatService extends BaseService {
|
||||
"-t", "10",
|
||||
"-b", "127.0.0.1",
|
||||
"-l", (profile.localPort + 63).toString,
|
||||
"-L", profile.remoteDns.trim + ":53",
|
||||
"-L", profile.remoteDns.split(",")(0).trim + ":53",
|
||||
"-c", buildShadowsocksConfig("ss-tunnel-nat.conf"))
|
||||
|
||||
if (profile.udpdns) cmd.append("-u")
|
||||
|
||||
@@ -223,11 +223,13 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
||||
val subnet = Subnet.fromString(cidr)
|
||||
builder.addRoute(subnet.address.getHostAddress, subnet.prefixSize)
|
||||
})
|
||||
val addr = InetAddress.getByName(profile.remoteDns.trim)
|
||||
if (addr.isInstanceOf[Inet6Address])
|
||||
builder.addRoute(addr, 128)
|
||||
else if (addr.isInstanceOf[InetAddress])
|
||||
builder.addRoute(addr, 32)
|
||||
profile.remoteDns.split(",").foreach(remoteDns => {
|
||||
val addr = InetAddress.getByName(remoteDns.trim)
|
||||
if (addr.isInstanceOf[Inet6Address])
|
||||
builder.addRoute(addr, 128)
|
||||
else if (addr.isInstanceOf[InetAddress])
|
||||
builder.addRoute(addr, 32)
|
||||
})
|
||||
}
|
||||
|
||||
conn = builder.establish()
|
||||
|
||||
Reference in New Issue
Block a user