Bläddra i källkod

working on TV, split tunneling optimized on IKEv2

Khubaib 10 månader sedan
förälder
incheckning
063704ca12
1 ändrade filer med 26 tillägg och 5 borttagningar
  1. 26 5
      app/src/main/java/org/strongswan/android/logic/CharonVpnService.java

+ 26 - 5
app/src/main/java/org/strongswan/android/logic/CharonVpnService.java

@@ -58,6 +58,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;
@@ -268,8 +269,14 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe
                         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("CharonVpnService", "size = " + listEnable.size());
+                            Log.d("CharonVpnService", "listEnable != null");
                             profile.setSplitTunneling(VpnProfile.SPLIT_TUNNELING_BLOCK_IPV4);
                             profile.setSelectedAppsHandling(SelectedAppsHandling.SELECTED_APPS_ONLY);
 
@@ -279,7 +286,24 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe
                                 appPackageName.add(listEnable.get(i).getAppPackageName());
                             }
 
-                            if (appPackageName.size() > 0) {
+                            if (!appPackageName.isEmpty()) {
+                                profile.setSelectedApps(appPackageName);
+                            }
+                        }
+                        else if (listDisable != null && !listDisable.isEmpty())
+                        {
+                            Log.d("CharonVpnService", "size = " + listDisable.size());
+                            Log.d("CharonVpnService", "listDisable != null");
+                            profile.setSplitTunneling(VpnProfile.SPLIT_TUNNELING_BLOCK_IPV4);
+                            profile.setSelectedAppsHandling(SelectedAppsHandling.SELECTED_APPS_EXCLUDE);
+
+                            SortedSet<String> appPackageName = new TreeSet<>();
+                            for (int i=0; i<listDisable.size(); i++)
+                            {
+                                appPackageName.add(listDisable.get(i).getAppPackageName());
+                            }
+
+                            if (!appPackageName.isEmpty()) {
                                 profile.setSelectedApps(appPackageName);
                             }
                         }
@@ -319,9 +343,6 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe
                         }
                     }
 
-
-
-
 //                    if (sessionManager.isSplitTunnelEnabled()) {
 //                        profile.setSplitTunneling(VpnProfile.SPLIT_TUNNELING_BLOCK_IPV4);
 //                        profile.setSelectedAppsHandling(SelectedAppsHandling.SELECTED_APPS_ONLY);