[tor-commits] [orbot/master] Add DisableNetwork support

n8fr8 at torproject.org n8fr8 at torproject.org
Mon Oct 1 07:41:26 UTC 2012


commit dbdadf211557e98e76bf64dd4d9677ac099f4472
Author: Sathyanarayanan Gunasekaran <gsathya.ceg at gmail.com>
Date:   Sun Sep 30 20:41:54 2012 +0530

    Add DisableNetwork support
    
    DisableNetwork tells tor to drop the current circuits and stop
    building new ones. A BroadcastReciever is triggered when there
    are changes in the network connection which toggles DisableNetwork.
---
 AndroidManifest.xml                                |    7 +++--
 src/org/torproject/android/service/TorService.java |   22 ++++++++++++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 99ce90b..9ff495c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -5,9 +5,10 @@
       android:versionCode="45"
         android:installLocation="auto"
       >
-       <uses-permission android:name="android.permission.INTERNET" />
- 		<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
- 
+    <uses-permission android:name="android.permission.INTERNET" />
+ 	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ 	
     <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="15"/>
     <application android:name=".OrbotApp" android:icon="@drawable/ic_launcher"
      android:label="@string/app_name" 
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 73c0d71..7711648 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -38,10 +38,13 @@ import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Service;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.net.ConnectivityManager;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.Looper;
@@ -275,6 +278,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		     {
 			   initTor();
 			   isRunning = true;
+			   IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
+			   registerReceiver(mNetworkStateReceiver , mNetworkStateFilter);
 		     }
 		     catch (Exception e)
 		     {
@@ -1496,6 +1501,23 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     	
     }
     
+    /*
+     *  Another way to do this would be to use the Observer pattern by defining the 
+     *  BroadcastReciever in the Android manifest.
+     */
+    private final BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver() {
+    	@Override
+    	public void onReceive(Context context, Intent intent) {
+    		boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
+    		try {
+				mBinder.updateConfiguration("DisableNetwork", noConnectivity ? "1" : "0", false);
+				mBinder.saveConfiguration();
+    		} catch (RemoteException e) {
+				logException ("error applying prefs",e);
+			}
+    	}
+    };
+
     private boolean updateTorConfiguration () throws RemoteException
     {
     	





More information about the tor-commits mailing list