[tor-commits] [orbot/master] updates for transproxy iptables detection on JB
n8fr8 at torproject.org
n8fr8 at torproject.org
Mon Oct 1 07:41:26 UTC 2012
commit 331daa07b4ba49247a905f423ed1d0337737b853
Author: n8fr8 <nathan at freitas.net>
Date: Mon Oct 1 12:35:31 2012 +0530
updates for transproxy iptables detection on JB
---
src/org/torproject/android/service/TorService.java | 79 +++++++++++++-------
.../torproject/android/service/TorTransProxy.java | 70 ++++++++++--------
2 files changed, 93 insertions(+), 56 deletions(-)
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 7711648..7b53f3c 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -58,7 +58,7 @@ import android.util.Log;
public class TorService extends Service implements TorServiceConstants, TorConstants, Runnable, EventHandler
{
- public static boolean ENABLE_DEBUG_LOG = false;
+ public static boolean ENABLE_DEBUG_LOG = true;
private static int currentStatus = STATUS_OFF;
@@ -709,7 +709,10 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{
TorService.logMessage ("Clearing TransProxy rules");
-
+
+ if (mTransProxy == null)
+ mTransProxy = new TorTransProxy();
+
if (mTransProxyAll)
mTransProxy.clearTransparentProxyingAll(this);
else
@@ -1041,7 +1044,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public void message(String severity, String msg) {
- logNotice( "[Tor Control Port] " + severity + ": " + msg);
+ logNotice(severity + ": " + msg);
if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1)
{
@@ -1062,13 +1065,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
}
-
- sendCallbackStatusMessage (msg);
}
- //showToolbarNotification(msg, TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify);
-
public void newDescriptors(List<String> orList) {
}
@@ -1076,23 +1075,20 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public void orConnStatus(String status, String orName) {
- if (ENABLE_DEBUG_LOG)
- {
+
StringBuilder sb = new StringBuilder();
sb.append("orConnStatus (");
- sb.append((orName) );
+ sb.append(parseNodeName(orName) );
sb.append("): ");
sb.append(status);
logNotice(sb.toString());
- }
+
}
public void streamStatus(String status, String streamID, String target) {
- if (ENABLE_DEBUG_LOG)
- {
StringBuilder sb = new StringBuilder();
sb.append("StreamStatus (");
sb.append((streamID));
@@ -1100,14 +1096,12 @@ public class TorService extends Service implements TorServiceConstants, TorConst
sb.append(status);
logNotice(sb.toString());
- }
+
}
public void unrecognized(String type, String msg) {
- if (ENABLE_DEBUG_LOG)
- {
StringBuilder sb = new StringBuilder();
sb.append("Message (");
sb.append(type);
@@ -1115,7 +1109,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
sb.append(msg);
logNotice(sb.toString());
- }
+
}
@@ -1142,21 +1136,44 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public void circuitStatus(String status, String circID, String path) {
- if (ENABLE_DEBUG_LOG)
+ StringBuilder sb = new StringBuilder();
+ sb.append("Circuit (");
+ sb.append((circID));
+ sb.append(") ");
+ sb.append(status);
+ sb.append(": ");
+
+ StringTokenizer st = new StringTokenizer(path,",");
+ String node = null;
+
+ while (st.hasMoreTokens())
{
- StringBuilder sb = new StringBuilder();
- sb.append("Circuit (");
- sb.append((circID));
- sb.append("): ");
- sb.append(status);
- sb.append("; ");
- sb.append(path);
+ node = st.nextToken();
- logNotice(sb.toString());
+ sb.append(parseNodeName(node));
+
+
+ if (st.hasMoreTokens())
+ sb.append (" > ");
}
+ logNotice(sb.toString());
+
}
+ private String parseNodeName(String node)
+ {
+ if (node.indexOf('=')!=-1)
+ {
+ return (node.substring(node.indexOf("=")+1));
+ }
+ else if (node.indexOf('~')!=-1)
+ {
+ return (node.substring(node.indexOf("~")+1));
+ }
+ else
+ return node;
+ }
public IBinder onBind(Intent intent) {
@@ -1512,6 +1529,16 @@ public class TorService extends Service implements TorServiceConstants, TorConst
try {
mBinder.updateConfiguration("DisableNetwork", noConnectivity ? "1" : "0", false);
mBinder.saveConfiguration();
+
+ if (noConnectivity)
+ {
+ logNotice("No network connectivity. Putting Tor to sleep...");
+ }
+ else
+ {
+ logNotice("Network connectivity is good. Waking Tor up...");
+
+ }
} catch (RemoteException e) {
logException ("error applying prefs",e);
}
diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java
index 1a34c5c..e5050f8 100644
--- a/src/org/torproject/android/service/TorTransProxy.java
+++ b/src/org/torproject/android/service/TorTransProxy.java
@@ -13,44 +13,56 @@ import android.util.Log;
public class TorTransProxy implements TorServiceConstants {
- private String ipTablesPath;
-
public String getIpTablesPath (Context context)
{
+ String ipTablesPath = null;
+
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean useSystemIpTables = prefs.getBoolean(TorConstants.PREF_USE_SYSTEM_IPTABLES, false);
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ if (useSystemIpTables)
+ {
+ ipTablesPath = findSystemIPTables();
+ }
+ else
+ {
+ //use the bundled version
+
+ ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
- if (prefs.getBoolean(TorConstants.PREF_USE_SYSTEM_IPTABLES, false))
+ try
{
- //if the user wants us to use the built-in iptables, then we have to find it
- File fileIpt = new File("/system/bin/iptables");
-
- if (fileIpt.exists())
- ipTablesPath = fileIpt.getAbsolutePath();
- else
- {
-
- fileIpt = new File("/system/xbin/iptables");
-
- if (fileIpt.exists())
- return (ipTablesPath = fileIpt.getAbsolutePath());
- else
- {
- //use the bundled version
- ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
- }
- }
+ if (testOwnerModule(context,ipTablesPath) != 0)
+ ipTablesPath = findSystemIPTables();
}
- else
+ catch (Exception e)
{
- //use the bundled version
-
- ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
+ ipTablesPath = findSystemIPTables();
}
-
+ }
return ipTablesPath;
+ }
+
+ private String findSystemIPTables ()
+ {
+ String path = null;
+
+ //if the user wants us to use the built-in iptables, then we have to find it
+ File fileIpt = new File("/system/bin/iptables");
+
+ if (fileIpt.exists())
+ path = fileIpt.getAbsolutePath();
+ else
+ {
+ fileIpt = new File("/system/xbin/iptables");
+
+ if (fileIpt.exists())
+ path = fileIpt.getAbsolutePath();
+ }
+
+ return path;
}
public int flushIptablesAll(Context context) throws Exception {
@@ -164,7 +176,7 @@ public class TorTransProxy implements TorServiceConstants {
}
*/
- public int testOwnerModule(Context context) throws Exception
+ public int testOwnerModule(Context context, String ipTablesPath) throws Exception
{
TorBinaryInstaller.assertIpTablesBinaries(context, false);
@@ -174,8 +186,6 @@ public class TorTransProxy implements TorServiceConstants {
int torUid = context.getApplicationInfo().uid;
- String ipTablesPath = getIpTablesPath(context);
-
StringBuilder script = new StringBuilder();
StringBuilder res = new StringBuilder();
More information about the tor-commits
mailing list