diff options
-rw-r--r-- | src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java index 1e9505205..d4c9d32e8 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java @@ -32,6 +32,7 @@ import android.security.KeyChainAliasCallback; import android.security.KeyChainException; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; +import android.text.TextUtils; import android.util.Base64; import android.view.Menu; import android.view.MenuInflater; @@ -44,10 +45,12 @@ import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; +import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.strongswan.android.R; import org.strongswan.android.data.VpnProfile; +import org.strongswan.android.data.VpnProfile.SelectedAppsHandling; import org.strongswan.android.data.VpnProfileDataSource; import org.strongswan.android.data.VpnType; import org.strongswan.android.data.VpnType.VpnTypeFeature; @@ -70,6 +73,7 @@ import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; +import java.util.ArrayList; import java.util.UUID; import javax.net.ssl.SSLHandshakeException; @@ -499,6 +503,19 @@ public class VpnProfileImportActivity extends AppCompatActivity st |= split.optBoolean("block-ipv6") ? VpnProfile.SPLIT_TUNNELING_BLOCK_IPV6 : 0; profile.setSplitTunneling(st == 0 ? null : st); } + /* only one of these can be set, prefer specific apps */ + String selectedApps = getApps(obj.optJSONArray("apps")); + String excludedApps = getApps(obj.optJSONArray("excluded-apps")); + if (!TextUtils.isEmpty(selectedApps)) + { + profile.setSelectedApps(selectedApps); + profile.setSelectedAppsHandling(SelectedAppsHandling.SELECTED_APPS_ONLY); + } + else if (!TextUtils.isEmpty(excludedApps)) + { + profile.setSelectedApps(excludedApps); + profile.setSelectedAppsHandling(SelectedAppsHandling.SELECTED_APPS_EXCLUDE); + } return profile; } @@ -523,6 +540,19 @@ public class VpnProfileImportActivity extends AppCompatActivity return null; } + private String getApps(JSONArray arr) throws JSONException + { + ArrayList<String> apps = new ArrayList<>(); + if (arr != null) + { + for (int i = 0; i < arr.length(); i++) + { + apps.add(arr.getString(i)); + } + } + return TextUtils.join(" ", apps); + } + /** * Save or update the profile depending on whether we actually have a * profile object or not (this was created in updateProfileData) |