summaryrefslogtreecommitdiff
path: root/src/leap/eip
diff options
context:
space:
mode:
authorkali <kali@leap.se>2012-11-13 21:54:04 +0900
committerkali <kali@leap.se>2012-11-13 21:54:04 +0900
commitd2dcf5a1060d60c451570349a6a06ad102d6924c (patch)
tree0797f2ff3bb8137f7ceff33eec91a033f60c2ab0 /src/leap/eip
parentd2d2bbd96a44c347c248a7abb2ee72d7d728d79f (diff)
fix missing provider parameter in leapconfig objects chain
Diffstat (limited to 'src/leap/eip')
-rw-r--r--src/leap/eip/checks.py4
-rw-r--r--src/leap/eip/config.py19
-rw-r--r--src/leap/eip/eipconnection.py18
3 files changed, 29 insertions, 12 deletions
diff --git a/src/leap/eip/checks.py b/src/leap/eip/checks.py
index caaef2ea..116c535e 100644
--- a/src/leap/eip/checks.py
+++ b/src/leap/eip/checks.py
@@ -450,6 +450,8 @@ class EIPConfigChecker(object):
uri = self._get_provider_definition_uri(domain=domain)
# FIXME! Pass ca path verify!!!
+ # BUG #638
+ # FIXME FIXME FIXME
self.defaultprovider.load(
from_uri=uri,
fetcher=self.fetcher,
@@ -464,7 +466,7 @@ class EIPConfigChecker(object):
config = self.eipserviceconfig.config
if uri is None:
if not domain:
- domain = config.get('provider', None)
+ domain = self.domain or config.get('provider', None)
uri = self._get_eip_service_uri(domain=domain)
self.eipserviceconfig.load(from_uri=uri, fetcher=self.fetcher)
diff --git a/src/leap/eip/config.py b/src/leap/eip/config.py
index 57e15c9e..42c00380 100644
--- a/src/leap/eip/config.py
+++ b/src/leap/eip/config.py
@@ -35,9 +35,13 @@ class EIPServiceConfig(baseconfig.JSONLeapConfig):
spec = eipspecs.eipservice_config_spec
def _get_slug(self):
+ domain = getattr(self, 'domain', None)
+ if domain:
+ path = baseconfig.get_provider_path(domain)
+ else:
+ path = baseconfig.get_default_provider_path()
return baseconfig.get_config_file(
- 'eip-service.json',
- folder=baseconfig.get_default_provider_path())
+ 'eip-service.json', folder=path)
def _set_slug(self):
raise AttributeError("you cannot set slug")
@@ -53,15 +57,16 @@ def get_socket_path():
return socket_path
-def get_eip_gateway():
+def get_eip_gateway(provider=None):
"""
return the first host in eip service config
that matches the name defined in the eip.json config
file.
"""
placeholder = "testprovider.example.org"
- eipconfig = EIPConfig()
- #import ipdb;ipdb.set_trace()
+ # XXX check for null on provider??
+
+ eipconfig = EIPConfig(domain=provider)
eipconfig.load()
conf = eipconfig.config
@@ -69,7 +74,7 @@ def get_eip_gateway():
if not primary_gateway:
return placeholder
- eipserviceconfig = EIPServiceConfig()
+ eipserviceconfig = EIPServiceConfig(domain=provider)
eipserviceconfig.load()
eipsconf = eipserviceconfig.get_config()
gateways = eipsconf.get('gateways', None)
@@ -134,7 +139,7 @@ def build_ovpn_options(daemon=False, socket_path=None, **kwargs):
# remote
opts.append('--remote')
- gw = get_eip_gateway()
+ gw = get_eip_gateway(provider=provider)
logger.debug('setting eip gateway to %s', gw)
opts.append(str(gw))
opts.append('1194')
diff --git a/src/leap/eip/eipconnection.py b/src/leap/eip/eipconnection.py
index acd40beb..7828c864 100644
--- a/src/leap/eip/eipconnection.py
+++ b/src/leap/eip/eipconnection.py
@@ -30,6 +30,8 @@ class EIPConnection(OpenVPNConnection):
self.settingsfile = kwargs.get('settingsfile', None)
self.logfile = kwargs.get('logfile', None)
self.provider = kwargs.pop('provider', None)
+ self._providercertchecker = provider_cert_checker
+ self._configchecker = config_checker
self.error_queue = Queue.Queue()
@@ -39,10 +41,7 @@ class EIPConnection(OpenVPNConnection):
checker_signals = kwargs.pop('checker_signals', None)
self.checker_signals = checker_signals
- # initialize checkers
- self.provider_cert_checker = provider_cert_checker(
- domain=self.provider)
- self.config_checker = config_checker(domain=self.provider)
+ self.init_checkers()
host = eipconfig.get_socket_path()
kwargs['host'] = host
@@ -52,13 +51,24 @@ class EIPConnection(OpenVPNConnection):
def has_errors(self):
return True if self.error_queue.qsize() != 0 else False
+ def init_checkers(self):
+ # initialize checkers
+ self.provider_cert_checker = self._providercertchecker(
+ domain=self.provider)
+ self.config_checker = self._configchecker(domain=self.provider)
+
def set_provider_domain(self, domain):
"""
sets the provider domain.
used from the first run wizard when we launch the run_checks
and connect process after having initialized the conductor.
"""
+ # This looks convoluted, right.
+ # We have to reinstantiate checkers cause we're passing
+ # the domain param that we did not know at the beginning
+ # (only for the firstrunwizard case)
self.provider = domain
+ self.init_checkers()
def run_checks(self, skip_download=False, skip_verify=False):
"""