]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Disable access to settings depending on managed configuration
authorMarkus Pfeiffer <markus.pfeiffer@relution.io>
Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 21 Feb 2024 11:24:53 +0000 (12:24 +0100)
src/frontends/android/app/src/main/java/org/strongswan/android/ui/SettingsFragment.java

index 7f047ce6b4bc1e2aa0a4d4e681ba117aaaccf2dc..771e5a20b259c6d75758e00cfb7daaf6b3ce2ac9 100644 (file)
@@ -18,15 +18,19 @@ package org.strongswan.android.ui;
 
 import static org.strongswan.android.utils.Constants.PREF_DEFAULT_VPN_PROFILE;
 import static org.strongswan.android.utils.Constants.PREF_DEFAULT_VPN_PROFILE_MRU;
+import static org.strongswan.android.utils.Constants.PREF_IGNORE_POWER_WHITELIST;
 
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
 
 import org.strongswan.android.R;
+import org.strongswan.android.data.ManagedConfiguration;
+import org.strongswan.android.data.ManagedConfigurationService;
 import org.strongswan.android.data.VpnProfile;
 import org.strongswan.android.data.VpnProfileDataSource;
 import org.strongswan.android.data.VpnProfileSource;
+import org.strongswan.android.logic.StrongSwanApplication;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -37,14 +41,21 @@ import androidx.preference.ListPreference;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceManager;
+import androidx.preference.SwitchPreference;
 
 public class SettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener
 {
+       private ManagedConfigurationService mManagedConfigurationService;
+
        private ListPreference mDefaultVPNProfile;
+       private SwitchPreference mIgnorePowerWhitelist;
 
        @Override
        public void onCreatePreferences(Bundle bundle, String s)
        {
+               mManagedConfigurationService = StrongSwanApplication.getInstance().getManagedConfigurationService();
+               mManagedConfigurationService.updateSettings();
+
                setPreferencesFromResource(R.xml.settings, s);
 
                mDefaultVPNProfile = findPreference(PREF_DEFAULT_VPN_PROFILE);
@@ -53,6 +64,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
                {
                        mDefaultVPNProfile.setEnabled(false);
                }
+
+               mIgnorePowerWhitelist = findPreference(PREF_IGNORE_POWER_WHITELIST);
        }
 
        @Override
@@ -86,7 +99,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
                }
                profiles.close();
 
-               if (entries.size() <= 1)
+               final ManagedConfiguration managedConfiguration = mManagedConfigurationService.getManagedConfiguration();
+               if (entries.size() <= 1 || !managedConfiguration.isAllowSettingsAccess())
                {
                        mDefaultVPNProfile.setEnabled(false);
                }
@@ -96,6 +110,10 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
                        mDefaultVPNProfile.setEntries(entries.toArray(new CharSequence[0]));
                        mDefaultVPNProfile.setEntryValues(entryvalues.toArray(new CharSequence[0]));
                }
+               if (!managedConfiguration.isAllowSettingsAccess())
+               {
+                       mIgnorePowerWhitelist.setEnabled(false);
+               }
 
                SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity());
                setCurrentProfileName(pref.getString(PREF_DEFAULT_VPN_PROFILE, PREF_DEFAULT_VPN_PROFILE_MRU));