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

commit 9759e94faebaa6d71e8230d15170b0a72d28be39 Author: bim <dsnake@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 + }; }
participants (1)
-
n8fr8@torproject.org