[tor-commits] [orbot/master] support zip file raw assets

n8fr8 at torproject.org n8fr8 at torproject.org
Thu Jan 26 01:12:35 UTC 2012


commit 5dae04030317962d19905141ef35351ef6814924
Author: Nathan Freitas <nathan at freitas.net>
Date:   Wed Jan 25 20:07:15 2012 -0500

    support zip file raw assets
---
 .../android/service/TorBinaryInstaller.java        |   31 +++++++++++++++++--
 1 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/org/torproject/android/service/TorBinaryInstaller.java b/src/org/torproject/android/service/TorBinaryInstaller.java
index 68ce745..0d79780 100644
--- a/src/org/torproject/android/service/TorBinaryInstaller.java
+++ b/src/org/torproject/android/service/TorBinaryInstaller.java
@@ -74,6 +74,19 @@ public class TorBinaryInstaller implements TorServiceConstants {
 		outFile = new File(installFolder, PRIVOXYCONFIG_ASSET_KEY);
 		streamToFile(is,outFile, false, false);
 		
+	
+		return true;
+	}
+	
+	/*
+	 * Extract the Tor binary from the APK file using ZIP
+	 */
+	public boolean installGeoIP () throws IOException, FileNotFoundException
+	{
+		
+		InputStream is;
+        File outFile;
+        
 		is = context.getResources().openRawResource(R.raw.geoip);
 		outFile = new File(installFolder, GEOIP_ASSET_KEY);
 		streamToFile(is, outFile, false, true);
@@ -200,12 +213,20 @@ public class TorBinaryInstaller implements TorServiceConstants {
 	 * @throws IOException on error
 	 * @throws InterruptedException when interrupted
 	 */
-	private static void copyRawFile(Context ctx, int resid, File file, String mode) throws IOException, InterruptedException
+	private static void copyRawFile(Context ctx, int resid, File file, String mode, boolean isZipd) throws IOException, InterruptedException
 	{
 		final String abspath = file.getAbsolutePath();
 		// Write the iptables binary
 		final FileOutputStream out = new FileOutputStream(file);
-		final InputStream is = ctx.getResources().openRawResource(resid);
+		InputStream is = ctx.getResources().openRawResource(resid);
+		
+		if (isZipd)
+    	{
+    		ZipInputStream zis = new ZipInputStream(is);    		
+    		ZipEntry ze = zis.getNextEntry();
+    		is = zis;
+    	}
+		
 		byte buf[] = new byte[1024];
 		int len;
 		while ((len = is.read(buf)) > 0) {
@@ -229,14 +250,16 @@ public class TorBinaryInstaller implements TorServiceConstants {
 		File file = new File(ctx.getDir("bin",0), "iptables");
 		
 		if ((!file.exists()) && isARMv6()) {
-			copyRawFile(ctx, R.raw.iptables_g1, file, CHMOD_EXEC);
+			copyRawFile(ctx, R.raw.iptables_g1, file, CHMOD_EXEC, false);
+			
+
 			changed = true;
 		}
 		
 		// Check iptables_n1
 		file = new File(ctx.getDir("bin",0), "iptables");
 		if ((!file.exists()) && (!isARMv6())) {
-			copyRawFile(ctx, R.raw.iptables_n1, file, CHMOD_EXEC);
+			copyRawFile(ctx, R.raw.iptables_n1, file, CHMOD_EXEC, false);
 			changed = true;
 		}
 		





More information about the tor-commits mailing list