diff options
| author | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-07-02 12:14:59 -0300 | 
|---|---|---|
| committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-07-14 12:14:20 -0300 | 
| commit | 13c0b7cac822a33f7395e3f099a2d37251e2c759 (patch) | |
| tree | dce4f3fa80a3b6e9fade199fdff30a5c055a8cab /src | |
| parent | cf75e3575c33249a6f756dceb423c6ec7f6cd50e (diff) | |
Ask the backend for the country code.
Remove global variable in favor of a helper method that returns the
country code.
Needed in order to split backend/frontend.
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/bitmask/backend/api.py | 3 | ||||
| -rw-r--r-- | src/leap/bitmask/backend/components.py | 42 | ||||
| -rw-r--r-- | src/leap/bitmask/backend/leapbackend.py | 13 | ||||
| -rw-r--r-- | src/leap/bitmask/backend/leapsignaler.py | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/config/flags.py | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/eip_status.py | 15 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 22 | ||||
| -rw-r--r-- | src/leap/bitmask/services/eip/vpnlauncher.py | 6 | 
8 files changed, 90 insertions, 15 deletions
diff --git a/src/leap/bitmask/backend/api.py b/src/leap/bitmask/backend/api.py index 012b3cbc..f8b8c699 100644 --- a/src/leap/bitmask/backend/api.py +++ b/src/leap/bitmask/backend/api.py @@ -26,6 +26,7 @@ API = (      "eip_can_start",      "eip_cancel_setup",      "eip_check_dns", +    "eip_get_gateway_country_code",      "eip_get_gateways_list",      "eip_get_initialized_providers",      "eip_setup", @@ -75,10 +76,12 @@ SIGNALS = (      "eip_disconnected",      "eip_dns_error",      "eip_dns_ok", +    "eip_get_gateway_country_code",      "eip_get_gateways_list",      "eip_get_gateways_list_error",      "eip_get_initialized_providers",      "eip_network_unreachable", +    "eip_no_gateway",      "eip_no_pkexec_error",      "eip_no_polkit_agent_error",      "eip_no_tun_kext_error", diff --git a/src/leap/bitmask/backend/components.py b/src/leap/bitmask/backend/components.py index 5357bed5..fe7b566a 100644 --- a/src/leap/bitmask/backend/components.py +++ b/src/leap/bitmask/backend/components.py @@ -31,6 +31,7 @@ from twisted.python import log  import zope.interface  import zope.proxy +from leap.bitmask.config.leapsettings import LeapSettings  from leap.bitmask.config.providerconfig import ProviderConfig  from leap.bitmask.crypto.srpauth import SRPAuth  from leap.bitmask.crypto.srpregister import SRPRegister @@ -589,6 +590,47 @@ class EIP(object):              self._signaler.signal(                  self._signaler.eip_get_gateways_list, gateways) +    def get_gateway_country_code(self, domain): +        """ +        Signal the country code for the currently used gateway for the given +        provider. + +        :param domain: the domain to get country code. +        :type domain: str + +        Signals: +            eip_get_gateway_country_code -> str +            eip_no_gateway +        """ +        leap_settings = LeapSettings() + +        eip_config = eipconfig.EIPConfig() +        provider_config = ProviderConfig.get_provider_config(domain) + +        api_version = provider_config.get_api_version() +        eip_config.set_api_version(api_version) +        eip_config.load(eipconfig.get_eipconfig_path(domain)) + +        gateway_selector = eipconfig.VPNGatewaySelector(eip_config) +        gateway_conf = leap_settings.get_selected_gateway(domain) + +        if gateway_conf == leap_settings.GATEWAY_AUTOMATIC: +            gateways = gateway_selector.get_gateways() +        else: +            gateways = [gateway_conf] + +        if not gateways: +            self._signaler.signal(self._signaler.eip_no_gateway) +            return + +        # this only works for selecting the first gateway, as we're +        # currently doing. +        ccodes = gateway_selector.get_gateways_country_code() +        gateway_ccode = ccodes[gateways[0]] + +        self._signaler.signal(self._signaler.eip_get_gateway_country_code, +                              gateway_ccode) +      def _can_start(self, domain):          """          Returns True if it has everything that is needed to run EIP, diff --git a/src/leap/bitmask/backend/leapbackend.py b/src/leap/bitmask/backend/leapbackend.py index 4794d988..3bc7a513 100644 --- a/src/leap/bitmask/backend/leapbackend.py +++ b/src/leap/bitmask/backend/leapbackend.py @@ -256,6 +256,19 @@ class LeapBackend(Backend):          """          self._eip.get_gateways_list(domain) +    def eip_get_gateway_country_code(self, domain): +        """ +        Signal a list of gateways for the given provider. + +        :param domain: the domain to get the gateways. +        :type domain: str + +        Signals: +            eip_get_gateways_list -> str +            eip_no_gateway +        """ +        self._eip.get_gateway_country_code(domain) +      def eip_get_initialized_providers(self, domains):          """          Signal a list of the given domains and if they are initialized or not. diff --git a/src/leap/bitmask/backend/leapsignaler.py b/src/leap/bitmask/backend/leapsignaler.py index 47df0911..7912fc20 100644 --- a/src/leap/bitmask/backend/leapsignaler.py +++ b/src/leap/bitmask/backend/leapsignaler.py @@ -37,10 +37,12 @@ class LeapSignaler(SignalerQt):      eip_disconnected = QtCore.Signal(object)      eip_dns_error = QtCore.Signal()      eip_dns_ok = QtCore.Signal() +    eip_get_gateway_country_code = QtCore.Signal(object)      eip_get_gateways_list = QtCore.Signal(object)      eip_get_gateways_list_error = QtCore.Signal()      eip_get_initialized_providers = QtCore.Signal(object)      eip_network_unreachable = QtCore.Signal() +    eip_no_gateway = QtCore.Signal()      eip_no_pkexec_error = QtCore.Signal()      eip_no_polkit_agent_error = QtCore.Signal()      eip_no_tun_kext_error = QtCore.Signal() diff --git a/src/leap/bitmask/config/flags.py b/src/leap/bitmask/config/flags.py index 2f3fdde4..6b70659d 100644 --- a/src/leap/bitmask/config/flags.py +++ b/src/leap/bitmask/config/flags.py @@ -55,5 +55,3 @@ OPENVPN_VERBOSITY = 1  # Skip the checks in the wizard, use for testing purposes only!  SKIP_WIZARD_CHECKS = False - -CURRENT_VPN_COUNTRY = None diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py index 01966d82..df9f3741 100644 --- a/src/leap/bitmask/gui/eip_status.py +++ b/src/leap/bitmask/gui/eip_status.py @@ -589,16 +589,23 @@ class EIPStatusWidget(QtGui.QWidget):          self._systray.setIcon(QtGui.QIcon(selected_pixmap_tray))          self._eip_status_menu.setTitle(tray_message) -    def set_provider(self, provider): +    def set_provider(self, provider, country_code): +        """ +        Set the provider used right now, name and flag (if available). + +        :param provider: the provider in use. +        :type provider: str +        :param country_code: the country code of the gateway in use. +        :type country_code: str +        """          self._provider = provider          self.ui.lblEIPMessage.setText(              self.tr("Routing traffic through: <b>{0}</b>").format(                  provider)) -        ccode = flags.CURRENT_VPN_COUNTRY -        if ccode is not None: -            self.set_country_code(ccode) +        if country_code is not None: +            self.set_country_code(country_code)      def set_country_code(self, code):          """ diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index a77f0215..5549c9cb 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -412,6 +412,9 @@ class MainWindow(QtGui.QMainWindow):          sig.eip_dns_error.connect(self._eip_dns_error) +        sig.eip_get_gateway_country_code.connect(self._set_eip_provider) +        sig.eip_no_gateway.connect(self._set_eip_provider) +          # ==================================================================          # Soledad signals @@ -1481,16 +1484,29 @@ class MainWindow(QtGui.QMainWindow):          signal that currently is beeing processed under status_panel.          After the refactor to EIPConductor this should not be necessary.          """ -        domain = self._login_widget.get_selected_provider() +        self._already_started_eip = True -        self._eip_status.set_provider(domain) +        domain = self._login_widget.get_selected_provider()          self._settings.set_defaultprovider(domain) -        self._already_started_eip = True + +        self._backend.eip_get_gateway_country_code(domain=domain)          # check for connectivity          self._backend.eip_check_dns(domain=domain)      @QtCore.Slot() +    def _set_eip_provider(self, country_code=None): +        """ +        TRIGGERS: +            Signaler.eip_get_gateway_country_code +            Signaler.eip_no_gateway + +        Set the current provider and country code in the eip status widget. +        """ +        domain = self._login_widget.get_selected_provider() +        self._eip_status.set_provider(domain, country_code) + +    @QtCore.Slot()      def _eip_dns_error(self):          """          Trigger this if we don't have a working DNS resolver. diff --git a/src/leap/bitmask/services/eip/vpnlauncher.py b/src/leap/bitmask/services/eip/vpnlauncher.py index 0731bee3..5e2a4743 100644 --- a/src/leap/bitmask/services/eip/vpnlauncher.py +++ b/src/leap/bitmask/services/eip/vpnlauncher.py @@ -136,12 +136,6 @@ class VPNLauncher(object):              logger.error('No gateway was found!')              raise VPNLauncherException('No gateway was found!') -        # this only works for selecting the first gateway, as we're -        # currently doing. -        ccodes = gateway_selector.get_gateways_country_code() -        gateway_ccode = ccodes[gateways[0]] -        flags.CURRENT_VPN_COUNTRY = gateway_ccode -          logger.debug("Using gateways ips: {0}".format(', '.join(gateways)))          return gateways  | 
