[tor-commits] [orbot/master] opt persistent notifications & geoip not default

n8fr8 at torproject.org n8fr8 at torproject.org
Thu Jan 26 01:12:35 UTC 2012


commit 1e3f6bbddfe5e6810581994914c2c0534e23ed53
Author: Nathan Freitas <nathan at freitas.net>
Date:   Wed Jan 25 20:04:41 2012 -0500

    opt persistent notifications & geoip not default
---
 src/org/torproject/android/service/TorService.java |   77 ++++++++++++++------
 1 files changed, 54 insertions(+), 23 deletions(-)

diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 0132418..e56539d 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -28,6 +28,7 @@ import org.torproject.android.TorConstants;
 import org.torproject.android.Utils;
 import org.torproject.android.settings.AppManager;
 
+import android.app.Application;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -59,6 +60,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	private static final int ERROR_NOTIFY_ID = 3;
 	private static final int HS_NOTIFY_ID = 3;
 	
+	private boolean prefPersistNotifications = true;
 	
 	private static final int MAX_START_TRIES = 3;
 
@@ -178,7 +180,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 
 		Notification notification = new Notification(icon, tickerText, when);
 		
-		if (flags != -1)
+		if (prefPersistNotifications && flags != -1)			
 			notification.flags |= flags;
 
 		Context context = getApplicationContext();
@@ -204,11 +206,11 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
 		initTorPaths();
 		
+		//if Tor was deleted for some reason, do this again!
 		if (!fileTor.exists())
 		{
 			new Thread ()
-			{
-				
+			{				
 				public void run ()
 				{
 					try {
@@ -272,21 +274,30 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	public void run ()
 	{
 		
-		boolean isRunning = _torInstance.findExistingProc ();
-		
-		if (!isRunning)
+		if (currentStatus == STATUS_CONNECTING)
+		{
+			boolean isRunning = _torInstance.findExistingProc ();
+			
+			if (!isRunning)
+			{
+		     try
+		     {
+			   initTor();
+			   isRunning = true;
+		     }
+		     catch (Exception e)
+		     {
+		    	 currentStatus = STATUS_OFF;
+		    	 this.showToolbarNotification(getString(R.string.status_disabled), ERROR_NOTIFY_ID, R.drawable.tornotificationerr, -1);
+		    	 Log.d(TAG,"Unable to start Tor: " + e.getMessage(),e);
+		     }
+			}
+		}
+		else if (currentStatus == STATUS_OFF)
 		{
-	     try
-	     {
-		   initTor();
-		   isRunning = true;
-	     }
-	     catch (Exception e)
-	     {
-	    	 currentStatus = STATUS_OFF;
-	    	 this.showToolbarNotification(getString(R.string.status_disabled), ERROR_NOTIFY_ID, R.drawable.tornotificationerr, -1);
-	    	 Log.d(TAG,"Unable to start Tor: " + e.getMessage(),e);
-	     }
+
+			_torInstance.stopTor();
+
 		}
 	}
 
@@ -452,8 +463,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     
     private void initTorPaths ()
     {
-
-    	appBinHome = getDir("bin",0);
+    	
+    	appBinHome = getDir("bin",Application.MODE_PRIVATE);
     	appDataHome = getCacheDir();
     	
     	fileTor = new File(appBinHome, TOR_BINARY_ASSET_KEY);
@@ -975,9 +986,10 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 			{
 				currentStatus = STATUS_OFF;
 	            sendCallbackStatusMessage (getString(R.string.status_shutting_down));
+	          
+	            Thread thread = new Thread(this);
+	            thread.start();
 	            
-				_torInstance.stopTor();
-
 				
 			}
 		}
@@ -1346,9 +1358,12 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     private boolean applyPreferences () throws RemoteException
     {
     	SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+    	
     	ENABLE_DEBUG_LOG = prefs.getBoolean("pref_enable_logging",false);
     	Log.i(TAG,"debug logging:" + ENABLE_DEBUG_LOG);
-    		
+    	
+    	prefPersistNotifications = prefs.getBoolean(TorConstants.PREF_PERSIST_NOTIFICATIONS, true);
+    	
 		boolean useBridges = prefs.getBoolean(TorConstants.PREF_BRIDGES_ENABLED, false);
 		
 		//boolean autoUpdateBridges = prefs.getBoolean(TorConstants.PREF_BRIDGES_UPDATED, false);
@@ -1378,7 +1393,23 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         {
         	//only apple GeoIP if you need it
 	        File fileGeoIP = new File(appBinHome,"geoip");
-	        mBinder.updateConfiguration("GeoIPFile", fileGeoIP.getAbsolutePath(), false);
+	        
+	        try
+	        {
+		        if (!fileGeoIP.exists())
+		        {
+		        	TorBinaryInstaller installer = new TorBinaryInstaller(this, appBinHome); 
+					boolean success = installer.installGeoIP();	
+		        }
+		        
+		        mBinder.updateConfiguration("GeoIPFile", fileGeoIP.getAbsolutePath(), false);
+	        }
+	        catch (IOException e)
+	        {
+	       	  showToolbarNotification (getString(R.string.error_installing_binares),ERROR_NOTIFY_ID,R.drawable.tornotificationon, Notification.FLAG_ONGOING_EVENT);
+
+	        	return false;
+	        }
         }
 
         mBinder.updateConfiguration("EntryNodes", entranceNodes, false);





More information about the tor-commits mailing list