Bläddra i källkod

split tunneling optimized for openvpn on TV

Khubaib 10 månader sedan
förälder
incheckning
8c23b43681

+ 2 - 2
.idea/deploymentTargetSelector.xml

@@ -4,10 +4,10 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
-        <DropdownSelection timestamp="2024-06-13T15:03:04.638120296Z">
+        <DropdownSelection timestamp="2024-06-14T10:24:17.798644529Z">
           <Target type="DEFAULT_BOOT">
             <handle>
-              <DeviceId pluginId="Default" identifier="serial=192.168.110.12:5555;connection=5c066f4b" />
+              <DeviceId pluginId="Default" identifier="serial=192.168.110.8:5555;connection=9c358723" />
             </handle>
           </Target>
         </DropdownSelection>

+ 31 - 41
app/src/main/java/com/vpn/fastestvpnservice/utils/VPNConnectionUtilsTV.kt

@@ -217,21 +217,39 @@ class VPNConnectionUtilsTV: VpnStatus.StateListener {
             if (StaticMethods.isTV(context))                              // TV
             {
                 val listEnable = basePreferenceHelper.getEnableTvAppsSplit()
+                val listDisable = basePreferenceHelper.getDisableTvAppsSplit()
 
-                if (listEnable?.size == 0) {
-                    Log.d("TCP/UDP Split Tunneling", "All apps")
-                    Log.d("OpenVPNService", "VPNCUTV listEnable?.size == 0")
+                if (!listEnable.isNullOrEmpty())
+                {
+                    Log.d("OpenVPNService", "VPNCUTV !listEnable.isNullOrEmpty()")
+                    Log.d("OpenVPNService", "VPNCUTV listEnable?.size = ${listEnable.size}")
 
+                    val appPackageName: SortedSet<String> = TreeSet()
+                    for (i in listEnable.indices) {
+                        appPackageName.add(listEnable[i].appPackageName)
+                    }
+
+                    if (appPackageName.size > 0)
+                    {
+                        for (app in appPackageName)
+                        {
+                            try {
+                                vp?.mAllowedAppsVpn?.add(app)
+                                Log.d("packages Vpn", app)
+                            } catch (e: PackageManager.NameNotFoundException) {
+                                e.printStackTrace()
+                            }
+                        }
+                    }
                 }
-                else
+                else if (!listDisable.isNullOrEmpty())
                 {
-                    Log.d("OpenVPNService", "VPNCUTV else")
+                    Log.d("OpenVPNService", "VPNCUTV !listDisable.isNullOrEmpty()")
+                    Log.d("OpenVPNService", "VPNCUTV listDisable?.size = ${listDisable.size}")
 
                     val appPackageName: SortedSet<String> = TreeSet()
-                    if (listEnable != null){
-                        for (i in listEnable.indices) {
-                            appPackageName.add(listEnable[i].appPackageName)
-                        }
+                    for (i in listDisable.indices) {
+                        appPackageName.add(listDisable[i].appPackageName)
                     }
 
                     if (appPackageName.size > 0)
@@ -247,39 +265,11 @@ class VPNConnectionUtilsTV: VpnStatus.StateListener {
                         }
                     }
                 }
+                else {
+                    Log.d("OpenVPNService", "VPNCUTV else")
+                }
             }
-            else{                                                           // Android
-//                basePreferenceHelper.getRadioBtnSplitPos().let {
-//                    when (it) {
-//                        0 -> {
-//                        }
-//                        1 -> {
-//                            if (selectedApps != null && selectedApps.size > 0) {
-//                                for (app in selectedApps) {
-//                                    try {
-//                                        vp?.mAllowedAppsVpn?.add(app)
-//                                        Log.d("packages Vpn", app)
-//                                    } catch (e: PackageManager.NameNotFoundException) {
-//                                        e.printStackTrace()
-//                                    }
-//                                }
-//                            }
-//                        }
-//                        2 -> {
-//                            if (selectedAppsNoVpn != null && selectedAppsNoVpn.size > 0) {
-//                                for (app in selectedAppsNoVpn) {
-//                                    try {
-//                                        vp?.mAllowedAppsVpn?.add(app)
-//                                        Log.d("packages NoVpn", app)
-//                                    } catch (e: PackageManager.NameNotFoundException) {
-//                                        e.printStackTrace()
-//                                    }
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-            }
+
 
             ///////////////// openvpn split tunneling end /////////////////
             vp?.mAllowedAppsVpnAreDisallowed = false

+ 26 - 5
app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java

@@ -54,6 +54,7 @@ import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.vpn.fastestvpnservice.MainActivity;
 import com.vpn.fastestvpnservice.R;
+import com.vpn.fastestvpnservice.beans.TvDisableApps;
 import com.vpn.fastestvpnservice.beans.TvEnableApps;
 import com.vpn.fastestvpnservice.constants.AppConstant;
 import com.vpn.fastestvpnservice.constants.AppEnum;
@@ -845,7 +846,10 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
             ArrayList<TvEnableApps> listEnable = new ArrayList<TvEnableApps>();
             listEnable = sessionManager.getEnableTvAppsSplit();
 
-            if (listEnable != null)
+            ArrayList<TvDisableApps> listDisable = new ArrayList<TvDisableApps>();
+            listDisable = sessionManager.getDisableTvAppsSplit();
+
+            if (listEnable != null && !listEnable.isEmpty())
             {
                 Log.d("OpenVPNService", "listEnable != null");
                 SortedSet<String> appPackageName = new TreeSet<>();
@@ -865,15 +869,32 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
                         }
                     }
                 }
-
-
+            }
+            else if (listDisable != null && !listDisable.isEmpty())
+            {
+                Log.d("OpenVPNService", "listDisable != null");
+                SortedSet<String> appPackageName = new TreeSet<>();
+                for (int i=0; i<listDisable.size(); i++)
+                {
+                    appPackageName.add(listDisable.get(i).getAppPackageName());
+                }
+                if (appPackageName.size() > 0)
+                {
+                    for (String app: appPackageName)
+                    {
+                        try {
+                            builder.addDisallowedApplication(app);
+                        }
+                        catch (PackageManager.NameNotFoundException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
             }
             else
             {
                 Log.d("OpenVPNService", "All apps");
             }
-
-
         }
         else{
             if (sessionManager.getSplitPosition().equals(splitList.get(0))){