[tor-commits] [orbot/master] Fixes #474 Remove Briar from Orbot VPN Routing + UI

n8fr8 at torproject.org n8fr8 at torproject.org
Wed Dec 22 21:55:09 UTC 2021


commit 9759e94faebaa6d71e8230d15170b0a72d28be39
Author: bim <dsnake at protonmail.com>
Date:   Tue Aug 10 17:08:42 2021 -0400

    Fixes #474 Remove Briar from Orbot VPN Routing + UI
    
    Also removes Tor Browser and Tor Browser Alpha
---
 .../java/org/torproject/android/ui/AppManagerActivity.java  |  9 +++++++--
 .../org/torproject/android/service/vpn/OrbotVpnManager.java |  5 +++--
 .../org/torproject/android/service/vpn/TorifiedApp.java     | 13 +++++--------
 .../java/org/torproject/android/service/vpn/VpnPrefs.java   | 10 ++++++++++
 4 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
index 156ccfce..8994ed50 100644
--- a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
@@ -34,6 +34,7 @@ import org.torproject.android.R;
 import org.torproject.android.service.OrbotConstants;
 import org.torproject.android.service.util.Prefs;
 import org.torproject.android.service.vpn.TorifiedApp;
+import org.torproject.android.service.vpn.VpnPrefs;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -54,9 +55,13 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
     private ListAdapter adapterApps;
     private ProgressBar progressBar;
 
-    // returns true if the given app is enabled and not orbot
+    /**
+     * @return true if the app is "enabled", not Orbot, and not in
+     * {@link org.torproject.android.service.vpn.VpnPrefs#BYPASS_VPN_PACKAGES}
+     */
     public static boolean includeAppInUi(ApplicationInfo applicationInfo) {
         if (!applicationInfo.enabled) return false;
+        if (Arrays.binarySearch(VpnPrefs.BYPASS_VPN_PACKAGES, applicationInfo.packageName) >= 0) return false;
         return !BuildConfig.APPLICATION_ID.equals(applicationInfo.packageName);
     }
 
@@ -117,7 +122,7 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
 
         final LayoutInflater inflater = getLayoutInflater();
 
-        adapterApps = new ArrayAdapter<TorifiedApp>(this, R.layout.layout_apps_item, R.id.itemtext, mApps) {
+        adapterApps = new ArrayAdapter<>(this, R.layout.layout_apps_item, R.id.itemtext, mApps) {
 
             @Override
             public View getView(int position, View convertView, ViewGroup parent) {
diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java
index 0f20b1c6..a0b3178c 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java
@@ -344,9 +344,7 @@ public class OrbotVpnManager implements Handler.Callback {
         for (TorifiedApp app : apps) {
             if (app.isTorified() && (!app.getPackageName().equals(mService.getPackageName()))) {
                 if (prefs.getBoolean(app.getPackageName() + OrbotConstants.APP_TOR_KEY, true)) {
-
                     builder.addAllowedApplication(app.getPackageName());
-
                 }
 
                 perAppEnabled = true;
@@ -354,6 +352,9 @@ public class OrbotVpnManager implements Handler.Callback {
             }
         }
 
+        for (String packageName : VpnPrefs.BYPASS_VPN_PACKAGES)
+            builder.addDisallowedApplication(packageName);
+
         if (!perAppEnabled)
             builder.addDisallowedApplication(mService.getPackageName());
 
diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java
index 2eabaa76..098639ed 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java
@@ -31,6 +31,8 @@ public class TorifiedApp implements Comparable {
     private boolean usesInternet = false;
     private int[] enabledPorts;
 
+
+
     public static ArrayList<TorifiedApp> getApps(Context context, SharedPreferences prefs) {
 
         String tordAppString = prefs.getString(PREFS_KEY_TORIFIED, "");
@@ -56,25 +58,22 @@ public class TorifiedApp implements Comparable {
 
         ApplicationInfo aInfo;
 
-        int appIdx = 0;
         TorifiedApp app;
 
         while (itAppInfo.hasNext()) {
             aInfo = itAppInfo.next();
 
             app = new TorifiedApp();
-
             try {
                 PackageInfo pInfo = pMgr.getPackageInfo(aInfo.packageName, PackageManager.GET_PERMISSIONS);
-
-                if (pInfo != null && pInfo.requestedPermissions != null) {
+                if (Arrays.binarySearch(VpnPrefs.BYPASS_VPN_PACKAGES, aInfo.packageName) >= 0) {
+                    app.setUsesInternet(false);
+                } else if (pInfo != null && pInfo.requestedPermissions != null) {
                     for (String permInfo : pInfo.requestedPermissions) {
                         if (permInfo.equals(Manifest.permission.INTERNET)) {
                             app.setUsesInternet(true);
-
                         }
                     }
-
                 }
 
 
@@ -117,8 +116,6 @@ public class TorifiedApp implements Comparable {
             } else {
                 app.setTorified(false);
             }
-
-            appIdx++;
         }
 
         Collections.sort(apps);
diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnPrefs.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnPrefs.java
index 4945241a..4ac17c91 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnPrefs.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnPrefs.java
@@ -5,4 +5,14 @@ public interface VpnPrefs {
     String PREFS_DNS_PORT = "PREFS_DNS_PORT";
 
     String PREFS_KEY_TORIFIED = "PrefTord";
+
+    /**
+     * Include packages here to make the VPNService ignore these apps (On Lollipop+). This is to
+     * prevent tor over tor scenarios...
+     */
+    String[] BYPASS_VPN_PACKAGES = new String[] {
+            "org.torproject.torbrowser_alpha",
+            "org.torproject.torbrowser",
+            "org.briarproject.briar.android" // https://github.com/guardianproject/orbot/issues/474
+    };
 }





More information about the tor-commits mailing list