Run tun2socks in seprate process for now

This commit is contained in:
Max Lv
2014-11-24 21:22:42 +08:00
parent 16d2cd9a29
commit 383e9404ec
11 changed files with 298 additions and 318 deletions
+2 -3
View File
@@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.shadowsocks"
android:versionCode="84"
android:versionName="2.4.4">
android:versionCode="85"
android:versionName="2.4.5">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
@@ -18,7 +18,6 @@
<application
android:allowBackup="true"
android:debuggable="true"
android:name=".ShadowsocksApplication"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
@@ -40,7 +40,7 @@ package com.github.shadowsocks;
public class Tun2Socks {
static {
java.lang.System.loadLibrary("tun2socks-jni");
java.lang.System.loadLibrary("tun2socks");
}
public static native void start(String[] cmd);
+3 -3
View File
@@ -214,7 +214,7 @@ LOCAL_CFLAGS += -DBADVPN_THREADWORK_USE_PTHREAD -DBADVPN_LINUX -DBADVPN_BREACTOR
LOCAL_CFLAGS += -DBADVPN_USE_SELFPIPE -DBADVPN_USE_EPOLL
LOCAL_CFLAGS += -DBADVPN_LITTLE_ENDIAN -DBADVPN_THREAD_SAFE
LOCAL_CFLAGS += -DNDEBUG -DANDROID
#LOCAL_CFLAGS += -DTUN2SOCKS_JNI
LOCAL_CFLAGS += -DTUN2SOCKS_JNI
LOCAL_C_INCLUDES:= \
$(LOCAL_PATH)/badvpn/lwip/src/include/ipv4 \
@@ -288,9 +288,9 @@ LOCAL_MODULE := tun2socks
LOCAL_LDLIBS := -ldl -llog
LOCAL_SRC_FILES := $(addprefix badvpn/, $(TUN2SOCKS_SOURCES))
LOCAL_SRC_FILES := $(addprefix badvpn/, $(TUN2SOCKS_SOURCES)) tun2socks-jni.cpp
include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
# OpenSSL
openssl_subdirs := $(addprefix $(LOCAL_PATH)/openssl/,$(addsuffix /Android.mk, \
File diff suppressed because it is too large Load Diff
@@ -123,7 +123,7 @@ object Shadowsocks {
val FEATRUE_PREFS = Array(Key.route, Key.isGlobalProxy, Key.proxyedApps,
Key.isUdpDns, 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)
// Helper functions
def updateListPreference(pref: Preference, value: String) {
@@ -45,7 +45,7 @@ import java.net.InetAddress
import android.app._
import android.content._
import android.content.pm.{PackageInfo, PackageManager}
import android.net.{VpnService, LocalSocket, LocalSocketAddress}
import android.net.{LocalServerSocket, VpnService, LocalSocket, LocalSocketAddress}
import android.os._
import android.support.v4.app.NotificationCompat
import android.util.Log
@@ -322,23 +322,25 @@ class ShadowsocksVpnService extends VpnService with BaseService {
if (BuildConfig.DEBUG) Log.d(TAG, cmd)
Console.runCommand(cmd)
Tun2Socks.start(cmd.split(" "))
}
Thread.sleep(300)
// try {
val localSocket = new LocalSocket()
localSocket.setFileDescriptorsForSend(Array(conn.getFileDescriptor))
val localAddr = new LocalSocketAddress("tun2socks")
localSocket.connect(localAddr)
val output = localSocket.getOutputStream
output.write(1)
output.flush()
output.close()
localSocket.close()
// } catch {
// case ex: Exception => // Ignored
// }
def startTunFdServer() {
spawn {
val fdServer = new LocalServerSocket("tun2socks")
try {
val localSocket = fdServer.accept()
localSocket.setFileDescriptorsForSend(Array(conn.getFileDescriptor))
val output = localSocket.getOutputStream
output.write(1)
output.flush()
output.close()
localSocket.close()
fdServer.close()
} catch {
case ex: Exception => Log.e(TAG, "Exception", ex) // Ignored
}
}
}
/** Called when the activity is first created. */