[or-cvs] r23154: {projects} alpha-1.0.3 RC1: cleaned up unnecessary log output; improved (in projects/android/trunk/Orbot: . assets res res/layout res/values src/org/torproject/android src/org/torproject/android/net src/org/torproject/android/service)
Nathan Freitas
nathan at freitas.net
Thu Sep 9 20:39:52 UTC 2010
Author: n8fr8
Date: 2010-09-09 20:39:52 +0000 (Thu, 09 Sep 2010)
New Revision: 23154
Removed:
projects/android/trunk/Orbot/res/xml-es/
Modified:
projects/android/trunk/Orbot/AndroidManifest.xml
projects/android/trunk/Orbot/CHANGELOG
projects/android/trunk/Orbot/assets/torrc
projects/android/trunk/Orbot/res/layout/layout_log.xml
projects/android/trunk/Orbot/res/values/strings.xml
projects/android/trunk/Orbot/src/org/torproject/android/AppManager.java
projects/android/trunk/Orbot/src/org/torproject/android/Orbot.java
projects/android/trunk/Orbot/src/org/torproject/android/SettingsPreferences.java
projects/android/trunk/Orbot/src/org/torproject/android/Utils.java
projects/android/trunk/Orbot/src/org/torproject/android/net/ModSSLSocketFactory.java
projects/android/trunk/Orbot/src/org/torproject/android/net/SocksClient.java
projects/android/trunk/Orbot/src/org/torproject/android/net/SocksSocketFactory.java
projects/android/trunk/Orbot/src/org/torproject/android/service/TorBinaryInstaller.java
projects/android/trunk/Orbot/src/org/torproject/android/service/TorService.java
projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceConstants.java
projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceUtils.java
projects/android/trunk/Orbot/src/org/torproject/android/service/TorTransProxy.java
Log:
alpha-1.0.3 RC1: cleaned up unnecessary log output; improved iptables handling for transproxy
Modified: projects/android/trunk/Orbot/AndroidManifest.xml
===================================================================
--- projects/android/trunk/Orbot/AndroidManifest.xml 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/AndroidManifest.xml 2010-09-09 20:39:52 UTC (rev 23154)
@@ -1,15 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.torproject.android" android:versionName="0.2.2.14-orbot-alpha-1.0.2" android:versionCode="8">
+ package="org.torproject.android" android:versionName="0.2.2.14-orbot-alpha-1.0.3" android:versionCode="9">
<uses-permission android:name="android.permission.INTERNET" />
- <application android:icon="@drawable/icon" android:label="@string/app_name">
+ <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<activity android:name=".Orbot"
- android:theme="@android:style/Theme.NoTitleBar"
- >
+ android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -34,7 +33,8 @@
<activity android:name=".AppManager" android:label="@string/app_name"/>
<activity android:name=".WizardActivity" android:label="@string/app_name"/>
- <service android:name=".service.TorService" android:process=":remote">
+ <!-- <service android:name=".service.TorService" android:process=":remote"> -->
+ <service android:name=".service.TorService">
<intent-filter>
<action android:name="org.torproject.android.service.ITorService" />
<action android:name="org.torproject.android.service.TOR_SERVICE" />
Modified: projects/android/trunk/Orbot/CHANGELOG
===================================================================
--- projects/android/trunk/Orbot/CHANGELOG 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/CHANGELOG 2010-09-09 20:39:52 UTC (rev 23154)
@@ -1,5 +1,18 @@
NOTE: Specific #s below correspond to Trac tickets logged and maintained at https://trac.torproject.org/projects/tor/
+1.0.3
+- fixed spanish language issues with settings screen
+- cleaned up logging, and moved most of it to debug output only
+- small changes to iptables, transproxy settings to handle iptables 1.3 and 1.4 variations
+
+1.0.2
+- added "check" yes/no dialog prompt
+- debugged iptables/transprox settings on Android 1.6 and 2.2
+- added proxy settings help screen and fixed processSettings() NPE
+
+1.0.1
+- found and fixed major bug in per-app trans proxying; list of apps was being cached and iptables rules were not properly updated as the user changed the selection in the list
+
1.0.0 - 2010-08-10
- Added "Proxy Settings" help screen
- Handle potential null pointers on process settings where service not yet active
Modified: projects/android/trunk/Orbot/assets/torrc
===================================================================
--- projects/android/trunk/Orbot/assets/torrc 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/assets/torrc 2010-09-09 20:39:52 UTC (rev 23154)
@@ -2,7 +2,6 @@
SocksListenAddress 127.0.0.1
SafeSocks 1
Log notice stdout
-##Log debug syslog
DataDirectory /data/data/org.torproject.android/data
ControlPort 9051
CookieAuthentication 1
Modified: projects/android/trunk/Orbot/res/layout/layout_log.xml
===================================================================
--- projects/android/trunk/Orbot/res/layout/layout_log.xml 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/res/layout/layout_log.xml 2010-09-09 20:39:52 UTC (rev 23154)
@@ -32,8 +32,9 @@
android:layout_toLeftOf="@+id/radioModeImage"
android:textColor="#333333" />
</RelativeLayout>
+
<ScrollView android:orientation="vertical"
- android:layout_height="fill_parent"
+ android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/logScrollView"
xmlns:android="http://schemas.android.com/apk/res/android">
@@ -45,8 +46,8 @@
android:textSize="12px"
android:background="#A0222222"
/>
-
- </ScrollView>
+ </ScrollView>
+
</LinearLayout>
\ No newline at end of file
Modified: projects/android/trunk/Orbot/res/values/strings.xml
===================================================================
--- projects/android/trunk/Orbot/res/values/strings.xml 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/res/values/strings.xml 2010-09-09 20:39:52 UTC (rev 23154)
@@ -35,6 +35,9 @@
<string name="button_close">Close</string>
<string name="button_about">About</string>
+<string name="button_clear_log">Clear Log</string>
+
+
<string name="help_text_1">Orbot requires different configuration depending on the Android operating system version it is used on.
Please visit https://www.torproject.org/docs/android.html for the latest information.</string>
Modified: projects/android/trunk/Orbot/src/org/torproject/android/AppManager.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/AppManager.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/AppManager.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -140,7 +140,7 @@
protected void onStop() {
super.onStop();
- //Log.i(getClass().getName(),"Exiting Preferences");
+ //Log.d(getClass().getName(),"Exiting Preferences");
}
Modified: projects/android/trunk/Orbot/src/org/torproject/android/Orbot.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/Orbot.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/Orbot.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -306,8 +306,7 @@
setResult(RESULT_OK, nResult);
} catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ Log.e(TAG, "error accessing hidden service", e);
}
@@ -478,6 +477,7 @@
txtMessageLog.setClickable(true);
txtMessageLog.setText(logBuffer.toString());
+
}
@@ -684,7 +684,7 @@
String onionHostname = Utils.readString(new FileInputStream(file));
return onionHostname.trim();
} catch (FileNotFoundException e) {
- Log.i(TAG, "unable to read onion hostname file",e);
+ Log.d(TAG, "unable to read onion hostname file",e);
return null;
}
}
@@ -820,6 +820,7 @@
Message msg = mHandler.obtainMessage(ENABLE_TOR_MSG);
mHandler.sendMessage(msg);
+ logBuffer = new StringBuffer();
}
private void stopTor () throws RemoteException
@@ -862,7 +863,7 @@
}
catch (Exception e)
{
- Log.i(TAG,"error onclick",e);
+ Log.d(TAG,"error onclick",e);
}
return super.onTouchEvent(event);
@@ -900,7 +901,7 @@
}
catch (Exception e)
{
- Log.i(TAG,"error onclick",e);
+ Log.d(TAG,"error onclick",e);
}
// }
@@ -954,7 +955,7 @@
logBuffer.append('\n');
- if (torServiceMsg.length() > 0 && torServiceMsg.charAt(0)!='>')
+ if (torServiceMsg.length() > 0)
updateStatus(torServiceMsg);
break;
@@ -965,6 +966,10 @@
logBuffer.append(torLogMsg);
logBuffer.append('\n');
+ if (txtMessageLog != null)
+ {
+ txtMessageLog.append(torLogMsg + '\n');
+ }
break;
case ENABLE_TOR_MSG:
@@ -1017,7 +1022,7 @@
// do anything with it; we can count on soon being
// disconnected (and then reconnected if it can be restarted)
// so there is no need to do anything here.
- Log.i(TAG,"error registering callback to service",e);
+ Log.d(TAG,"error registering callback to service",e);
}
Modified: projects/android/trunk/Orbot/src/org/torproject/android/SettingsPreferences.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/SettingsPreferences.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/SettingsPreferences.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -78,7 +78,7 @@
protected void onStop() {
super.onStop();
- //Log.i(getClass().getName(),"Exiting Preferences");
+ //Log.d(getClass().getName(),"Exiting Preferences");
}
@Override
Modified: projects/android/trunk/Orbot/src/org/torproject/android/Utils.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/Utils.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/Utils.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -84,7 +84,7 @@
return true;
} catch (IOException e) {
- // Log.i(TAG, "error writing file: " + path, e);
+ // Log.d(TAG, "error writing file: " + path, e);
e.printStackTrace();
return false;
}
Modified: projects/android/trunk/Orbot/src/org/torproject/android/net/ModSSLSocketFactory.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/net/ModSSLSocketFactory.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/net/ModSSLSocketFactory.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -60,10 +60,8 @@
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
-import android.util.Log;
-
/**
* Layered socket factory for TLS/SSL connections, based on JSSE.
*.
@@ -255,8 +253,6 @@
this.socketfactory = SSLSocketFactory.getSocketFactory();
//this.nameResolver = null;
- //Log.i("TOR_SERVICE","ModSSLSocketFactory: proxied via " + host + ":" + port);
-
this.mSocksSocketFactory = new SocksSocketFactory("127.0.0.1",9050);
}
@@ -325,16 +321,11 @@
}*/
- Log.i("TOR_SERVICE","connecting socks factory");
Socket sSocket = mSocksSocketFactory.connectSocket(underlying, host, port, localAddress, localPort, params);
- Log.i("TOR_SERVICE","creating SSL Socket");
// SSLSocket sslsock = (SSLSocket) socketfactory.connectSocket(sSocket, host, port, localAddress, localPort, params);
SSLSocket sslsock = (SSLSocket)socketfactory.createSocket(sSocket, host, port, true);
-
- Log.i("TOR_SERVICE","created SSL Socket!");
-
if ((localAddress != null) || (localPort > 0)) {
// we need to bind explicitly
@@ -343,8 +334,6 @@
InetSocketAddress isa =
new InetSocketAddress(localAddress, localPort);
-
- Log.i("TOR_SERVICE","binding SSL Socket!");
sslsock.bind(isa);
}
Modified: projects/android/trunk/Orbot/src/org/torproject/android/net/SocksClient.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/net/SocksClient.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/net/SocksClient.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -47,9 +47,9 @@
ss = new SocksSocket(host, port);
out = ss.getOutputStream();
in = ss.getInputStream();
- Log.i(getClass().getName(),"Connected...");
- Log.i(getClass().getName(),"TO: "+host+":"+port);
- Log.i(getClass().getName(),"ViaProxy: "+ss.getLocalAddress().getHostAddress()
+ Log.d(getClass().getName(),"Connected...");
+ Log.d(getClass().getName(),"TO: "+host+":"+port);
+ Log.d(getClass().getName(),"ViaProxy: "+ss.getLocalAddress().getHostAddress()
+":"+ss.getLocalPort());
}
Modified: projects/android/trunk/Orbot/src/org/torproject/android/net/SocksSocketFactory.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/net/SocksSocketFactory.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/net/SocksSocketFactory.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -65,7 +65,7 @@
sProxy = new Socks5Proxy(proxyaddress, proxyport);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
- Log.i("TOR_SERVICE","SocksSF couldn't connect",e);
+ Log.d("TOR_SERVICE","SocksSF couldn't connect",e);
}
sProxy.resolveAddrLocally(false);
@@ -77,7 +77,7 @@
InetAddress localAddress, int localPort, HttpParams params) throws IOException,
UnknownHostException, ConnectTimeoutException {
- Log.i("TOR_SERVICE","SocksSocketFactory: connectSocket: " + host + ":" + port);
+ Log.d("TOR_SERVICE","SocksSocketFactory: connectSocket: " + host + ":" + port);
if (host == null) {
throw new IllegalArgumentException("Target host may not be null.");
Modified: projects/android/trunk/Orbot/src/org/torproject/android/service/TorBinaryInstaller.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/service/TorBinaryInstaller.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/service/TorBinaryInstaller.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -33,10 +33,10 @@
{
boolean torBinaryExists = new File(installPath + TOR_BINARY_ASSET_KEY).exists();
- Log.i(TAG,"Tor binary exists=" + torBinaryExists);
+ Log.d(TAG,"Tor binary exists=" + torBinaryExists);
boolean privoxyBinaryExists = new File(installPath + PRIVOXY_ASSET_KEY).exists();
- Log.i(TAG,"Privoxy binary exists=" + privoxyBinaryExists);
+ Log.d(TAG,"Privoxy binary exists=" + privoxyBinaryExists);
if (!(torBinaryExists && privoxyBinaryExists) || force)
installFromZip ();
@@ -72,12 +72,12 @@
zip.close();
- Log.i(TAG,"SUCCESS: unzipped tor, privoxy, iptables binaries from apk");
+ Log.d(TAG,"SUCCESS: unzipped tor, privoxy, iptables binaries from apk");
}
catch (IOException ioe)
{
- Log.i(TAG,"FAIL: unable to unzip binaries from apk",ioe);
+ Log.d(TAG,"FAIL: unable to unzip binaries from apk",ioe);
}
}
@@ -108,7 +108,7 @@
{
- Log.i(TAG,"Error opening output file " + targetFilename,e);
+ Log.d(TAG,"Error opening output file " + targetFilename,e);
return;
}
@@ -135,7 +135,7 @@
{
- Log.i(TAG,"Error writing output file '" + targetFilename + "': " + e.toString());
+ Log.d(TAG,"Error writing output file '" + targetFilename + "': " + e.toString());
return;
Modified: projects/android/trunk/Orbot/src/org/torproject/android/service/TorService.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/service/TorService.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/service/TorService.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -51,6 +51,7 @@
private ArrayList<String> configBuffer = null;
+ private boolean isBound = false;
private String appHome = null;
private String torBinaryPath = null;
@@ -60,7 +61,7 @@
public void onCreate() {
super.onCreate();
- Log.i(TAG,"TorService: onCreate");
+ Log.d(TAG,"TorService: onCreate");
}
@@ -72,9 +73,9 @@
if (procId != -1)
{
- Log.i(TAG,"Found existing Tor process");
+ Log.d(TAG,"Found existing Tor process");
- sendCallbackMessage ("found existing Tor process...");
+ sendCallbackLogMessage ("found existing Tor process...");
try {
currentStatus = STATUS_CONNECTING;
@@ -87,12 +88,12 @@
return true;
} catch (RuntimeException e) {
- Log.i(TAG,"Unable to connect to existing Tor instance,",e);
+ Log.d(TAG,"Unable to connect to existing Tor instance,",e);
currentStatus = STATUS_OFF;
this.stopTor();
} catch (Exception e) {
- Log.i(TAG,"Unable to connect to existing Tor instance,",e);
+ Log.d(TAG,"Unable to connect to existing Tor instance,",e);
currentStatus = STATUS_OFF;
this.stopTor();
@@ -110,7 +111,7 @@
public void onLowMemory() {
super.onLowMemory();
- Log.i(TAG, "Low Memory Called");
+ Log.d(TAG, "Low Memory Called");
}
@@ -120,8 +121,9 @@
*/
public boolean onUnbind(Intent intent) {
- Log.i(TAG, "onUnbind Called: " + intent.getAction());
+ Log.d(TAG, "onUnbind Called: " + intent.getAction());
+ isBound = false;
return super.onUnbind(intent);
@@ -138,6 +140,7 @@
private void showToolbarNotification (String notifyMsg, int icon)
{
+
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
@@ -168,7 +171,8 @@
public void onRebind(Intent intent) {
super.onRebind(intent);
- Log.i(TAG,"on rebind");
+ isBound = true;
+
}
@@ -196,7 +200,7 @@
{
currentStatus = STATUS_OFF;
this.showToolbarNotification(getString(R.string.status_disabled), R.drawable.tornotification);
- Log.i(TAG,"Unable to start Tor: " + e.getMessage(),e);
+ Log.d(TAG,"Unable to start Tor: " + e.getMessage(),e);
}
}
}
@@ -210,7 +214,7 @@
mCallbacks.kill();
- Log.i(TAG,"onDestroy called");
+ Log.d(TAG,"onDestroy called");
stopTor();
}
@@ -220,7 +224,7 @@
currentStatus = STATUS_OFF;
- sendCallbackMessage("Web proxy shutdown");
+ sendCallbackLogMessage("Web proxy shutdown");
try
{
@@ -230,15 +234,15 @@
showToolbarNotification (getString(R.string.status_disabled),R.drawable.tornotificationoff);
- sendCallbackMessage(getString(R.string.status_disabled));
+ sendCallbackStatusMessage(getString(R.string.status_disabled));
setupTransProxy(false);
}
catch (Exception e)
{
- Log.i(TAG, "An error occured stopping Tor",e);
+ Log.d(TAG, "An error occured stopping Tor",e);
logNotice("An error occured stopping Tor: " + e.getMessage());
- sendCallbackMessage("Something bad happened. Check the log");
+ sendCallbackStatusMessage("Something bad happened. Check the log");
}
}
@@ -262,7 +266,7 @@
}
catch (Exception e)
{
- Log.i(TAG,"Unable to reload configuration",e);
+ Log.d(TAG,"Unable to reload configuration",e);
}
}
@@ -276,7 +280,7 @@
// conn.shutdownTor(arg0)
conn.signal("SHUTDOWN");
} catch (Exception e) {
- Log.i(TAG,"error shutting down Tor via connection",e);
+ Log.d(TAG,"error shutting down Tor via connection",e);
}
conn = null;
}
@@ -301,7 +305,7 @@
while (procId != -1)
{
- Log.i(TAG,"Found Privoxy PID=" + procId + " - killing now...");
+ Log.d(TAG,"Found Privoxy PID=" + procId + " - killing now...");
String[] cmd = { SHELL_CMD_KILL + ' ' + procId + "" };
TorServiceUtils.doShellCommand(cmd,log, false, false);
@@ -314,9 +318,9 @@
private void logNotice (String msg)
{
- Log.i(TAG, msg);
+ Log.d(TAG, msg);
- sendCallbackMessage('>' + msg);
+ sendCallbackLogMessage(msg);
}
@@ -330,7 +334,7 @@
int MAX_TRIES = 10;
String buildPath = apkBase + TOR_APP_USERNAME + APK_EXT;
- Log.i(TAG, "Checking APK location: " + buildPath);
+ Log.d(TAG, "Checking APK location: " + buildPath);
File fileApk = new File(buildPath);
@@ -342,7 +346,7 @@
buildPath = apkBase + TOR_APP_USERNAME + '-' + i + APK_EXT;
fileApk = new File(buildPath);
- Log.i(TAG, "Checking APK location: " + buildPath);
+ Log.d(TAG, "Checking APK location: " + buildPath);
if (fileApk.exists())
return fileApk.getAbsolutePath();
@@ -354,7 +358,7 @@
buildPath = apkBaseExt + pkgFile;
fileApk = new File(buildPath);
- Log.i(TAG, "Checking external storage APK location: " + buildPath);
+ Log.d(TAG, "Checking external storage APK location: " + buildPath);
if (fileApk.exists())
return fileApk.getAbsolutePath();
@@ -364,7 +368,7 @@
buildPath = apkBaseExt + '-' + i + pkgFile;
fileApk = new File(buildPath);
- Log.i(TAG, "Checking external storage APK location: " + buildPath);
+ Log.d(TAG, "Checking external storage APK location: " + buildPath);
if (fileApk.exists())
return fileApk.getAbsolutePath();
@@ -376,19 +380,18 @@
private boolean checkTorBinaries () throws Exception
{
- //android.os.Debug.waitForDebugger();
- Log.i(TAG,"checking Tor binaries");
+ Log.d(TAG,"checking Tor binaries");
//appHome = getApplicationContext().getFilesDir().getAbsolutePath();
appHome = "/data/data/" + TOR_APP_USERNAME + "/";
- Log.i(TAG,"appHome=" + appHome);
+ Log.d(TAG,"appHome=" + appHome);
String apkPath = findAPK();
- Log.i(TAG,"found apk at: " + apkPath);
+ Log.d(TAG,"found apk at: " + apkPath);
boolean apkExists = new File(apkPath).exists();
@@ -427,7 +430,7 @@
logNotice(getString(R.string.status_install_fail));
- sendCallbackMessage(getString(R.string.status_install_fail));
+ sendCallbackStatusMessage(getString(R.string.status_install_fail));
return false;
}
@@ -458,16 +461,13 @@
public void initTor () throws Exception
{
- // android.os.Debug.waitForDebugger();
-
-
currentStatus = STATUS_CONNECTING;
logNotice(getString(R.string.status_starting_up));
- sendCallbackMessage(getString(R.string.status_starting_up));
+ sendCallbackStatusMessage(getString(R.string.status_starting_up));
killTorProcess ();
@@ -484,8 +484,8 @@
} catch (Exception e) {
currentStatus = STATUS_OFF;
- Log.i(TAG,"Unable to start Privoxy: " + e.getMessage(),e);
- sendCallbackMessage("Unable to start Privoxy: " + e.getMessage());
+ Log.d(TAG,"Unable to start Privoxy: " + e.getMessage(),e);
+ sendCallbackLogMessage("Unable to start Privoxy: " + e.getMessage());
}
}
@@ -501,8 +501,8 @@
setupTransProxy(true);
} catch (Exception e) {
- Log.i(TAG,"Unable to start Tor: " + e.getMessage(),e);
- sendCallbackMessage("Unable to start Tor: " + e.getMessage());
+ Log.d(TAG,"Unable to start Tor: " + e.getMessage(),e);
+ sendCallbackStatusMessage("Unable to start Tor: " + e.getMessage());
stopTor();
}
}
@@ -513,15 +513,18 @@
private void runTorShellCmd() throws Exception
{
+
+
StringBuilder log = new StringBuilder();
- Log.i(TAG,"Starting tor process");
String torrcPath = appHome + TORRC_ASSET_KEY;
String[] torCmd = {torBinaryPath + " -f " + torrcPath + " || exit\n"};
TorServiceUtils.doShellCommand(torCmd, log, false, false);
+ Log.d(TAG,"Starting tor process: " + torCmd[0]);
+
Thread.sleep(1000);
int procId = TorServiceUtils.findProcessId(torBinaryPath);
@@ -538,9 +541,9 @@
if (procId == -1)
{
- sendCallbackMessage("Couldn't start Tor process...\n" + log.toString());
+ sendCallbackStatusMessage("Couldn't start Tor process...\n" + log.toString());
Thread.sleep(1000);
- sendCallbackMessage(getString(R.string.status_starting_up));
+ sendCallbackStatusMessage(getString(R.string.status_starting_up));
Thread.sleep(3000);
attempts++;
}
@@ -566,7 +569,7 @@
private void runPrivoxyShellCmd () throws Exception
{
- Log.i(TAG,"Starting privoxy process");
+ Log.d(TAG,"Starting privoxy process");
int privoxyProcId = TorServiceUtils.findProcessId(privoxyPath);
@@ -602,7 +605,7 @@
logNotice(log.toString());
}
- sendCallbackMessage("Privoxy is running on port: " + PORT_HTTP);
+ sendCallbackLogMessage("Privoxy is running on port: " + PORT_HTTP);
Thread.sleep(100);
logNotice("Privoxy process id=" + privoxyProcId);
@@ -628,18 +631,18 @@
{
try
{
- Log.i(TAG,"Connecting to control port: " + TOR_CONTROL_PORT);
+ Log.d(TAG,"Connecting to control port: " + TOR_CONTROL_PORT);
String baseMessage = getString(R.string.tor_process_connecting);
- sendCallbackMessage(baseMessage);
+ sendCallbackStatusMessage(baseMessage);
Socket s = new Socket(IP_LOCALHOST, TOR_CONTROL_PORT);
conn = TorControlConnection.getConnection(s);
// conn.authenticate(new byte[0]); // See section 3.2
- sendCallbackMessage(getString(R.string.tor_process_connecting_step2));
+ sendCallbackStatusMessage(getString(R.string.tor_process_connecting_step2));
- Log.i(TAG,"SUCCESS connected to control port");
+ Log.d(TAG,"SUCCESS connected to control port");
String torAuthCookie = appHome + "data/control_auth_cookie";
@@ -648,9 +651,9 @@
new FileInputStream(new File(torAuthCookie)).read(cookie);
conn.authenticate(cookie);
- Log.i(TAG,"SUCCESS authenticated to control port");
+ Log.d(TAG,"SUCCESS authenticated to control port");
- sendCallbackMessage(getString(R.string.tor_process_connecting_step2) + getString(R.string.tor_process_connecting_step3));
+ sendCallbackStatusMessage(getString(R.string.tor_process_connecting_step2) + getString(R.string.tor_process_connecting_step3));
addEventHandler();
@@ -662,9 +665,9 @@
catch (Exception ce)
{
conn = null;
- Log.i(TAG,"Attempt: Error connecting to control port: " + ce.getLocalizedMessage(),ce);
+ Log.d(TAG,"Attempt: Error connecting to control port: " + ce.getLocalizedMessage(),ce);
- sendCallbackMessage(getString(R.string.tor_process_connecting_step4));
+ sendCallbackStatusMessage(getString(R.string.tor_process_connecting_step4));
Thread.sleep(1000);
@@ -695,20 +698,20 @@
// "status/bootstrap-phase", "status","version"}));
String bsPhase = conn.getInfo("status/bootstrap-phase");
- Log.i(TAG, "bootstrap-phase: " + bsPhase);
+ Log.d(TAG, "bootstrap-phase: " + bsPhase);
}
else
{
// String status = conn.getInfo("status/circuit-established");
- // Log.i(TAG, "status/circuit-established=" + status);
+ // Log.d(TAG, "status/circuit-established=" + status);
}
}
}
catch (Exception e)
{
- Log.i(TAG, "Unable to get Tor status from control port");
+ Log.d(TAG, "Unable to get Tor status from control port");
currentStatus = STATUS_UNAVAILABLE;
}
@@ -720,7 +723,7 @@
// We extend NullEventHandler so that we don't need to provide empty
// implementations for all the events we don't care about.
// ...
- Log.i(TAG,"adding control port event handler");
+ Log.d(TAG,"adding control port event handler");
conn.setEventHandler(this);
@@ -729,7 +732,7 @@
// conn.setEvents(Arrays.asList(new String[]{
// "DEBUG", "INFO", "NOTICE", "WARN", "ERR"}));
- Log.i(TAG,"SUCCESS added control port event handler");
+ Log.d(TAG,"SUCCESS added control port event handler");
@@ -762,7 +765,7 @@
if (profile == PROFILE_ON)
{
currentStatus = STATUS_CONNECTING;
- sendCallbackMessage ("starting...");
+ sendCallbackStatusMessage ("starting...");
new Thread(_torInstance).start();
@@ -770,7 +773,7 @@
else
{
currentStatus = STATUS_OFF;
- sendCallbackMessage ("shutting down...");
+ sendCallbackStatusMessage ("shutting down...");
_torInstance.stopTor();
@@ -781,7 +784,7 @@
public void message(String severity, String msg) {
- Log.i(TAG, "[Tor Control Port] " + severity + ": " + msg);
+ Log.d(TAG, "[Tor Control Port] " + severity + ": " + msg);
if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1)
{
@@ -790,8 +793,8 @@
}
- sendCallbackMessage (msg);
-
+ sendCallbackStatusMessage (msg);
+
}
private void showAlert(String title, String msg)
@@ -849,7 +852,6 @@
}
public void bandwidthUsed(long read, long written) {
- sendCallbackMessage ("bandwidth used: read=" + read + " written=" + written);
StringBuilder sb = new StringBuilder();
sb.append("Bandwidth used: ");
@@ -864,6 +866,7 @@
public void circuitStatus(String status, String circID, String path) {
+ /*
StringBuilder sb = new StringBuilder();
sb.append("Circuit (");
sb.append((circID));
@@ -873,7 +876,7 @@
sb.append(path);
logNotice(sb.toString());
-
+ */
}
@@ -894,7 +897,7 @@
}
catch (Exception e)
{
- Log.i(TAG,"Unable to check for Tor binaries",e);
+ Log.d(TAG,"Unable to check for Tor binaries",e);
return null;
}
}
@@ -948,7 +951,7 @@
}
catch (Exception e)
{
- Log.i(TAG, "error enabling transproxy",e);
+ Log.d(TAG, "error enabling transproxy",e);
return false;
}
@@ -1045,8 +1048,9 @@
private ArrayList<String> callbackBuffer = new ArrayList<String>();
- private void sendCallbackMessage (String newStatus)
+ private void sendCallbackStatusMessage (String newStatus)
{
+ sendCallbackLogMessage (newStatus); //we want everything to go to the log!
// Broadcast to all clients the new value.
final int N = mCallbacks.beginBroadcast();
@@ -1082,6 +1086,43 @@
mCallbacks.finishBroadcast();
}
+ private void sendCallbackLogMessage (String logMessage)
+ {
+
+ // Broadcast to all clients the new value.
+ final int N = mCallbacks.beginBroadcast();
+
+
+ callbackBuffer.add(logMessage);
+
+ if (N > 0)
+ {
+
+ Iterator<String> it = callbackBuffer.iterator();
+ String status = null;
+
+ while (it.hasNext())
+ {
+ status = it.next();
+
+ for (int i=0; i<N; i++) {
+ try {
+ mCallbacks.getBroadcastItem(i).logMessage(status);
+
+
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing
+ // the dead object for us.
+ }
+ }
+ }
+
+ callbackBuffer.clear();
+ }
+
+ mCallbacks.finishBroadcast();
+ }
+
private void applyPreferences () throws RemoteException
{
Modified: projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceConstants.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceConstants.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceConstants.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -4,7 +4,7 @@
public interface TorServiceConstants {
- public final static String TAG = "TOR_SERVICE";
+ public final static String TAG = "ORBOT";
public final static String TOR_APP_USERNAME = "org.torproject.android";
Modified: projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceUtils.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceUtils.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/service/TorServiceUtils.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -5,27 +5,14 @@
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
import java.util.StringTokenizer;
-import org.torproject.android.TorifiedApp;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
import android.util.Log;
public class TorServiceUtils implements TorServiceConstants {
- private final static String PREFS_KEY = "OrbotPrefs";
- private final static String PREFS_KEY_TORIFIED = "PrefTord";
-
public static int findProcessId(String command)
{
int procId = -1;
@@ -125,7 +112,7 @@
public static int doShellCommand(String[] cmds, StringBuilder log, boolean runAsRoot, boolean waitFor) throws Exception
{
- Log.i(TAG,"executing shell cmds: " + cmds[0] + "; runAsRoot=" + runAsRoot);
+ Log.d(TAG,"executing shell cmds: " + cmds[0] + "; runAsRoot=" + runAsRoot);
Process proc = null;
@@ -176,7 +163,7 @@
log.append(exitCode);
log.append("\n");
- Log.i(TAG,"command process exit value: " + exitCode);
+ Log.d(TAG,"command process exit value: " + exitCode);
}
Modified: projects/android/trunk/Orbot/src/org/torproject/android/service/TorTransProxy.java
===================================================================
--- projects/android/trunk/Orbot/src/org/torproject/android/service/TorTransProxy.java 2010-09-09 07:23:05 UTC (rev 23153)
+++ projects/android/trunk/Orbot/src/org/torproject/android/service/TorTransProxy.java 2010-09-09 20:39:52 UTC (rev 23154)
@@ -1,7 +1,5 @@
package org.torproject.android.service;
-import java.io.File;
-
import org.torproject.android.TorifiedApp;
import android.content.Context;
@@ -9,18 +7,20 @@
public class TorTransProxy {
- private final static String TAG = "TorTransProxy";
+ private final static String TAG = TorServiceConstants.TAG;
- private static String BASE_DIR = "/data/data/" + TorServiceConstants.TOR_APP_USERNAME + "/";
+ //private static String BASE_DIR = "/data/data/" + TorServiceConstants.TOR_APP_USERNAME + "/";
+
+ /*
private final static String CMD_NAT_FLUSH = "iptables -t nat -F || exit\n";
private final static String CMD_FILTER_FLUSH = "iptables -t filter -F || exit\n";
private final static String CMD_DNS_PROXYING_ADD = "iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 127.0.0.1:5400 || exit\n";
private final static String IPTABLES_ADD = " -A ";
+ */
-
//private final static String CMD_DNS_PROXYING_DELETE = "iptables -t nat -D PREROUTING -p udp --dport 53 -j DNAT --to 127.0.0.1:5400 || exit\n";
// - just calling a system wide flush of iptables rules
//private final static String IPTABLES_DELETE = " -D "; //not deleting manually anymore - just calling a system wide flush of iptables rules
@@ -65,8 +65,11 @@
// Run an empty script just to check root access
String[] cmd = {"iptables -v"};
- int exitCode = TorServiceUtils.doShellCommand(cmd, log, true, true);
+ int code = TorServiceUtils.doShellCommand(cmd, log, true, true);
+ String msg = log.toString();
+ Log.d(TAG,cmd[0] + ";errCode=" + code + ";resp=" + msg);
+
String out = log.toString();
if (out.indexOf(" v")!=-1)
{
@@ -86,8 +89,11 @@
return null;
}
+
private static String findBaseDir ()
{
+
+ return ""; //just blank for now
/*
String[] cmds = {"/system/bin/iptables -t nat --list"};
StringBuilder res = new StringBuilder();
@@ -105,12 +111,14 @@
} catch (Exception e) {
return BASE_DIR;
- }*/
+ }
return "";
-
+ */
}
+
+
/*
public static int setDNSProxying () throws Exception
{
@@ -149,7 +157,6 @@
String baseDir = findBaseDir();
-
final StringBuilder script = new StringBuilder();
StringBuilder res = new StringBuilder();
@@ -170,13 +177,10 @@
}
- String[] cmd = {script.toString()};
- Log.i(TAG, cmd[0]);
-
- code = TorServiceUtils.doShellCommand(cmd, res, true, true);
-
+ String[] cmd = {script.toString()};
+ code = TorServiceUtils.doShellCommand(cmd, res, true, true);
String msg = res.toString();
- Log.i(TAG, msg);
+ Log.d(TAG,cmd[0] + ";errCode=" + code + ";resp=" + msg);
return code;
@@ -208,11 +212,13 @@
public static int setTransparentProxyingByApp(Context context, TorifiedApp[] apps, boolean forceAll) throws Exception
{
-
+
+ android.os.Debug.waitForDebugger();
+
String baseDir = findBaseDir();
String iptablesVersion = getIPTablesVersion();
- Log.i(TAG, "iptables version: " + iptablesVersion);
+ Log.d(TAG, "iptables version: " + iptablesVersion);
boolean ipTablesOld = false;
if (iptablesVersion != null && iptablesVersion.startsWith("1.3")){
@@ -239,38 +245,33 @@
}
String[] cmdFlush = {script.toString()};
- Log.i(TAG, cmdFlush[0]);
-
code = TorServiceUtils.doShellCommand(cmdFlush, res, true, true);
+ //String msg = res.toString(); //get stdout from command
- String msg = res.toString();
- Log.i(TAG, msg);
-
script = new StringBuilder();
+ //build up array of shell cmds to execute under one root context
for (int i = 0; i < apps.length; i++)
{
- if (forceAll || apps[i].isTorified())
+ if (forceAll || apps[i].isTorified()) //if "Tor Everything" on or app is set to true
{
if (apps[i].getUsername().equals(TorServiceConstants.TOR_APP_USERNAME))
{
- Log.i(TAG,"detected Orbot app - will not transproxy");
-
+ //should never trans proxy the Orbot app (and Tor or Privoxy) itself
continue;
}
- Log.i(TAG,"enabling transproxy for app: " + apps[i].getUsername() + "(" + apps[i].getUid() + ")");
+ Log.d(TAG,"enabling transproxy for app: " + apps[i].getUsername() + "(" + apps[i].getUid() + ")");
-
//TCP
script.append(baseDir);
script.append("iptables -t nat");
- script.append(" -A OUTPUT -p tcp --syn");
+ script.append(" -A OUTPUT -p tcp");
script.append(" -m owner --uid-owner ");
script.append(apps[i].getUid());
- script.append(" -m tcp ");
+ script.append(" -m tcp --syn");
if (ipTablesOld)
script.append(" -j DNAT --to 127.0.0.1:9040");
@@ -284,15 +285,15 @@
script.append("iptables -t nat");
script.append(" -A OUTPUT -p udp -m owner --uid-owner ");
script.append(apps[i].getUid());
- script.append(" -m udp --dport 53");
+ script.append(" --dport 53"); //drop all UDP packets as Tor won't handle them
if (ipTablesOld)
- script.append(" -j DNAT --to 127.0.0.1:5400");
+ script.append(" -j DNAT --to 127.0.0.1:9040");
else
- script.append(" -j REDIRECT --to-ports 5400");
-
+ script.append(" -j REDIRECT --to-ports 9040");
script.append(" || exit\n");
+
//EVERYTHING ELSE UDP - DROP!
if (!ipTablesOld) //for some reason this doesn't work on iptables 1.3.7
{
@@ -309,15 +310,11 @@
}
- String[] cmdAdd = {script.toString()};
- Log.i(TAG, cmdAdd[0]);
-
+ String[] cmdAdd = {script.toString()};
code = TorServiceUtils.doShellCommand(cmdAdd, res, true, true);
+ String msg = res.toString();
+ Log.d(TAG,cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
- msg = res.toString();
- Log.i(TAG, msg);
-
-
return code;
}
@@ -334,7 +331,7 @@
for (int i = 0; i < ports.length; i++)
{
- Log.i(TAG,"enabling transproxy for port: " + ports[i]);
+ Log.d(TAG,"enabling transproxy for port: " + ports[i]);
//TCP
@@ -358,14 +355,12 @@
StringBuilder res = new StringBuilder();
- String[] cmd = {script.toString()};
- Log.i(TAG, cmd[0]);
-
+ String[] cmd = {script.toString()};
code = TorServiceUtils.doShellCommand(cmd, res, true, true);
+ String msg = res.toString();
+ Log.d(TAG,cmd[0] + ";errCode=" + code + ";resp=" + msg);
- String msg = res.toString();
- Log.e(TAG, msg);
-
+
} catch (Exception e) {
Log.w(TAG, "error refreshing iptables: " + e);
}
More information about the tor-commits
mailing list