summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/core/mail_services.py
diff options
context:
space:
mode:
authordrebs <drebs@riseup.net>2016-09-27 22:04:41 -0300
committerdrebs <drebs@riseup.net>2016-10-03 12:01:29 -0300
commit10330b390de4dfaf72853ecb4454bf4142415add (patch)
tree59c8079d983f7442897c39c14e51ac7272d79baa /src/leap/bitmask/core/mail_services.py
parent9c4bf6adf42f0f9553ae11f24ffeb6f7cf39f374 (diff)
[bug] stop syncing after logout (#8479)
Diffstat (limited to 'src/leap/bitmask/core/mail_services.py')
-rw-r--r--src/leap/bitmask/core/mail_services.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/leap/bitmask/core/mail_services.py b/src/leap/bitmask/core/mail_services.py
index d2967f89..f971c1a2 100644
--- a/src/leap/bitmask/core/mail_services.py
+++ b/src/leap/bitmask/core/mail_services.py
@@ -435,8 +435,6 @@ class StandardMailService(service.MultiService, HookableService):
# TODO factor out Mail Service to inside mail package.
- subscribed_to_hooks = ('on_new_keymanager_instance',)
-
def __init__(self, basedir):
self._basedir = basedir
self._soledad_sessions = {}
@@ -502,12 +500,22 @@ class StandardMailService(service.MultiService, HookableService):
def hook_on_bonafide_auth(self, **kw):
# TODO: if it's expired we should renew it
userid = kw['username']
+
+ # turn on incoming mail service for the user that just logged in
+ multiservice = self.getServiceNamed('incoming_mail')
+ incoming = multiservice.getServiceNamed(userid)
+ log.msg('looking for incoming mail service for auth: %s' % userid)
+ if incoming:
+ incoming.startService()
+
+ # check if smtp cert exists
username, provider = userid.split('@')
cert_path = _get_smtp_client_cert_path(self._basedir, provider,
username)
if os.path.exists(cert_path):
return
+ # fetch smtp cert and store
bonafide = self.parent.getServiceNamed("bonafide")
_, cert_str = yield bonafide.do_get_smtp_cert(userid)
@@ -518,6 +526,14 @@ class StandardMailService(service.MultiService, HookableService):
outf.write(cert_str)
check_and_fix_urw_only(cert_path)
+ def hook_on_bonafide_logout(self, **kw):
+ username = kw['username']
+ multiservice = self.getServiceNamed('incoming_mail')
+ incoming = multiservice.getServiceNamed(username)
+ log.msg('looking for incoming mail service for logout: %s' % username)
+ if incoming:
+ incoming.stopService()
+
# commands
def do_status(self):