diff --git a/app/src/main/java/org/torproject/android/OrbotApp.java b/app/src/main/java/org/torproject/android/OrbotApp.java index cbf118b4..e6fd014d 100644 --- a/app/src/main/java/org/torproject/android/OrbotApp.java +++ b/app/src/main/java/org/torproject/android/OrbotApp.java @@ -30,7 +30,6 @@ public class OrbotApp extends Application implements OrbotConstants Languages.setup(OrbotMainActivity.class, R.string.menu_settings); Languages.setLanguage(this, Prefs.getDefaultLocale(), true); - } @Override diff --git a/orbotservice/build.gradle b/orbotservice/build.gradle index d8296baa..cfc0a533 100644 --- a/orbotservice/build.gradle +++ b/orbotservice/build.gradle @@ -4,13 +4,18 @@ android { compileSdkVersion 23 buildToolsVersion "23.0.3" - sourceSets.main.jni.srcDirs = [] + sourceSets { + main { + jni.srcDirs = [] + } + } defaultConfig { minSdkVersion 9 targetSdkVersion 23 versionCode 1 versionName "1.0" + } buildTypes { release { @@ -22,7 +27,7 @@ android { dependencies { compile project(':jsocksAndroid') - compile 'com.android.support:appcompat-v7:23.+' - compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:23.4.0' + compile fileTree(dir: 'libs', include: ['*.jar','*.so']) testCompile 'junit:junit:4.12' } diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java index b50b00f6..2cff209f 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/TorService.java +++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java @@ -182,8 +182,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon if (mNotificationManager != null) mNotificationManager.cancelAll(); + if (mEventHandler != null) + mEventHandler.getNodes().clear(); - mEventHandler.getNodes().clear(); mNotificationShowing = false; } @@ -243,7 +244,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon expandedView.setTextViewText(R.id.info, notifyMsg); } - if (mEventHandler.getNodes().size() > 0) + if (mEventHandler != null && mEventHandler.getNodes().size() > 0) { Set itBuiltNodes = mEventHandler.getNodes().keySet(); for (String key : itBuiltNodes) @@ -532,6 +533,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY); filePdnsd = new File(appBinHome, TorServiceConstants.PDNSD_ASSET_KEY); + mEventHandler = new TorEventHandler(this); if (mNotificationManager == null) { @@ -735,7 +737,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon try { // make sure there are no stray daemons running - killAllDaemons(); +// killAllDaemons(); sendCallbackStatus(STATUS_STARTING); sendCallbackLogMessage(getString(R.string.status_starting_up)); @@ -1146,15 +1148,15 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon return result; } - public void addEventHandler () throws Exception + public synchronized void addEventHandler () throws Exception { // We extend NullEventHandler so that we don't need to provide empty // implementations for all the events we don't care about. // ... logNotice( "adding control port event handler"); - mEventHandler = new TorEventHandler(this); conn.setEventHandler(mEventHandler); + conn.setEvents(Arrays.asList(new String[]{ "ORCONN", "CIRC", "NOTICE", "WARN", "ERR","BW"})); diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java index f2e8d4c1..ae038818 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java @@ -17,6 +17,7 @@ package org.torproject.android.service.vpn; import android.annotation.TargetApi; +import android.app.Application; import android.app.PendingIntent; import android.app.Service; import android.content.Context; @@ -73,20 +74,21 @@ public class OrbotVpnManager implements Handler.Callback { //this is the actual DNS server we talk to over UDP or TCP (now using Tor's DNS port) private final static String DEFAULT_ACTUAL_DNS_HOST = "127.0.0.1"; private final static int DEFAULT_ACTUAL_DNS_PORT = TorServiceConstants.TOR_DNS_PORT_DEFAULT; - - private boolean isRestart = false; + + + File filePdnsd = null; + + private boolean isRestart = false; private VpnService mService; - static{ - System.loadLibrary("tun2socks"); - } - public OrbotVpnManager (VpnService service) { mService = service; - } + filePdnsd = mService.getDir(TorServiceConstants.DIRECTORY_TOR_BINARY, Application.MODE_PRIVATE); + + } //public int onStartCommand(Intent intent, int flags, int startId) { public int handleIntent(Builder builder, Intent intent) { @@ -394,12 +396,8 @@ public class OrbotVpnManager implements Handler.Callback { } - File filePdnsd = null; - private void startDNS (String dns, int port) throws IOException, TimeoutException { - File filePdnsd = null;//getDir(TorServiceConstants.DIRECTORY_TOR_BINARY, Application.MODE_PRIVATE); - makePdnsdConf(mService, dns, port,filePdnsd.getParentFile() ); ArrayList customEnv = new ArrayList(); diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java index 6f61bb4e..cff4c1cb 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java @@ -30,6 +30,11 @@ import java.net.Socket; @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) public class Tun2Socks { + + static{ + System.loadLibrary("tun2socks"); + } + public static interface IProtectSocket { boolean doVpnProtect(Socket socket); @@ -51,9 +56,7 @@ public class Tun2Socks // Note: this class isn't a singleton, but you can't run more // than one instance due to the use of global state (the lwip // module, etc.) in the native code. - - private static boolean mLibLoaded = false; - + public static void Start( ParcelFileDescriptor vpnInterfaceFileDescriptor, int vpnInterfaceMTU, @@ -63,12 +66,6 @@ public class Tun2Socks String udpgwServerAddress, boolean udpgwTransparentDNS) { - - if (!mLibLoaded) - { - System.loadLibrary("tun2socks"); - mLibLoaded = true; - } mVpnInterfaceFileDescriptor = vpnInterfaceFileDescriptor; mVpnInterfaceMTU = vpnInterfaceMTU; diff --git a/orbotservice/src/main/jni/Application.mk b/orbotservice/src/main/jni/Application.mk index 2fab495f..25058c14 100644 --- a/orbotservice/src/main/jni/Application.mk +++ b/orbotservice/src/main/jni/Application.mk @@ -1,5 +1,5 @@ #APP_ABI := armeabi x86 APP_ABI := armeabi -APP_PLATFORM := android-10 +APP_PLATFORM := android-14 APP_STL := stlport_static NDK_TOOLCHAIN_VERSION := 4.8