Commit 0fa4d150 authored by Max Lv's avatar Max Lv

resolve chinese domain names directly

parent 1b2247a8
...@@ -5,8 +5,8 @@ import sbtandroid._ ...@@ -5,8 +5,8 @@ import sbtandroid._
import sbtandroid.AndroidPlugin._ import sbtandroid.AndroidPlugin._
object App { object App {
val version = "2.1.3" val version = "2.1.4"
val versionCode = 64 val versionCode = 65
} }
object General { object General {
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="exclude">".cn",".07073.com",".10010.com",".100ye.com",".114la.com",".115.com",".120ask.com",".126.com",".126.net",".1616.net",".163.com",".17173.com",".1778.com",".178.com",".17u.com",".19lou.com",".1o26.com",".1ting.com",".21cn.com",".2345.com",".265.com",".265g.com",".28.com",".28tui.com",".2hua.com",".2mdn.net",".315che.com",".3366.com",".360buy.com",".360buyimg.com",".360doc.com",".36kr.com",".39.net",".3dmgame.com",".4399.com",".4738.com",".500wan.com",".51.com",".51.la",".5173.com",".51auto.com",".51buy.com",".51cto.com",".51fanli.com",".51job.com",".52kmh.com",".52pk.net",".52tlbb.com",".53kf.com",".55bbs.com",".55tuan.com",".56.com",".58.com",".591hx.com",".5d6d.net",".61.com",".70e.com",".777wyx.com",".778669.com",".7c.com",".7k7k.com",".88db.com",".91.com",".99bill.com",".a135.net",".abang.com",".abchina.com",".ad1111.com",".admin5.com",".adnxs.com",".adobe.com",".adroll.com",".ads8.com",".adsame.com",".adsonar.com",".adtechus.com",".aibang.com",".aifang.com",".aili.com",".aipai.com",".aizhan.com",".ali213.net",".alibaba.com",".alicdn.com",".aliexpress.com",".alimama.com",".alipay.com",".alipayobjects.com",".alisoft.com",".alivv.com",".aliyun.com",".allyes.com",".amazon.com",".anjuke.com",".anzhi.com",".aol.com",".apple.com",".arpg2.com",".atdmt.com",".b2b168.com",".babytree.com",".baidu.com",".baihe.com",".baixing.com",".bankcomm.com",".baomihua.com",".bdimg.com",".bdstatic.com",".bendibao.com",".betrad.com",".bilibili.tv",".bing.com",".bitauto.com",".blog.163.com",".blogchina.com",".blueidea.com",".bluekai.com",".booksky.org",".caixin.com",".ccb.com",".ccidnet.com",".cctv*.com",".china.com",".chinabyte.com",".chinahr.com",".chinanews.com",".chinaunix.net",".chinaw3.com",".chinaz.com",".chuangelm.com",".ci123.com",".cmbchina.com",".cnbeta.com",".cnblogs.com",".cncn.com",".cnhubei.com",".cnki.net",".cnmo.com",".cnxad.com",".cnzz.com",".cocoren.com",".compete.com",".comsenz.com",".coo8.com",".cqnews.net",".crsky.com",".csdn.net",".ct10000.com",".ctrip.com",".dangdang.com",".daqi.com",".dayoo.com",".dbank.com",".ddmap.com",".dedecms.com",".dh818.com",".diandian.com",".dianping.com",".discuz.net",".doc88.com",".docin.com",".donews.com",".dospy.com",".douban.com",".douban.fm",".doubleclick.com",".doubleclick.net",".duba.net",".duote.com",".duowan.com",".dzwww.com",".eastday.com",".eastmoney.com",".ebay.com",".elong.com",".ename.net",".etao.com",".exam8.com",".eye.rs",".fantong.com",".fastcdn.com",".fblife.com",".fengniao.com",".fenzhi.com",".flickr.com",".fobshanghai.com",".ftuan.com",".funshion.com",".fx120.net",".game3737.com",".gamersky.com",".gamestlbb.com",".gamesville.com",".ganji.com",".gfan.com",".gongchang.com",".google-analytics.com",".gougou.com",".gtimg.com",".hao123.com",".haodf.com",".harrenmedianetwork.com",".hc360.com",".hefei.cc",".hf365.com",".hiapk.com",".hichina.com",".homeinns.com",".hotsales.net",".house365.com",".huaban.com",".huanqiu.com",".hudong.com",".hupu.com",".iask.com",".iciba.com",".icson.com",".ifeng.com",".iloveyouxi.com",".im286.com",".imanhua.com",".img.cctvpic.com",".imrworldwide.com",".invitemedia.com",".ip138.com",".ipinyou.com",".iqilu.com",".iqiyi.com",".irs01.com",".irs01.net",".it168.com",".iteye.com",".iyaya.com",".jb51.net",".jiathis.com",".jiayuan.com",".jing.fm",".jinti.com",".jqw.com",".jumei.com",".jxedt.com",".jysq.net",".kaixin001.com",".kandian.com",".kdnet.net",".kimiss.com",".ku6.com",".ku6cdn.com",".ku6img.com",".kuaidi100.com",".kugou.com",".l99.com",".lady8844.com",".lafaso.com",".lashou.com",".legolas-media.com",".lehecai.com",".leho.com",".letv.com",".liebiao.com",".lietou.com",".linezing.com",".linkedin.com",".live.com",".longhoo.net",".lusongsong.com",".lxdns.com",".lycos.com",".lygo.com",".m18.com",".m1905.com",".made-in-china.com",".makepolo.com",".mangocity.com",".manzuo.com",".mapbar.com",".mathtag.com",".mediaplex.com",".mediav.com",".meilele.com",".meilishuo.com",".meishichina.com",".meituan.com",".meizu.com",".miaozhen.com",".microsoft.com",".miercn.com",".mlt01.com",".mmstat.com",".mnwan.com",".mogujie.com",".mookie1.com",".moonbasa.com",".mop.com",".mosso.com",".mplife.com",".msn.com",".mtime.com",".mumayi.com",".mydrivers.com",".net114.com",".netease.com",".newsmth.net",".nipic.com",".nowec.com",".nuomi.com",".oadz.com",".oeeee.com",".onetad.com",".onlinedown.net",".onlylady.com",".oschina.net",".otwan.com",".paipai.com",".paypal.com",".pchome.net",".pcpop.com",".pengyou.com",".php100.com",".phpwind.net",".pingan.com",".pixlr.com",".pp.cc",".ppstream.com",".pptv.com",".pubmatic.com",".q150.com",".qianlong.com",".qidian.com",".qingdaonews.com",".qire123.com",".qiushibaike.com",".qiyou.com",".qjy168.com",".qq.com",".qq937.com",".qstatic.com",".quantserve.com",".qunar.com",".rakuten.co.jp",".readnovel.com",".renren.com",".rtbidder.net",".scanscout.com",".scorecardresearch.com",".sdo.com",".seowhy.com",".serving-sys.com",".sf-express.com",".shangdu.com",".si.kz",".sina.com",".sinahk.net",".sinajs.com",".smzdm.com",".snyu.com",".sodu.org",".sogou.com",".sohu.com",".soku.com",".sootoo.com",".soso.com",".soufun.com",".sourceforge.net",".staticsdo.com",".stockstar.com",".sttlbb.com",".suning.com",".szhome.com",".sznews.com",".tangdou.com",".tanx.com",".tao123.com",".taobao.com",".taobaocdn.com",".tdimg.com",".tenpay.com",".tgbus.com",".theplanet.com",".thethirdmedia.com",".tiancity.com",".tianji.com",".tiao8.info",".tiexue.net",".titan24.com",".tmall.com",".tom.com",".toocle.com",".tremormedia.com",".tuan800.com",".tudou.com",".tudouui.com",".tui18.com",".tuniu.com",".twcczhu.com",".u17.com",".ucjoy.com",".ulink.cc",".uniontoufang.com",".up2c.com",".uuu9.com",".uuzu.com",".vancl.com",".verycd.com",".vipshop.com",".vizu.com",".vjia.com",".weibo.com",".weiphone.com",".west263.com",".whlongda.com",".wrating.com",".wumii.com",".xiami.com",".xiaomi.com",".xiazaiba.com",".xici.net",".xinhuanet.com",".xinnet.com",".xitek.com",".xiu.com",".xunlei.com",".xyxy.net",".yaolan.com",".yesky.com",".yieldmanager.com",".yihaodian.com",".yingjiesheng.com",".yinyuetai.com",".yiqifa.com",".ykimg.com",".ynet.com",".yoka.com",".yolk7.com",".youboy.com",".youdao.com",".yougou.com",".youku.com",".youshang.com",".yupoo.com",".yxlady.com",".yyets.com",".zhaodao123.com",".zhaopin.com",".zhenai.com",".zhibo8.cc",".zhihu.com",".zhubajie.com",".zongheng.com",".zoosnet.net",".zqgame.com",".ztgame.com",".zx915.com",".miui.com",".mi-idc.com",".qhimg.com",".wandoujia.com"
</string>
</resources>
...@@ -118,7 +118,12 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -118,7 +118,12 @@ class ShadowsocksNatService extends Service with BaseService {
Path.BASE + "ss-local.pid") Path.BASE + "ss-local.pid")
.format(config.proxy, config.remotePort, 8153, config.sitekey, config.encMethod) .format(config.proxy, config.remotePort, 8153, config.sitekey, config.encMethod)
} else { } else {
val conf = ConfigUtils.PDNSD.format("127.0.0.1") val conf = {
if (config.isGFWList)
ConfigUtils.PDNSD_BYPASS.format("127.0.0.1", getString(R.string.exclude))
else
ConfigUtils.PDNSD.format("127.0.0.1")
}
ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => {
p.println(conf) p.println(conf)
}) })
...@@ -306,6 +311,11 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -306,6 +311,11 @@ class ShadowsocksNatService extends Service with BaseService {
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-d " + config.proxy)) init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-d " + config.proxy))
} }
init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1")) init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1"))
if (config.isGFWList) {
// Bypass DNS in China
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d 114.114.114.114"))
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d 114.114.115.115"))
}
if (hasRedirectSupport) { if (hasRedirectSupport) {
init_sb init_sb
.append(Utils.getIptables + " -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to " .append(Utils.getIptables + " -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to "
......
...@@ -75,6 +75,11 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -75,6 +75,11 @@ class ShadowsocksVpnService extends VpnService with BaseService {
val handler: Handler = new Handler() val handler: Handler = new Handler()
def isByass(net: SubnetUtils): Boolean = {
val info = net.getInfo
info.isInRange(config.proxy) || info.isInRange("114.114.114.114") || info.isInRange("114.114.115.115")
}
def startShadowsocksDaemon() { def startShadowsocksDaemon() {
val cmd: String = (Path.BASE + val cmd: String = (Path.BASE +
"ss-local -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -u -f " + "ss-local -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -u -f " +
...@@ -85,7 +90,12 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -85,7 +90,12 @@ class ShadowsocksVpnService extends VpnService with BaseService {
} }
def startDnsDaemon() { def startDnsDaemon() {
val conf = ConfigUtils.PDNSD.format("0.0.0.0") val conf = {
if (config.isGFWList)
ConfigUtils.PDNSD_BYPASS.format("0.0.0.0", getString(R.string.exclude))
else
ConfigUtils.PDNSD.format("0.0.0.0")
}
ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => {
p.println(conf) p.println(conf)
}) })
...@@ -108,8 +118,6 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -108,8 +118,6 @@ class ShadowsocksVpnService extends VpnService with BaseService {
def startVpn() { def startVpn() {
val proxy_address = config.proxy
val builder = new Builder() val builder = new Builder()
builder builder
.setSession(config.profileName) .setSession(config.profileName)
...@@ -128,8 +136,8 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -128,8 +136,8 @@ class ShadowsocksVpnService extends VpnService with BaseService {
} }
} }
gfwList.foreach(cidr => { gfwList.foreach(cidr => {
val net = new SubnetUtils(cidr).getInfo val net = new SubnetUtils(cidr)
if (!net.isInRange(proxy_address)) { if (!isByass(net)) {
val addr = cidr.split('/') val addr = cidr.split('/')
builder.addRoute(addr(0), addr(1).toInt) builder.addRoute(addr(0), addr(1).toInt)
} }
...@@ -139,9 +147,9 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -139,9 +147,9 @@ class ShadowsocksVpnService extends VpnService with BaseService {
if (i != 26 && i != 127) { if (i != 26 && i != 127) {
val addr = i.toString + ".0.0.0" val addr = i.toString + ".0.0.0"
val cidr = addr + "/8" val cidr = addr + "/8"
val net = new SubnetUtils(cidr).getInfo val net = new SubnetUtils(cidr)
if (!net.isInRange(proxy_address)) { if (!isByass(net)) {
if (!InetAddress.getByName(addr).isSiteLocalAddress) { if (!InetAddress.getByName(addr).isSiteLocalAddress) {
builder.addRoute(addr, 8) builder.addRoute(addr, 8)
} }
...@@ -149,8 +157,8 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -149,8 +157,8 @@ class ShadowsocksVpnService extends VpnService with BaseService {
for (j <- 0 to 255) { for (j <- 0 to 255) {
val subAddr = i.toString + "." + j.toString + ".0.0" val subAddr = i.toString + "." + j.toString + ".0.0"
val subCidr = subAddr + "/16" val subCidr = subAddr + "/16"
val subNet = new SubnetUtils(subCidr).getInfo val subNet = new SubnetUtils(subCidr)
if (!subNet.isInRange(proxy_address)) { if (!isByass(subNet)) {
if (!InetAddress.getByName(subAddr).isSiteLocalAddress) { if (!InetAddress.getByName(subAddr).isSiteLocalAddress) {
builder.addRoute(subAddr, 16) builder.addRoute(subAddr, 16)
} }
......
...@@ -78,8 +78,49 @@ object ConfigUtils { ...@@ -78,8 +78,49 @@ object ConfigUtils {
|} |}
| |
|server { |server {
| label = "root-servers"; | label = "google-servers";
| ip = 8.8.8.8, 8.8.4.4, 208.67.222.222, 208.67.220.220; | ip = 8.8.8.8, 8.8.4.4;
| timeout = 5;
|}
|
|rr {
| name=localhost;
| reverse=on;
| a=127.0.0.1;
| owner=localhost;
| soa=localhost,root.localhost,42,86400,900,86400,86400;
|}
""".stripMargin
val PDNSD_BYPASS =
"""
|global {
| perm_cache = 2048;
| cache_dir = "/data/data/com.github.shadowsocks";
| server_ip = %s;
| server_port = 8153;
| query_method = tcp_only;
| run_ipv4 = on;
| min_ttl = 15m;
| max_ttl = 1w;
| timeout = 10;
| daemon = on;
| pid_file = "/data/data/com.github.shadowsocks/pdnsd.pid";
|}
|
|server {
| label = "china-servers";
| ip = 114.114.114.114, 114.114.115.115;
| uptest = none;
| preset = on;
| include = %s;
| policy = excluded;
| timeout = 3;
|}
|
|server {
| label = "google-servers";
| ip = 8.8.8.8, 8.8.4.4;
| timeout = 5; | timeout = 5;
|} |}
| |
......
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