From d44f2c453222925f21dc2aaf02065ce782729871 Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Wed, 9 Jun 2010 20:14:03 +0000 Subject: [PATCH] fixed TorBinaryInstaller issue on Android OS 2.2/Froyo. Now looks for APK file with incremented path name -1 -2 -3 etc svn:r22498 --- .../android/service/TorBinaryInstaller.java | 15 ++++++++++++++- .../android/service/TorServiceConstants.java | 3 ++- .../torproject/android/service/TorTransProxy.java | 11 +++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/org/torproject/android/service/TorBinaryInstaller.java b/src/org/torproject/android/service/TorBinaryInstaller.java index 9df1ebe7..414216ee 100644 --- a/src/org/torproject/android/service/TorBinaryInstaller.java +++ b/src/org/torproject/android/service/TorBinaryInstaller.java @@ -45,7 +45,20 @@ public class TorBinaryInstaller implements TorServiceConstants { try { - ZipFile zip = new ZipFile(APK_PATH); + + String apkPath = APK_PATH; + + int apkIdx = 1; + + while (!new File(apkPath).exists()) + { + apkPath = APK_PATH_BASE + '-' + (apkIdx++) + ".apk"; + + Log.i(TAG,"Could not find APK. Trying new path: " + apkPath); + } + + + ZipFile zip = new ZipFile(apkPath); ZipEntry zipen = zip.getEntry(TOR_BINARY_ZIP_KEY); streamToFile(zip.getInputStream(zipen),TOR_BINARY_INSTALL_PATH); diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java index 7864caf2..3e6f6903 100644 --- a/src/org/torproject/android/service/TorServiceConstants.java +++ b/src/org/torproject/android/service/TorServiceConstants.java @@ -50,7 +50,8 @@ public interface TorServiceConstants { //path of the installed APK file public final static String APK_PATH = "/data/app/org.torproject.android.apk"; - + public final static String APK_PATH_BASE = "/data/app/org.torproject.android"; + public final static int FILE_WRITE_BUFFER_SIZE = 2048; diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java index 620ab3df..8c93cc8e 100644 --- a/src/org/torproject/android/service/TorTransProxy.java +++ b/src/org/torproject/android/service/TorTransProxy.java @@ -16,10 +16,13 @@ public class TorTransProxy { private final static String CMD_NAT_FLUSH = "iptables -t nat -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 CMD_DNS_PROXYING_DELETE = "iptables -t nat -D PREROUTING -p udp --dport 53 -j DNAT --to 127.0.0.1:5400 || exit\n"; - + + //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_ADD = " -A "; - private final static String IPTABLES_DELETE = " -D "; + + //private final static String IPTABLES_DELETE = " -D "; //not deleting manually anymore - just calling a system wide flush of iptables rules private final static String IPTABLES_DROP_ALL = " -j DROP "; private static boolean hasRoot = false; @@ -121,7 +124,7 @@ public class TorTransProxy { script.append(command); script.append("OUTPUT -p udp -m owner --uid-owner "); script.append(apps[i].getUid()); - script.append(" -j DNAT --to 127.0.0.1:9040"); + script.append(" -j DROP"); //drop all UDP packets as Tor won't handle them script.append(" || exit\n"); } }