diff --git a/gfwlist/gen.py b/gfwlist/gen.py
index 81e40a1d..22ab9048 100644
--- a/gfwlist/gen.py
+++ b/gfwlist/gen.py
@@ -13,43 +13,8 @@ def main():
for line in sys.stdin:
china_list_set.add(IPy.IP(line))
- # 添加内网地址
- internal_list = IPy.IPSet(map(IPy.IP, [
- "0.0.0.0/8",
- "10.0.0.0/8",
- "100.64.0.0/10",
- "112.124.47.0/24",
- "114.114.114.0/24",
- "127.0.0.0/8",
- "169.254.0.0/16",
- "172.16.0.0/12",
- "192.0.0.0/29",
- "192.0.2.0/24",
- "192.88.99.0/24",
- "192.168.0.0/16",
- "198.18.0.0/15",
- "198.51.100.0/24",
- "203.0.113.0/24",
- "224.0.0.0/4",
- "240.0.0.0/4",
- ]))
- china_list_set += internal_list
-
- all = china_list_set
-
- # 取反
- # all = IPy.IPSet([IPy.IP("0.0.0.0/0")])
- # 剔除所有孤立的C段
- # for ip in china_list_set:
- # all.discard(ip)
-
- # filter = itertools.ifilter(lambda x: len(x) <= 65536, all)
- # for ip in filter:
- # all.discard(ip)
- # all.add(IPy.IP(ip.strNormal(0)).make_net('255.255.0.0'))
-
# 输出结果
- for ip in all:
+ for ip in china_list_set:
print '- ' + str(ip) + '
'
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index f179a98b..1cc842b8 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -45,6 +45,7 @@
- All
- Bypass LAN
+ - Bypass China
- Bypass LAN & China
@@ -52,6 +53,7 @@
- all
- bypass-lan
- bypass-china
+ - bypass-lan-china
diff --git a/src/main/res/values/chnroute.xml b/src/main/res/values/chnroute.xml
index cc48abc6..a6d3a63d 100644
--- a/src/main/res/values/chnroute.xml
+++ b/src/main/res/values/chnroute.xml
@@ -1,7 +1,6 @@
-
- - 0.0.0.0/8
+
- 1.0.1.0/24
- 1.0.2.0/23
- 1.0.8.0/21
@@ -49,7 +48,6 @@
- 1.192.0.0/13
- 1.202.0.0/15
- 1.204.0.0/14
- - 10.0.0.0/8
- 14.0.0.0/21
- 14.0.12.0/22
- 14.1.0.0/22
@@ -771,7 +769,6 @@
- 61.236.0.0/15
- 61.240.0.0/14
- 91.234.36.0/24
- - 100.64.0.0/10
- 101.0.0.0/22
- 101.1.0.0/22
- 101.2.172.0/22
@@ -2270,7 +2267,6 @@
- 125.215.0.0/18
- 125.216.0.0/13
- 125.254.128.0/17
- - 127.0.0.0/8
- 137.59.88.0/22
- 139.9.0.0/16
- 139.129.0.0/16
@@ -2386,7 +2382,6 @@
- 167.189.0.0/16
- 167.220.244.0/22
- 168.160.0.0/16
- - 169.254.0.0/16
- 171.8.0.0/13
- 171.34.0.0/15
- 171.36.0.0/14
@@ -2395,7 +2390,6 @@
- 171.104.0.0/13
- 171.112.0.0/12
- 171.208.0.0/12
- - 172.16.0.0/12
- 175.0.0.0/12
- 175.16.0.0/13
- 175.24.0.0/14
@@ -2507,14 +2501,8 @@
- 183.182.0.0/19
- 183.184.0.0/13
- 183.192.0.0/10
- - 192.0.0.0/29
- - 192.0.2.0/24
- - 192.88.99.0/24
- 192.124.154.0/24
- - 192.168.0.0/16
- 192.188.170.0/24
- - 198.18.0.0/15
- - 198.51.100.0/24
- 202.0.100.0/23
- 202.0.122.0/23
- 202.0.176.0/22
@@ -2910,7 +2898,6 @@
- 203.0.90.0/23
- 203.0.96.0/23
- 203.0.104.0/21
- - 203.0.113.0/24
- 203.0.114.0/23
- 203.0.122.0/24
- 203.0.128.0/24
diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala
index f9cfa85a..d60e33c7 100644
--- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala
+++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala
@@ -44,7 +44,6 @@ import java.lang.Process
import java.net.{Inet6Address, InetAddress}
import java.util.Locale
-import android.app.Service
import android.content._
import android.content.pm.{PackageInfo, PackageManager}
import android.net.{ConnectivityManager, Network}
@@ -164,12 +163,14 @@ class ShadowsocksNatService extends BaseService {
def startShadowsocksDaemon() {
if (config.route != Route.ALL) {
- val acl: Array[String] = config.route match {
- case Route.BYPASS_LAN => getResources.getStringArray(R.array.private_route)
- case Route.BYPASS_CHN => getResources.getStringArray(R.array.chn_route_full)
+ val acl: Array[Array[String]] = config.route match {
+ case Route.BYPASS_LAN => Array(getResources.getStringArray(R.array.private_route))
+ case Route.BYPASS_CHN => Array(getResources.getStringArray(R.array.chn_route))
+ case Route.BYPASS_LAN_CHN =>
+ Array(getResources.getStringArray(R.array.private_route), getResources.getStringArray(R.array.chn_route))
}
ConfigUtils.printToFile(new File(getApplicationInfo.dataDir + "/acl.list"))(p => {
- acl.foreach(item => p.println(item))
+ acl.flatten.foreach(p.println)
})
}
diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala
index 382aab03..6d353c36 100644
--- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala
+++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala
@@ -273,12 +273,14 @@ class ShadowsocksVpnService extends VpnService with BaseService {
def startShadowsocksDaemon() {
if (config.route != Route.ALL) {
- val acl: Array[String] = config.route match {
- case Route.BYPASS_LAN => getResources.getStringArray(R.array.private_route)
- case Route.BYPASS_CHN => getResources.getStringArray(R.array.chn_route_full)
+ val acl: Array[Array[String]] = config.route match {
+ case Route.BYPASS_LAN => Array(getResources.getStringArray(R.array.private_route))
+ case Route.BYPASS_CHN => Array(getResources.getStringArray(R.array.chn_route))
+ case Route.BYPASS_LAN_CHN =>
+ Array(getResources.getStringArray(R.array.private_route), getResources.getStringArray(R.array.chn_route))
}
ConfigUtils.printToFile(new File(getApplicationInfo.dataDir + "/acl.list"))(p => {
- acl.foreach(item => p.println(item))
+ acl.flatten.foreach(p.println)
})
}
diff --git a/src/main/scala/com/github/shadowsocks/database/DBHelper.scala b/src/main/scala/com/github/shadowsocks/database/DBHelper.scala
index 7d6d5dbc..d513fe58 100644
--- a/src/main/scala/com/github/shadowsocks/database/DBHelper.scala
+++ b/src/main/scala/com/github/shadowsocks/database/DBHelper.scala
@@ -64,7 +64,7 @@ object DBHelper {
}
class DBHelper(val context: Context)
- extends OrmLiteSqliteOpenHelper(context, DBHelper.PROFILE, null, 15) {
+ extends OrmLiteSqliteOpenHelper(context, DBHelper.PROFILE, null, 16) {
import DBHelper._
lazy val profileDao: Dao[Profile, Int] = getDao(classOf[Profile])
@@ -121,6 +121,10 @@ class DBHelper(val context: Context)
i += 1
}
}
+
+ if (oldVersion < 16) {
+ profileDao.executeRawNoArgs("UPDATE `profile` SET route = 'bypass-lan-china' WHERE route = 'bypass-china'")
+ }
}
}
}
diff --git a/src/main/scala/com/github/shadowsocks/utils/Constants.scala b/src/main/scala/com/github/shadowsocks/utils/Constants.scala
index 3a27ca47..92e4f2ac 100644
--- a/src/main/scala/com/github/shadowsocks/utils/Constants.scala
+++ b/src/main/scala/com/github/shadowsocks/utils/Constants.scala
@@ -110,4 +110,5 @@ object Route {
val ALL = "all"
val BYPASS_LAN = "bypass-lan"
val BYPASS_CHN = "bypass-china"
+ val BYPASS_LAN_CHN = "bypass-lan-china"
}