[tor-commits] [orbot/master] update to return to binaries as ZIPd res/raw

n8fr8 at torproject.org n8fr8 at torproject.org
Fri Apr 4 03:27:24 UTC 2014


commit cc8d3e1eab678c2b054d09ad2cd098ec0eb1b06c
Author: Nathan Freitas <nathan at freitas.net>
Date:   Thu Apr 3 23:01:39 2014 -0400

    update to return to binaries as ZIPd res/raw
    stop using the libs/armeabi hack method
---
 external/Makefile                                  |   19 +--
 libs/jtorctl.jar                                   |  Bin 14742 -> 14742 bytes
 .../android/service/TorResourceInstaller.java      |   17 ++
 src/org/torproject/android/service/TorService.java |  178 +++-----------------
 .../android/service/TorServiceConstants.java       |    6 +-
 5 files changed, 54 insertions(+), 166 deletions(-)

diff --git a/external/Makefile b/external/Makefile
index 7a9f637..b297c51 100644
--- a/external/Makefile
+++ b/external/Makefile
@@ -334,19 +334,18 @@ jtorctl-clean:
 #this is related to a bug in compression of assets and resources > 1MB
 
 assets: tor privoxy jtorctl obfsproxy iptables
-	install -d ../libs/armeabi
-	install -d ../libs
-	install bin/privoxy ../libs/armeabi/libprivoxy.so
-	install bin/obfsproxy ../libs/armeabi/libobfsproxy.so
 	install bin/jtorctl.jar ../libs
-	install bin/tor ../libs/armeabi/libtor.so
-	install bin/xtables ../libs/armeabi/libxtables.so
+	install -d ../res/raw
+	-zip ../res/raw/privoxy.mp3 bin/privoxy
+	-zip ../res/raw/obfsproxy.mp3 bin/obfsproxy
+	-zip ../res/raw/tor.mp3 bin/tor
+	-zip ../res/raw/xtables.mp3 bin/xtables
 
 assets-clean:
-	-rm ../libs/armeabi/libxtables.so
-	-rm ../libs/armeabi/libtor.so
-	-rm ../libs/armeabi/libprivoxy.so
-	-rm ../libs/armeabi/libobfsproxy.so
+	-rm ../res/raw/privoxy.mp3
+	-rm ../res/raw/obfsproxy.mp3
+	-rm ../res/raw/tor.mp3
+	-rm ../res/raw/xtables.mp3
 	-rm ../libs/jtorctl.jar
 
 #------------------------------------------------------------------------------#
diff --git a/libs/jtorctl.jar b/libs/jtorctl.jar
index 9309e9b..26ccf57 100755
Binary files a/libs/jtorctl.jar and b/libs/jtorctl.jar differ
diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/src/org/torproject/android/service/TorResourceInstaller.java
index ce30da6..9ff06ed 100644
--- a/src/org/torproject/android/service/TorResourceInstaller.java
+++ b/src/org/torproject/android/service/TorResourceInstaller.java
@@ -57,6 +57,23 @@ public class TorResourceInstaller implements TorServiceConstants {
 		outFile = new File(installFolder, PRIVOXYCONFIG_ASSET_KEY);
 		streamToFile(is,outFile, false, false);
 	
+		is = context.getResources().openRawResource(R.raw.tor);
+		outFile = new File(installFolder, TOR_ASSET_KEY);
+		streamToFile(is,outFile, false, true);
+	
+		is = context.getResources().openRawResource(R.raw.privoxy);
+		outFile = new File(installFolder, PRIVOXY_ASSET_KEY);
+		streamToFile(is,outFile, false, true);
+	
+		is = context.getResources().openRawResource(R.raw.obfsproxy);
+		outFile = new File(installFolder, OBFSPROXY_ASSET_KEY);
+		streamToFile(is,outFile, false, true);
+		
+
+		is = context.getResources().openRawResource(R.raw.xtables);
+		outFile = new File(installFolder, IPTABLES_ASSET_KEY);
+		streamToFile(is,outFile, false, true);
+	
 		return true;
 	}
 	
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index b00b36f..638ea15 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -80,11 +80,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
    //   private String appHome;
     private File appBinHome;
     private File appCacheHome;
-    private File appLibsHome;
-    
-    private File fileTorOrig;
-    private File fileTorLink;
     
+    private File fileTor;
     private File filePrivoxy;
     private File fileObfsProxy;
     private File fileXtables;
@@ -134,11 +131,11 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     {
     //	android.os.Debug.waitForDebugger();
     	
-    	if (fileTorLink != null)
+    	if (fileTor != null)
     	{
 	    	try
 	    	{
-		    	int procId = TorServiceUtils.findProcessId(fileTorLink.getAbsolutePath());
+		    	int procId = TorServiceUtils.findProcessId(fileTor.getAbsolutePath());
 		
 		 		if (procId != -1)
 		 		{
@@ -432,107 +429,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         return null;
 	}
 	
-	private void initTorPathLinkAndPerms () throws Exception
-	{
-		fileTorLink = new File(appBinHome,"tor");
-		fileTorLink.getParentFile().mkdirs();
-		
-		if (fileTorOrig.getAbsolutePath().startsWith("/mnt"))
-		{
-			logNotice("app installed on external storage - copying binaries to internal");
-			
-			//can't execute binaries off the external storage, so copy them internal
-			StringBuilder log = new StringBuilder();
-	    	int errCode = -1;
-
-	    	if (!fileTorLink.exists()||(fileTorOrig.length()!=fileTorLink.length()))
-	    	{
-	    		log = new StringBuilder();
-	    		String[] cmd = { SHELL_CMD_RM + ' ' + fileTorLink.getAbsolutePath() };
-	    		errCode = TorServiceUtils.doShellCommand(cmd,log, false, true);
-	    		logNotice("link CP err=" + errCode + " out: " + log.toString());
-	    		
-	    		log = new StringBuilder();
-	    		String[] cmd1 = { SHELL_CMD_CP + ' ' + fileTorOrig.getAbsolutePath() + ' ' + fileTorLink.getAbsolutePath() };
-	    		errCode = TorServiceUtils.doShellCommand(cmd1,log, false, true);
-	    		logNotice("link CP err=" + errCode + " out: " + log.toString());
-	    	}
-			enableBinExec(fileTorLink);
-						
-			File filePrivoxyLink = new File(appBinHome,"privoxy");
-			if (!filePrivoxyLink.exists()||(filePrivoxy.length()!=filePrivoxyLink.length()))
-			{
-				log = new StringBuilder();
-				String[] cmd = { SHELL_CMD_RM + ' ' + filePrivoxyLink.getAbsolutePath() };
-				errCode = TorServiceUtils.doShellCommand(cmd,log, false, true);
-				logNotice("link CP err=" + errCode + " out: " + log.toString());
-				
-				log = new StringBuilder();
-		    	String[] cmd1 = { SHELL_CMD_CP + ' ' + filePrivoxy.getAbsolutePath() + ' ' + filePrivoxyLink.getAbsolutePath() };
-				errCode = TorServiceUtils.doShellCommand(cmd1,log, false, true);
-				logNotice("link CP err=" + errCode + " out: " + log.toString());
-			}
-			filePrivoxy = filePrivoxyLink;			
-			enableBinExec(filePrivoxy);
-			
-			File fileObfsProxyLink = new File(appBinHome,"obfsproxy");
-			if (!fileObfsProxyLink.exists()||(fileObfsProxy.length()!=fileObfsProxyLink.length()))
-			{
-
-				log = new StringBuilder();
-				String[] cmd1 = { SHELL_CMD_RM + ' ' + fileObfsProxyLink.getAbsolutePath() };
-				errCode = TorServiceUtils.doShellCommand(cmd1,log, false, true);
-				logNotice("link CP err=" + errCode + " out: " + log.toString());
-				
-
-				log = new StringBuilder();
-		    	String[] cmd2 = { SHELL_CMD_CP + ' ' + fileObfsProxy.getAbsolutePath() + ' ' + fileObfsProxyLink.getAbsolutePath() };
-				errCode = TorServiceUtils.doShellCommand(cmd2,log, false, true);
-				logNotice("link CP err=" + errCode + " out: " + log.toString());
-			}
-			fileObfsProxy = fileObfsProxyLink;
-			enableBinExec(fileObfsProxy);
-			
-			
-			File fileXtablesLink = new File(appBinHome,"xtables");
-			if (!fileXtablesLink.exists()||(fileXtables.length()!=fileXtablesLink.length()))
-			{
-				log = new StringBuilder();
-				String[] cmd1 = { SHELL_CMD_RM + ' ' + fileXtablesLink.getAbsolutePath() };
-				errCode = TorServiceUtils.doShellCommand(cmd1,log, false, true);
-				logNotice("link CP err=" + errCode + " out: " + log.toString());
-				
-				log = new StringBuilder();
-		    	String[] cmd2 = { SHELL_CMD_CP + ' ' + fileXtables.getAbsolutePath() + ' ' + fileXtablesLink.getAbsolutePath() };
-				errCode = TorServiceUtils.doShellCommand(cmd2,log, false, true);
-				logNotice("link CP err=" + errCode + " out: " + log.toString());
-			}
-			fileXtables = fileXtablesLink;
-			enableBinExec(fileXtables);
-			
-		}
-		else
-		{
-		
-			StringBuilder log = new StringBuilder();
-	    	String[] cmdDel = { SHELL_CMD_RM + ' ' + fileTorLink.getAbsolutePath() };
-			int errCode = TorServiceUtils.doShellCommand(cmdDel,log, false, true);
-			logNotice("link RM err=" + errCode + " out: " + log.toString());
-	    	
-	    	log = new StringBuilder();
-	    	String[] cmd = { SHELL_CMD_LINK + ' ' + fileTorOrig.getAbsolutePath() + ' ' + fileTorLink.getAbsolutePath() };
-			errCode = TorServiceUtils.doShellCommand(cmd,log, false, true);
-			logNotice("link LN err=" + errCode + " out: " + log.toString());
-			
-			enableBinExec(fileTorOrig);
-			enableBinExec(fileTorLink);
-			enableBinExec(filePrivoxy);
-			enableBinExec(fileObfsProxy);
-			enableBinExec(fileXtables);
-			
-		}
-		
-	}
+	
     
     private void killTorProcess () throws Exception
     {
@@ -560,7 +457,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     	int maxTry = 5;
     	int currTry = 0;
     	
-		while ((procId = TorServiceUtils.findProcessId(fileTorLink.getAbsolutePath())) != -1 && currTry++ < maxTry)
+		while ((procId = TorServiceUtils.findProcessId(fileTor.getAbsolutePath())) != -1 && currTry++ < maxTry)
 		{
 			sendCallbackStatusMessage ("Found existing orphan Tor process; Trying to shutdown now (device restart may be needed)...");
 			
@@ -613,46 +510,21 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     	}
     }
     
-    private void initTorPaths () throws Exception
+    private void initBinaries () throws Exception
     {
     	appBinHome = getDir("bin",Application.MODE_PRIVATE);
     	appCacheHome = getDir("data",Application.MODE_PRIVATE);
-    	appLibsHome = new File(getApplicationInfo().nativeLibraryDir);
     	
-    	if (!appLibsHome.exists())
-    		appLibsHome = new File(getApplicationInfo().dataDir + "/lib");
-		
-    	fileTorOrig = new File(appLibsHome, TOR_BINARY_ASSET_KEY);
-    	
-    	if (fileTorOrig.exists())
-    	{
-    		logNotice ("Tor binary exists: " + fileTorOrig.getAbsolutePath());
-    	}
-    	else
-    	{
-    		appLibsHome = new File(getApplicationInfo().dataDir + "/lib");
-    		fileTorOrig = new File(appLibsHome, TOR_BINARY_ASSET_KEY);
-    		
-    		if (fileTorOrig.exists())
-    			logNotice ("Tor binary exists: " + fileTorOrig.getAbsolutePath());
-    		else
-    			throw new RuntimeException("Tor binary not installed");
-    	}
-    	
-		filePrivoxy = new File(appLibsHome, PRIVOXY_ASSET_KEY);
-		if (filePrivoxy.exists())
-    		logNotice ("Privoxy binary exists: " + filePrivoxy.getAbsolutePath());
-		else
-    		throw new RuntimeException("Privoxy binary not installed");
-    	
-		fileObfsProxy = new File(appLibsHome, OBFSPROXY_ASSET_KEY);
-		if (fileObfsProxy.exists())
-    		logNotice ("Obfsproxy binary exists: " + fileObfsProxy.getAbsolutePath());    	
-		else
-    		throw new RuntimeException("Obfsproxy binary not installed");
+    	fileTor= new File(appBinHome, TOR_ASSET_KEY);
     	
+    	filePrivoxy = new File(appBinHome, PRIVOXY_ASSET_KEY);
+		
+		fileObfsProxy = new File(appBinHome, OBFSPROXY_ASSET_KEY);
+		
 		fileTorRc = new File(appBinHome, TORRC_ASSET_KEY);
 		
+		fileXtables = new File(appBinHome, IPTABLES_ASSET_KEY);
+		
 		if (!fileTorRc.exists())
 		{
 			TorResourceInstaller installer = new TorResourceInstaller(this, appBinHome); 
@@ -660,11 +532,11 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 				
 		}
 		
-		fileXtables = new File(appLibsHome, IPTABLES_BINARY_ASSET_KEY);
-		if (fileXtables.exists())
-			logNotice("Xtables binary exists: " + fileXtables.getAbsolutePath());
+		enableBinExec(fileTor);
+		enableBinExec(filePrivoxy);	
+		enableBinExec(fileObfsProxy);
+		enableBinExec(fileXtables);
 		
-		initTorPathLinkAndPerms();
 		
     }
 
@@ -703,7 +575,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     public void initTor () throws Exception
     {
     	
-		initTorPaths();		
+		initBinaries();		
     	
     	updateSettings ();
     	
@@ -807,11 +679,11 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     private void runTorShellCmd() throws Exception
     {
     	
-    	if (!fileTorLink.exists())
-    		throw new RuntimeException("Sorry Tor binary not installed properly: " + fileTorLink.getAbsolutePath());
+    	if (!fileTor.exists())
+    		throw new RuntimeException("Sorry Tor binary not installed properly: " + fileTor.getAbsolutePath());
     	
-    	if (!fileTorLink.canExecute())
-    		throw new RuntimeException("Sorry can't execute Tor: " + fileTorLink.getAbsolutePath());
+    	if (!fileTor.canExecute())
+    		throw new RuntimeException("Sorry can't execute Tor: " + fileTor.getAbsolutePath());
     	
 		SharedPreferences prefs =getSharedPrefs(getApplicationContext());
 
@@ -828,7 +700,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
 		String[] torCmd = {
 				"export HOME=" + appBinHome.getAbsolutePath(),
-				fileTorLink.getAbsolutePath() + " DataDirectory " + appCacheHome.getAbsolutePath() + " -f " + torrcPath  + " || exit\n"
+				fileTor.getAbsolutePath() + " DataDirectory " + appCacheHome.getAbsolutePath() + " -f " + torrcPath  + " || exit\n"
 				};
 		
 		boolean runAsRootFalse = false;
@@ -849,12 +721,12 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
 			Thread.sleep(torRetryWaitTimeMS);
 			
-			procId = TorServiceUtils.findProcessId(fileTorLink.getAbsolutePath());
+			procId = TorServiceUtils.findProcessId(fileTor.getAbsolutePath());
 			
 			if (procId == -1)
 			{
 				Thread.sleep(torRetryWaitTimeMS);
-				procId = TorServiceUtils.findProcessId(fileTorOrig.getAbsolutePath());
+				procId = TorServiceUtils.findProcessId(fileTor.getAbsolutePath());
 				attempts++;
 			}
 			else
diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java
index 2d3bfa4..d852121 100644
--- a/src/org/torproject/android/service/TorServiceConstants.java
+++ b/src/org/torproject/android/service/TorServiceConstants.java
@@ -12,7 +12,7 @@ public interface TorServiceConstants {
 	//home directory of Android application
 	
 	//name of the tor C binary
-	public final static String TOR_BINARY_ASSET_KEY = "libtor.so";	
+	public final static String TOR_ASSET_KEY = "tor";	
 	
 	//torrc (tor config file)
 	public final static String TORRC_ASSET_KEY = "torrc";
@@ -24,7 +24,7 @@ public interface TorServiceConstants {
 //	public final static String TOR_COMMAND_LINE_ARGS = "-f " + TORRC_INSTALL_PATH  + " || exit\n";
 		
 	//privoxy
-	public final static String PRIVOXY_ASSET_KEY = "libprivoxy.so";
+	public final static String PRIVOXY_ASSET_KEY = "privoxy";
 	
 	//privoxy.config
 	public final static String PRIVOXYCONFIG_ASSET_KEY = "privoxy.config";
@@ -93,7 +93,7 @@ public interface TorServiceConstants {
 	
 
 	//name of the iptables binary
-	public final static String IPTABLES_BINARY_ASSET_KEY = "libxtables.so";	
+	public final static String IPTABLES_ASSET_KEY = "xtables";	
 	
 
 }





More information about the tor-commits mailing list