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" }