android: Disable access to settings depending on managed configuration

This commit is contained in:
Markus Pfeiffer 2023-11-21 15:37:22 +01:00 committed by Tobias Brunner
parent fe13782e3c
commit 0af501ef26

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