diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 99242518..0de2029f 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="157" + android:versionName="3.1.5"> diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 334c5899..d02363d5 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -110,7 +110,8 @@ 绕过局域网地址 绕过中国大陆地址 绕过局域网及中国大陆地址 - 仅代理国内无法访问的地址 + 仅代理中国大陆无法访问的地址 + 仅代理中国大陆地址 应用设置到所有配置文件 diff --git a/src/main/res/values-zh/strings.xml b/src/main/res/values-zh/strings.xml index a36aa6cd..7c4ceca8 100644 --- a/src/main/res/values-zh/strings.xml +++ b/src/main/res/values-zh/strings.xml @@ -113,6 +113,7 @@ 略過中國大陸位址 略過區域網路及中國大陸位址 僅代理大陸屏蔽位址 + 僅代理大陸位址 應用設置到所有配置文件 diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index 84e361e4..645cee8c 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -44,6 +44,7 @@ bypass-china bypass-lan-china gfwlist + china-list diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index b1dcbee2..d230a127 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -58,6 +58,7 @@ Bypass China Bypass LAN & China GFW List + China List Per-App Proxy Set proxy for selected apps, requires NAT mode under Android 4.x diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index 30dcbed6..a23f4f33 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -72,14 +72,16 @@ class ShadowsocksNatService extends BaseService { def startShadowsocksDaemon() { if (profile.route != Route.ALL && profile.route != Route.GFWLIST) { - val acl: Array[Array[String]] = profile.route match { - case Route.BYPASS_LAN => Array(getResources.getStringArray(R.array.private_route)) - case Route.BYPASS_CHN => Array(getResources.getStringArray(R.array.chn_route)) + val acl: Array[String] = profile.route match { + case Route.BYPASS_LAN => getResources.getStringArray(R.array.private_route) + case Route.BYPASS_CHN => getResources.getStringArray(R.array.chn_route) case Route.BYPASS_LAN_CHN => - Array(getResources.getStringArray(R.array.private_route), getResources.getStringArray(R.array.chn_route)) + getResources.getStringArray(R.array.private_route) ++ getResources.getStringArray(R.array.chn_route) + case Route.CHINALIST => + Array("[bypass_all]", "[white_list]") ++ getResources.getStringArray(R.array.chn_route) } Utils.printToFile(new File(getApplicationInfo.dataDir + "/acl.list"))(p => { - acl.flatten.foreach(p.println) + acl.foreach(p.println) }) } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index 1074946a..f22d692b 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -227,14 +227,16 @@ class ShadowsocksVpnService extends VpnService with BaseService { def startShadowsocksDaemon() { if (profile.route != Route.ALL && profile.route != Route.GFWLIST) { - val acl: Array[Array[String]] = profile.route match { - case Route.BYPASS_LAN => Array(getResources.getStringArray(R.array.private_route)) - case Route.BYPASS_CHN => Array(getResources.getStringArray(R.array.chn_route)) + val acl: Array[String] = profile.route match { + case Route.BYPASS_LAN => getResources.getStringArray(R.array.private_route) + case Route.BYPASS_CHN => getResources.getStringArray(R.array.chn_route) case Route.BYPASS_LAN_CHN => - Array(getResources.getStringArray(R.array.private_route), getResources.getStringArray(R.array.chn_route)) + getResources.getStringArray(R.array.private_route) ++ getResources.getStringArray(R.array.chn_route) + case Route.CHINALIST => + Array("[bypass_all]", "[white_list]") ++ getResources.getStringArray(R.array.chn_route) } Utils.printToFile(new File(getApplicationInfo.dataDir + "/acl.list"))(p => { - acl.flatten.foreach(p.println) + acl.foreach(p.println) }) } diff --git a/src/main/scala/com/github/shadowsocks/utils/Constants.scala b/src/main/scala/com/github/shadowsocks/utils/Constants.scala index 1b68ed5d..364003ef 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Constants.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Constants.scala @@ -196,4 +196,5 @@ object Route { val BYPASS_CHN = "bypass-china" val BYPASS_LAN_CHN = "bypass-lan-china" val GFWLIST = "gfwlist" + val CHINALIST = "china-list" }