[tor-commits] [orbot/master] add permission to service manifest

n8fr8 at torproject.org n8fr8 at torproject.org
Fri Oct 12 21:05:53 UTC 2018


commit bcae0035532ef214ef015bd4cf26ec87400a24bc
Author: n8fr8 <nathan at freitas.net>
Date:   Fri Oct 12 16:14:17 2018 -0400

    add permission to service manifest
---
 orbotservice/src/main/AndroidManifest.xml          |  2 +-
 .../android/service/TorEventHandler.java           |  7 +-
 .../org/torproject/android/service/TorService.java | 99 +++++++++++-----------
 .../android/service/util/NativeLoader.java         | 14 +--
 .../service/util/OtherResourceInstaller.java       | 40 ++-------
 5 files changed, 65 insertions(+), 97 deletions(-)

diff --git a/orbotservice/src/main/AndroidManifest.xml b/orbotservice/src/main/AndroidManifest.xml
index 4b550d96..4b1691d7 100644
--- a/orbotservice/src/main/AndroidManifest.xml
+++ b/orbotservice/src/main/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="org.torproject.android.service">
-
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
 </manifest>
diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java b/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java
index 8231803e..081a9974 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java
@@ -212,8 +212,8 @@ public class TorEventHandler implements EventHandler, TorServiceConstants {
             //get IP from last nodename
             if(status.equals("BUILT")){
 
-                if (node.ipAddress == null)
-                    mService.exec(new ExternalIPFetcher(node));
+               // if (node.ipAddress == null)
+                 //   mService.exec(new ExternalIPFetcher(node));
 
                 hmBuiltNodes.put(circID, node);
             }
@@ -227,6 +227,7 @@ public class TorEventHandler implements EventHandler, TorServiceConstants {
 
     }
 
+    /**
     private class ExternalIPFetcher implements Runnable {
 
         private Node mNode;
@@ -307,7 +308,7 @@ public class TorEventHandler implements EventHandler, TorServiceConstants {
         }
 
 
-    }
+    }**/
 
     private String parseNodeName(String node)
     {
diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
index d1558565..0851d7e3 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
@@ -561,10 +561,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
             appBinHome = getDir(TorServiceConstants.DIRECTORY_TOR_BINARY, Application.MODE_PRIVATE);
             appCacheHome = getDir(TorServiceConstants.DIRECTORY_TOR_DATA,Application.MODE_PRIVATE);
 
-            //mShell = Shell.startShell();
-
             fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
- //           filePolipo = new File(appBinHome, TorServiceConstants.POLIPO_ASSET_KEY);
             fileObfsclient = new File(appBinHome, TorServiceConstants.OBFSCLIENT_ASSET_KEY);
             fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY);
 
@@ -786,7 +783,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
     /**
      * The entire process for starting tor and related services is run from this method.
      */
-    private void startTor() {
+    private synchronized void startTor() {
 
         String torProcId = null;
 
@@ -895,7 +892,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
 
 
 
-    private boolean runTorShellCmd() throws Exception
+    private synchronized boolean runTorShellCmd() throws Exception
     {
         boolean result = true;
 
@@ -1563,59 +1560,59 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
         else
         {
 
-            loadBridgeDefaults ();
+            if (fileObfsclient.exists() && fileObfsclient.canExecute()) {
 
-            extraLines.append("UseBridges 1").append('\n');
-            
-            String bridgeList = new String(Prefs.getBridgesList().getBytes("ISO-8859-1"));
-            boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4");
-            boolean meekBridges = bridgeList.contains("meek");
+                loadBridgeDefaults();
 
-            //check if any PT bridges are needed
-            if (obfsBridges)
-            {
-                extraLines.append("ClientTransportPlugin obfs3 exec " + fileObfsclient.getCanonicalPath()).append('\n');
-                extraLines.append("ClientTransportPlugin obfs4 exec " + fileObfsclient.getCanonicalPath()).append('\n');
-            }
+                extraLines.append("UseBridges 1").append('\n');
 
-            if (meekBridges)
-            {
-                extraLines.append("ClientTransportPlugin meek_lite exec " + fileObfsclient.getCanonicalPath()).append('\n');
-            }
+                String bridgeList = new String(Prefs.getBridgesList().getBytes("ISO-8859-1"));
+                boolean obfsBridges = bridgeList.contains("obfs3") || bridgeList.contains("obfs4");
+                boolean meekBridges = bridgeList.contains("meek");
 
-            if (bridgeList != null && bridgeList.length() > 5) //longer then 1 = some real values here
-            {
-	            String[] bridgeListLines = bridgeList.split("\\r?\\n");
-
-	            for (String bridgeConfigLine : bridgeListLines)
-	            {
-	                if (!TextUtils.isEmpty(bridgeConfigLine))
-	                {
-	                	extraLines.append("Bridge ");
-
-	                	StringTokenizer st = new StringTokenizer (bridgeConfigLine," ");
-	                	while (st.hasMoreTokens())
-	                		extraLines.append(st.nextToken()).append(' ');
-	                	
-	                	extraLines.append("\n");
-	                	
-	                }
-	
-	            }
-	            
-            }
-            else
-            {
+                //check if any PT bridges are needed
+                if (obfsBridges) {
+                    extraLines.append("ClientTransportPlugin obfs3 exec " + fileObfsclient.getCanonicalPath()).append('\n');
+                    extraLines.append("ClientTransportPlugin obfs4 exec " + fileObfsclient.getCanonicalPath()).append('\n');
+                }
+
+                if (meekBridges) {
+                    extraLines.append("ClientTransportPlugin meek_lite exec " + fileObfsclient.getCanonicalPath()).append('\n');
+                }
 
-                String type = "obfs4";
+                if (bridgeList != null && bridgeList.length() > 5) //longer then 1 = some real values here
+                {
+                    String[] bridgeListLines = bridgeList.split("\\r?\\n");
 
-                if (meekBridges)
-                    type = "meek_lite";
+                    for (String bridgeConfigLine : bridgeListLines) {
+                        if (!TextUtils.isEmpty(bridgeConfigLine)) {
+                            extraLines.append("Bridge ");
 
-                getBridges(type,extraLines);
+                            StringTokenizer st = new StringTokenizer(bridgeConfigLine, " ");
+                            while (st.hasMoreTokens())
+                                extraLines.append(st.nextToken()).append(' ');
 
+                            extraLines.append("\n");
+
+                        }
+
+                    }
+
+                } else {
+
+                    String type = "obfs4";
+
+                    if (meekBridges)
+                        type = "meek_lite";
+
+                    getBridges(type, extraLines);
+
+                }
+            }
+            else
+            {
+                throw new IOException("Bridge binary does not exist: " + fileObfsclient.getCanonicalPath());
             }
- 
         }
         
                   
@@ -1844,14 +1841,14 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
 
     @Override
     public IBinder onBind(Intent intent) {
-        Log.e( "CustomNotificationService", "onBind" );
+        Log.e( TAG, "onBind" );
         handleIntent( intent );
         return null;
     }
 
     private void handleIntent( Intent intent ) {
         if( intent != null && intent.getAction() != null ) {
-            Log.e( "CustomNotificationService", intent.getAction().toString() );
+            Log.e( TAG, intent.getAction().toString() );
         }
     }
 
diff --git a/orbotservice/src/main/java/org/torproject/android/service/util/NativeLoader.java b/orbotservice/src/main/java/org/torproject/android/service/util/NativeLoader.java
index 3e910cce..4ad10bb1 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/util/NativeLoader.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/util/NativeLoader.java
@@ -39,12 +39,9 @@ public class NativeLoader {
             }
             out.close();
 
-            if (Build.VERSION.SDK_INT >= 9) {
-                destLocalFile.setReadable(true, false);
-                destLocalFile.setExecutable(true, false);
-                destLocalFile.setWritable(true);
-            }
-
+            destLocalFile.setReadable(true, false);
+            destLocalFile.setExecutable(true, false);
+            destLocalFile.setWritable(true);
 
             return true;
         } catch (Exception e) {
@@ -85,7 +82,6 @@ public class NativeLoader {
                     folder = "mips";
                 } else {
                     folder = "armeabi";
-                    //FileLog.e("tmessages", "Unsupported arch: " + Build.CPU_ABI);
                 }
             } catch (Exception e) {
                 //  FileLog.e("tmessages", e);
@@ -99,9 +95,7 @@ public class NativeLoader {
                 folder = "x86";
             }
 
-            if (loadFromZip(context, binaryName, destLocalFile, folder)) {
-                return true;
-            }
+            return loadFromZip(context, binaryName, destLocalFile, folder);
 
         } catch (Throwable e) {
             e.printStackTrace();
diff --git a/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java b/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java
index c02c5c54..7903fb41 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java
@@ -62,7 +62,7 @@ public class OtherResourceInstaller implements TorServiceConstants {
     /*
      * Extract the Tor resources from the APK file using ZIP
      */
-    public boolean installResources () throws IOException, FileNotFoundException, TimeoutException
+    public boolean installResources () throws IOException
     {
 
         File outFile;
@@ -70,45 +70,21 @@ public class OtherResourceInstaller implements TorServiceConstants {
         if (!installFolder.exists())
             installFolder.mkdirs();
 
-        File libBinary = new File(getNativeLibraryDir(context),OBFSCLIENT_ASSET_KEY + ".so");
+//        File libBinary = new File(getNativeLibraryDir(context),OBFSCLIENT_ASSET_KEY + ".so");
         outFile = new File(installFolder, OBFSCLIENT_ASSET_KEY);
-        if (libBinary.exists()) {
-            if ((!outFile.exists()) || (libBinary.lastModified() > outFile.lastModified())) {
-                streamToFile(new FileInputStream(libBinary), outFile, false, true);
-            }
-
-            setExecutable(outFile);
-        }
-        else
-        {
-            NativeLoader.initNativeLibs(context,OBFSCLIENT_ASSET_KEY,outFile);
-        }
-
-        if (!outFile.exists())
-            return false;
+        NativeLoader.initNativeLibs(context,OBFSCLIENT_ASSET_KEY,outFile);
+ //       setExecutable(outFile);
 
-        libBinary = new File(getNativeLibraryDir(context),PDNSD_ASSET_KEY + ".so");
+  //      libBinary = new File(getNativeLibraryDir(context),PDNSD_ASSET_KEY + ".so");
         outFile = new File(installFolder, PDNSD_ASSET_KEY);
-        if (libBinary.exists()) {
-            if ((!outFile.exists()) || (libBinary.lastModified() > outFile.lastModified())) {
-                streamToFile(new FileInputStream(libBinary), outFile, false, true);
-            }
-
-            setExecutable(outFile);
-        }
-        else
-        {
-            NativeLoader.initNativeLibs(context,PDNSD_ASSET_KEY,outFile);
-        }
-
-        if (!outFile.exists())
-            return false;
+        NativeLoader.initNativeLibs(context,PDNSD_ASSET_KEY,outFile);
+   //     setExecutable(outFile);
 
         return true;
     }
 
     // Return Full path to the directory where native JNI libraries are stored.
-    private static String getNativeLibraryDir(Context context) {
+    public static String getNativeLibraryDir(Context context) {
         ApplicationInfo appInfo = context.getApplicationInfo();
         return appInfo.nativeLibraryDir;
     }





More information about the tor-commits mailing list