Commit 85532a6b authored by V.E.O's avatar V.E.O Committed by Mygod

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
parent 93274ffb
......@@ -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)
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()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment