svn:r22666
This commit is contained in:
		
							parent
							
								
									31214c20a5
								
							
						
					
					
						commit
						4197b497cf
					
				|  | @ -3,7 +3,7 @@ | ||||||
| 	<classpathentry kind="src" path="src"/> | 	<classpathentry kind="src" path="src"/> | ||||||
| 	<classpathentry kind="src" path="gen"/> | 	<classpathentry kind="src" path="gen"/> | ||||||
| 	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> | 	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> | ||||||
| 	<classpathentry combineaccessrules="false" kind="src" path="/jtorctrl"/> |  | ||||||
| 	<classpathentry kind="lib" path="libs/asocks.jar"/> | 	<classpathentry kind="lib" path="libs/asocks.jar"/> | ||||||
|  | 	<classpathentry kind="lib" path="libs/jtorctrl.jar"/> | ||||||
| 	<classpathentry kind="output" path="bin"/> | 	<classpathentry kind="output" path="bin"/> | ||||||
| </classpath> | </classpath> | ||||||
|  |  | ||||||
|  | @ -4,11 +4,11 @@ | ||||||
|       android:versionName="0.2.2.13-orbot-alpha-0.0.8" android:versionCode="2"> |       android:versionName="0.2.2.13-orbot-alpha-0.0.8" android:versionCode="2"> | ||||||
|         |         | ||||||
|        <uses-permission android:name="android.permission.INTERNET" /> |        <uses-permission android:name="android.permission.INTERNET" /> | ||||||
|  |         <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> | ||||||
|   |   | ||||||
|  <!-- <uses-permission android:name="android.permission.WRITE_SETTINGS" /> --> |  | ||||||
|  <!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> --> |  | ||||||
|   |   | ||||||
|     <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> |     <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> | ||||||
|  |        | ||||||
|         <activity android:name=".Orbot" |         <activity android:name=".Orbot" | ||||||
|                   android:theme="@android:style/Theme.NoTitleBar" |                   android:theme="@android:style/Theme.NoTitleBar" | ||||||
|                   > |                   > | ||||||
|  | @ -22,9 +22,9 @@ | ||||||
|             <category android:name="android.intent.category.BROWSABLE" /> |             <category android:name="android.intent.category.BROWSABLE" /> | ||||||
|         </intent-filter> |         </intent-filter> | ||||||
|         </activity> |         </activity> | ||||||
|         <activity android:name=".SettingsPreferences"  android:label="@string/app_name"> |  | ||||||
|         </activity> |  | ||||||
|        |        | ||||||
|  |         <activity android:name=".SettingsPreferences"  android:label="@string/app_name"/> | ||||||
|  |         <activity android:name=".AppManager"  android:label="@string/app_name"/> | ||||||
|        |        | ||||||
|     	<service android:name=".service.TorService" android:process=":remote"  android:debuggable="false"> |     	<service android:name=".service.TorService" android:process=":remote"  android:debuggable="false"> | ||||||
| 	            <intent-filter> | 	            <intent-filter> | ||||||
|  | @ -33,8 +33,17 @@ | ||||||
|             </intent-filter> |             </intent-filter> | ||||||
|     	</service> |     	</service> | ||||||
|     	 |     	 | ||||||
|  |     	<receiver android:name=".OnBootReceiver"> | ||||||
|  | 			<intent-filter> | ||||||
|  | 			<action | ||||||
|  | 			android:name="android.intent.action.BOOT_COMPLETED" /> | ||||||
|  | 			<category android:name="android.intent.category.HOME" /> | ||||||
|  | 			</intent-filter> | ||||||
|  | 		</receiver> | ||||||
|  |     	 | ||||||
|     	 |     	 | ||||||
|     </application> |     </application> | ||||||
|  |      | ||||||
|     <uses-sdk android:minSdkVersion="3"/> |     <uses-sdk android:minSdkVersion="3"/> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								BUILD
								
								
								
								
							
							
						
						
									
										2
									
								
								BUILD
								
								
								
								
							|  | @ -1,4 +1,4 @@ | ||||||
| This document explains how to properly build an Android package of Orbot from | nThis document explains how to properly build an Android package of Orbot from | ||||||
| source. It covers building on Debian Lenny (5.0.3). | source. It covers building on Debian Lenny (5.0.3). | ||||||
| 
 | 
 | ||||||
| Please install the following prerequisites (instructions for each follows): | Please install the following prerequisites (instructions for each follows): | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <project name="Orbot" default="help"> | <project name="Orbot"> | ||||||
| 
 | 
 | ||||||
|     <!-- The local.properties file is created and updated by the 'android' tool. |     <!-- The local.properties file is created and updated by the 'android' tool. | ||||||
|          It contains the path to the SDK. It should *NOT* be checked in in Version |          It contains the path to the SDK. It should *NOT* be checked in in Version | ||||||
|  |  | ||||||
|  | @ -10,5 +10,5 @@ | ||||||
| # Indicates whether an apk should be generated for each density. | # Indicates whether an apk should be generated for each density. | ||||||
| split.density=false | split.density=false | ||||||
| # Project target. | # Project target. | ||||||
| target=android-2 | target=android-8 | ||||||
| apk-configurations= | apk-configurations= | ||||||
|  |  | ||||||
|  | @ -0,0 +1,76 @@ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     android:orientation="vertical" | ||||||
|  |     android:layout_width="fill_parent" | ||||||
|  |     android:layout_height="fill_parent" | ||||||
|  |     android:background="@drawable/bgtitanium"> | ||||||
|  |      | ||||||
|  |     	<RelativeLayout android:id="@+id/layoutHeaderMain" | ||||||
|  | 		android:layout_width="fill_parent" | ||||||
|  | 		android:layout_height="30dp" | ||||||
|  | 		android:layout_gravity="center_horizontal" | ||||||
|  | 		android:background="#A0909090"> | ||||||
|  |         <ImageView android:id="@+id/radioModeImage" | ||||||
|  |  		    android:layout_width="wrap_content" | ||||||
|  | 		    android:layout_height="wrap_content" | ||||||
|  | 			android:layout_marginTop="3px" | ||||||
|  | 			android:layout_marginRight="3px" | ||||||
|  | 			android:gravity="right" | ||||||
|  | 			android:layout_toRightOf="@+id/radioModeLabel" | ||||||
|  | 			android:layout_alignParentRight="true" | ||||||
|  | 			android:layout_alignParentTop="true" | ||||||
|  | 			android:src="@drawable/tor25" | ||||||
|  | 			/> | ||||||
|  | 		<TextView android:id="@+id/radioModeText" | ||||||
|  |  		    android:layout_width="wrap_content" | ||||||
|  | 		    android:layout_height="wrap_content"            | ||||||
|  |             android:text="powered by The Tor Project  " | ||||||
|  | 			android:layout_marginTop="8px" | ||||||
|  | 			android:layout_marginRight="0px" | ||||||
|  | 			android:gravity="right" | ||||||
|  | 			android:layout_toLeftOf="@+id/radioModeImage" | ||||||
|  |             android:textColor="#cccccc" /> | ||||||
|  | 	</RelativeLayout> | ||||||
|  |      | ||||||
|  |    <ScrollView android:id="@+id/mainview"  | ||||||
|  | 		android:orientation="vertical" | ||||||
|  | 		android:layout_width="fill_parent"  | ||||||
|  | 		android:layout_height="fill_parent"> | ||||||
|  |    		<TableLayout android:id="@+id/mainLayout" | ||||||
|  | 			android:layout_gravity="center" | ||||||
|  | 			android:layout_height="wrap_content"  | ||||||
|  | 			android:layout_width="wrap_content"> | ||||||
|  | 			<TableRow android:id="@+id/startRow"> | ||||||
|  | 				<TableLayout | ||||||
|  | 					android:layout_gravity="center" | ||||||
|  | 					android:layout_height="wrap_content"  | ||||||
|  | 					android:layout_width="wrap_content"> | ||||||
|  | 					<TableRow> | ||||||
|  | 							<ImageView | ||||||
|  | 							android:id="@+id/imgStatus" | ||||||
|  | 							 android:layout_width="wrap_content" | ||||||
|  | 		   					 android:layout_height="175px" | ||||||
|  | 							android:src="@drawable/toroff"/> | ||||||
|  | 					</TableRow> | ||||||
|  | 					<TableRow> | ||||||
|  | 						<TextView android:id="@+id/lblStatus" | ||||||
|  | 							android:text="- Press to enable - " | ||||||
|  | 							android:layout_gravity="center_horizontal" | ||||||
|  | 							android:gravity="center_horizontal" | ||||||
|  | 							android:textStyle="bold" | ||||||
|  | 							android:width="240px" | ||||||
|  | 							android:height="50px" | ||||||
|  | 							android:textColor="#ffffff" | ||||||
|  | 							 /> | ||||||
|  | 					</TableRow> | ||||||
|  | 				</TableLayout> | ||||||
|  | 			</TableRow> | ||||||
|  | 			 | ||||||
|  | 		</TableLayout> | ||||||
|  | 	</ScrollView> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         | ||||||
|  | </LinearLayout> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @ -18,7 +18,7 @@ | ||||||
| 				android:paddingLeft="15px" | 				android:paddingLeft="15px" | ||||||
| 				android:textStyle="bold" | 				android:textStyle="bold" | ||||||
| 				android:textColor="#ffffff" /> | 				android:textColor="#ffffff" /> | ||||||
| 			<TextView android:text="- Unkown -" | 			<TextView android:text="- Unknown -" | ||||||
| 				android:id="@+id/versionName" | 				android:id="@+id/versionName" | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
| 				android:layout_height="wrap_content" | 				android:layout_height="wrap_content" | ||||||
|  | @ -32,14 +32,12 @@ | ||||||
| 				android:paddingLeft="15px" | 				android:paddingLeft="15px" | ||||||
| 				android:textStyle="bold" | 				android:textStyle="bold" | ||||||
| 				android:textColor="#ffffff" /> | 				android:textColor="#ffffff" /> | ||||||
| 			<TextView android:text="https://www.torproject.org/docs/android \n | 			<TextView android:text="https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/" | ||||||
| http://guardianproject.info/apps/orbot/" |  | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
| 				android:layout_height="wrap_content" | 				android:layout_height="wrap_content" | ||||||
| 				android:autoLink="web" | 				android:autoLink="web" | ||||||
| 				android:textColorLink="#ffffff" | 				android:textColorLink="#ffffff" | ||||||
| 				android:paddingLeft="15px"		 | 				android:paddingLeft="15px"		 | ||||||
| 				android:textSize="12sp"					 |  | ||||||
| 				android:textColor="#ffffff" /> | 				android:textColor="#ffffff" /> | ||||||
| 			<TextView android:text="License: " | 			<TextView android:text="License: " | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
|  | @ -59,7 +57,6 @@ http://guardianproject.info/apps/orbot/" | ||||||
| 				android:autoLink="web" | 				android:autoLink="web" | ||||||
| 				android:textColorLink="#ffffff" | 				android:textColorLink="#ffffff" | ||||||
| 				android:paddingLeft="15px"		 | 				android:paddingLeft="15px"		 | ||||||
| 				android:textSize="12sp"					 |  | ||||||
| 				android:textColor="#ffffff" />				 | 				android:textColor="#ffffff" />				 | ||||||
| 			<TextView android:text="3rd-Party-Software: " | 			<TextView android:text="3rd-Party-Software: " | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
|  | @ -74,7 +71,6 @@ http://guardianproject.info/apps/orbot/" | ||||||
| 				android:autoLink="web" | 				android:autoLink="web" | ||||||
| 				android:textColorLink="#ffffff" | 				android:textColorLink="#ffffff" | ||||||
| 				android:paddingLeft="15px" | 				android:paddingLeft="15px" | ||||||
| 				android:textSize="12sp"					 |  | ||||||
| 				android:textColor="#ffffff" />				 | 				android:textColor="#ffffff" />				 | ||||||
| 			<TextView android:text="LibEvent v1.4.13: http://www.monkey.org/~provos/libevent/" | 			<TextView android:text="LibEvent v1.4.13: http://www.monkey.org/~provos/libevent/" | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
|  | @ -82,7 +78,6 @@ http://guardianproject.info/apps/orbot/" | ||||||
| 				android:autoLink="web" | 				android:autoLink="web" | ||||||
| 				android:textColorLink="#ffffff" | 				android:textColorLink="#ffffff" | ||||||
| 				android:paddingLeft="15px"	 | 				android:paddingLeft="15px"	 | ||||||
| 				android:textSize="12sp"					 |  | ||||||
| 				android:textColor="#ffffff" />	 | 				android:textColor="#ffffff" />	 | ||||||
| 							 | 							 | ||||||
| 			</LinearLayout> | 			</LinearLayout> | ||||||
|  |  | ||||||
|  | @ -1,10 +1,9 @@ | ||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:duplicateParentState="false"> | <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:duplicateParentState="false"> | ||||||
| <TextView android:text="Check the apps you wish to route through Tor:" | <TextView android:text="Select apps for Tor:" | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
| 				android:layout_height="wrap_content" | 				android:layout_height="wrap_content" | ||||||
| 				android:textSize="16sp"		 | 				android:textSize="16sp"		 | ||||||
| 				android:textColor="#00ff00" |  | ||||||
| 				android:padding="3px" /> | 				android:padding="3px" /> | ||||||
| 	<ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/applistview"></ListView> | 	<ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/applistview"></ListView> | ||||||
| </LinearLayout> | </LinearLayout> | ||||||
|  |  | ||||||
|  | @ -4,9 +4,11 @@ | ||||||
|     android:layout_width="fill_parent" |     android:layout_width="fill_parent" | ||||||
|     android:layout_height="fill_parent" |     android:layout_height="fill_parent" | ||||||
|     > |     > | ||||||
| 
 |  | ||||||
| <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/itemcheck"></CheckBox> | <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/itemcheck"></CheckBox> | ||||||
| <TextView android:layout_height="wrap_content" android:id="@+id/itemtext" android:text="uid:packages" android:layout_width="fill_parent" | 
 | ||||||
| android:textSize="18sp" | <ImageView android:id="@+id/itemicon" android:layout_width="48px" android:layout_height="48px"></ImageView> | ||||||
| ></TextView> | 
 | ||||||
|  | <TextView android:layout_height="wrap_content" android:id="@+id/itemtext" android:text="uid:packages" android:layout_width="wrap_content" | ||||||
|  | android:textSize="18sp"></TextView> | ||||||
|  | 
 | ||||||
| </LinearLayout> | </LinearLayout> | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|     android:orientation="vertical" |     android:orientation="vertical" | ||||||
|     android:layout_width="fill_parent" |     android:layout_width="fill_parent" | ||||||
|     android:layout_height="fill_parent"> |     android:layout_height="wrap_content"> | ||||||
| 	<ScrollView android:id="@+id/helpscrollview"  | 	<ScrollView android:id="@+id/helpscrollview"  | ||||||
| 		android:orientation="vertical" | 		android:orientation="vertical" | ||||||
| 		android:layout_width="fill_parent"  | 		android:layout_width="fill_parent"  | ||||||
|  | @ -14,8 +14,6 @@ | ||||||
| 			<TextView android:text="" | 			<TextView android:text="" | ||||||
| 				android:layout_width="fill_parent"  | 				android:layout_width="fill_parent"  | ||||||
| 				android:layout_height="wrap_content" | 				android:layout_height="wrap_content" | ||||||
| 				android:paddingTop="5px" |  | ||||||
| 				android:paddingLeft="5px" |  | ||||||
| 				android:textColor="#ffffff" />				 | 				android:textColor="#ffffff" />				 | ||||||
| 			</LinearLayout> | 			</LinearLayout> | ||||||
| 		</ScrollView>			 | 		</ScrollView>			 | ||||||
|  |  | ||||||
|  | @ -1,19 +1,17 @@ | ||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| 
 |  | ||||||
|       |  | ||||||
|      <ScrollView  android:orientation="vertical" |      <ScrollView  android:orientation="vertical" | ||||||
|       android:layout_height="480px" |       android:layout_height="fill_parent" | ||||||
|          android:layout_width="fill_parent"  android:id="@+id/logScrollView" |          android:layout_width="fill_parent"  android:id="@+id/logScrollView" | ||||||
|           xmlns:android="http://schemas.android.com/apk/res/android" |           xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|          > |  | ||||||
|           |           | ||||||
|          <TextView android:id="@+id/messageLog" |          <TextView android:id="@+id/messageLog" | ||||||
|          android:layout_height="wrap_content" |          android:layout_height="fill_parent" | ||||||
|          android:layout_width="wrap_content" |          android:layout_width="fill_parent" | ||||||
|          android:layout_x="2px" |          android:layout_x="2px" | ||||||
| android:layout_y="2px" | 		 android:layout_y="2px" | ||||||
|          android:textSize="12px" |          android:textSize="12px" | ||||||
|          />	 |          />	 | ||||||
|           |           | ||||||
|  |          | ||||||
|      </ScrollView> |      </ScrollView> | ||||||
|              |              | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
|     android:orientation="vertical" |     android:orientation="vertical" | ||||||
|     android:layout_width="fill_parent" |     android:layout_width="fill_parent" | ||||||
|     android:layout_height="fill_parent" |     android:layout_height="fill_parent" | ||||||
|     android:background="@drawable/background"> |     android:background="@drawable/bgtitanium"> | ||||||
|      |      | ||||||
|     	<RelativeLayout android:id="@+id/layoutHeaderMain" |     	<RelativeLayout android:id="@+id/layoutHeaderMain" | ||||||
| 		android:layout_width="fill_parent" | 		android:layout_width="fill_parent" | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
|         <ImageView android:id="@+id/radioModeImage" |         <ImageView android:id="@+id/radioModeImage" | ||||||
|  		    android:layout_width="wrap_content" |  		    android:layout_width="wrap_content" | ||||||
| 		    android:layout_height="wrap_content" | 		    android:layout_height="wrap_content" | ||||||
| 			android:layout_marginTop="3px" | 			android:layout_marginTop="0px" | ||||||
| 			android:layout_marginRight="3px" | 			android:layout_marginRight="3px" | ||||||
| 			android:gravity="right" | 			android:gravity="right" | ||||||
| 			android:layout_toRightOf="@+id/radioModeLabel" | 			android:layout_toRightOf="@+id/radioModeLabel" | ||||||
|  | @ -24,12 +24,12 @@ | ||||||
| 		<TextView android:id="@+id/radioModeText" | 		<TextView android:id="@+id/radioModeText" | ||||||
|  		    android:layout_width="wrap_content" |  		    android:layout_width="wrap_content" | ||||||
| 		    android:layout_height="wrap_content"            | 		    android:layout_height="wrap_content"            | ||||||
|             android:text="powered by The Tor Project  " |             android:text="@string/powered_by" | ||||||
| 			android:layout_marginTop="8px" | 			android:layout_marginTop="9px" | ||||||
| 			android:layout_marginRight="0px" | 			android:layout_marginRight="0px" | ||||||
| 			android:gravity="right" | 			android:gravity="right" | ||||||
| 			android:layout_toLeftOf="@+id/radioModeImage" | 			android:layout_toLeftOf="@+id/radioModeImage" | ||||||
|             android:textColor="#cccccc" /> |             android:textColor="#333333" /> | ||||||
| 	</RelativeLayout> | 	</RelativeLayout> | ||||||
|      |      | ||||||
|    <ScrollView android:id="@+id/mainview"  |    <ScrollView android:id="@+id/mainview"  | ||||||
|  | @ -54,7 +54,7 @@ | ||||||
| 					</TableRow> | 					</TableRow> | ||||||
| 					<TableRow> | 					<TableRow> | ||||||
| 						<TextView android:id="@+id/lblStatus" | 						<TextView android:id="@+id/lblStatus" | ||||||
| 							android:text="- Press to enable - " | 							android:text="@string/press_to_start" | ||||||
| 							android:layout_gravity="center_horizontal" | 							android:layout_gravity="center_horizontal" | ||||||
| 							android:gravity="center_horizontal" | 							android:gravity="center_horizontal" | ||||||
| 							android:textStyle="bold" | 							android:textStyle="bold" | ||||||
|  |  | ||||||
|  | @ -45,4 +45,7 @@ | ||||||
| 
 | 
 | ||||||
| <string name="help_text_5">Auf gerooteten Geräten (egal ob Android 1.x oder 2x) kann Orbot sämtliche Apps und alle DNS-Abfragen anonymisieren. Dies gilt auch für den eingebauten Browser, Gmail, YouTube und Maps, sowie jegliche Anwendung von Drittanbietern.</string> | <string name="help_text_5">Auf gerooteten Geräten (egal ob Android 1.x oder 2x) kann Orbot sämtliche Apps und alle DNS-Abfragen anonymisieren. Dies gilt auch für den eingebauten Browser, Gmail, YouTube und Maps, sowie jegliche Anwendung von Drittanbietern.</string> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -49,4 +49,7 @@ para configurar el proxy SOCKS5 a 127.0.0.1 y el puerto 9050. También debe habi | ||||||
| <string name="help_text_5">Si la raíz del dispositivo, ya sea 1.xo 2.x base, puede proxy transparente Orbot cualquier applicatons selecciona y todas las peticiones DNS. | <string name="help_text_5">Si la raíz del dispositivo, ya sea 1.xo 2.x base, puede proxy transparente Orbot cualquier applicatons selecciona y todas las peticiones DNS. | ||||||
| Esto incluye el built-in del navegador, Gmail, YouTube y mapas, así como cualquier aplicación de terceros.</string> | Esto incluye el built-in del navegador, Gmail, YouTube y mapas, así como cualquier aplicación de terceros.</string> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -47,4 +47,7 @@ HTTP Proxy til 127.0.0.1 og port 8118 for kun HTTP trafikk (HTTP/S vil ikke fung | ||||||
| 
 | 
 | ||||||
| <string name="help_text_5">Hvis du rooter telefonen, uansett om den er en 1.x eller 2.x enhet, så vil Orbot kunne fungere med alle aplikasjoner du velger, i tillegg til alle DNS-forespørsler. Dette inkluderer den innebyggede nettleseren, Gmail, Youtube og Kart, og mange tredjeparts-applikasjoner.</string> | <string name="help_text_5">Hvis du rooter telefonen, uansett om den er en 1.x eller 2.x enhet, så vil Orbot kunne fungere med alle aplikasjoner du velger, i tillegg til alle DNS-forespørsler. Dette inkluderer den innebyggede nettleseren, Gmail, Youtube og Kart, og mange tredjeparts-applikasjoner.</string> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -49,4 +49,7 @@ dat je de SOCKS5 proxy op 127.0.0.1 poort 9050 zet. Zet ook SSL aan om je gebrui | ||||||
| <string name="help_text_5">Als je je apparaat root, of het een 1.x of een 2.x gebaseerde versie is, Orbot kan transparant elke applicatie proxien die je selecteert | <string name="help_text_5">Als je je apparaat root, of het een 1.x of een 2.x gebaseerde versie is, Orbot kan transparant elke applicatie proxien die je selecteert | ||||||
| en ook alle DNS aanvragen. Dit omvat ook de ingebouwde browser, Gmail, Youtube en Maps, naast elke andere applicatie van derde partijen.</string> | en ook alle DNS aanvragen. Dit omvat ook de ingebouwde browser, Gmail, Youtube en Maps, naast elke andere applicatie van derde partijen.</string> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -49,4 +49,7 @@ you to set the SOCKS5 proxy to 127.0.0.1 and port 9050. You should also enable S | ||||||
| <string name="help_text_5">If you root your device, whether it is 1.x or 2.x based, Orbot can transparently proxy any applicatons you select | <string name="help_text_5">If you root your device, whether it is 1.x or 2.x based, Orbot can transparently proxy any applicatons you select | ||||||
| and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Maps, as well as any third-party app.</string> | and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Maps, as well as any third-party app.</string> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -49,4 +49,7 @@ que o permite definir o Proxy para 127.0.0.1 e porto 9050. Deve também activar | ||||||
| <string name="help_text_5">Se tiver acesso root no seu dispositivo, quer seja 1.x ou 2.x, o Orbot pode, de uma forma transparente, funcionar com todas as aplicações | <string name="help_text_5">Se tiver acesso root no seu dispositivo, quer seja 1.x ou 2.x, o Orbot pode, de uma forma transparente, funcionar com todas as aplicações | ||||||
| e pedidos de DNS. Isto inclui o navegador. Gmail, YouTube e Maps, como também aplicações de terceiros.</string> | e pedidos de DNS. Isto inclui o navegador. Gmail, YouTube e Maps, como também aplicações de terceiros.</string> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -30,7 +30,6 @@ | ||||||
| <string name="menu_stop">Stop</string> | <string name="menu_stop">Stop</string> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| <string name="button_help">Help</string> | <string name="button_help">Help</string> | ||||||
| <string name="button_close">Close</string> | <string name="button_close">Close</string> | ||||||
| <string name="button_about">About</string> | <string name="button_about">About</string> | ||||||
|  | @ -49,4 +48,8 @@ you to set the SOCKS5 proxy to 127.0.0.1 and port 9050. You should also enable S | ||||||
| <string name="help_text_5">If you root your device, whether it is 1.x or 2.x based, Orbot can transparently proxy any applicatons you select | <string name="help_text_5">If you root your device, whether it is 1.x or 2.x based, Orbot can transparently proxy any applicatons you select | ||||||
| and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Maps, as well as any third-party app.</string> | and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Maps, as well as any third-party app.</string> | ||||||
| 
 | 
 | ||||||
|  | <string name="menu_verify">Check</string> | ||||||
|  | <string name="menu_exit">Exit</string> | ||||||
|  | <string name="powered_by">powered by the Tor Project</string> | ||||||
|  | <string name="press_to_start">- press to start -</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,76 @@ | ||||||
|  | <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|  | 
 | ||||||
|  | <PreferenceCategory android:title="Transparent Proxying"> | ||||||
|  | 
 | ||||||
|  | <CheckBoxPreference  | ||||||
|  | android:defaultValue="false"  | ||||||
|  | android:key="pref_transparent" | ||||||
|  | android:title="Transparent Proxying" | ||||||
|  | android:summary="Root Devices Only: Per App Torification" | ||||||
|  | android:enabled="true"/> | ||||||
|  | 
 | ||||||
|  | </PreferenceCategory> | ||||||
|  | 
 | ||||||
|  | <PreferenceCategory android:title="Bridges"> | ||||||
|  | 
 | ||||||
|  | <CheckBoxPreference android:defaultValue="false"  | ||||||
|  | android:title="Use Bridges" android:key="pref_bridges_enabled"  | ||||||
|  | android:summary="Enable alternate entrance nodes into the Tor Network"></CheckBoxPreference> | ||||||
|  | 
 | ||||||
|  | <!-- 5/8/2010 NF: Arma says this doesn't actually work, so commenting out for now | ||||||
|  | <CheckBoxPreference android:defaultValue="false"  | ||||||
|  | android:title="Update from Authority" android:key="pref_bridges_update"  | ||||||
|  | android:summary="Modify bridge list automatically"></CheckBoxPreference> | ||||||
|  |  --> | ||||||
|  |   | ||||||
|  | <EditTextPreference android:key="pref_bridges_list" | ||||||
|  | android:title="Bridges" | ||||||
|  | android:summary="IP address and port of bridges" | ||||||
|  | android:dialogTitle="Enter Bridge Addresses" | ||||||
|  | /> | ||||||
|  | </PreferenceCategory> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <PreferenceCategory android:title="Relays"> | ||||||
|  | <CheckBoxPreference android:key="pref_or" | ||||||
|  | android:defaultValue="false" | ||||||
|  | android:title="Relaying" | ||||||
|  | android:summary="Enable your device to be a non-exit relay" | ||||||
|  | android:enabled="true" | ||||||
|  | /> | ||||||
|  | 
 | ||||||
|  | <EditTextPreference android:key="pref_or_port" | ||||||
|  | android:defaultValue="9001" | ||||||
|  | android:title="Relay Port" | ||||||
|  | android:summary="Listening port for your Tor relay" | ||||||
|  | android:dialogTitle="Enter OR port" | ||||||
|  | /> | ||||||
|  | 
 | ||||||
|  | <EditTextPreference android:key="pref_or_nickname" | ||||||
|  | android:defaultValue="Orbot" | ||||||
|  | android:title="Relay nickname" | ||||||
|  | android:summary="The nickname for your Tor relay" | ||||||
|  | android:dialogTitle="Enter a custom relay nickname" | ||||||
|  | /> | ||||||
|  | 
 | ||||||
|  | </PreferenceCategory> | ||||||
|  | 
 | ||||||
|  | <PreferenceCategory android:title="ReachableAddresses"> | ||||||
|  | <CheckBoxPreference | ||||||
|  | android:key="pref_reachable_addresses" | ||||||
|  | android:defaultValue="false" | ||||||
|  | android:title="ReachableAddresses" | ||||||
|  | android:summary="Run as a client behind a firewall with restrictive policies" | ||||||
|  | android:enabled="true"></CheckBoxPreference> | ||||||
|  | 
 | ||||||
|  | <EditTextPreference | ||||||
|  | android:key="pref_reachable_addresses_ports" | ||||||
|  | android:defaultValue="*:80,*:443" | ||||||
|  | android:title="Reachable ports" | ||||||
|  | android:summary="Ports reachable behind a restrictive firewall" | ||||||
|  | android:dialogTitle="Enter ports" | ||||||
|  | /> | ||||||
|  | </PreferenceCategory> | ||||||
|  | 
 | ||||||
|  | </PreferenceScreen> | ||||||
|  | @ -1,14 +1,30 @@ | ||||||
| <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> | <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
| 
 | 
 | ||||||
| <PreferenceCategory android:title="Transparent Proxying"> | <PreferenceCategory android:title="Transparent Proxying (Requires Root)"> | ||||||
| 
 | 
 | ||||||
| <CheckBoxPreference  | <CheckBoxPreference  | ||||||
| android:defaultValue="false"  | android:defaultValue="false"  | ||||||
| android:key="pref_transparent" | android:key="pref_transparent" | ||||||
| android:title="Transparent Proxying" | android:title="Transparent Proxying" | ||||||
| android:summary="Root Devices Only: Per App Torification" | android:summary="Auto-Tor Proxying" | ||||||
| android:enabled="true"/> | android:enabled="true"/> | ||||||
| 
 | 
 | ||||||
|  | <CheckBoxPreference | ||||||
|  | android:defaultValue="false"  | ||||||
|  | android:key="pref_transparent_all" | ||||||
|  | android:title="Auto-Proxy All Apps" | ||||||
|  | android:summary="Route All Traffic Through Tor" | ||||||
|  | android:enabled="true"/> | ||||||
|  | 
 | ||||||
|  | <Preference | ||||||
|  | android:defaultValue=""  | ||||||
|  | android:key="pref_transparent_app_list" | ||||||
|  | android:title="Select Apps" | ||||||
|  | android:summary="Choose Apps to Route Through Tor" | ||||||
|  | android:enabled="true"/> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| </PreferenceCategory> | </PreferenceCategory> | ||||||
| 
 | 
 | ||||||
| <PreferenceCategory android:title="Bridges"> | <PreferenceCategory android:title="Bridges"> | ||||||
|  |  | ||||||
|  | @ -15,6 +15,7 @@ import org.torproject.android.service.TorServiceConstants; | ||||||
| 
 | 
 | ||||||
| import android.app.Activity; | import android.app.Activity; | ||||||
| import android.app.AlertDialog; | import android.app.AlertDialog; | ||||||
|  | import android.app.NotificationManager; | ||||||
| import android.app.ProgressDialog; | import android.app.ProgressDialog; | ||||||
| import android.content.ComponentName; | import android.content.ComponentName; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
|  | @ -87,22 +88,15 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
|          |          | ||||||
|         MenuItem mItem = null; |         MenuItem mItem = null; | ||||||
|          |          | ||||||
| 
 |  | ||||||
|         mItemOnOff = menu.add(0, 1, Menu.NONE, getString(R.string.menu_start)); |         mItemOnOff = menu.add(0, 1, Menu.NONE, getString(R.string.menu_start)); | ||||||
|         mItemOnOff.setIcon(android.R.drawable.ic_menu_share); |         mItemOnOff.setIcon(android.R.drawable.ic_menu_share); | ||||||
|  |         mItemOnOff.setAlphabeticShortcut('t'); | ||||||
|          |          | ||||||
|         mItem = menu.add(0, 4, Menu.NONE, getString(R.string.menu_settings)); |         mItem = menu.add(0, 4, Menu.NONE, getString(R.string.menu_settings)); | ||||||
|         mItem.setIcon(R.drawable.ic_menu_register); |         mItem.setIcon(R.drawable.ic_menu_register); | ||||||
|         |         | ||||||
|         |         mItem = menu.add(0, 7, Menu.NONE, getString(R.string.menu_verify)); | ||||||
|     	mItem = menu.add(0, 5, Menu.NONE, getString(R.string.menu_apps)); |         mItem.setIcon(R.drawable.ic_menu_goto); | ||||||
|     	mItem.setIcon(R.drawable.ic_menu_goto); |  | ||||||
|     	 |  | ||||||
|     	 if (!TorServiceUtils.hasRoot()) |  | ||||||
|          { |  | ||||||
|     		 mItem.setEnabled(false); |  | ||||||
|     		  |  | ||||||
|          } |  | ||||||
|        |        | ||||||
|         mItem =  menu.add(0,6, Menu.NONE, getString(R.string.menu_log)); |         mItem =  menu.add(0,6, Menu.NONE, getString(R.string.menu_log)); | ||||||
|         mItem.setIcon(R.drawable.ic_menu_reports); |         mItem.setIcon(R.drawable.ic_menu_reports); | ||||||
|  | @ -110,7 +104,8 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
|         mItem = menu.add(0, 3, Menu.NONE, getString(R.string.menu_info)); |         mItem = menu.add(0, 3, Menu.NONE, getString(R.string.menu_info)); | ||||||
|         mItem.setIcon(R.drawable.ic_menu_about); |         mItem.setIcon(R.drawable.ic_menu_about); | ||||||
|         |         | ||||||
| 
 |         mItem = menu.add(0, 8, Menu.NONE, getString(R.string.menu_exit)); | ||||||
|  |         mItem.setIcon(R.drawable.ic_menu_exit); | ||||||
|         |         | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  | @ -172,10 +167,41 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
| 		{ | 		{ | ||||||
| 			showApps(); | 			showApps(); | ||||||
| 		} | 		} | ||||||
|  | 		else if (item.getItemId() == 7) | ||||||
|  | 		{ | ||||||
|  | 			//launch check.torproject.org | ||||||
|  | 			openBrowser(URL_TOR_CHECK); | ||||||
|  | 		} | ||||||
|  | 		else if (item.getItemId() == 8) | ||||||
|  | 		{ | ||||||
|  | 			//exit app | ||||||
|  | 			doExit(); | ||||||
|  | 			 | ||||||
|  | 			 | ||||||
|  | 		} | ||||||
| 		 | 		 | ||||||
|         return true; |         return true; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | 	private void doExit () | ||||||
|  | 	{ | ||||||
|  | 		try { | ||||||
|  | 			stopTor(); | ||||||
|  | 			 | ||||||
|  | 			NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); | ||||||
|  | 			mNotificationManager.cancelAll(); | ||||||
|  | 			 | ||||||
|  | 			unbindService(); | ||||||
|  | 			 | ||||||
|  | 			 | ||||||
|  | 		} catch (RemoteException e) { | ||||||
|  | 			Log.w(TAG, e); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		finish(); | ||||||
|  | 		 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
| 	/* Return to the main view when the back key is pressed | 	/* Return to the main view when the back key is pressed | ||||||
| 	 * (non-Javadoc) | 	 * (non-Javadoc) | ||||||
| 	 * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) | 	 * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) | ||||||
|  | @ -231,6 +257,10 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
| 	protected void onResume() { | 	protected void onResume() { | ||||||
| 		super.onResume(); | 		super.onResume(); | ||||||
| 		 | 		 | ||||||
|  | 		NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); | ||||||
|  | 
 | ||||||
|  | 		mNotificationManager.cancelAll(); | ||||||
|  | 		 | ||||||
| 		updateStatus (""); //update the status, which checks the service status | 		updateStatus (""); //update the status, which checks the service status | ||||||
| 		 | 		 | ||||||
| 		if (showingSettings) | 		if (showingSettings) | ||||||
|  | @ -352,6 +382,8 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
|         			entry = (ListEntry) convertView.getTag(); |         			entry = (ListEntry) convertView.getTag(); | ||||||
|         		} |         		} | ||||||
|         		final TorifiedApp app = apps[position]; |         		final TorifiedApp app = apps[position]; | ||||||
|  |         		 | ||||||
|  |         		 | ||||||
|         		entry.text.setText(app.getName()); |         		entry.text.setText(app.getName()); | ||||||
|         		final CheckBox box = entry.box; |         		final CheckBox box = entry.box; | ||||||
|         		box.setTag(app); |         		box.setTag(app); | ||||||
|  | @ -432,7 +464,6 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
| 		new AlertDialog.Builder(this) | 		new AlertDialog.Builder(this) | ||||||
|         .setTitle(getString(R.string.menu_info)) |         .setTitle(getString(R.string.menu_info)) | ||||||
|         .setMessage(msg.toString()) |         .setMessage(msg.toString()) | ||||||
|         .setView(view) |  | ||||||
|         .setNeutralButton(getString(R.string.button_about), new DialogInterface.OnClickListener() { |         .setNeutralButton(getString(R.string.button_about), new DialogInterface.OnClickListener() { | ||||||
|                 public void onClick(DialogInterface dialog, int whichButton) { |                 public void onClick(DialogInterface dialog, int whichButton) { | ||||||
|                     |                     | ||||||
|  | @ -466,6 +497,8 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
| 		setContentView(currentView); | 		setContentView(currentView); | ||||||
| 		 | 		 | ||||||
| 		txtMessageLog = (TextView)findViewById(R.id.messageLog); | 		txtMessageLog = (TextView)findViewById(R.id.messageLog); | ||||||
|  | 		 | ||||||
|  | 		txtMessageLog.setClickable(true); | ||||||
|     	txtMessageLog.setText(logBuffer.toString()); |     	txtMessageLog.setText(logBuffer.toString()); | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
|  | @ -633,6 +666,12 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
|     		if (mService != null) |     		if (mService != null) | ||||||
|     			torStatus = mService.getStatus(); |     			torStatus = mService.getStatus(); | ||||||
| 	    	 | 	    	 | ||||||
|  |     		if (this.currentView == R.layout.layout_log)     | ||||||
|  |     		{ | ||||||
|  |     			txtMessageLog.append(torServiceMsg); | ||||||
|  |     			txtMessageLog.append("\n"); | ||||||
|  |     			 | ||||||
|  |     		} | ||||||
| 
 | 
 | ||||||
| 	    	if (imgStatus != null) | 	    	if (imgStatus != null) | ||||||
| 	    	{ | 	    	{ | ||||||
|  | @ -755,6 +794,7 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
|     	mHandler.sendMessage(msg); |     	mHandler.sendMessage(msg); | ||||||
|     	 |     	 | ||||||
|     	updateStatus(""); |     	updateStatus(""); | ||||||
|  |     	 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     /* |     /* | ||||||
|  | @ -857,6 +897,8 @@ public class Orbot extends Activity implements OnClickListener, TorConstants, On | ||||||
|                 	logBuffer.append(torServiceMsg); |                 	logBuffer.append(torServiceMsg); | ||||||
|                 	logBuffer.append('\n'); |                 	logBuffer.append('\n'); | ||||||
|                 	 |                 	 | ||||||
|  |                 	 | ||||||
|  |                 	if (torServiceMsg.length() > 0 && torServiceMsg.charAt(0)!='>') | ||||||
|                 	updateStatus(torServiceMsg); |                 	updateStatus(torServiceMsg); | ||||||
|                 	 |                 	 | ||||||
|                     break; |                     break; | ||||||
|  |  | ||||||
|  | @ -5,21 +5,53 @@ package org.torproject.android; | ||||||
| 
 | 
 | ||||||
| import org.torproject.android.service.TorServiceUtils; | import org.torproject.android.service.TorServiceUtils; | ||||||
| 
 | 
 | ||||||
|  | import android.content.Intent; | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
|  | import android.preference.CheckBoxPreference; | ||||||
|  | import android.preference.Preference; | ||||||
|  | import android.preference.Preference.OnPreferenceClickListener; | ||||||
| import android.preference.PreferenceActivity; | import android.preference.PreferenceActivity; | ||||||
| import android.util.Log; | import android.preference.PreferenceCategory; | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| public class SettingsPreferences  | public class SettingsPreferences  | ||||||
| 		extends PreferenceActivity { | 		extends PreferenceActivity implements OnPreferenceClickListener { | ||||||
|  | 
 | ||||||
|  | 	private CheckBoxPreference prefCBTransProxy = null; | ||||||
|  | 	private CheckBoxPreference prefcBTransProxyAll = null; | ||||||
|  | 	private Preference prefTransProxyApps = null; | ||||||
| 	 | 	 | ||||||
| 	protected void onCreate(Bundle savedInstanceState) { | 	protected void onCreate(Bundle savedInstanceState) { | ||||||
| 		super.onCreate(savedInstanceState); | 		super.onCreate(savedInstanceState); | ||||||
| 		addPreferencesFromResource(R.xml.preferences); | 		addPreferencesFromResource(R.xml.preferences); | ||||||
| 		 | 		 | ||||||
|  | 		 | ||||||
| 		if (!TorServiceUtils.hasRoot()) | 		if (!TorServiceUtils.hasRoot()) | ||||||
|  | 		{ | ||||||
| 			getPreferenceScreen().getPreference(0).setEnabled(false); | 			getPreferenceScreen().getPreference(0).setEnabled(false); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			prefCBTransProxy = ((CheckBoxPreference)((PreferenceCategory)this.getPreferenceScreen().getPreference(0)).getPreference(0)); | ||||||
|  | 			prefcBTransProxyAll = (CheckBoxPreference)((PreferenceCategory)this.getPreferenceScreen().getPreference(0)).getPreference(1); | ||||||
|  | 			prefTransProxyApps = ((PreferenceCategory)this.getPreferenceScreen().getPreference(0)).getPreference(2); | ||||||
|  | 
 | ||||||
|  | 			prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked()); | ||||||
|  | 			 | ||||||
|  | 			prefTransProxyApps.setEnabled(prefCBTransProxy.isChecked() && (!prefcBTransProxyAll.isChecked())); | ||||||
|  | 			 | ||||||
|  | 			prefCBTransProxy.setOnPreferenceClickListener(this); | ||||||
|  | 			prefcBTransProxyAll.setOnPreferenceClickListener(this); | ||||||
|  | 			prefTransProxyApps.setOnPreferenceClickListener(this); | ||||||
|  | 			 | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 
 | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
| 	/* (non-Javadoc) | 	/* (non-Javadoc) | ||||||
| 	 * @see android.app.Activity#onStop() | 	 * @see android.app.Activity#onStop() | ||||||
| 	 */ | 	 */ | ||||||
|  | @ -27,7 +59,27 @@ public class SettingsPreferences | ||||||
| 	protected void onStop() { | 	protected void onStop() { | ||||||
| 		super.onStop(); | 		super.onStop(); | ||||||
| 		 | 		 | ||||||
| 		Log.i(getClass().getName(),"Exiting Preferences"); | 		//Log.i(getClass().getName(),"Exiting Preferences"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public boolean onPreferenceClick(Preference preference) { | ||||||
|  | 		 | ||||||
|  | 		 | ||||||
|  | 		if (preference == prefTransProxyApps) | ||||||
|  | 		{ | ||||||
|  | 			startActivity(new Intent(this, AppManager.class)); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked()); | ||||||
|  | 			prefTransProxyApps.setEnabled(prefCBTransProxy.isChecked() && (!prefcBTransProxyAll.isChecked())); | ||||||
|  | 			 | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	 | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ public interface TorConstants { | ||||||
|     public final static String NEWLINE = "\n"; |     public final static String NEWLINE = "\n"; | ||||||
|      |      | ||||||
|     public final static String TORRC_DEFAULT =  |     public final static String TORRC_DEFAULT =  | ||||||
|     		"SocksPort 9050\nSocksListenAddress 127.0.0.1\nSafeSocks 1\nDNSPort 5400\nLog debug syslog\nDataDirectory /data/data/org.torproject.android/data\n" |     		"SocksPort 9050\nSocksListenAddress 127.0.0.1\nSafeSocks 1\nDNSPort 5400\nLog debug syslog\nDataDirectory /data/data/org.torproject.android/cache\n" | ||||||
|     	+ "ControlPort 9051\nCookieAuthentication 1\nRelayBandwidthRate 20 KBytes\nRelayBandwidthBurst 20 KBytes\nAutomapHostsOnResolve 1\nTransPort 9040\n"; |     	+ "ControlPort 9051\nCookieAuthentication 1\nRelayBandwidthRate 20 KBytes\nRelayBandwidthBurst 20 KBytes\nAutomapHostsOnResolve 1\nTransPort 9040\n"; | ||||||
|     	 |     	 | ||||||
|     public final static String INTENT_TOR_SERVICE = "org.torproject.android.service.TOR_SERVICE"; |     public final static String INTENT_TOR_SERVICE = "org.torproject.android.service.TOR_SERVICE"; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,7 @@ | ||||||
| package org.torproject.android; | package org.torproject.android; | ||||||
| 
 | 
 | ||||||
|  | import android.graphics.drawable.Drawable; | ||||||
|  | 
 | ||||||
| public class TorifiedApp { | public class TorifiedApp { | ||||||
| 
 | 
 | ||||||
| 	private boolean enabled; | 	private boolean enabled; | ||||||
|  | @ -7,6 +9,7 @@ public class TorifiedApp { | ||||||
| 	private String username; | 	private String username; | ||||||
| 	private String procname; | 	private String procname; | ||||||
| 	private String name; | 	private String name; | ||||||
|  | 	private Drawable icon; | ||||||
| 	 | 	 | ||||||
| 	private boolean torified = false; | 	private boolean torified = false; | ||||||
| 	 | 	 | ||||||
|  | @ -97,4 +100,12 @@ public class TorifiedApp { | ||||||
| 		this.name = name; | 		this.name = name; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | 
 | ||||||
|  | 	public Drawable getIcon() { | ||||||
|  | 		return icon; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public void setIcon(Drawable icon) { | ||||||
|  | 		this.icon = icon; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -42,6 +42,8 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 	 | 	 | ||||||
| 	private static final int NOTIFY_ID = 1; | 	private static final int NOTIFY_ID = 1; | ||||||
| 	 | 	 | ||||||
|  | 	private static final int MAX_START_TRIES = 3; | ||||||
|  | 
 | ||||||
| 	 | 	 | ||||||
|     /** Called when the activity is first created. */ |     /** Called when the activity is first created. */ | ||||||
|     public void onCreate() { |     public void onCreate() { | ||||||
|  | @ -114,6 +116,7 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 		 | 		 | ||||||
| 		Log.i(TAG, "onUnbind Called: " + intent.getAction()); | 		Log.i(TAG, "onUnbind Called: " + intent.getAction()); | ||||||
| 		 | 		 | ||||||
|  | 		 | ||||||
| 		return super.onUnbind(intent); | 		return super.onUnbind(intent); | ||||||
| 		 | 		 | ||||||
| 		 | 		 | ||||||
|  | @ -169,20 +172,6 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 	public void onStart(Intent intent, int startId) { | 	public void onStart(Intent intent, int startId) { | ||||||
| 		super.onStart(intent, startId); | 		super.onStart(intent, startId); | ||||||
| 		 | 		 | ||||||
| 	    /* |  | ||||||
| 	     if (currentStatus == STATUS_ON && conn != null && webProxy != null) |  | ||||||
| 	     { |  | ||||||
| 	    	 //we are good to go |  | ||||||
| 		     Log.i(TAG,"onStart: Tor is running"); |  | ||||||
| 
 |  | ||||||
| 	     } |  | ||||||
| 	     else |  | ||||||
| 	     { |  | ||||||
| 		     Log.i(TAG,"onStart: Starting up Tor"); |  | ||||||
| 
 |  | ||||||
| 	    	 new Thread(this).start(); |  | ||||||
| 	     } |  | ||||||
| 	     */ |  | ||||||
| 	} | 	} | ||||||
| 	  | 	  | ||||||
| 	public void run () | 	public void run () | ||||||
|  | @ -324,6 +313,8 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 
 | 
 | ||||||
|     	Log.i(TAG, msg); |     	Log.i(TAG, msg); | ||||||
|     	 |     	 | ||||||
|  |     	sendCallbackMessage('>' + msg); | ||||||
|  | 		 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     private boolean checkTorBinaries () |     private boolean checkTorBinaries () | ||||||
|  | @ -386,14 +377,20 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
|     		 |     		 | ||||||
|     		checkTorBinaries (); |     		checkTorBinaries (); | ||||||
|     		 |     		 | ||||||
|  |     		 | ||||||
|  |     		 | ||||||
|     		new Thread() |     		new Thread() | ||||||
|     		{ |     		{ | ||||||
|     			public void run () |     			public void run () | ||||||
|     			{ |     			{ | ||||||
|     				try { |     				try { | ||||||
| 						runPrivoxyShellCmd(); |     		    		runPrivoxyShellCmd(); | ||||||
|  | 
 | ||||||
| 					} catch (Exception e) { | 					} catch (Exception e) { | ||||||
| 						Log.w(TAG,"Error starting Privoxy",e); | 						currentStatus = STATUS_OFF; | ||||||
|  | 				    	 Log.i(TAG,"Unable to start Privoxy: " + e.getMessage(),e); | ||||||
|  | 	    			    sendCallbackMessage("Unable to start Privoxy: " + e.getMessage()); | ||||||
|  | 
 | ||||||
| 					}  | 					}  | ||||||
|     			} |     			} | ||||||
|     		}.start(); |     		}.start(); | ||||||
|  | @ -403,10 +400,13 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
|     			public void run () |     			public void run () | ||||||
|     			{ |     			{ | ||||||
|     				try { |     				try { | ||||||
|     					runTorShellCmd(); |     		    		runTorShellCmd(); | ||||||
|  | 
 | ||||||
|     				} catch (Exception e) { |     				} catch (Exception e) { | ||||||
| 						Log.w(TAG,"Error starting Tor",e); |     			    	Log.i(TAG,"Unable to start Tor: " + e.getMessage(),e);	 | ||||||
| 					}  |     			    	sendCallbackMessage("Unable to start Tor: " + e.getMessage()); | ||||||
|  |     			    	stopTor(); | ||||||
|  |     			    }  | ||||||
|     			} |     			} | ||||||
|     		}.start(); |     		}.start(); | ||||||
|     		 |     		 | ||||||
|  | @ -425,54 +425,82 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 		Thread.sleep(1000); | 		Thread.sleep(1000); | ||||||
| 		int procId = TorServiceUtils.findProcessId(TorServiceConstants.TOR_BINARY_INSTALL_PATH); | 		int procId = TorServiceUtils.findProcessId(TorServiceConstants.TOR_BINARY_INSTALL_PATH); | ||||||
| 
 | 
 | ||||||
| 		while (procId == -1) | 		int attempts = 0; | ||||||
|  | 		 | ||||||
|  | 		while (procId == -1 && attempts < MAX_START_TRIES) | ||||||
| 		{ | 		{ | ||||||
| 			log = new StringBuilder(); | 			log = new StringBuilder(); | ||||||
| 			 | 			 | ||||||
|  | 			logNotice(torCmd[0]); | ||||||
|  | 			 | ||||||
| 			TorServiceUtils.doShellCommand(torCmd, log, false, false); | 			TorServiceUtils.doShellCommand(torCmd, log, false, false); | ||||||
| 			procId = TorServiceUtils.findProcessId(TorServiceConstants.TOR_BINARY_INSTALL_PATH); | 			procId = TorServiceUtils.findProcessId(TorServiceConstants.TOR_BINARY_INSTALL_PATH); | ||||||
| 			 | 			 | ||||||
| 			if (procId == -1) | 			if (procId == -1) | ||||||
| 			{ | 			{ | ||||||
| 				this.sendCallbackMessage("Couldn't start Tor process...\n" + log.toString()); | 				sendCallbackMessage("Couldn't start Tor process...\n" + log.toString()); | ||||||
| 				Thread.sleep(5000); | 				Thread.sleep(1000); | ||||||
|  | 				sendCallbackMessage("Trying to start Tor again...\n" + log.toString()); | ||||||
|  | 				Thread.sleep(3000); | ||||||
|  | 				attempts++; | ||||||
| 			} | 			} | ||||||
|  | 			 | ||||||
|  | 			logNotice(log.toString()); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		Log.i(TAG,"Tor process id=" + procId); | 		if (procId == -1) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception ("Unable to start Tor"); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
| 		 | 		 | ||||||
| 		showToolbarNotification("Orbot starting...", "Orbot is starting up", R.drawable.tornotification); | 			logNotice("Tor process id=" + procId); | ||||||
| 			 | 			 | ||||||
| 		initControlConnection (); | 			showToolbarNotification("Orbot starting...", "Tor is running", R.drawable.tornotification); | ||||||
|  | 			 | ||||||
|  | 			initControlConnection (); | ||||||
|  | 	    } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     private void runPrivoxyShellCmd () throws Exception |     private void runPrivoxyShellCmd () throws Exception | ||||||
|     { |     { | ||||||
| 			int privoxyProcId = TorServiceUtils.findProcessId(TorServiceConstants.PRIVOXY_INSTALL_PATH); | 			int privoxyProcId = TorServiceUtils.findProcessId(TorServiceConstants.PRIVOXY_INSTALL_PATH); | ||||||
| 
 | 
 | ||||||
| 			StringBuilder log = new StringBuilder(); | 			StringBuilder log = null; | ||||||
| 			 | 			 | ||||||
|     		while (privoxyProcId == -1) | 			int attempts = 0; | ||||||
|  | 			 | ||||||
|  |     		while (privoxyProcId == -1 && attempts < MAX_START_TRIES) | ||||||
|     		{ |     		{ | ||||||
|  |     			log = new StringBuilder(); | ||||||
|  |     			 | ||||||
|     			String[] cmds =  |     			String[] cmds =  | ||||||
|     			{ PRIVOXY_INSTALL_PATH + " " + PRIVOXY_COMMAND_LINE_ARGS }; |     			{ PRIVOXY_INSTALL_PATH + " " + PRIVOXY_COMMAND_LINE_ARGS }; | ||||||
|  |     			 | ||||||
|  |     			logNotice (cmds[0]); | ||||||
|  |     			 | ||||||
|     			TorServiceUtils.doShellCommand(cmds, log, false, true); |     			TorServiceUtils.doShellCommand(cmds, log, false, true); | ||||||
|  |     			 | ||||||
|  |     			//wait one second to make sure it has started up | ||||||
|     			Thread.sleep(1000); |     			Thread.sleep(1000); | ||||||
|     			 |     			 | ||||||
|     			privoxyProcId = TorServiceUtils.findProcessId(TorServiceConstants.PRIVOXY_INSTALL_PATH); |     			privoxyProcId = TorServiceUtils.findProcessId(TorServiceConstants.PRIVOXY_INSTALL_PATH); | ||||||
|     			 |     			 | ||||||
|     			 |  | ||||||
|     			if (privoxyProcId == -1) |     			if (privoxyProcId == -1) | ||||||
|     			{ |     			{ | ||||||
|     				this.sendCallbackMessage("Couldn't start Privoxy process... retrying...\n" + log); |     				this.sendCallbackMessage("Couldn't start Privoxy process... retrying...\n" + log); | ||||||
|     				Thread.sleep(3000); |     				Thread.sleep(3000); | ||||||
|  |     				attempts++; | ||||||
|     			} |     			} | ||||||
|  |     			 | ||||||
|  |     			logNotice(log.toString()); | ||||||
|     		} |     		} | ||||||
|     		 |     		 | ||||||
| 			sendCallbackMessage("Privoxy is running on port: " + PORT_HTTP); | 			sendCallbackMessage("Privoxy is running on port: " + PORT_HTTP); | ||||||
| 			Thread.sleep(100); | 			Thread.sleep(100); | ||||||
| 			 | 			 | ||||||
|     		Log.i(TAG,"Privoxy process id=" + privoxyProcId); |     		logNotice("Privoxy process id=" + privoxyProcId); | ||||||
| 			 | 			 | ||||||
|     		 |     		 | ||||||
|     		 |     		 | ||||||
|  | @ -668,21 +696,16 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 
 | 
 | ||||||
| 	public void message(String severity, String msg) { | 	public void message(String severity, String msg) { | ||||||
| 		 | 		 | ||||||
|               Log.i(TAG, "[Tor Control Port] " + severity + ": " + msg); |           Log.i(TAG, "[Tor Control Port] " + severity + ": " + msg); | ||||||
|            |            | ||||||
|               if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1) |           if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1) | ||||||
|               { |           { | ||||||
|             	  currentStatus = STATUS_ON; |         	  currentStatus = STATUS_ON; | ||||||
|             	  showToolbarNotification ("Orbot","Anonymous browsing is enabled",R.drawable.tornotification); |         	  showToolbarNotification ("Orbot","Tor is enabled",R.drawable.tornotification); | ||||||
|   			   |   			   | ||||||
|               } |           } | ||||||
|               else |  | ||||||
|               { |  | ||||||
|             	  showToolbarNotification("Orbot", msg, R.drawable.tornotification); |  | ||||||
|           |           | ||||||
|               } |           sendCallbackMessage (msg); | ||||||
|               |  | ||||||
|               sendCallbackMessage (msg); |  | ||||||
|               |               | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -694,29 +717,70 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 
 | 
 | ||||||
| 	public void orConnStatus(String status, String orName) { | 	public void orConnStatus(String status, String orName) { | ||||||
| 		 | 		 | ||||||
| 		Log.i(TAG,"OrConnStatus=" + status + ": " + orName); | 		StringBuilder sb = new StringBuilder(); | ||||||
| 	 | 		sb.append("orConnStatus ("); | ||||||
|  | 		sb.append((orName) ); | ||||||
|  | 		sb.append("): "); | ||||||
|  | 		sb.append(status); | ||||||
| 		 | 		 | ||||||
|  | 		logNotice(sb.toString()); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	public void streamStatus(String status, String streamID, String target) { | 	public void streamStatus(String status, String streamID, String target) { | ||||||
| 		Log.i(TAG,"StreamStatus=" + status + ": " + streamID); | 		 | ||||||
|  | 		StringBuilder sb = new StringBuilder(); | ||||||
|  | 		sb.append("StreamStatus ("); | ||||||
|  | 		sb.append((streamID)); | ||||||
|  | 		sb.append("): "); | ||||||
|  | 		sb.append(status); | ||||||
|  | 		 | ||||||
|  | 		logNotice(sb.toString()); | ||||||
|  | 
 | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	public void unrecognized(String type, String msg) { | 	public void unrecognized(String type, String msg) { | ||||||
| 		Log.i(TAG,"unrecognized log=" + type + ": " + msg); | 		 | ||||||
|  | 		StringBuilder sb = new StringBuilder(); | ||||||
|  | 		sb.append("Message ("); | ||||||
|  | 		sb.append(type); | ||||||
|  | 		sb.append("): "); | ||||||
|  | 		sb.append(msg); | ||||||
|  | 		 | ||||||
|  | 		logNotice(sb.toString()); | ||||||
|  | 
 | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public void bandwidthUsed(long read, long written) { | 	public void bandwidthUsed(long read, long written) { | ||||||
|  | 		sendCallbackMessage ("bandwidth used: read=" + read + " written=" + written); | ||||||
|  | 		 | ||||||
|  | 		StringBuilder sb = new StringBuilder(); | ||||||
|  | 		sb.append("Bandwidth used: "); | ||||||
|  | 		sb.append(read/1000); | ||||||
|  | 		sb.append("kb read / "); | ||||||
|  | 		sb.append(written/1000); | ||||||
|  | 		sb.append("kb written"); | ||||||
|  | 		 | ||||||
|  | 		logNotice(sb.toString()); | ||||||
| 
 | 
 | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public void circuitStatus(String status, String circID, String path) { | 	public void circuitStatus(String status, String circID, String path) { | ||||||
| 		 | 		 | ||||||
|  | 		StringBuilder sb = new StringBuilder(); | ||||||
|  | 		sb.append("Circuit ("); | ||||||
|  | 		sb.append((circID)); | ||||||
|  | 		sb.append("): "); | ||||||
|  | 		sb.append(status); | ||||||
|  | 		sb.append("; "); | ||||||
|  | 		sb.append(path); | ||||||
|  | 		 | ||||||
|  | 		logNotice(sb.toString()); | ||||||
|  | 
 | ||||||
|  | 		 | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|     public IBinder onBind(Intent intent) { |     public IBinder onBind(Intent intent) { | ||||||
|  | @ -786,6 +850,8 @@ public class TorService extends Service implements TorServiceConstants, Runnable | ||||||
| 		        for (int i=0; i<N; i++) { | 		        for (int i=0; i<N; i++) { | ||||||
| 		            try { | 		            try { | ||||||
| 		                mCallbacks.getBroadcastItem(i).statusChanged(status); | 		                mCallbacks.getBroadcastItem(i).statusChanged(status); | ||||||
|  | 		                 | ||||||
|  | 		                 | ||||||
| 		            } catch (RemoteException e) { | 		            } catch (RemoteException e) { | ||||||
| 		                // The RemoteCallbackList will take care of removing | 		                // The RemoteCallbackList will take care of removing | ||||||
| 		                // the dead object for us. | 		                // the dead object for us. | ||||||
|  |  | ||||||
|  | @ -46,6 +46,8 @@ public interface TorServiceConstants { | ||||||
| 	public final static String SHELL_CMD_KILL = "kill"; | 	public final static String SHELL_CMD_KILL = "kill"; | ||||||
| 	public final static String SHELL_CMD_RM = "rm"; | 	public final static String SHELL_CMD_RM = "rm"; | ||||||
| 	public final static String SHELL_CMD_PS = "ps"; | 	public final static String SHELL_CMD_PS = "ps"; | ||||||
|  | 	public final static String SHELL_CMD_PIDOF = "pidof"; | ||||||
|  | 
 | ||||||
| 	public final static String CHMOD_EXE_VALUE = "777"; | 	public final static String CHMOD_EXE_VALUE = "777"; | ||||||
| 	 | 	 | ||||||
| 	//path of the installed APK file | 	//path of the installed APK file | ||||||
|  |  | ||||||
|  | @ -112,7 +112,34 @@ public class TorServiceUtils implements TorServiceConstants { | ||||||
| 	 | 	 | ||||||
| 	public static int findProcessId(String command)  | 	public static int findProcessId(String command)  | ||||||
| 	{ | 	{ | ||||||
| 		Log.i(TAG, "finding process id for: " + command); | 		int procId = -1; | ||||||
|  | 		 | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			procId = findProcessIdWithPidOf(command); | ||||||
|  | 			 | ||||||
|  | 			if (procId == -1) | ||||||
|  | 				procId = findProcessIdWithPS(command); | ||||||
|  | 		} | ||||||
|  | 		catch (Exception e) | ||||||
|  | 		{ | ||||||
|  | 			try | ||||||
|  | 			{ | ||||||
|  | 				procId = findProcessIdWithPS(command); | ||||||
|  | 
 | ||||||
|  | 			} | ||||||
|  | 			catch (Exception e2) | ||||||
|  | 			{ | ||||||
|  | 				Log.w(TAG,"Unable to get proc id for: " + command,e2); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return procId; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	//use 'pidof' command | ||||||
|  | 	public static int findProcessIdWithPidOf(String command) throws Exception | ||||||
|  | 	{ | ||||||
| 		 | 		 | ||||||
| 		int procId = -1; | 		int procId = -1; | ||||||
| 		 | 		 | ||||||
|  | @ -120,31 +147,61 @@ public class TorServiceUtils implements TorServiceConstants { | ||||||
| 		    	 | 		    	 | ||||||
| 		Process procPs = null; | 		Process procPs = null; | ||||||
| 		 | 		 | ||||||
|         try { |         procPs = r.exec(SHELL_CMD_PIDOF); | ||||||
|              |              | ||||||
|             procPs = r.exec(SHELL_CMD_PS); |         BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream())); | ||||||
|  |         String line = null; | ||||||
|          |          | ||||||
|             BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream())); |  | ||||||
|             String line = null; |  | ||||||
| 
 | 
 | ||||||
|             while ((line = reader.readLine())!=null) |         while ((line = reader.readLine())!=null) | ||||||
|             { |         { | ||||||
|             	if (line.indexOf(command)!=-1) |         	if (line.indexOf(command)!=-1) | ||||||
|             	{ |         	{ | ||||||
| 
 | 
 | ||||||
|             		StringTokenizer st = new StringTokenizer(line," "); |         		//this line should just be the process id | ||||||
|             		st.nextToken(); //proc owner |         		procId = Integer.parseInt(line.trim()); | ||||||
| 
 | 
 | ||||||
|             		procId = Integer.parseInt(st.nextToken().trim()); |  | ||||||
|         		 |         		 | ||||||
|             		break; |         		break; | ||||||
|             	} |         	} | ||||||
|             } |  | ||||||
|              |  | ||||||
|         } catch (Exception e) { |  | ||||||
|             Log.e(TAG, "error: " + e.getMessage(), e); |  | ||||||
|         } |         } | ||||||
|              |              | ||||||
|  |         | ||||||
|  |         return procId; | ||||||
|  | 
 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	//use 'ps' command | ||||||
|  | 	public static int findProcessIdWithPS(String command) throws Exception | ||||||
|  | 	{ | ||||||
|  | 		 | ||||||
|  | 		int procId = -1; | ||||||
|  | 		 | ||||||
|  | 		Runtime r = Runtime.getRuntime(); | ||||||
|  | 		    	 | ||||||
|  | 		Process procPs = null; | ||||||
|  | 		 | ||||||
|  |         procPs = r.exec(SHELL_CMD_PS); | ||||||
|  |              | ||||||
|  |         BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream())); | ||||||
|  |         String line = null; | ||||||
|  |          | ||||||
|  |         while ((line = reader.readLine())!=null) | ||||||
|  |         { | ||||||
|  |         	if (line.indexOf(command)!=-1) | ||||||
|  |         	{ | ||||||
|  |         		 | ||||||
|  |         		StringTokenizer st = new StringTokenizer(line," "); | ||||||
|  |         		st.nextToken(); //proc owner | ||||||
|  |         		 | ||||||
|  |         		procId = Integer.parseInt(st.nextToken().trim()); | ||||||
|  |         		 | ||||||
|  |         		break; | ||||||
|  |         	} | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         | ||||||
|  |          | ||||||
|         return procId; |         return procId; | ||||||
| 
 | 
 | ||||||
| 	} | 	} | ||||||
|  | @ -174,6 +231,7 @@ public class TorServiceUtils implements TorServiceConstants { | ||||||
|         	else |         	else | ||||||
|         		proc = Runtime.getRuntime().exec("sh"); |         		proc = Runtime.getRuntime().exec("sh"); | ||||||
|         	 |         	 | ||||||
|  |         	 | ||||||
|         	OutputStreamWriter out = new OutputStreamWriter(proc.getOutputStream()); |         	OutputStreamWriter out = new OutputStreamWriter(proc.getOutputStream()); | ||||||
|              |              | ||||||
|             for (int i = 0; i < cmds.length; i++) |             for (int i = 0; i < cmds.length; i++) | ||||||
|  | @ -190,15 +248,19 @@ public class TorServiceUtils implements TorServiceConstants { | ||||||
| 			{ | 			{ | ||||||
| 				 | 				 | ||||||
| 				exitCode = proc.waitFor(); | 				exitCode = proc.waitFor(); | ||||||
| 				 | 				log.append("process exit code: "); | ||||||
|  | 				log.append(exitCode); | ||||||
|  | 				log.append("\n"); | ||||||
| 				 | 				 | ||||||
| 				final char buf[] = new char[10]; | 				final char buf[] = new char[10]; | ||||||
|  | 				 | ||||||
| 				// Consume the "stdout" | 				// Consume the "stdout" | ||||||
| 				InputStreamReader reader = new InputStreamReader(proc.getInputStream()); | 				InputStreamReader reader = new InputStreamReader(proc.getInputStream()); | ||||||
| 				int read=0; | 				int read=0; | ||||||
| 				while ((read=reader.read(buf)) != -1) { | 				while ((read=reader.read(buf)) != -1) { | ||||||
| 					if (log != null) log.append(buf, 0, read); | 					if (log != null) log.append(buf, 0, read); | ||||||
| 				} | 				} | ||||||
|  | 				 | ||||||
| 				// Consume the "stderr" | 				// Consume the "stderr" | ||||||
| 				reader = new InputStreamReader(proc.getErrorStream()); | 				reader = new InputStreamReader(proc.getErrorStream()); | ||||||
| 				read=0; | 				read=0; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue