[tor-commits] [orbot/master] more fixes for hidden service configuration

n8fr8 at torproject.org n8fr8 at torproject.org
Fri Jun 6 19:12:13 UTC 2014


commit bedeb71cf25f25ef5a6c8bbfa2b8fab141f84ca4
Author: Nathan Freitas <nathan at freitas.net>
Date:   Fri Jun 6 15:05:06 2014 -0400

    more fixes for hidden service configuration
    now multiple ports are properly configured
    and notification will display correctly
---
 src/org/torproject/android/Orbot.java              |    5 +-
 src/org/torproject/android/service/TorService.java |   90 +++++++++++++-------
 2 files changed, 61 insertions(+), 34 deletions(-)

diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java
index 7e40c43..81a8575 100644
--- a/src/org/torproject/android/Orbot.java
+++ b/src/org/torproject/android/Orbot.java
@@ -1018,7 +1018,6 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
     		mService.setProfile(TorServiceConstants.PROFILE_OFF);
     		Message msg = mHandler.obtainMessage(TorServiceConstants.DISABLE_TOR_MSG);
     		mHandler.sendMessage(msg);
-            //trafficRow.setVisibility(RelativeLayout.GONE);
 
             
     	}
@@ -1037,10 +1036,8 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
 	            try
 	            {
 	                    
-	                if (mService != null && mService.getStatus() == TorServiceConstants.STATUS_OFF)
+	                if (torStatus == TorServiceConstants.STATUS_OFF)
 	                {
-	                        
-	                       // createProgressDialog(getString(R.string.status_starting_up));
 	
 	                        startTor();
 	                }
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 4640362..3c04d97 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -76,7 +76,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	private static final int NOTIFY_ID = 1;
 	private static final int TRANSPROXY_NOTIFY_ID = 2;
 	private static final int ERROR_NOTIFY_ID = 3;
-	private static final int HS_NOTIFY_ID = 3;
+	private static final int HS_NOTIFY_ID = 4;
 	
 	private boolean prefPersistNotifications = true;
 	
@@ -409,33 +409,61 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
         boolean enableHiddenServices = prefs.getBoolean("pref_hs_enable", false);
         
+        StringBuffer result = new StringBuffer();
+    	
         if (enableHiddenServices)
         {
-	    	File file = new File(appCacheHome, "hostname");
-	    	
-	    	if (file.exists())
-	    	{
-		    	try {
-					String onionHostname = Utils.readString(new FileInputStream(file)).trim();
-					showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor, true);
-					Editor pEdit = prefs.edit();
-					pEdit.putString("pref_hs_hostname",onionHostname);
-					pEdit.commit();
-				
-					return onionHostname;
-					
-				} catch (FileNotFoundException e) {
-					logException("unable to read onion hostname file",e);
-					showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
+        	String hsPorts = prefs.getString("pref_hs_ports","");
+        	
+        	StringTokenizer st = new StringTokenizer (hsPorts,",");
+        	String hsPortConfig = null;
+        	
+        	while (st.hasMoreTokens())
+        	{	
+		    	
+		    	int hsPort = Integer.parseInt(st.nextToken().split(" ")[0]);;
+		    	
+		    	File fileDir = new File(appCacheHome, "hs" + hsPort);
+		    	File file = new File(fileDir, "hostname");
+		    	
+		    	
+		    	if (file.exists())
+		    	{
+			    	try {
+						String onionHostname = Utils.readString(new FileInputStream(file)).trim();
+						
+						if (result.length() > 0)
+							result.append(",");
+						
+						result.append(onionHostname);
+						
+						
+					} catch (FileNotFoundException e) {
+						logException("unable to read onion hostname file",e);
+						showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
+						return null;
+					}
+		    	}
+		    	else
+		    	{
+					showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
 					return null;
-				}
-	    	}
-	    	else
-	    	{
-				showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
-	
-	    		
-	    	}
+		    		
+		    	}
+        	}
+        
+        	if (result.length() > 0)
+        	{
+        		String onionHostname = result.toString();
+        		
+	        	showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+				Editor pEdit = prefs.edit();
+				pEdit.putString("pref_hs_hostname",onionHostname);
+				pEdit.commit();
+				
+				return onionHostname;
+        	}
+		
         }
         
         return null;
@@ -623,6 +651,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		if (mHasRoot && mEnableTransparentProxy)
 			enableTransparentProxy(mTransProxyAll, mTransProxyTethering);
 		
+		getHiddenServiceHostname ();
+		
 		//checkAddressAndCountry();
     }
    
@@ -1876,7 +1906,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         {
         	logNotice("hidden services are enabled");
         	
-            
         	//mBinder.updateConfiguration("RendPostPeriod", "600 seconds", false); //possible feature to investigate
         	
         	String hsPorts = prefs.getString("pref_hs_ports","");
@@ -1896,15 +1925,16 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	        			hsPortConfig = hsPortConfig + " 127.0.0.1:" + hsPortConfig;
 	        		}
 	        		
+	        		hsPort = Integer.parseInt(hsPortConfig.split(" ")[0]);
+
+	        		String hsDirPath = new File(appCacheHome,"hs" + hsPort).getAbsolutePath();
+	        		
 	        		logMessage("Adding hidden service on port: " + hsPortConfig);
 	        		
-	        		//String hsDirPath = new File(appCacheHome,"hs" + hsPortConfig).getAbsolutePath();
-	        		String hsDirPath = appCacheHome.getAbsolutePath();
-	    	        
+	        		
 	        		mBinder.updateConfiguration("HiddenServiceDir",hsDirPath, false);
 	        		mBinder.updateConfiguration("HiddenServicePort",hsPortConfig, false);
 	        		
-	        		hsPort = Integer.parseInt(hsPortConfig.split(" ")[0]);
 
 				} catch (NumberFormatException e) {
 					Log.e(this.TAG,"error parsing hsport",e);





More information about the tor-commits mailing list