summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap/bitmask/config')
-rw-r--r--src/leap/bitmask/config/__init__.py0
-rw-r--r--src/leap/bitmask/config/leapsettings.py36
-rw-r--r--src/leap/bitmask/config/providerconfig.py19
-rw-r--r--src/leap/bitmask/config/tests/test_leapsettings.py5
-rw-r--r--src/leap/bitmask/config/tests/test_providerconfig.py12
5 files changed, 63 insertions, 9 deletions
diff --git a/src/leap/bitmask/config/__init__.py b/src/leap/bitmask/config/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/src/leap/bitmask/config/__init__.py
+++ /dev/null
diff --git a/src/leap/bitmask/config/leapsettings.py b/src/leap/bitmask/config/leapsettings.py
index 338fa475..4660535a 100644
--- a/src/leap/bitmask/config/leapsettings.py
+++ b/src/leap/bitmask/config/leapsettings.py
@@ -65,8 +65,10 @@ class LeapSettings(object):
PROPERPROVIDER_KEY = "ProperProvider"
REMEMBER_KEY = "RememberUserAndPass"
DEFAULTPROVIDER_KEY = "DefaultProvider"
+ AUTOSTARTEIP_KEY = "AutoStartEIP"
ALERTMISSING_KEY = "AlertMissingScripts"
GATEWAY_KEY = "Gateway"
+ PINNED_KEY = "Pinned"
# values
GATEWAY_AUTOMATIC = "Automatic"
@@ -134,6 +136,22 @@ class LeapSettings(object):
return providers
+ def is_pinned_provider(self, domain):
+ """
+ Returns True if the domain 'domain' is pinned with the application.
+ False otherwise.
+
+ :param provider: provider domain
+ :type provider: str
+
+ :rtype: bool
+ """
+ leap_assert(len(domain) > 0, "We need a nonempty domain.")
+ pinned_key = "{0}/{1}".format(domain, self.PINNED_KEY)
+ result = to_bool(self._settings.value(pinned_key, False))
+
+ return result
+
def get_selected_gateway(self, provider):
"""
Returns the configured gateway for the given provider.
@@ -285,6 +303,24 @@ class LeapSettings(object):
else:
self._settings.setValue(self.DEFAULTPROVIDER_KEY, provider)
+ def get_autostart_eip(self):
+ """
+ Gets whether the app should autostart EIP.
+
+ :rtype: bool
+ """
+ return to_bool(self._settings.value(self.AUTOSTARTEIP_KEY, False))
+
+ def set_autostart_eip(self, autostart):
+ """
+ Sets whether the app should autostart EIP.
+
+ :param autostart: True if we should try to autostart EIP.
+ :type autostart: bool
+ """
+ leap_assert_type(autostart, bool)
+ self._settings.setValue(self.AUTOSTARTEIP_KEY, autostart)
+
def get_alert_missing_scripts(self):
"""
Returns the setting for alerting of missing up/down scripts.
diff --git a/src/leap/bitmask/config/providerconfig.py b/src/leap/bitmask/config/providerconfig.py
index c8c8a59e..44698d83 100644
--- a/src/leap/bitmask/config/providerconfig.py
+++ b/src/leap/bitmask/config/providerconfig.py
@@ -44,6 +44,25 @@ class ProviderConfig(BaseConfig):
def __init__(self):
BaseConfig.__init__(self)
+ @classmethod
+ def get_provider_config(self, domain):
+ """
+ Helper to return a valid Provider Config from the domain name.
+
+ :param domain: the domain name of the provider.
+ :type domain: str
+
+ :rtype: ProviderConfig or None if there is a problem loading the config
+ """
+ provider_config = ProviderConfig()
+ provider_config_path = os.path.join(
+ "leap", "providers", domain, "provider.json")
+
+ if not provider_config.load(provider_config_path):
+ provider_config = None
+
+ return provider_config
+
def _get_schema(self):
"""
Returns the schema corresponding to the version given.
diff --git a/src/leap/bitmask/config/tests/test_leapsettings.py b/src/leap/bitmask/config/tests/test_leapsettings.py
index 18166923..b45abfdd 100644
--- a/src/leap/bitmask/config/tests/test_leapsettings.py
+++ b/src/leap/bitmask/config/tests/test_leapsettings.py
@@ -29,6 +29,7 @@ import mock
from leap.common.testing.basetest import BaseLeapTest
from leap.bitmask.config.leapsettings import LeapSettings
+from leap.bitmask.config import flags
class LeapSettingsTest(BaseLeapTest):
@@ -44,6 +45,7 @@ class LeapSettingsTest(BaseLeapTest):
"""
Test that the config file IS NOT stored under the CWD.
"""
+ flags.STANDALONE = False
self._leapsettings = LeapSettings()
with mock.patch('os.listdir') as os_listdir:
# use this method only to spy where LeapSettings is looking for
@@ -57,7 +59,8 @@ class LeapSettingsTest(BaseLeapTest):
"""
Test that the config file IS stored under the CWD.
"""
- self._leapsettings = LeapSettings(standalone=True)
+ flags.STANDALONE = True
+ self._leapsettings = LeapSettings()
with mock.patch('os.listdir') as os_listdir:
# use this method only to spy where LeapSettings is looking for
self._leapsettings.get_configured_providers()
diff --git a/src/leap/bitmask/config/tests/test_providerconfig.py b/src/leap/bitmask/config/tests/test_providerconfig.py
index 7661a1ce..fe27e683 100644
--- a/src/leap/bitmask/config/tests/test_providerconfig.py
+++ b/src/leap/bitmask/config/tests/test_providerconfig.py
@@ -175,10 +175,9 @@ class ProviderConfigTest(BaseLeapTest):
def test_get_ca_cert_path_as_expected(self):
pc = self._provider_config
- pc.get_path_prefix = Mock(return_value='test')
provider_domain = sample_config['domain']
- expected_path = os.path.join('test', 'leap', 'providers',
+ expected_path = os.path.join('leap', 'providers',
provider_domain, 'keys', 'ca',
'cacert.pem')
@@ -186,24 +185,21 @@ class ProviderConfigTest(BaseLeapTest):
os.path.exists = Mock(return_value=True)
cert_path = pc.get_ca_cert_path()
- self.assertEqual(cert_path, expected_path)
+ self.assertTrue(cert_path.endswith(expected_path))
def test_get_ca_cert_path_about_to_download(self):
pc = self._provider_config
- pc.get_path_prefix = Mock(return_value='test')
provider_domain = sample_config['domain']
- expected_path = os.path.join('test', 'leap', 'providers',
+ expected_path = os.path.join('leap', 'providers',
provider_domain, 'keys', 'ca',
'cacert.pem')
cert_path = pc.get_ca_cert_path(about_to_download=True)
-
- self.assertEqual(cert_path, expected_path)
+ self.assertTrue(cert_path.endswith(expected_path))
def test_get_ca_cert_path_fails(self):
pc = self._provider_config
- pc.get_path_prefix = Mock(return_value='test')
# mock 'get_domain' so we don't need to load a config
provider_domain = 'test.provider.com'