From 9c4bf6adf42f0f9553ae11f24ffeb6f7cf39f374 Mon Sep 17 00:00:00 2001 From: drebs Date: Tue, 27 Sep 2016 20:44:53 -0300 Subject: [refactor] turn mail services into twisted services --- src/leap/bitmask/mail/imap/service/imap.py | 5 +++-- src/leap/bitmask/mail/incoming/service.py | 10 +++++++--- src/leap/bitmask/mail/smtp/__init__.py | 9 +++++---- 3 files changed, 15 insertions(+), 9 deletions(-) (limited to 'src/leap/bitmask/mail') diff --git a/src/leap/bitmask/mail/imap/service/imap.py b/src/leap/bitmask/mail/imap/service/imap.py index aac49b6..9ccff4a 100644 --- a/src/leap/bitmask/mail/imap/service/imap.py +++ b/src/leap/bitmask/mail/imap/service/imap.py @@ -158,7 +158,7 @@ class LeapIMAPFactory(ServerFactory): return ServerFactory.doStop(self) -def run_service(soledad_sessions, port=IMAP_PORT): +def run_service(soledad_sessions, port=IMAP_PORT, factory=None): """ Main entry point to run the service from the client. @@ -169,7 +169,8 @@ def run_service(soledad_sessions, port=IMAP_PORT): the factory for the protocol. :rtype: tuple """ - factory = LeapIMAPFactory(soledad_sessions) + if not factory: + factory = LeapIMAPFactory(soledad_sessions) try: interface = "localhost" diff --git a/src/leap/bitmask/mail/incoming/service.py b/src/leap/bitmask/mail/incoming/service.py index 05f9bb5..b4cdfcf 100644 --- a/src/leap/bitmask/mail/incoming/service.py +++ b/src/leap/bitmask/mail/incoming/service.py @@ -29,12 +29,15 @@ from StringIO import StringIO from urlparse import urlparse from twisted.application.service import Service +from twisted.application.service import IService from twisted.logger import Logger from twisted.python.failure import Failure from twisted.internet import defer, reactor from twisted.internet.task import LoopingCall from twisted.internet.task import deferLater +from zope.interface import implements + from leap.common.events import emit_async, catalog from leap.common.check import leap_assert, leap_assert_type from leap.common.mail import get_email_charset @@ -47,7 +50,7 @@ from leap.soledad.common.crypto import ENC_SCHEME_KEY, ENC_JSON_KEY from leap.soledad.common.errors import InvalidAuthTokenError -logger = Logger() +logger = Logger(__name__) MULTIPART_ENCRYPTED = "multipart/encrypted" MULTIPART_SIGNED = "multipart/signed" @@ -79,7 +82,8 @@ class IncomingMail(Service): This loop will sync the soledad db with the remote server and process all the documents found tagged as incoming mail. """ - # TODO implements IService? + + implements(IService) name = "IncomingMail" @@ -227,7 +231,7 @@ class IncomingMail(Service): def _signal_invalid_auth(failure): failure.trap(InvalidAuthTokenError) - logger.info('sync failed: %r' % failure) + logger.warn('sync failed because token has expired: %r' % failure) # if the token is invalid, send an event so the GUI can # disable mail and show an error message. emit_async(catalog.SOLEDAD_INVALID_AUTH_TOKEN, self._userid) diff --git a/src/leap/bitmask/mail/smtp/__init__.py b/src/leap/bitmask/mail/smtp/__init__.py index 4e0ac89..f8b8e65 100644 --- a/src/leap/bitmask/mail/smtp/__init__.py +++ b/src/leap/bitmask/mail/smtp/__init__.py @@ -32,7 +32,7 @@ SMTP_PORT = 2013 def run_service(soledad_sessions, keymanager_sessions, sendmail_opts, - port=SMTP_PORT): + port=SMTP_PORT, factory=None): """ Main entry point to run the service from the client. @@ -46,8 +46,9 @@ def run_service(soledad_sessions, keymanager_sessions, sendmail_opts, the factory for the protocol. :rtype: tuple """ - factory = SMTPFactory(soledad_sessions, keymanager_sessions, - sendmail_opts) + if not factory: + factory = SMTPFactory(soledad_sessions, keymanager_sessions, + sendmail_opts) try: interface = "localhost" @@ -60,7 +61,7 @@ def run_service(soledad_sessions, keymanager_sessions, sendmail_opts, tport = reactor.listenTCP(port, factory, interface=interface) emit_async(catalog.SMTP_SERVICE_STARTED, str(port)) - return factory, tport + return tport, factory except CannotListenError: logger.error("SMTP Service failed to start: " "cannot listen in port %s" % port) -- cgit v1.2.3