From 2cb1eb27ccc1aff8d3e9686f94290f555c49fe31 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Thu, 27 Feb 2014 09:27:01 +0800 Subject: [PATCH] add upd dns mode --- build-ndk.sh | 2 +- project/Build.scala | 4 +-- src/main/assets/pages/about.html | 2 +- src/main/jni/Android.mk | 25 ++++++++++++++++-- src/main/jni/shadowsocks | 2 +- .../com/github/shadowsocks/Shadowsocks.scala | 9 ++++--- .../shadowsocks/ShadowsocksNatService.scala | 26 ++++++++++++------- .../shadowsocks/ShadowsocksVpnService.scala | 24 ++++++++++------- 8 files changed, 65 insertions(+), 29 deletions(-) diff --git a/build-ndk.sh b/build-ndk.sh index 19d230a8..a8c3608e 100755 --- a/build-ndk.sh +++ b/build-ndk.sh @@ -5,7 +5,7 @@ ndk-build mkdir -p assets/armeabi mkdir -p assets/armeabi-v7a mkdir -p assets/x86 -for app in iptables pdnsd redsocks shadowsocks tun2socks +for app in iptables pdnsd redsocks ss-local ss-tunnel tun2socks do mv libs/armeabi/$app assets/armeabi/ mv libs/armeabi-v7a/$app assets/armeabi-v7a/ diff --git a/project/Build.scala b/project/Build.scala index 3d6450d9..6ba7fb5b 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -5,8 +5,8 @@ import sbtandroid._ import sbtandroid.AndroidPlugin._ object App { - val version = "2.1.1" - val versionCode = 62 + val version = "2.1.2" + val versionCode = 63 } object General { diff --git a/src/main/assets/pages/about.html b/src/main/assets/pages/about.html index d22cdf3b..f64fac6e 100644 --- a/src/main/assets/pages/about.html +++ b/src/main/assets/pages/about.html @@ -274,7 +274,7 @@ img {

A Shadowsocks client for Android, written in Scala.

-

Copyright (C) 2013 Max Lv max.c.lv@gmail.com

+

Copyright (C) 2014 Max Lv max.c.lv@gmail.com

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or diff --git a/src/main/jni/Android.mk b/src/main/jni/Android.mk index 0e23bf66..eaeb435e 100755 --- a/src/main/jni/Android.mk +++ b/src/main/jni/Android.mk @@ -89,14 +89,14 @@ LOCAL_CFLAGS := -Wall -O2 -I$(LOCAL_PATH)/pdnsd include $(BUILD_EXECUTABLE) ######################################################## -## shadowsocks +## shadowsocks local ######################################################## include $(CLEAR_VARS) SHADOWSOCKS_SOURCES := local.c cache.c udprelay.c encrypt.c utils.c json.c jconf.c -LOCAL_MODULE := shadowsocks +LOCAL_MODULE := ss-local LOCAL_SRC_FILES := $(addprefix shadowsocks/src/, $(SHADOWSOCKS_SOURCES)) LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL \ -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H \ @@ -109,6 +109,27 @@ LOCAL_LDLIBS := -llog include $(BUILD_EXECUTABLE) +######################################################## +## shadowsocks tunnel +######################################################## + +include $(CLEAR_VARS) + +SHADOWSOCKS_SOURCES := tunnel.c cache.c udprelay.c encrypt.c utils.c json.c jconf.c + +LOCAL_MODULE := ss-tunnel +LOCAL_SRC_FILES := $(addprefix shadowsocks/src/, $(SHADOWSOCKS_SOURCES)) +LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL -DUDPRELAY_TUNNEL \ + -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H \ + -I$(LOCAL_PATH)/libev/ \ + -I$(LOCAL_PATH)/openssl/include + +LOCAL_STATIC_LIBRARIES := libev libcrypto + +LOCAL_LDLIBS := -llog + +include $(BUILD_EXECUTABLE) + ######################################################## ## termExec ######################################################## diff --git a/src/main/jni/shadowsocks b/src/main/jni/shadowsocks index 69f8bd61..b2df5a4c 160000 --- a/src/main/jni/shadowsocks +++ b/src/main/jni/shadowsocks @@ -1 +1 @@ -Subproject commit 69f8bd61c096337abb34a9e64534865d08022957 +Subproject commit b2df5a4c26d293469237fd89153e16f1fa47000c diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index dbd3d43b..1610ba2d 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -417,10 +417,12 @@ class Shadowsocks val sb = new StringBuilder sb.append("kill -9 `cat /data/data/com.github.shadowsocks/pdnsd.pid`").append("\n") - sb.append("kill -9 `cat /data/data/com.github.shadowsocks/shadowsocks.pid`").append("\n") + sb.append("kill -9 `cat /data/data/com.github.shadowsocks/ss-local.pid`").append("\n") + sb.append("kill -9 `cat /data/data/com.github.shadowsocks/ss-tunnel.pid`").append("\n") sb.append("kill -9 `cat /data/data/com.github.shadowsocks/tun2socks.pid`").append("\n") sb.append("killall -9 pdnsd").append("\n") - sb.append("killall -9 shadowsocks").append("\n") + sb.append("killall -9 ss-local").append("\n") + sb.append("killall -9 ss-tunnel").append("\n") sb.append("killall -9 tun2socks").append("\n") sb.append("rm /data/data/com.github.shadowsocks/pdnsd.conf").append("\n") sb.append("rm /data/data/com.github.shadowsocks/pdnsd.cache").append("\n") @@ -908,7 +910,8 @@ class Shadowsocks Utils.runCommand("chmod 755 /data/data/com.github.shadowsocks/iptables\n" + "chmod 755 /data/data/com.github.shadowsocks/redsocks\n" + "chmod 755 /data/data/com.github.shadowsocks/pdnsd\n" - + "chmod 755 /data/data/com.github.shadowsocks/shadowsocks\n" + + "chmod 755 /data/data/com.github.shadowsocks/ss-local\n" + + "chmod 755 /data/data/com.github.shadowsocks/ss-tunnel\n" + "chmod 755 /data/data/com.github.shadowsocks/tun2socks\n") } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index ee3a7f45..78a353aa 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -102,20 +102,24 @@ class ShadowsocksNatService extends Service with BaseService { val handler: Handler = new Handler() def startShadowsocksDaemon() { - val cmd: String = (Path.BASE + - "shadowsocks -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -f " + - Path.BASE + "shadowsocks.pid") + val cmd = (Path.BASE + + "ss-local -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -f " + + Path.BASE + "ss-local.pid") .format(config.proxy, config.remotePort, config.localPort, config.sitekey, config.encMethod) if (BuildConfig.DEBUG) Log.d(TAG, cmd) Utils.runCommand(cmd) } def startDnsDaemon() { - val cmd: String = Path.BASE + "pdnsd -c " + Path.BASE + "pdnsd.conf" - val conf: String = ConfigUtils.PDNSD.format("127.0.0.1") - ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { - p.println(conf) - }) + val cmd = (Path.BASE + + "ss-tunnel -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -L 8.8.8.8:53 -u -f " + + Path.BASE + "ss-local.pid") + .format(config.proxy, config.remotePort, 8153, config.sitekey, config.encMethod) + // val cmd = Path.BASE + "pdnsd -c " + Path.BASE + "pdnsd.conf" + // val conf = ConfigUtils.PDNSD.format("127.0.0.1") + // ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { + // p.println(conf) + // }) Utils.runCommand(cmd) } @@ -271,8 +275,10 @@ class ShadowsocksNatService extends Service with BaseService { sb ++= "kill -9 `cat " ++= Path.BASE ++= "pdnsd.pid`" ++= "\n" sb ++= "killall -9 pdnsd" ++= "\n" - sb ++= "kill -9 `cat " ++= Path.BASE ++= "shadowsocks.pid`" ++= "\n" - sb ++= "killall -9 shadowsocks" ++= "\n" + sb ++= "kill -9 `cat " ++= Path.BASE ++= "ss-local.pid`" ++= "\n" + sb ++= "killall -9 ss-local" ++= "\n" + sb ++= "kill -9 `cat " ++= Path.BASE ++= "ss-tunnel.pid`" ++= "\n" + sb ++= "killall -9 ss-tunnel" ++= "\n" Utils.runCommand(sb.toString()) } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index 8df6e702..5c5495c6 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -84,11 +84,15 @@ class ShadowsocksVpnService extends VpnService with BaseService { } def startDnsDaemon() { - val cmd: String = Path.BASE + "pdnsd -c " + Path.BASE + "pdnsd.conf" - val conf: String = ConfigUtils.PDNSD.format("0.0.0.0") - ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { - p.println(conf) - }) + val cmd = (Path.BASE + + "ss-tunnel -b 127.0.0.1 -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\" -m \"%s\" -L 8.8.8.8:53 -u -f " + + Path.BASE + "ss-local.pid") + .format(config.proxy, config.remotePort, 8153, config.sitekey, config.encMethod) + // val cmd: String = Path.BASE + "pdnsd -c " + Path.BASE + "pdnsd.conf" + // val conf: String = ConfigUtils.PDNSD.format("0.0.0.0") + // ConfigUtils.printToFile(new File(Path.BASE + "pdnsd.conf"))(p => { + // p.println(conf) + // }) Utils.runCommand(cmd) } @@ -243,12 +247,14 @@ class ShadowsocksVpnService extends VpnService with BaseService { def killProcesses() { val sb = new StringBuilder - sb ++= "kill -9 `cat " ++= Path.BASE ++= "shadowsocks.pid`" ++= "\n" - sb ++= "killall -9 shadowsocks" ++= "\n" + sb ++= "kill -9 `cat " ++= Path.BASE ++= "ss-local.pid`" ++= "\n" + sb ++= "killall -9 ss-local" ++= "\n" + sb ++= "kill -9 `cat " ++= Path.BASE ++= "ss-tunnel.pid`" ++= "\n" + sb ++= "killall -9 ss-tunnel" ++= "\n" sb ++= "kill -9 `cat " ++= Path.BASE ++= "tun2socks.pid`" ++= "\n" sb ++= "killall -9 tun2socks" ++= "\n" - sb ++= "kill -9 `cat " ++= Path.BASE ++= "pdnsd.pid`" ++= "\n" - sb ++= "killall -9 pdnsd" ++= "\n" + // sb ++= "kill -9 `cat " ++= Path.BASE ++= "pdnsd.pid`" ++= "\n" + // sb ++= "killall -9 pdnsd" ++= "\n" Utils.runCommand(sb.toString()) }