From 2a3ffd768cb339100da23203f0b0834f4a512c45 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 21 Sep 2015 14:03:02 +0800 Subject: [PATCH] update shadowsocks-libev --- src/main/aidl/com/github/shadowsocks/aidl/Config.java | 6 +++++- src/main/jni/shadowsocks-libev | 2 +- src/main/res/values-zh/strings.xml | 3 +++ src/main/res/values/strings.xml | 2 ++ src/main/res/xml/pref_all.xml | 6 ++++++ src/main/scala/com/github/shadowsocks/Shadowsocks.scala | 3 ++- .../com/github/shadowsocks/ShadowsocksNatService.scala | 6 ++++++ .../com/github/shadowsocks/ShadowsocksVpnService.scala | 8 ++++++-- .../scala/com/github/shadowsocks/database/DBHelper.scala | 4 +++- .../scala/com/github/shadowsocks/database/Profile.scala | 3 +++ .../com/github/shadowsocks/database/ProfileManager.scala | 2 ++ .../scala/com/github/shadowsocks/utils/ConfigUtils.scala | 5 +++-- .../scala/com/github/shadowsocks/utils/Constants.scala | 1 + 13 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/main/aidl/com/github/shadowsocks/aidl/Config.java b/src/main/aidl/com/github/shadowsocks/aidl/Config.java index 96060b1b..cade941d 100644 --- a/src/main/aidl/com/github/shadowsocks/aidl/Config.java +++ b/src/main/aidl/com/github/shadowsocks/aidl/Config.java @@ -10,6 +10,7 @@ public class Config implements Parcelable { public boolean isBypassApps = false; public boolean isTrafficStat = false; public boolean isUdpDns = false; + public boolean isAuth = false; public String profileName = "Untitled"; public String proxy = "127.0.0.1"; @@ -33,13 +34,14 @@ public class Config implements Parcelable { }; public Config(boolean isGlobalProxy, boolean isGFWList, boolean isBypassApps, - boolean isTrafficStat, boolean isUdpDns, String profileName, String proxy, String sitekey, + boolean isTrafficStat, boolean isUdpDns, boolean isAuth, String profileName, String proxy, String sitekey, String encMethod, String proxiedAppString, String route, int remotePort, int localPort) { this.isGlobalProxy = isGlobalProxy; this.isGFWList = isGFWList; this.isBypassApps = isBypassApps; this.isTrafficStat = isTrafficStat; this.isUdpDns = isUdpDns; + this.isAuth = isAuth; this.profileName = profileName; this.proxy = proxy; this.sitekey = sitekey; @@ -60,6 +62,7 @@ public class Config implements Parcelable { isBypassApps = in.readInt() == 1; isTrafficStat = in.readInt() == 1; isUdpDns = in.readInt() == 1; + isAuth = in.readInt() == 1; profileName = in.readString(); proxy = in.readString(); sitekey = in.readString(); @@ -80,6 +83,7 @@ public class Config implements Parcelable { out.writeInt(isBypassApps ? 1 : 0); out.writeInt(isTrafficStat ? 1 : 0); out.writeInt(isUdpDns ? 1 : 0); + out.writeInt(isAuth ? 1 : 0); out.writeString(profileName); out.writeString(proxy); out.writeString(sitekey); diff --git a/src/main/jni/shadowsocks-libev b/src/main/jni/shadowsocks-libev index 7e23ae7a..5ae4df94 160000 --- a/src/main/jni/shadowsocks-libev +++ b/src/main/jni/shadowsocks-libev @@ -1 +1 @@ -Subproject commit 7e23ae7a75e26b4362b6a390338d945ac972ca14 +Subproject commit 5ae4df94e440c4f6826a679a62687ad27303d89b diff --git a/src/main/res/values-zh/strings.xml b/src/main/res/values-zh/strings.xml index a465c305..37e343cb 100755 --- a/src/main/res/values-zh/strings.xml +++ b/src/main/res/values-zh/strings.xml @@ -77,6 +77,9 @@ UDP 转发 由远程服务器转发 UDP 协议的数据包 + 一次性认证 + 启用一次性认证(实验性) + 为影梭添加此配置文件? diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index c16eb855..d661f273 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -25,6 +25,8 @@ Feature Settings + Onetime Authentication + Enable onetime authentication (Experimental) HTTP Proxy Local HTTP Proxy DNS Proxy diff --git a/src/main/res/xml/pref_all.xml b/src/main/res/xml/pref_all.xml index 495b92e0..e9085e50 100644 --- a/src/main/res/xml/pref_all.xml +++ b/src/main/res/xml/pref_all.xml @@ -78,6 +78,12 @@ android:summary="@string/udp_dns_summary" android:title="@string/udp_dns"> + + updateListPreference(pref, profile.route) case Key.isGlobalProxy => updateCheckBoxPreference(pref, profile.global) case Key.isUdpDns => updateCheckBoxPreference(pref, profile.udpdns) + case Key.isAuth => updateCheckBoxPreference(pref, profile.auth) case _ => } } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index 76a4afdf..68dc32b8 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -205,6 +205,8 @@ class ShadowsocksNatService extends Service with BaseService { , "-c" , Path.BASE + "ss-local-nat.conf" , "-f" , Path.BASE + "ss-local-nat.pid") + if (config.isAuth) cmd += "-A" + if (config.route != Route.ALL) { cmd += "--acl" cmd += (Path.BASE + "acl.list") @@ -233,6 +235,8 @@ class ShadowsocksNatService extends Service with BaseService { cmd += ("-l" , "8153") + if (config.isAuth) cmd += "-A" + if (BuildConfig.DEBUG) Log.d(TAG, cmd.mkString(" ")) Console.runCommand(cmd.mkString(" ")) @@ -254,6 +258,8 @@ class ShadowsocksNatService extends Service with BaseService { , "-c" , Path.BASE + "ss-tunnel-nat.conf" , "-f" , Path.BASE + "ss-tunnel-nat.pid") + if (config.isAuth) cmdBuf += "-A" + if (BuildConfig.DEBUG) Log.d(TAG, cmdBuf.mkString(" ")) Console.runCommand(cmdBuf.mkString(" ")) } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index 6e8b3984..2e1b3cfc 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -302,12 +302,14 @@ class ShadowsocksVpnService extends VpnService with BaseService { }) val cmd = new ArrayBuffer[String] - cmd +=(Path.BASE + "ss-local", "-V", "-u" + cmd += (Path.BASE + "ss-local", "-V", "-u" , "-b", "127.0.0.1" , "-t", "600" , "-c", Path.BASE + "ss-local-vpn.conf" , "-f", Path.BASE + "ss-local-vpn.pid") + if (config.isAuth) cmd += "-A" + if (config.route != Route.ALL) { cmd += "--acl" cmd += (Path.BASE + "acl.list") @@ -325,7 +327,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { p.println(conf) }) val cmd = new ArrayBuffer[String] - cmd +=(Path.BASE + "ss-tunnel" + cmd += (Path.BASE + "ss-tunnel" , "-V" , "-u" , "-t", "10" @@ -335,6 +337,8 @@ class ShadowsocksVpnService extends VpnService with BaseService { , "-c", Path.BASE + "ss-tunnel-vpn.conf" , "-f", Path.BASE + "ss-tunnel-vpn.pid") + if (config.isAuth) cmd += "-A" + if (BuildConfig.DEBUG) Log.d(TAG, cmd.mkString(" ")) Console.runCommand(cmd.mkString(" ")) } diff --git a/src/main/scala/com/github/shadowsocks/database/DBHelper.scala b/src/main/scala/com/github/shadowsocks/database/DBHelper.scala index 946bcb51..fd08afb8 100644 --- a/src/main/scala/com/github/shadowsocks/database/DBHelper.scala +++ b/src/main/scala/com/github/shadowsocks/database/DBHelper.scala @@ -51,7 +51,7 @@ object DBHelper { } class DBHelper(val context: Context) - extends OrmLiteSqliteOpenHelper(context, DBHelper.PROFILE, null, 9) { + extends OrmLiteSqliteOpenHelper(context, DBHelper.PROFILE, null, 10) { lazy val profileDao: Dao[Profile, Int] = getDao(classOf[Profile]) @@ -67,6 +67,8 @@ class DBHelper(val context: Context) profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN route VARCHAR;") } else if (oldVersion < 9) { profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN route VARCHAR;") + } else if (oldVersion < 10) { + profileDao.executeRaw("ALTER TABLE `profile` ADD COLUMN auth SMALLINT;") } else { profileDao.executeRaw("DROP TABLE IF EXISTS 'profile';") onCreate(database, connectionSource) diff --git a/src/main/scala/com/github/shadowsocks/database/Profile.scala b/src/main/scala/com/github/shadowsocks/database/Profile.scala index 8c5caa90..4b444d26 100644 --- a/src/main/scala/com/github/shadowsocks/database/Profile.scala +++ b/src/main/scala/com/github/shadowsocks/database/Profile.scala @@ -90,6 +90,9 @@ class Profile { @DatabaseField var udpdns: Boolean = false + @DatabaseField + var auth: Boolean = false + @DatabaseField(dataType = DataType.LONG_STRING) var individual: String = "" diff --git a/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala b/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala index 34e2d3fd..f70973f9 100644 --- a/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala +++ b/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala @@ -122,6 +122,7 @@ class ProfileManager(settings: SharedPreferences, dbHelper: DBHelper) { edit.putBoolean(Key.isBypassApps, profile.bypass) edit.putBoolean(Key.isTrafficStat, profile.traffic) edit.putBoolean(Key.isUdpDns, profile.udpdns) + edit.putBoolean(Key.isAuth, profile.auth) edit.putString(Key.profileName, profile.name) edit.putString(Key.proxy, profile.host) edit.putString(Key.sitekey, profile.password) @@ -146,6 +147,7 @@ class ProfileManager(settings: SharedPreferences, dbHelper: DBHelper) { profile.bypass = settings.getBoolean(Key.isBypassApps, false) profile.traffic = settings.getBoolean(Key.isTrafficStat, false) profile.udpdns = settings.getBoolean(Key.isUdpDns, false) + profile.auth = settings.getBoolean(Key.isAuth, false) profile.name = settings.getString(Key.profileName, "default") profile.host = settings.getString(Key.proxy, "127.0.0.1") profile.password = settings.getString(Key.sitekey, "default") diff --git a/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala b/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala index 811b82ce..57319974 100644 --- a/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala +++ b/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala @@ -242,7 +242,7 @@ object ConfigUtils { val method = proxy(3).trim 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.profileName, host, password, method, config.proxiedAppString, config.route, port, config.localPort) } @@ -252,6 +252,7 @@ object ConfigUtils { val isBypassApps = settings.getBoolean(Key.isBypassApps, false) val isTrafficStat = settings.getBoolean(Key.isTrafficStat, false) val isUdpDns = settings.getBoolean(Key.isUdpDns, false) + val isAuth = settings.getBoolean(Key.isAuth, false) val profileName = settings.getString(Key.profileName, "default") val proxy = settings.getString(Key.proxy, "127.0.0.1") @@ -273,7 +274,7 @@ object ConfigUtils { } val proxiedAppString = settings.getString(Key.proxied, "") - new Config(isGlobalProxy, isGFWList, isBypassApps, isTrafficStat, isUdpDns, profileName, proxy, + new Config(isGlobalProxy, isGFWList, isBypassApps, isTrafficStat, isUdpDns, isAuth, profileName, proxy, sitekey, encMethod, proxiedAppString, route, remotePort, localPort) } } diff --git a/src/main/scala/com/github/shadowsocks/utils/Constants.scala b/src/main/scala/com/github/shadowsocks/utils/Constants.scala index bcd3dafa..389c3d66 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Constants.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Constants.scala @@ -79,6 +79,7 @@ object Key { val isBypassApps = "isBypassApps" val isTrafficStat = "isTrafficStat" val isUdpDns = "isUdpDns" + val isAuth= "isAuth" val proxy = "proxy" val sitekey = "sitekey"