[tor-commits] [orbot/master] move to using meek_lite mode from obfs4client and update/improve proxying code

n8fr8 at torproject.org n8fr8 at torproject.org
Wed Feb 24 15:02:20 UTC 2016


commit 57855932f4518b8c4e8b5fed4ae7a89fe224dcbb
Author: Nathan Freitas <nathan at freitas.net>
Date:   Tue Feb 23 23:21:02 2016 -0500

    move to using meek_lite mode from obfs4client and update/improve proxying code
---
 src/org/torproject/android/OrbotApp.java           |  5 +---
 .../android/service/TorResourceInstaller.java      |  3 ++-
 src/org/torproject/android/service/TorService.java | 29 +++++++++++++++-------
 .../android/service/TorServiceConstants.java       |  8 +++---
 .../android/service/TorServiceUtils.java           |  4 +--
 .../torproject/android/vpn/OrbotVpnService.java    | 29 +++++++++++++++++-----
 6 files changed, 52 insertions(+), 26 deletions(-)

diff --git a/src/org/torproject/android/OrbotApp.java b/src/org/torproject/android/OrbotApp.java
index 021336d..7bbb649 100644
--- a/src/org/torproject/android/OrbotApp.java
+++ b/src/org/torproject/android/OrbotApp.java
@@ -28,7 +28,7 @@ public class OrbotApp extends Application implements OrbotConstants
     public static File fileTor;
     public static File filePolipo;
     public static File fileObfsclient;
-    public static File fileMeekclient;
+  // public static File fileMeekclient;
     public static File fileXtables;
     public static File fileTorRc;
     public static File filePdnsd;
@@ -48,13 +48,10 @@ public class OrbotApp extends Application implements OrbotConstants
         fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
         filePolipo = new File(appBinHome, TorServiceConstants.POLIPO_ASSET_KEY);
         fileObfsclient = new File(appBinHome, TorServiceConstants.OBFSCLIENT_ASSET_KEY);
-        fileMeekclient = new File(appBinHome, TorServiceConstants.MEEK_ASSET_KEY);
         fileXtables = new File(appBinHome, TorServiceConstants.IPTABLES_ASSET_KEY);
         fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY);
         filePdnsd = new File(appBinHome, TorServiceConstants.PDNSD_ASSET_KEY);
         
-        
-        
     }
 
     @Override
diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/src/org/torproject/android/service/TorResourceInstaller.java
index 1fad991..67dc32d 100644
--- a/src/org/torproject/android/service/TorResourceInstaller.java
+++ b/src/org/torproject/android/service/TorResourceInstaller.java
@@ -100,12 +100,13 @@ public class TorResourceInstaller implements TorServiceConstants {
 	        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
 	        streamToFile(is,outFile, false, true);
 	        setExecutable(outFile);
-	        
+	        /**
             is = context.getAssets().open(cpuPath + "/" + MEEK_ASSET_KEY + MP3_EXT);
 	        outFile = new File(installFolder, MEEK_ASSET_KEY);
 	        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
 	        streamToFile(is,outFile, false, true);
 	        setExecutable(outFile);
+	        */
 	        
         }
                 
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 12da009..627f2e9 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -61,6 +61,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.io.PrintWriter;
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Proxy;
 import java.net.Socket;
@@ -482,25 +483,30 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
         try {
         	TorServiceUtils.killProcess(OrbotApp.fileObfsclient);
         } catch (IOException e) {
-            e.printStackTrace();
+           // e.printStackTrace();
+            Log.w(TAG,"could not kill obfsclient",e);
             cannotKillFile = OrbotApp.fileObfsclient;
         }
+        
+        /**
         try {
         	TorServiceUtils.killProcess(OrbotApp.fileMeekclient);
         } catch (IOException e) {
             e.printStackTrace();
             cannotKillFile = OrbotApp.fileMeekclient;
         }
+        */
+        
         try {
         	TorServiceUtils.killProcess(OrbotApp.filePolipo);
         } catch (IOException e) {
-            e.printStackTrace();
+            Log.w(TAG,"could not kill polipo",e);
             cannotKillFile = OrbotApp.filePolipo;
         }
         try {
             TorServiceUtils.killProcess(OrbotApp.fileTor);
         } catch (IOException e) {
-            e.printStackTrace();
+            Log.w(TAG,"could not kill tor",e);
             cannotKillFile = OrbotApp.fileTor;
         }
     }
@@ -743,7 +749,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
 	
 	        if (Prefs.bridgesEnabled())
 	        	if (Prefs.useVpn() && !mIsLollipop)
-	        		customEnv.add("TOR_PT_PROXY=socks5://127.0.0.1:" + OrbotVpnService.sSocksProxyServerPort); 
+	        	{
+	        		customEnv.add("TOR_PT_PROXY=socks5://" + OrbotVpnService.sSocksProxyLocalhost + ":" + OrbotVpnService.sSocksProxyServerPort); 
+	        	}
 	        
 	        String baseDirectory = OrbotApp.fileTor.getParent();
 	        Shell shellUser = Shell.startShell(customEnv, baseDirectory);
@@ -1658,7 +1666,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
                         
                         }
                         catch (Exception ioe){
-                            debug("error requesting newnym: " + ioe.getLocalizedMessage());
+                            
+                        	debug("error requesting newnym: " + ioe.getLocalizedMessage());
+                            
                         }
                     }
                 }.start();
@@ -1885,8 +1895,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
 	        	if (!mIsLollipop)
 	        	{
 		        	String proxyType = "socks5";
-		        	String proxyHost = "127.0.0.1";
-		        	extraLines.append(proxyType + "Proxy" + ' ' + proxyHost + ':' + OrbotVpnService.sSocksProxyServerPort).append('\n');
+		        	extraLines.append(proxyType + "Proxy" + ' ' + OrbotVpnService.sSocksProxyLocalhost + ':' + OrbotVpnService.sSocksProxyServerPort).append('\n');
 	        	};
 			
 	        }
@@ -1936,7 +1945,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
             {
 	            
 	            //check if any PT bridges are needed
-	            boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4")||bridgeList.contains("scramblesuit");
+	            boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4")||bridgeList.contains("scramblesuit")||bridgeList.contains("meek");
             
 	            if (obfsBridges)
 	            {
@@ -1972,7 +1981,9 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
 
             	debug ("Using meek bridges");
                 
-            	String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath();
+            //	String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath();
+            	String bridgeConfig = "meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath();
+            	
             	extraLines.append("ClientTransportPlugin" + ' ' + bridgeConfig).append('\n');
             
             	int meekIdx = 2; //let's use Azure by default
diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java
index 54213d9..e2f0964 100644
--- a/src/org/torproject/android/service/TorServiceConstants.java
+++ b/src/org/torproject/android/service/TorServiceConstants.java
@@ -141,7 +141,7 @@ public interface TorServiceConstants {
     //obfsproxy 
     public static final String OBFSCLIENT_ASSET_KEY = "obfs4proxy";
     
-    public static final String MEEK_ASSET_KEY = "meek-client";
+   // public static final String MEEK_ASSET_KEY = "meek-client";
     
 	//name of the iptables binary
 	public final static String IPTABLES_ASSET_KEY = "xtables";	
@@ -155,9 +155,9 @@ public interface TorServiceConstants {
 	//MEEK BRIDGEs	
 	public final static String[] BRIDGES_MEEK = 
 		{
-			"meek 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com",
-			"meek 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com",
-			"meek 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com"
+			"meek_lite 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com",
+			"meek_lite 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com",
+			"meek_lite 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com"
 		};
 
 }
diff --git a/src/org/torproject/android/service/TorServiceUtils.java b/src/org/torproject/android/service/TorServiceUtils.java
index b8ae024..8549eda 100644
--- a/src/org/torproject/android/service/TorServiceUtils.java
+++ b/src/org/torproject/android/service/TorServiceUtils.java
@@ -178,12 +178,12 @@ public class TorServiceUtils implements TorServiceConstants {
         } 
 
         catch(ConnectException ce){
-            ce.printStackTrace();
+            //ce.printStackTrace();
             return false;
         }
 
         catch (Exception ex) {
-            ex.printStackTrace();
+            //ex.printStackTrace();
             return false;
         }
     }
diff --git a/src/org/torproject/android/vpn/OrbotVpnService.java b/src/org/torproject/android/vpn/OrbotVpnService.java
index 92d868c..c9247c2 100644
--- a/src/org/torproject/android/vpn/OrbotVpnService.java
+++ b/src/org/torproject/android/vpn/OrbotVpnService.java
@@ -22,6 +22,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Locale;
 import java.util.concurrent.TimeoutException;
@@ -68,6 +69,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
     private int mTorSocks = TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT;
     
     public static int sSocksProxyServerPort = -1;
+    public static String sSocksProxyLocalhost = null;
     private ProxyServer mSocksProxyServer;
    
     
@@ -108,11 +110,7 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
 		        	
 		        	if (!mIsLollipop)
 		        	{
-
-		                //generate the proxy port that the 
-		                if (sSocksProxyServerPort == -1)
-		                	sSocksProxyServerPort = (int)((Math.random()*1000)+10000); 
-		                	
+	
 		        		startSocksBypass();
 		        	}
 		        	
@@ -151,6 +149,24 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
     		
     		public void run ()
     		{
+
+                //generate the proxy port that the 
+                if (sSocksProxyServerPort == -1)
+                {
+                	try {
+						
+                		sSocksProxyLocalhost = "127.0.0.1";// InetAddress.getLocalHost().getHostAddress();
+	                	sSocksProxyServerPort = (int)((Math.random()*1000)+10000); 
+	                	
+					} catch (Exception e) {
+						Log.e(TAG,"Unable to access localhost",e);
+						throw new RuntimeException("Unable to access localhost: " + e);
+						
+					}
+                	
+                }
+                
+                
 		    	if (mSocksProxyServer != null)
 		    	{
 		    		stopSocksBypass ();
@@ -274,7 +290,6 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
 	    			//start PDNSD daemon pointing to OpenDNS
 	    			startDNS(DEFAULT_ACTUAL_DNS,53);
 	    			
-	    			
 		    		final String vpnName = "OrbotVPN";
 		    		final String localhost = "127.0.0.1";
 
@@ -392,8 +407,10 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
         		" -c " + baseDirectory + "/pdnsd.conf";
     
         SimpleCommand shellCommand = new SimpleCommand(cmdString);
+        
         shell.add(shellCommand).waitForFinish();
     
+        Log.i(TAG,"PDNSD: " + shellCommand.getExitCode() + ": " + shellCommand.getOutput());
         
     }
     





More information about the tor-commits mailing list