diff options
-rw-r--r-- | src/leap/bitmask/cli/keys.py | 7 | ||||
-rw-r--r-- | src/leap/bitmask/core/mail_services.py | 42 | ||||
-rw-r--r-- | src/leap/bitmask/core/service.py | 10 |
3 files changed, 44 insertions, 15 deletions
diff --git a/src/leap/bitmask/cli/keys.py b/src/leap/bitmask/cli/keys.py index 12191a5d..82de3868 100644 --- a/src/leap/bitmask/cli/keys.py +++ b/src/leap/bitmask/cli/keys.py @@ -23,7 +23,12 @@ import sys from colorama import Fore from leap.bitmask.cli import command -from leap.bitmask.keymanager.validation import ValidationLevels + +try: + from leap.bitmask.keymanager.validation import ValidationLevels + HAS_KM = True +except ImportError: + HAS_KM = False class Keys(command.Command): diff --git a/src/leap/bitmask/core/mail_services.py b/src/leap/bitmask/core/mail_services.py index 9c34c120..20d6a342 100644 --- a/src/leap/bitmask/core/mail_services.py +++ b/src/leap/bitmask/core/mail_services.py @@ -33,19 +33,31 @@ from twisted.logger import Logger from leap.common.events import catalog, emit_async from leap.common.files import check_and_fix_urw_only -from leap.bitmask.mua import pixelizer -from leap.bitmask.hooks import HookableService + from leap.bitmask.bonafide import config -from leap.bitmask.keymanager import KeyManager -from leap.bitmask.keymanager.errors import KeyNotFound -from leap.bitmask.keymanager.validation import ValidationLevels -from leap.bitmask.mail.constants import INBOX_NAME -from leap.bitmask.mail.mail import Account -from leap.bitmask.mail.imap import service as imap_service -from leap.bitmask.mail.smtp import service as smtp_service -from leap.bitmask.mail.incoming.service import IncomingMail -from leap.bitmask.mail.incoming.service import INCOMING_CHECK_PERIOD +from leap.bitmask.hooks import HookableService from leap.bitmask.util import get_gpg_bin_path, merge_status + +try: + from leap.bitmask.keymanager import KeyManager + from leap.bitmask.keymanager.errors import KeyNotFound + from leap.bitmask.keymanager.validation import ValidationLevels + from leap.bitmask.mail.constants import INBOX_NAME + from leap.bitmask.mail.mail import Account + from leap.bitmask.mail.imap import service as imap_service + from leap.bitmask.mail.smtp import service as smtp_service + from leap.bitmask.mail.incoming.service import IncomingMail + from leap.bitmask.mail.incoming.service import INCOMING_CHECK_PERIOD + HAS_MAIL = True +except ImportError: + HAS_MAIL = False + +try: + from leap.bitmask.mua import pixelizer + HAS_MUA = True +except ImportError: + HAS_MUA = False + from leap.soledad.client.api import Soledad from leap.bitmask.core.uuid_map import UserMap @@ -628,7 +640,7 @@ class StandardMailService(service.MultiService, HookableService): def _maybe_start_pixelated(self, passthrough, userid, soledad, keymanager): incoming = self.getServiceNamed('incoming_mail') account = incoming.getServiceNamed(userid).account - if pixelizer.HAS_PIXELATED: + if HAS_MUA and pixelizer.HAS_PIXELATED: pixelizer.start_pixelated_user_agent( userid, soledad, keymanager, account) return passthrough @@ -646,6 +658,9 @@ class IMAPService(service.Service): super(IMAPService, self).__init__() def startService(self): + if not HAS_MAIL: + self.log.info('Mail module not found') + return self.log.info('Starting IMAP Service') port, factory = imap_service.run_service( self._soledad_sessions, factory=self._factory) @@ -686,6 +701,9 @@ class SMTPService(service.Service): super(SMTPService, self).__init__() def startService(self): + if not HAS_MAIL: + self.log.info('Mail module not found') + return self.log.info('starting smtp service') port, factory = smtp_service.run_service( self._soledad_sessions, diff --git a/src/leap/bitmask/core/service.py b/src/leap/bitmask/core/service.py index 6244b17e..ec3536f2 100644 --- a/src/leap/bitmask/core/service.py +++ b/src/leap/bitmask/core/service.py @@ -35,8 +35,13 @@ from leap.bitmask.core import flags from leap.bitmask.core import _zmq from leap.bitmask.core import _session from leap.bitmask.core.web.service import HTTPDispatcherService -from leap.bitmask.vpn.service import VPNService from leap.common.events import server as event_server +try: + from leap.bitmask.vpn.service import VPNService + HAS_VPN = True +except ImportError: + HAS_VPN = False + backend = flags.BACKEND @@ -201,7 +206,8 @@ class BitmaskBackend(configurable.ConfigurableService): self._maybe_init_service('mail', service, self.basedir) def _init_vpn(self): - self._maybe_init_service('vpn', VPNService) + if HAS_VPN: + self._maybe_init_service('vpn', VPNService) def _init_zmq(self): zs = _zmq.ZMQServerService(self) |