Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b272d7ab71 | ||
|
|
09d53033cb | ||
|
|
496c809186 | ||
|
|
b58ffb7a95 | ||
|
|
3512542043 | ||
|
|
0c940c8860 | ||
|
|
00253ea3f6 | ||
|
|
d836aafe40 | ||
|
|
60360e6a19 | ||
|
|
5939f2776c | ||
|
|
0cecc62035 | ||
|
|
7a6fbaca15 | ||
|
|
2a3ffd768c | ||
|
|
33b775ea5e | ||
|
|
0be4d39606 | ||
|
|
ee7e4c9711 | ||
|
|
c1c8ff309c | ||
|
|
8724bf325f | ||
|
|
20395ede5f | ||
|
|
336fa3b775 | ||
|
|
11bfef423a | ||
|
|
6e0534b00f | ||
|
|
bf960f1a64 | ||
|
|
b1e01d2158 | ||
|
|
f344eb783c | ||
|
|
5f6effba09 | ||
|
|
97cfd1f869 |
@@ -31,9 +31,10 @@ libraryDependencies ++= Seq(
|
|||||||
"com.joanzapata.android" % "android-iconify" % "1.0.9",
|
"com.joanzapata.android" % "android-iconify" % "1.0.9",
|
||||||
"net.glxn.qrgen" % "android" % "2.0",
|
"net.glxn.qrgen" % "android" % "2.0",
|
||||||
"net.simonvt.menudrawer" % "menudrawer" % "3.0.6",
|
"net.simonvt.menudrawer" % "menudrawer" % "3.0.6",
|
||||||
"com.google.android.gms" % "play-services-base" % "6.5.87",
|
"com.google.android.gms" % "play-services-base" % "8.1.0",
|
||||||
"com.google.android.gms" % "play-services-ads" % "6.5.87",
|
"com.google.android.gms" % "play-services-ads" % "8.1.0",
|
||||||
"com.android.support" % "support-v4" % "21.0.3"
|
"com.google.android.gms" % "play-services-analytics" % "8.1.0",
|
||||||
|
"com.android.support" % "support-v4" % "23.0.1"
|
||||||
)
|
)
|
||||||
|
|
||||||
libraryDependencies ++= Seq(
|
libraryDependencies ++= Seq(
|
||||||
@@ -52,5 +53,6 @@ proguardOptions in Android ++= Seq("-keep class android.support.v4.app.** { *; }
|
|||||||
"-keep class * extends com.j256.ormlite.** { *; }",
|
"-keep class * extends com.j256.ormlite.** { *; }",
|
||||||
"-keep class com.joanzapata.** { *; }",
|
"-keep class com.joanzapata.** { *; }",
|
||||||
"-keepattributes *Annotation*",
|
"-keepattributes *Annotation*",
|
||||||
|
"-dontwarn com.google.android.gms.internal.zzhu",
|
||||||
"-dontwarn org.xbill.**",
|
"-dontwarn org.xbill.**",
|
||||||
"-dontwarn com.actionbarsherlock.**")
|
"-dontwarn com.actionbarsherlock.**")
|
||||||
|
|||||||
+13
-11
@@ -10,14 +10,14 @@ import IPy
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
china_list_set = IPy.IPSet()
|
china_list_set = IPy.IPSet()
|
||||||
# for line in sys.stdin:
|
for line in sys.stdin:
|
||||||
# line_params = line.split("|")
|
line_params = line.split("|")
|
||||||
# if len(line_params) < 5 or line_params[2] != "ipv4" or line_params[1] != "CN":
|
if len(line_params) < 5 or line_params[2] != "ipv4" or line_params[1] != "CN":
|
||||||
# continue
|
continue
|
||||||
# ip_addr = line_params[3]
|
ip_addr = line_params[3]
|
||||||
# ip_length = float(line_params[4])
|
ip_length = float(line_params[4])
|
||||||
# ip_mask = 32 - int(math.ceil(math.log(ip_length, 2)))
|
ip_mask = 32 - int(math.ceil(math.log(ip_length, 2)))
|
||||||
# china_list_set.add(IPy.IP("%s/%d" % (ip_addr, ip_mask)))
|
china_list_set.add(IPy.IP("%s/%d" % (ip_addr, ip_mask)))
|
||||||
|
|
||||||
# 添加内网地址
|
# 添加内网地址
|
||||||
internal_list = IPy.IPSet(map(IPy.IP, [
|
internal_list = IPy.IPSet(map(IPy.IP, [
|
||||||
@@ -41,11 +41,13 @@ def main():
|
|||||||
]))
|
]))
|
||||||
china_list_set += internal_list
|
china_list_set += internal_list
|
||||||
|
|
||||||
|
all = china_list_set
|
||||||
|
|
||||||
# 取反
|
# 取反
|
||||||
all = IPy.IPSet([IPy.IP("0.0.0.0/0")])
|
# all = IPy.IPSet([IPy.IP("0.0.0.0/0")])
|
||||||
# 剔除所有孤立的C段
|
# 剔除所有孤立的C段
|
||||||
for ip in china_list_set:
|
# for ip in china_list_set:
|
||||||
all.discard(ip)
|
# all.discard(ip)
|
||||||
|
|
||||||
# filter = itertools.ifilter(lambda x: len(x) <= 65536, all)
|
# filter = itertools.ifilter(lambda x: len(x) <= 65536, all)
|
||||||
# for ip in filter:
|
# for ip in filter:
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
resolvers += Resolver.url("scalasbt releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns)
|
resolvers += Resolver.url("scalasbt releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns)
|
||||||
|
|
||||||
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.4.8")
|
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.5.0")
|
||||||
|
|
||||||
resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
|
resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.github.shadowsocks"
|
package="com.github.shadowsocks"
|
||||||
android:versionCode="115"
|
android:versionCode="117"
|
||||||
android:versionName="2.7.7">
|
android:versionName="2.8.0">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ public class Config implements Parcelable {
|
|||||||
public boolean isBypassApps = false;
|
public boolean isBypassApps = false;
|
||||||
public boolean isTrafficStat = false;
|
public boolean isTrafficStat = false;
|
||||||
public boolean isUdpDns = false;
|
public boolean isUdpDns = false;
|
||||||
|
public boolean isAuth = false;
|
||||||
|
public boolean isIpv6 = false;
|
||||||
|
|
||||||
public String profileName = "Untitled";
|
public String profileName = "Untitled";
|
||||||
public String proxy = "127.0.0.1";
|
public String proxy = "127.0.0.1";
|
||||||
@@ -33,13 +35,15 @@ public class Config implements Parcelable {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public Config(boolean isGlobalProxy, boolean isGFWList, boolean isBypassApps,
|
public Config(boolean isGlobalProxy, boolean isGFWList, boolean isBypassApps,
|
||||||
boolean isTrafficStat, boolean isUdpDns, String profileName, String proxy, String sitekey,
|
boolean isTrafficStat, boolean isUdpDns, boolean isAuth, boolean isIpv6, String profileName, String proxy, String sitekey,
|
||||||
String encMethod, String proxiedAppString, String route, int remotePort, int localPort) {
|
String encMethod, String proxiedAppString, String route, int remotePort, int localPort) {
|
||||||
this.isGlobalProxy = isGlobalProxy;
|
this.isGlobalProxy = isGlobalProxy;
|
||||||
this.isGFWList = isGFWList;
|
this.isGFWList = isGFWList;
|
||||||
this.isBypassApps = isBypassApps;
|
this.isBypassApps = isBypassApps;
|
||||||
this.isTrafficStat = isTrafficStat;
|
this.isTrafficStat = isTrafficStat;
|
||||||
this.isUdpDns = isUdpDns;
|
this.isUdpDns = isUdpDns;
|
||||||
|
this.isAuth = isAuth;
|
||||||
|
this.isIpv6 = isIpv6;
|
||||||
this.profileName = profileName;
|
this.profileName = profileName;
|
||||||
this.proxy = proxy;
|
this.proxy = proxy;
|
||||||
this.sitekey = sitekey;
|
this.sitekey = sitekey;
|
||||||
@@ -60,6 +64,8 @@ public class Config implements Parcelable {
|
|||||||
isBypassApps = in.readInt() == 1;
|
isBypassApps = in.readInt() == 1;
|
||||||
isTrafficStat = in.readInt() == 1;
|
isTrafficStat = in.readInt() == 1;
|
||||||
isUdpDns = in.readInt() == 1;
|
isUdpDns = in.readInt() == 1;
|
||||||
|
isAuth = in.readInt() == 1;
|
||||||
|
isIpv6 = in.readInt() == 1;
|
||||||
profileName = in.readString();
|
profileName = in.readString();
|
||||||
proxy = in.readString();
|
proxy = in.readString();
|
||||||
sitekey = in.readString();
|
sitekey = in.readString();
|
||||||
@@ -80,6 +86,8 @@ public class Config implements Parcelable {
|
|||||||
out.writeInt(isBypassApps ? 1 : 0);
|
out.writeInt(isBypassApps ? 1 : 0);
|
||||||
out.writeInt(isTrafficStat ? 1 : 0);
|
out.writeInt(isTrafficStat ? 1 : 0);
|
||||||
out.writeInt(isUdpDns ? 1 : 0);
|
out.writeInt(isUdpDns ? 1 : 0);
|
||||||
|
out.writeInt(isAuth ? 1 : 0);
|
||||||
|
out.writeInt(isIpv6 ? 1 : 0);
|
||||||
out.writeString(profileName);
|
out.writeString(profileName);
|
||||||
out.writeString(proxy);
|
out.writeString(proxy);
|
||||||
out.writeString(sitekey);
|
out.writeString(sitekey);
|
||||||
|
|||||||
@@ -1772,6 +1772,9 @@ err_t listener_accept_func (void *arg, struct tcp_pcb *newpcb, err_t err)
|
|||||||
// set client not closed
|
// set client not closed
|
||||||
client->client_closed = 0;
|
client->client_closed = 0;
|
||||||
|
|
||||||
|
// enable TCP_NODELAY
|
||||||
|
tcp_nagle_disable(client->pcb);
|
||||||
|
|
||||||
// setup handler argument
|
// setup handler argument
|
||||||
tcp_arg(client->pcb, client);
|
tcp_arg(client->pcb, client);
|
||||||
|
|
||||||
|
|||||||
Submodule src/main/jni/shadowsocks-libev updated: e3ed222360...ad4fdeb364
@@ -77,6 +77,12 @@
|
|||||||
<string name="udp_dns">UDP 转发</string>
|
<string name="udp_dns">UDP 转发</string>
|
||||||
<string name="udp_dns_summary">由远程服务器转发 UDP 协议的数据包</string>
|
<string name="udp_dns_summary">由远程服务器转发 UDP 协议的数据包</string>
|
||||||
|
|
||||||
|
<string name="onetime_auth">一次性认证</string>
|
||||||
|
<string name="onetime_auth_summary">启用一次性认证(实验性)</string>
|
||||||
|
|
||||||
|
<string name="ipv6">IPv6 路由</string>
|
||||||
|
<string name="ipv6_summary">向远程服务器转发 IPv6 流量</string>
|
||||||
|
|
||||||
<!-- profile -->
|
<!-- profile -->
|
||||||
<string name="add_profile_dialog">为影梭添加此配置文件?</string>
|
<string name="add_profile_dialog">为影梭添加此配置文件?</string>
|
||||||
<string-array name="add_profile_methods">
|
<string-array name="add_profile_methods">
|
||||||
|
|||||||
@@ -321,6 +321,10 @@
|
|||||||
<item>43.239.0.0/19</item>
|
<item>43.239.0.0/19</item>
|
||||||
<item>43.239.32.0/20</item>
|
<item>43.239.32.0/20</item>
|
||||||
<item>43.239.48.0/22</item>
|
<item>43.239.48.0/22</item>
|
||||||
|
<item>43.239.116.0/22</item>
|
||||||
|
<item>43.239.120.0/22</item>
|
||||||
|
<item>43.239.172.0/22</item>
|
||||||
|
<item>43.239.176.0/22</item>
|
||||||
<item>43.240.0.0/22</item>
|
<item>43.240.0.0/22</item>
|
||||||
<item>43.240.48.0/22</item>
|
<item>43.240.48.0/22</item>
|
||||||
<item>43.240.56.0/21</item>
|
<item>43.240.56.0/21</item>
|
||||||
@@ -505,6 +509,154 @@
|
|||||||
<item>43.255.232.0/22</item>
|
<item>43.255.232.0/22</item>
|
||||||
<item>43.255.244.0/22</item>
|
<item>43.255.244.0/22</item>
|
||||||
<item>45.64.112.0/23</item>
|
<item>45.64.112.0/23</item>
|
||||||
|
<item>45.112.132.0/22</item>
|
||||||
|
<item>45.112.188.0/22</item>
|
||||||
|
<item>45.112.208.0/20</item>
|
||||||
|
<item>45.112.228.0/22</item>
|
||||||
|
<item>45.112.232.0/21</item>
|
||||||
|
<item>45.113.12.0/22</item>
|
||||||
|
<item>45.113.16.0/20</item>
|
||||||
|
<item>45.113.40.0/22</item>
|
||||||
|
<item>45.113.52.0/22</item>
|
||||||
|
<item>45.113.56.0/22</item>
|
||||||
|
<item>45.113.72.0/22</item>
|
||||||
|
<item>45.113.108.0/22</item>
|
||||||
|
<item>45.113.144.0/21</item>
|
||||||
|
<item>45.113.168.0/22</item>
|
||||||
|
<item>45.113.176.0/22</item>
|
||||||
|
<item>45.113.184.0/22</item>
|
||||||
|
<item>45.113.200.0/21</item>
|
||||||
|
<item>45.113.208.0/20</item>
|
||||||
|
<item>45.113.228.0/22</item>
|
||||||
|
<item>45.113.240.0/22</item>
|
||||||
|
<item>45.113.252.0/22</item>
|
||||||
|
<item>45.114.0.0/22</item>
|
||||||
|
<item>45.114.12.0/22</item>
|
||||||
|
<item>45.114.32.0/22</item>
|
||||||
|
<item>45.114.40.0/22</item>
|
||||||
|
<item>45.114.52.0/22</item>
|
||||||
|
<item>45.114.96.0/22</item>
|
||||||
|
<item>45.114.104.0/22</item>
|
||||||
|
<item>45.114.136.0/22</item>
|
||||||
|
<item>45.114.196.0/22</item>
|
||||||
|
<item>45.114.200.0/22</item>
|
||||||
|
<item>45.114.228.0/22</item>
|
||||||
|
<item>45.114.236.0/22</item>
|
||||||
|
<item>45.114.252.0/22</item>
|
||||||
|
<item>45.115.44.0/22</item>
|
||||||
|
<item>45.115.100.0/22</item>
|
||||||
|
<item>45.115.120.0/22</item>
|
||||||
|
<item>45.115.132.0/22</item>
|
||||||
|
<item>45.115.144.0/22</item>
|
||||||
|
<item>45.115.156.0/22</item>
|
||||||
|
<item>45.115.164.0/22</item>
|
||||||
|
<item>45.115.200.0/22</item>
|
||||||
|
<item>45.115.212.0/22</item>
|
||||||
|
<item>45.115.216.0/22</item>
|
||||||
|
<item>45.115.228.0/22</item>
|
||||||
|
<item>45.115.236.0/22</item>
|
||||||
|
<item>45.115.244.0/22</item>
|
||||||
|
<item>45.115.248.0/22</item>
|
||||||
|
<item>45.116.12.0/22</item>
|
||||||
|
<item>45.116.16.0/21</item>
|
||||||
|
<item>45.116.24.0/22</item>
|
||||||
|
<item>45.116.32.0/21</item>
|
||||||
|
<item>45.116.52.0/22</item>
|
||||||
|
<item>45.116.60.0/22</item>
|
||||||
|
<item>45.116.64.0/22</item>
|
||||||
|
<item>45.116.96.0/21</item>
|
||||||
|
<item>45.116.140.0/22</item>
|
||||||
|
<item>45.116.152.0/22</item>
|
||||||
|
<item>45.116.208.0/22</item>
|
||||||
|
<item>45.117.8.0/22</item>
|
||||||
|
<item>45.117.20.0/22</item>
|
||||||
|
<item>45.117.40.0/22</item>
|
||||||
|
<item>45.117.68.0/22</item>
|
||||||
|
<item>45.117.124.0/22</item>
|
||||||
|
<item>45.117.252.0/22</item>
|
||||||
|
<item>45.119.52.0/22</item>
|
||||||
|
<item>45.119.60.0/22</item>
|
||||||
|
<item>45.119.64.0/21</item>
|
||||||
|
<item>45.119.72.0/22</item>
|
||||||
|
<item>45.119.104.0/22</item>
|
||||||
|
<item>45.119.116.0/22</item>
|
||||||
|
<item>45.119.160.0/22</item>
|
||||||
|
<item>45.119.232.0/22</item>
|
||||||
|
<item>45.120.100.0/22</item>
|
||||||
|
<item>45.120.140.0/22</item>
|
||||||
|
<item>45.120.156.0/22</item>
|
||||||
|
<item>45.120.164.0/22</item>
|
||||||
|
<item>45.120.220.0/22</item>
|
||||||
|
<item>45.120.240.0/22</item>
|
||||||
|
<item>45.121.20.0/22</item>
|
||||||
|
<item>45.121.52.0/22</item>
|
||||||
|
<item>45.121.64.0/21</item>
|
||||||
|
<item>45.121.72.0/22</item>
|
||||||
|
<item>45.121.92.0/22</item>
|
||||||
|
<item>45.121.96.0/22</item>
|
||||||
|
<item>45.121.104.0/22</item>
|
||||||
|
<item>45.121.172.0/22</item>
|
||||||
|
<item>45.121.176.0/22</item>
|
||||||
|
<item>45.121.212.0/22</item>
|
||||||
|
<item>45.121.240.0/20</item>
|
||||||
|
<item>45.122.0.0/19</item>
|
||||||
|
<item>45.122.32.0/21</item>
|
||||||
|
<item>45.122.40.0/22</item>
|
||||||
|
<item>45.122.60.0/22</item>
|
||||||
|
<item>45.122.64.0/19</item>
|
||||||
|
<item>45.122.96.0/20</item>
|
||||||
|
<item>45.122.112.0/21</item>
|
||||||
|
<item>45.122.160.0/19</item>
|
||||||
|
<item>45.122.192.0/20</item>
|
||||||
|
<item>45.122.208.0/21</item>
|
||||||
|
<item>45.122.216.0/22</item>
|
||||||
|
<item>45.123.28.0/22</item>
|
||||||
|
<item>45.123.32.0/21</item>
|
||||||
|
<item>45.123.44.0/22</item>
|
||||||
|
<item>45.123.48.0/20</item>
|
||||||
|
<item>45.123.64.0/20</item>
|
||||||
|
<item>45.123.80.0/21</item>
|
||||||
|
<item>45.123.88.0/22</item>
|
||||||
|
<item>45.123.120.0/22</item>
|
||||||
|
<item>45.123.128.0/21</item>
|
||||||
|
<item>45.123.136.0/22</item>
|
||||||
|
<item>45.123.148.0/22</item>
|
||||||
|
<item>45.123.152.0/21</item>
|
||||||
|
<item>45.123.164.0/22</item>
|
||||||
|
<item>45.123.168.0/21</item>
|
||||||
|
<item>45.123.176.0/21</item>
|
||||||
|
<item>45.123.184.0/22</item>
|
||||||
|
<item>45.123.204.0/22</item>
|
||||||
|
<item>45.123.212.0/22</item>
|
||||||
|
<item>45.123.224.0/19</item>
|
||||||
|
<item>45.124.0.0/22</item>
|
||||||
|
<item>45.124.20.0/22</item>
|
||||||
|
<item>45.124.28.0/22</item>
|
||||||
|
<item>45.124.32.0/21</item>
|
||||||
|
<item>45.124.44.0/22</item>
|
||||||
|
<item>45.124.68.0/22</item>
|
||||||
|
<item>45.124.76.0/22</item>
|
||||||
|
<item>45.124.80.0/22</item>
|
||||||
|
<item>45.124.100.0/22</item>
|
||||||
|
<item>45.124.124.0/22</item>
|
||||||
|
<item>45.124.172.0/22</item>
|
||||||
|
<item>45.124.176.0/22</item>
|
||||||
|
<item>45.124.208.0/22</item>
|
||||||
|
<item>45.124.248.0/21</item>
|
||||||
|
<item>45.125.12.0/22</item>
|
||||||
|
<item>45.125.16.0/22</item>
|
||||||
|
<item>45.125.24.0/21</item>
|
||||||
|
<item>45.125.32.0/22</item>
|
||||||
|
<item>45.125.44.0/22</item>
|
||||||
|
<item>45.125.52.0/22</item>
|
||||||
|
<item>45.125.56.0/22</item>
|
||||||
|
<item>45.125.76.0/22</item>
|
||||||
|
<item>45.125.80.0/20</item>
|
||||||
|
<item>45.125.96.0/21</item>
|
||||||
|
<item>45.125.104.0/22</item>
|
||||||
|
<item>45.125.136.0/22</item>
|
||||||
|
<item>47.92.0.0/14</item>
|
||||||
|
<item>47.96.0.0/11</item>
|
||||||
<item>49.4.0.0/14</item>
|
<item>49.4.0.0/14</item>
|
||||||
<item>49.51.0.0/16</item>
|
<item>49.51.0.0/16</item>
|
||||||
<item>49.52.0.0/14</item>
|
<item>49.52.0.0/14</item>
|
||||||
@@ -803,7 +955,6 @@
|
|||||||
<item>103.30.96.0/22</item>
|
<item>103.30.96.0/22</item>
|
||||||
<item>103.30.148.0/22</item>
|
<item>103.30.148.0/22</item>
|
||||||
<item>103.30.200.0/22</item>
|
<item>103.30.200.0/22</item>
|
||||||
<item>103.30.216.0/22</item>
|
|
||||||
<item>103.30.228.0/22</item>
|
<item>103.30.228.0/22</item>
|
||||||
<item>103.30.236.0/22</item>
|
<item>103.30.236.0/22</item>
|
||||||
<item>103.31.0.0/22</item>
|
<item>103.31.0.0/22</item>
|
||||||
@@ -818,6 +969,8 @@
|
|||||||
<item>103.35.0.0/19</item>
|
<item>103.35.0.0/19</item>
|
||||||
<item>103.35.32.0/20</item>
|
<item>103.35.32.0/20</item>
|
||||||
<item>103.35.48.0/22</item>
|
<item>103.35.48.0/22</item>
|
||||||
|
<item>103.35.104.0/22</item>
|
||||||
|
<item>103.35.116.0/22</item>
|
||||||
<item>103.36.20.0/22</item>
|
<item>103.36.20.0/22</item>
|
||||||
<item>103.36.28.0/22</item>
|
<item>103.36.28.0/22</item>
|
||||||
<item>103.36.36.0/22</item>
|
<item>103.36.36.0/22</item>
|
||||||
@@ -1004,6 +1157,142 @@
|
|||||||
<item>103.50.224.0/20</item>
|
<item>103.50.224.0/20</item>
|
||||||
<item>103.50.240.0/21</item>
|
<item>103.50.240.0/21</item>
|
||||||
<item>103.50.248.0/22</item>
|
<item>103.50.248.0/22</item>
|
||||||
|
<item>103.52.40.0/22</item>
|
||||||
|
<item>103.52.72.0/21</item>
|
||||||
|
<item>103.52.80.0/21</item>
|
||||||
|
<item>103.52.96.0/21</item>
|
||||||
|
<item>103.52.104.0/22</item>
|
||||||
|
<item>103.52.160.0/21</item>
|
||||||
|
<item>103.52.172.0/22</item>
|
||||||
|
<item>103.52.176.0/22</item>
|
||||||
|
<item>103.52.184.0/22</item>
|
||||||
|
<item>103.52.196.0/22</item>
|
||||||
|
<item>103.53.4.0/22</item>
|
||||||
|
<item>103.53.64.0/21</item>
|
||||||
|
<item>103.53.92.0/22</item>
|
||||||
|
<item>103.53.100.0/22</item>
|
||||||
|
<item>103.53.124.0/22</item>
|
||||||
|
<item>103.53.128.0/20</item>
|
||||||
|
<item>103.53.144.0/22</item>
|
||||||
|
<item>103.53.160.0/22</item>
|
||||||
|
<item>103.53.180.0/22</item>
|
||||||
|
<item>103.53.204.0/22</item>
|
||||||
|
<item>103.53.208.0/22</item>
|
||||||
|
<item>103.53.216.0/22</item>
|
||||||
|
<item>103.53.236.0/22</item>
|
||||||
|
<item>103.53.248.0/22</item>
|
||||||
|
<item>103.54.8.0/22</item>
|
||||||
|
<item>103.54.48.0/22</item>
|
||||||
|
<item>103.54.60.0/22</item>
|
||||||
|
<item>103.54.160.0/21</item>
|
||||||
|
<item>103.54.212.0/22</item>
|
||||||
|
<item>103.54.228.0/22</item>
|
||||||
|
<item>103.54.240.0/22</item>
|
||||||
|
<item>103.55.24.0/22</item>
|
||||||
|
<item>103.55.80.0/22</item>
|
||||||
|
<item>103.55.120.0/22</item>
|
||||||
|
<item>103.55.152.0/22</item>
|
||||||
|
<item>103.55.172.0/22</item>
|
||||||
|
<item>103.55.204.0/22</item>
|
||||||
|
<item>103.55.208.0/22</item>
|
||||||
|
<item>103.55.228.0/22</item>
|
||||||
|
<item>103.55.236.0/22</item>
|
||||||
|
<item>103.55.240.0/22</item>
|
||||||
|
<item>103.56.8.0/22</item>
|
||||||
|
<item>103.56.16.0/21</item>
|
||||||
|
<item>103.56.32.0/22</item>
|
||||||
|
<item>103.56.52.0/22</item>
|
||||||
|
<item>103.56.56.0/21</item>
|
||||||
|
<item>103.56.72.0/21</item>
|
||||||
|
<item>103.56.100.0/22</item>
|
||||||
|
<item>103.56.104.0/22</item>
|
||||||
|
<item>103.56.140.0/22</item>
|
||||||
|
<item>103.56.152.0/22</item>
|
||||||
|
<item>103.56.184.0/22</item>
|
||||||
|
<item>103.56.200.0/22</item>
|
||||||
|
<item>103.56.216.0/22</item>
|
||||||
|
<item>103.57.12.0/22</item>
|
||||||
|
<item>103.57.52.0/22</item>
|
||||||
|
<item>103.57.56.0/22</item>
|
||||||
|
<item>103.57.76.0/22</item>
|
||||||
|
<item>103.57.108.0/22</item>
|
||||||
|
<item>103.57.136.0/22</item>
|
||||||
|
<item>103.57.196.0/22</item>
|
||||||
|
<item>103.58.24.0/22</item>
|
||||||
|
<item>103.58.182.0/23</item>
|
||||||
|
<item>103.59.76.0/22</item>
|
||||||
|
<item>103.59.100.0/22</item>
|
||||||
|
<item>103.59.112.0/20</item>
|
||||||
|
<item>103.59.128.0/22</item>
|
||||||
|
<item>103.59.148.0/22</item>
|
||||||
|
<item>103.59.164.0/22</item>
|
||||||
|
<item>103.59.216.0/22</item>
|
||||||
|
<item>103.60.32.0/22</item>
|
||||||
|
<item>103.60.44.0/22</item>
|
||||||
|
<item>103.60.164.0/22</item>
|
||||||
|
<item>103.60.228.0/22</item>
|
||||||
|
<item>103.60.236.0/22</item>
|
||||||
|
<item>103.61.60.0/22</item>
|
||||||
|
<item>103.61.104.0/22</item>
|
||||||
|
<item>103.61.140.0/22</item>
|
||||||
|
<item>103.61.152.0/21</item>
|
||||||
|
<item>103.61.160.0/22</item>
|
||||||
|
<item>103.61.172.0/22</item>
|
||||||
|
<item>103.61.176.0/22</item>
|
||||||
|
<item>103.61.184.0/21</item>
|
||||||
|
<item>103.62.24.0/22</item>
|
||||||
|
<item>103.62.52.0/22</item>
|
||||||
|
<item>103.62.72.0/21</item>
|
||||||
|
<item>103.62.80.0/21</item>
|
||||||
|
<item>103.62.88.0/22</item>
|
||||||
|
<item>103.62.96.0/19</item>
|
||||||
|
<item>103.62.128.0/21</item>
|
||||||
|
<item>103.62.156.0/22</item>
|
||||||
|
<item>103.62.160.0/19</item>
|
||||||
|
<item>103.62.192.0/22</item>
|
||||||
|
<item>103.62.204.0/22</item>
|
||||||
|
<item>103.62.208.0/20</item>
|
||||||
|
<item>103.62.224.0/22</item>
|
||||||
|
<item>103.63.32.0/19</item>
|
||||||
|
<item>103.63.64.0/20</item>
|
||||||
|
<item>103.63.80.0/21</item>
|
||||||
|
<item>103.63.88.0/22</item>
|
||||||
|
<item>103.63.140.0/22</item>
|
||||||
|
<item>103.63.144.0/22</item>
|
||||||
|
<item>103.63.152.0/22</item>
|
||||||
|
<item>103.63.160.0/20</item>
|
||||||
|
<item>103.63.176.0/21</item>
|
||||||
|
<item>103.63.184.0/22</item>
|
||||||
|
<item>103.63.192.0/20</item>
|
||||||
|
<item>103.63.208.0/22</item>
|
||||||
|
<item>103.63.240.0/20</item>
|
||||||
|
<item>103.192.0.0/19</item>
|
||||||
|
<item>103.192.48.0/21</item>
|
||||||
|
<item>103.192.56.0/22</item>
|
||||||
|
<item>103.192.84.0/22</item>
|
||||||
|
<item>103.192.88.0/21</item>
|
||||||
|
<item>103.192.96.0/20</item>
|
||||||
|
<item>103.192.112.0/22</item>
|
||||||
|
<item>103.192.128.0/20</item>
|
||||||
|
<item>103.192.144.0/22</item>
|
||||||
|
<item>103.192.164.0/22</item>
|
||||||
|
<item>103.192.188.0/22</item>
|
||||||
|
<item>103.192.208.0/21</item>
|
||||||
|
<item>103.192.216.0/22</item>
|
||||||
|
<item>103.192.252.0/22</item>
|
||||||
|
<item>103.193.40.0/21</item>
|
||||||
|
<item>103.193.120.0/21</item>
|
||||||
|
<item>103.193.140.0/22</item>
|
||||||
|
<item>103.193.144.0/21</item>
|
||||||
|
<item>103.193.160.0/22</item>
|
||||||
|
<item>103.193.188.0/22</item>
|
||||||
|
<item>103.193.192.0/22</item>
|
||||||
|
<item>103.193.212.0/22</item>
|
||||||
|
<item>103.193.216.0/21</item>
|
||||||
|
<item>103.193.224.0/20</item>
|
||||||
|
<item>103.193.240.0/22</item>
|
||||||
|
<item>103.194.16.0/22</item>
|
||||||
|
<item>103.194.230.0/23</item>
|
||||||
<item>103.224.40.0/21</item>
|
<item>103.224.40.0/21</item>
|
||||||
<item>103.224.60.0/22</item>
|
<item>103.224.60.0/22</item>
|
||||||
<item>103.224.80.0/22</item>
|
<item>103.224.80.0/22</item>
|
||||||
@@ -1096,6 +1385,7 @@
|
|||||||
<item>103.236.0.0/18</item>
|
<item>103.236.0.0/18</item>
|
||||||
<item>103.236.64.0/19</item>
|
<item>103.236.64.0/19</item>
|
||||||
<item>103.236.96.0/22</item>
|
<item>103.236.96.0/22</item>
|
||||||
|
<item>103.236.120.0/22</item>
|
||||||
<item>103.237.0.0/20</item>
|
<item>103.237.0.0/20</item>
|
||||||
<item>103.237.24.0/21</item>
|
<item>103.237.24.0/21</item>
|
||||||
<item>103.237.68.0/22</item>
|
<item>103.237.68.0/22</item>
|
||||||
@@ -1936,6 +2226,7 @@
|
|||||||
<item>166.111.0.0/16</item>
|
<item>166.111.0.0/16</item>
|
||||||
<item>167.139.0.0/16</item>
|
<item>167.139.0.0/16</item>
|
||||||
<item>167.189.0.0/16</item>
|
<item>167.189.0.0/16</item>
|
||||||
|
<item>167.220.244.0/22</item>
|
||||||
<item>168.160.0.0/16</item>
|
<item>168.160.0.0/16</item>
|
||||||
<item>169.254.0.0/16</item>
|
<item>169.254.0.0/16</item>
|
||||||
<item>171.8.0.0/13</item>
|
<item>171.8.0.0/13</item>
|
||||||
@@ -3363,7 +3654,6 @@
|
|||||||
<item>210.26.0.0/15</item>
|
<item>210.26.0.0/15</item>
|
||||||
<item>210.28.0.0/14</item>
|
<item>210.28.0.0/14</item>
|
||||||
<item>210.32.0.0/12</item>
|
<item>210.32.0.0/12</item>
|
||||||
<item>210.48.136.0/21</item>
|
|
||||||
<item>210.51.0.0/16</item>
|
<item>210.51.0.0/16</item>
|
||||||
<item>210.52.0.0/15</item>
|
<item>210.52.0.0/15</item>
|
||||||
<item>210.56.192.0/19</item>
|
<item>210.56.192.0/19</item>
|
||||||
|
|||||||
@@ -25,10 +25,14 @@
|
|||||||
|
|
||||||
<!-- feature category -->
|
<!-- feature category -->
|
||||||
<string name="feature_cat">Feature Settings</string>
|
<string name="feature_cat">Feature Settings</string>
|
||||||
|
<string name="ipv6">IPv6 Route</string>
|
||||||
|
<string name="ipv6_summary">Redirect IPv6 traffic to remote</string>
|
||||||
|
<string name="onetime_auth">One-time Authentication</string>
|
||||||
|
<string name="onetime_auth_summary">Enable one-time authentication (Experimental)</string>
|
||||||
<string name="http_proxy">HTTP Proxy</string>
|
<string name="http_proxy">HTTP Proxy</string>
|
||||||
<string name="http_proxy_summary">Local HTTP Proxy</string>
|
<string name="http_proxy_summary">Local HTTP Proxy</string>
|
||||||
<string name="dns_proxy">DNS Proxy</string>
|
<string name="dns_proxy">DNS Proxy</string>
|
||||||
<string name="dns_proxy_summary">Redirect DNS queries to remote server</string>
|
<string name="dns_proxy_summary">Redirect DNS queries to remote</string>
|
||||||
<string name="auto_set_gfwlist">CHN Route</string>
|
<string name="auto_set_gfwlist">CHN Route</string>
|
||||||
<string name="auto_set_gfwlist_summary">Bypass all sites located in China
|
<string name="auto_set_gfwlist_summary">Bypass all sites located in China
|
||||||
</string>
|
</string>
|
||||||
@@ -46,7 +50,7 @@
|
|||||||
<string name="traffic_stat">Traffic Stats</string>
|
<string name="traffic_stat">Traffic Stats</string>
|
||||||
<string name="traffic_stat_summary">Show traffic stats in notification bar</string>
|
<string name="traffic_stat_summary">Show traffic stats in notification bar</string>
|
||||||
<string name="udp_dns">UDP Forwarding</string>
|
<string name="udp_dns">UDP Forwarding</string>
|
||||||
<string name="udp_dns_summary">Forward UDP packets to remote server</string>
|
<string name="udp_dns_summary">Forward UDP packets to remote</string>
|
||||||
|
|
||||||
<!-- notification category -->
|
<!-- notification category -->
|
||||||
<string name="forward_success">Shadowsocks started.</string>
|
<string name="forward_success">Shadowsocks started.</string>
|
||||||
|
|||||||
@@ -58,6 +58,12 @@
|
|||||||
android:summary="@string/route_list_summary"
|
android:summary="@string/route_list_summary"
|
||||||
android:title="@string/route_list">
|
android:title="@string/route_list">
|
||||||
</com.github.shadowsocks.preferences.SummaryListPreference>
|
</com.github.shadowsocks.preferences.SummaryListPreference>
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="isIpv6"
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:summary="@string/ipv6_summary"
|
||||||
|
android:title="@string/ipv6">
|
||||||
|
</CheckBoxPreference>
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
android:key="isGlobalProxy"
|
android:key="isGlobalProxy"
|
||||||
@@ -78,6 +84,12 @@
|
|||||||
android:summary="@string/udp_dns_summary"
|
android:summary="@string/udp_dns_summary"
|
||||||
android:title="@string/udp_dns">
|
android:title="@string/udp_dns">
|
||||||
</CheckBoxPreference>
|
</CheckBoxPreference>
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="isAuth"
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:summary="@string/onetime_auth_summary"
|
||||||
|
android:title="@string/onetime_auth">
|
||||||
|
</CheckBoxPreference>
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="isAutoConnect"
|
android:key="isAutoConnect"
|
||||||
android:summary="@string/auto_connect_summary"
|
android:summary="@string/auto_connect_summary"
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ object Shadowsocks {
|
|||||||
val PROXY_PREFS = Array(Key.profileName, Key.proxy, Key.remotePort, Key.localPort, Key.sitekey,
|
val PROXY_PREFS = Array(Key.profileName, Key.proxy, Key.remotePort, Key.localPort, Key.sitekey,
|
||||||
Key.encMethod)
|
Key.encMethod)
|
||||||
val FEATRUE_PREFS = Array(Key.route, Key.isGlobalProxy, Key.proxyedApps,
|
val FEATRUE_PREFS = Array(Key.route, Key.isGlobalProxy, Key.proxyedApps,
|
||||||
Key.isUdpDns, Key.isAutoConnect)
|
Key.isUdpDns, Key.isAuth, Key.isIpv6, Key.isAutoConnect)
|
||||||
|
|
||||||
val EXECUTABLES = Array(Executable.PDNSD, Executable.REDSOCKS, Executable.SS_TUNNEL, Executable.SS_LOCAL, Executable.TUN2SOCKS)
|
val EXECUTABLES = Array(Executable.PDNSD, Executable.REDSOCKS, Executable.SS_TUNNEL, Executable.SS_LOCAL, Executable.TUN2SOCKS)
|
||||||
|
|
||||||
@@ -166,6 +166,8 @@ object Shadowsocks {
|
|||||||
case Key.route => updateListPreference(pref, profile.route)
|
case Key.route => updateListPreference(pref, profile.route)
|
||||||
case Key.isGlobalProxy => updateCheckBoxPreference(pref, profile.global)
|
case Key.isGlobalProxy => updateCheckBoxPreference(pref, profile.global)
|
||||||
case Key.isUdpDns => updateCheckBoxPreference(pref, profile.udpdns)
|
case Key.isUdpDns => updateCheckBoxPreference(pref, profile.udpdns)
|
||||||
|
case Key.isAuth => updateCheckBoxPreference(pref, profile.auth)
|
||||||
|
case Key.isIpv6 => updateCheckBoxPreference(pref, profile.ipv6)
|
||||||
case _ =>
|
case _ =>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1111,7 +1113,7 @@ class Shadowsocks
|
|||||||
changeSwitch(checked = true)
|
changeSwitch(checked = true)
|
||||||
setPreferenceEnabled(enabled = false)
|
setPreferenceEnabled(enabled = false)
|
||||||
case State.STOPPED =>
|
case State.STOPPED =>
|
||||||
if (progressTag == R.string.stopping) {
|
if (progressTag == R.string.stopping || progressTag == R.string.connecting) {
|
||||||
clearDialog()
|
clearDialog()
|
||||||
}
|
}
|
||||||
changeSwitch(checked = false)
|
changeSwitch(checked = false)
|
||||||
|
|||||||
@@ -205,6 +205,8 @@ class ShadowsocksNatService extends Service with BaseService {
|
|||||||
, "-c" , Path.BASE + "ss-local-nat.conf"
|
, "-c" , Path.BASE + "ss-local-nat.conf"
|
||||||
, "-f" , Path.BASE + "ss-local-nat.pid")
|
, "-f" , Path.BASE + "ss-local-nat.pid")
|
||||||
|
|
||||||
|
if (config.isAuth) cmd += "-A"
|
||||||
|
|
||||||
if (config.route != Route.ALL) {
|
if (config.route != Route.ALL) {
|
||||||
cmd += "--acl"
|
cmd += "--acl"
|
||||||
cmd += (Path.BASE + "acl.list")
|
cmd += (Path.BASE + "acl.list")
|
||||||
@@ -233,6 +235,8 @@ class ShadowsocksNatService extends Service with BaseService {
|
|||||||
|
|
||||||
cmd += ("-l" , "8153")
|
cmd += ("-l" , "8153")
|
||||||
|
|
||||||
|
if (config.isAuth) cmd += "-A"
|
||||||
|
|
||||||
if (BuildConfig.DEBUG) Log.d(TAG, cmd.mkString(" "))
|
if (BuildConfig.DEBUG) Log.d(TAG, cmd.mkString(" "))
|
||||||
|
|
||||||
Console.runCommand(cmd.mkString(" "))
|
Console.runCommand(cmd.mkString(" "))
|
||||||
@@ -254,6 +258,8 @@ class ShadowsocksNatService extends Service with BaseService {
|
|||||||
, "-c" , Path.BASE + "ss-tunnel-nat.conf"
|
, "-c" , Path.BASE + "ss-tunnel-nat.conf"
|
||||||
, "-f" , Path.BASE + "ss-tunnel-nat.pid")
|
, "-f" , Path.BASE + "ss-tunnel-nat.pid")
|
||||||
|
|
||||||
|
if (config.isAuth) cmdBuf += "-A"
|
||||||
|
|
||||||
if (BuildConfig.DEBUG) Log.d(TAG, cmdBuf.mkString(" "))
|
if (BuildConfig.DEBUG) Log.d(TAG, cmdBuf.mkString(" "))
|
||||||
Console.runCommand(cmdBuf.mkString(" "))
|
Console.runCommand(cmdBuf.mkString(" "))
|
||||||
}
|
}
|
||||||
@@ -265,10 +271,10 @@ class ShadowsocksNatService extends Service with BaseService {
|
|||||||
val reject = ConfigUtils.getRejectList(getContext, application)
|
val reject = ConfigUtils.getRejectList(getContext, application)
|
||||||
val blackList = ConfigUtils.getBlackList(getContext, application)
|
val blackList = ConfigUtils.getBlackList(getContext, application)
|
||||||
ConfigUtils.PDNSD_DIRECT.formatLocal(Locale.ENGLISH, "127.0.0.1", 8153,
|
ConfigUtils.PDNSD_DIRECT.formatLocal(Locale.ENGLISH, "127.0.0.1", 8153,
|
||||||
Path.BASE + "pdnsd-nat.pid", reject, blackList, 8163)
|
Path.BASE + "pdnsd-nat.pid", reject, blackList, 8163, "")
|
||||||
} else {
|
} else {
|
||||||
ConfigUtils.PDNSD_LOCAL.formatLocal(Locale.ENGLISH, "127.0.0.1", 8153,
|
ConfigUtils.PDNSD_LOCAL.formatLocal(Locale.ENGLISH, "127.0.0.1", 8153,
|
||||||
Path.BASE + "pdnsd-nat.pid", 8163)
|
Path.BASE + "pdnsd-nat.pid", 8163, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigUtils.printToFile(new File(Path.BASE + "pdnsd-nat.conf"))(p => {
|
ConfigUtils.printToFile(new File(Path.BASE + "pdnsd-nat.conf"))(p => {
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
|||||||
val TAG = "ShadowsocksVpnService"
|
val TAG = "ShadowsocksVpnService"
|
||||||
val VPN_MTU = 1500
|
val VPN_MTU = 1500
|
||||||
val PRIVATE_VLAN = "26.26.26.%s"
|
val PRIVATE_VLAN = "26.26.26.%s"
|
||||||
|
val PRIVATE_VLAN6 = "fdfe:dcba:9876::%s"
|
||||||
var conn: ParcelFileDescriptor = null
|
var conn: ParcelFileDescriptor = null
|
||||||
var notificationManager: NotificationManager = null
|
var notificationManager: NotificationManager = null
|
||||||
var receiver: BroadcastReceiver = null
|
var receiver: BroadcastReceiver = null
|
||||||
@@ -302,12 +303,14 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
|||||||
})
|
})
|
||||||
|
|
||||||
val cmd = new ArrayBuffer[String]
|
val cmd = new ArrayBuffer[String]
|
||||||
cmd +=(Path.BASE + "ss-local", "-V", "-u"
|
cmd += (Path.BASE + "ss-local", "-V", "-u"
|
||||||
, "-b", "127.0.0.1"
|
, "-b", "127.0.0.1"
|
||||||
, "-t", "600"
|
, "-t", "600"
|
||||||
, "-c", Path.BASE + "ss-local-vpn.conf"
|
, "-c", Path.BASE + "ss-local-vpn.conf"
|
||||||
, "-f", Path.BASE + "ss-local-vpn.pid")
|
, "-f", Path.BASE + "ss-local-vpn.pid")
|
||||||
|
|
||||||
|
if (config.isAuth) cmd += "-A"
|
||||||
|
|
||||||
if (config.route != Route.ALL) {
|
if (config.route != Route.ALL) {
|
||||||
cmd += "--acl"
|
cmd += "--acl"
|
||||||
cmd += (Path.BASE + "acl.list")
|
cmd += (Path.BASE + "acl.list")
|
||||||
@@ -325,7 +328,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
|||||||
p.println(conf)
|
p.println(conf)
|
||||||
})
|
})
|
||||||
val cmd = new ArrayBuffer[String]
|
val cmd = new ArrayBuffer[String]
|
||||||
cmd +=(Path.BASE + "ss-tunnel"
|
cmd += (Path.BASE + "ss-tunnel"
|
||||||
, "-V"
|
, "-V"
|
||||||
, "-u"
|
, "-u"
|
||||||
, "-t", "10"
|
, "-t", "10"
|
||||||
@@ -335,20 +338,23 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
|||||||
, "-c", Path.BASE + "ss-tunnel-vpn.conf"
|
, "-c", Path.BASE + "ss-tunnel-vpn.conf"
|
||||||
, "-f", Path.BASE + "ss-tunnel-vpn.pid")
|
, "-f", Path.BASE + "ss-tunnel-vpn.pid")
|
||||||
|
|
||||||
|
if (config.isAuth) cmd += "-A"
|
||||||
|
|
||||||
if (BuildConfig.DEBUG) Log.d(TAG, cmd.mkString(" "))
|
if (BuildConfig.DEBUG) Log.d(TAG, cmd.mkString(" "))
|
||||||
Console.runCommand(cmd.mkString(" "))
|
Console.runCommand(cmd.mkString(" "))
|
||||||
}
|
}
|
||||||
|
|
||||||
def startDnsDaemon() {
|
def startDnsDaemon() {
|
||||||
|
val ipv6 = if (config.isIpv6) "" else "reject = ::/0;"
|
||||||
val conf = {
|
val conf = {
|
||||||
if (config.route == Route.BYPASS_CHN) {
|
if (config.route == Route.BYPASS_CHN) {
|
||||||
val reject = ConfigUtils.getRejectList(getContext, application)
|
val reject = ConfigUtils.getRejectList(getContext, application)
|
||||||
val blackList = ConfigUtils.getBlackList(getContext, application)
|
val blackList = ConfigUtils.getBlackList(getContext, application)
|
||||||
ConfigUtils.PDNSD_DIRECT.formatLocal(Locale.ENGLISH, "0.0.0.0", 8153,
|
ConfigUtils.PDNSD_DIRECT.formatLocal(Locale.ENGLISH, "0.0.0.0", 8153,
|
||||||
Path.BASE + "pdnsd-vpn.pid", reject, blackList, 8163)
|
Path.BASE + "pdnsd-vpn.pid", reject, blackList, 8163, ipv6)
|
||||||
} else {
|
} else {
|
||||||
ConfigUtils.PDNSD_LOCAL.formatLocal(Locale.ENGLISH, "0.0.0.0", 8153,
|
ConfigUtils.PDNSD_LOCAL.formatLocal(Locale.ENGLISH, "0.0.0.0", 8153,
|
||||||
Path.BASE + "pdnsd-vpn.pid", 8163)
|
Path.BASE + "pdnsd-vpn.pid", 8163, ipv6)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConfigUtils.printToFile(new File(Path.BASE + "pdnsd-vpn.conf"))(p => {
|
ConfigUtils.printToFile(new File(Path.BASE + "pdnsd-vpn.conf"))(p => {
|
||||||
@@ -371,9 +377,12 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
|||||||
.addAddress(PRIVATE_VLAN.formatLocal(Locale.ENGLISH, "1"), 24)
|
.addAddress(PRIVATE_VLAN.formatLocal(Locale.ENGLISH, "1"), 24)
|
||||||
.addDnsServer("8.8.8.8")
|
.addDnsServer("8.8.8.8")
|
||||||
|
|
||||||
if (Utils.isLollipopOrAbove) {
|
if (config.isIpv6) {
|
||||||
|
builder.addAddress(PRIVATE_VLAN6.formatLocal(Locale.ENGLISH, "1"), 126)
|
||||||
|
builder.addRoute("::", 0)
|
||||||
|
}
|
||||||
|
|
||||||
builder.allowFamily(android.system.OsConstants.AF_INET6)
|
if (Utils.isLollipopOrAbove) {
|
||||||
|
|
||||||
if (!config.isGlobalProxy) {
|
if (!config.isGlobalProxy) {
|
||||||
val apps = AppManager.getProxiedApps(this, config.proxiedAppString)
|
val apps = AppManager.getProxiedApps(this, config.proxiedAppString)
|
||||||
@@ -429,7 +438,12 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
|||||||
+ "--tunmtu %d "
|
+ "--tunmtu %d "
|
||||||
+ "--loglevel 3 "
|
+ "--loglevel 3 "
|
||||||
+ "--pid %stun2socks-vpn.pid")
|
+ "--pid %stun2socks-vpn.pid")
|
||||||
.formatLocal(Locale.ENGLISH, PRIVATE_VLAN.formatLocal(Locale.ENGLISH, "2"), config.localPort, fd, VPN_MTU, Path.BASE)
|
.formatLocal(Locale.ENGLISH,
|
||||||
|
PRIVATE_VLAN.formatLocal(Locale.ENGLISH, "2"),
|
||||||
|
config.localPort, fd, VPN_MTU, Path.BASE)
|
||||||
|
|
||||||
|
if (config.isIpv6)
|
||||||
|
cmd += " --netif-ip6addr " + PRIVATE_VLAN6.formatLocal(Locale.ENGLISH, "2")
|
||||||
|
|
||||||
if (config.isUdpDns)
|
if (config.isUdpDns)
|
||||||
cmd += " --enable-udprelay"
|
cmd += " --enable-udprelay"
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ object DBHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DBHelper(val context: Context)
|
class DBHelper(val context: Context)
|
||||||
extends OrmLiteSqliteOpenHelper(context, DBHelper.PROFILE, null, 9) {
|
extends OrmLiteSqliteOpenHelper(context, DBHelper.PROFILE, null, 11) {
|
||||||
|
|
||||||
lazy val profileDao: Dao[Profile, Int] = getDao(classOf[Profile])
|
lazy val profileDao: Dao[Profile, Int] = getDao(classOf[Profile])
|
||||||
|
|
||||||
@@ -62,14 +62,23 @@ class DBHelper(val context: Context)
|
|||||||
def onUpgrade(database: SQLiteDatabase, connectionSource: ConnectionSource, oldVersion: Int,
|
def onUpgrade(database: SQLiteDatabase, connectionSource: ConnectionSource, oldVersion: Int,
|
||||||
newVersion: Int) {
|
newVersion: Int) {
|
||||||
if (oldVersion != newVersion) {
|
if (oldVersion != newVersion) {
|
||||||
if (oldVersion < 8) {
|
if (oldVersion < 7) {
|
||||||
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN udpdns SMALLINT;")
|
|
||||||
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN route VARCHAR;")
|
|
||||||
} else if (oldVersion < 9) {
|
|
||||||
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN route VARCHAR;")
|
|
||||||
} else {
|
|
||||||
profileDao.executeRaw("DROP TABLE IF EXISTS 'profile';")
|
profileDao.executeRaw("DROP TABLE IF EXISTS 'profile';")
|
||||||
onCreate(database, connectionSource)
|
onCreate(database, connectionSource)
|
||||||
|
} else {
|
||||||
|
if (oldVersion < 8) {
|
||||||
|
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN udpdns SMALLINT;")
|
||||||
|
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN route VARCHAR;")
|
||||||
|
}
|
||||||
|
if (oldVersion < 9) {
|
||||||
|
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN route VARCHAR;")
|
||||||
|
}
|
||||||
|
if (oldVersion < 10) {
|
||||||
|
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN auth SMALLINT;")
|
||||||
|
}
|
||||||
|
if (oldVersion < 11) {
|
||||||
|
profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN ipv6 SMALLINT;")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,12 @@ class Profile {
|
|||||||
@DatabaseField
|
@DatabaseField
|
||||||
var udpdns: Boolean = false
|
var udpdns: Boolean = false
|
||||||
|
|
||||||
|
@DatabaseField
|
||||||
|
var auth: Boolean = false
|
||||||
|
|
||||||
|
@DatabaseField
|
||||||
|
var ipv6: Boolean = false
|
||||||
|
|
||||||
@DatabaseField(dataType = DataType.LONG_STRING)
|
@DatabaseField(dataType = DataType.LONG_STRING)
|
||||||
var individual: String = ""
|
var individual: String = ""
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ class ProfileManager(settings: SharedPreferences, dbHelper: DBHelper) {
|
|||||||
edit.putBoolean(Key.isBypassApps, profile.bypass)
|
edit.putBoolean(Key.isBypassApps, profile.bypass)
|
||||||
edit.putBoolean(Key.isTrafficStat, profile.traffic)
|
edit.putBoolean(Key.isTrafficStat, profile.traffic)
|
||||||
edit.putBoolean(Key.isUdpDns, profile.udpdns)
|
edit.putBoolean(Key.isUdpDns, profile.udpdns)
|
||||||
|
edit.putBoolean(Key.isAuth, profile.auth)
|
||||||
|
edit.putBoolean(Key.isIpv6, profile.ipv6)
|
||||||
edit.putString(Key.profileName, profile.name)
|
edit.putString(Key.profileName, profile.name)
|
||||||
edit.putString(Key.proxy, profile.host)
|
edit.putString(Key.proxy, profile.host)
|
||||||
edit.putString(Key.sitekey, profile.password)
|
edit.putString(Key.sitekey, profile.password)
|
||||||
@@ -146,6 +148,8 @@ class ProfileManager(settings: SharedPreferences, dbHelper: DBHelper) {
|
|||||||
profile.bypass = settings.getBoolean(Key.isBypassApps, false)
|
profile.bypass = settings.getBoolean(Key.isBypassApps, false)
|
||||||
profile.traffic = settings.getBoolean(Key.isTrafficStat, false)
|
profile.traffic = settings.getBoolean(Key.isTrafficStat, false)
|
||||||
profile.udpdns = settings.getBoolean(Key.isUdpDns, false)
|
profile.udpdns = settings.getBoolean(Key.isUdpDns, false)
|
||||||
|
profile.auth = settings.getBoolean(Key.isAuth, false)
|
||||||
|
profile.ipv6 = settings.getBoolean(Key.isIpv6, false)
|
||||||
profile.name = settings.getString(Key.profileName, "default")
|
profile.name = settings.getString(Key.profileName, "default")
|
||||||
profile.host = settings.getString(Key.proxy, "127.0.0.1")
|
profile.host = settings.getString(Key.proxy, "127.0.0.1")
|
||||||
profile.password = settings.getString(Key.sitekey, "default")
|
profile.password = settings.getString(Key.sitekey, "default")
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ object ConfigUtils {
|
|||||||
| label = "local";
|
| label = "local";
|
||||||
| ip = 127.0.0.1;
|
| ip = 127.0.0.1;
|
||||||
| port = %d;
|
| port = %d;
|
||||||
| reject = ::/0;
|
| %s
|
||||||
| reject_policy = negate;
|
| reject_policy = negate;
|
||||||
| reject_recursively = on;
|
| reject_recursively = on;
|
||||||
| timeout = 5;
|
| timeout = 5;
|
||||||
@@ -174,7 +174,9 @@ object ConfigUtils {
|
|||||||
| label = "local-server";
|
| label = "local-server";
|
||||||
| ip = 127.0.0.1;
|
| ip = 127.0.0.1;
|
||||||
| port = %d;
|
| port = %d;
|
||||||
| timeout = 3;
|
| %s
|
||||||
|
| reject_policy = negate;
|
||||||
|
| reject_recursively = on;
|
||||||
|}
|
|}
|
||||||
|
|
|
|
||||||
|rr {
|
|rr {
|
||||||
@@ -240,7 +242,7 @@ object ConfigUtils {
|
|||||||
val method = proxy(3).trim
|
val method = proxy(3).trim
|
||||||
|
|
||||||
new Config(config.isGlobalProxy, config.isGFWList, config.isBypassApps, config.isTrafficStat,
|
new Config(config.isGlobalProxy, config.isGFWList, config.isBypassApps, config.isTrafficStat,
|
||||||
config.isUdpDns, config.profileName, host, password, method, config.proxiedAppString, config.route, port,
|
config.isUdpDns, config.isAuth, config.isIpv6, config.profileName, host, password, method, config.proxiedAppString, config.route, port,
|
||||||
config.localPort)
|
config.localPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,6 +252,8 @@ object ConfigUtils {
|
|||||||
val isBypassApps = settings.getBoolean(Key.isBypassApps, false)
|
val isBypassApps = settings.getBoolean(Key.isBypassApps, false)
|
||||||
val isTrafficStat = settings.getBoolean(Key.isTrafficStat, false)
|
val isTrafficStat = settings.getBoolean(Key.isTrafficStat, false)
|
||||||
val isUdpDns = settings.getBoolean(Key.isUdpDns, false)
|
val isUdpDns = settings.getBoolean(Key.isUdpDns, false)
|
||||||
|
val isAuth = settings.getBoolean(Key.isAuth, false)
|
||||||
|
val isIpv6 = settings.getBoolean(Key.isIpv6, false)
|
||||||
|
|
||||||
val profileName = settings.getString(Key.profileName, "default")
|
val profileName = settings.getString(Key.profileName, "default")
|
||||||
val proxy = settings.getString(Key.proxy, "127.0.0.1")
|
val proxy = settings.getString(Key.proxy, "127.0.0.1")
|
||||||
@@ -271,7 +275,7 @@ object ConfigUtils {
|
|||||||
}
|
}
|
||||||
val proxiedAppString = settings.getString(Key.proxied, "")
|
val proxiedAppString = settings.getString(Key.proxied, "")
|
||||||
|
|
||||||
new Config(isGlobalProxy, isGFWList, isBypassApps, isTrafficStat, isUdpDns, profileName, proxy,
|
new Config(isGlobalProxy, isGFWList, isBypassApps, isTrafficStat, isUdpDns, isAuth, isIpv6, profileName, proxy,
|
||||||
sitekey, encMethod, proxiedAppString, route, remotePort, localPort)
|
sitekey, encMethod, proxiedAppString, route, remotePort, localPort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ object Key {
|
|||||||
val isBypassApps = "isBypassApps"
|
val isBypassApps = "isBypassApps"
|
||||||
val isTrafficStat = "isTrafficStat"
|
val isTrafficStat = "isTrafficStat"
|
||||||
val isUdpDns = "isUdpDns"
|
val isUdpDns = "isUdpDns"
|
||||||
|
val isAuth= "isAuth"
|
||||||
|
val isIpv6= "isIpv6"
|
||||||
|
|
||||||
val proxy = "proxy"
|
val proxy = "proxy"
|
||||||
val sitekey = "sitekey"
|
val sitekey = "sitekey"
|
||||||
|
|||||||
Reference in New Issue
Block a user