android: Import custom subnets from profile file
authorTobias Brunner <tobias@strongswan.org>
Thu, 22 Jun 2017 10:01:42 +0000 (12:01 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 3 Jul 2017 08:27:53 +0000 (10:27 +0200)
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java

index 16f3530..1e95052 100644 (file)
@@ -490,16 +490,10 @@ public class VpnProfileImportActivity extends AppCompatActivity
                JSONObject split = obj.optJSONObject("split-tunneling");
                if (split != null)
                {
-                       String excluded = split.optString("excluded", null);
-                       if (excluded != null && !excluded.isEmpty())
-                       {
-                               if (IPRangeSet.fromString(excluded) == null)
-                               {
-                                       throw new JSONException(getString(R.string.profile_import_failed_value,
-                                                                                                         "split-tunneling.excluded"));
-                               }
-                               profile.setExcludedSubnets(excluded);
-                       }
+                       String included = getSubnets(split, "subnets");
+                       profile.setIncludedSubnets(included != null ? included : null);
+                       String excluded = getSubnets(split, "excluded");
+                       profile.setExcludedSubnets(excluded != null ? excluded : null);
                        int st = 0;
                        st |= split.optBoolean("block-ipv4") ? VpnProfile.SPLIT_TUNNELING_BLOCK_IPV4 : 0;
                        st |= split.optBoolean("block-ipv6") ? VpnProfile.SPLIT_TUNNELING_BLOCK_IPV6 : 0;
@@ -514,6 +508,21 @@ public class VpnProfileImportActivity extends AppCompatActivity
                return res < min || res > max ? null : res;
        }
 
+       private String getSubnets(JSONObject split, String key) throws JSONException
+       {
+               String subnets = split.optString(key, null);
+               if (subnets != null && !subnets.isEmpty())
+               {
+                       if (IPRangeSet.fromString(subnets) == null)
+                       {
+                               throw new JSONException(getString(R.string.profile_import_failed_value,
+                                                                                                 "split-tunneling." + key));
+                       }
+                       return subnets;
+               }
+               return null;
+       }
+
        /**
         * Save or update the profile depending on whether we actually have a
         * profile object or not (this was created in updateProfileData)