summaryrefslogtreecommitdiff
path: root/service/pixelated/config/leap.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/config/leap.py')
-rw-r--r--service/pixelated/config/leap.py60
1 files changed, 46 insertions, 14 deletions
diff --git a/service/pixelated/config/leap.py b/service/pixelated/config/leap.py
index 52cd4c8f..0409e54f 100644
--- a/service/pixelated/config/leap.py
+++ b/service/pixelated/config/leap.py
@@ -1,37 +1,69 @@
from __future__ import absolute_import
-import random
+from leap.common.events import (server as events_server,
+ register, catalog as events)
+from email import message_from_file
from pixelated.config import credentials
-from leap.common.events import server as events_server
from pixelated.bitmask_libraries.config import LeapConfig
from pixelated.bitmask_libraries.certs import LeapCertificate
from pixelated.bitmask_libraries.provider import LeapProvider
from pixelated.bitmask_libraries.session import LeapSessionFactory
+from pixelated.adapter.model.mail import InputMail
+from twisted.internet import defer
+import os
+import logging
+fresh_account = False
+
+
+@defer.inlineCallbacks
def initialize_leap(leap_provider_cert,
leap_provider_cert_fingerprint,
credentials_file,
organization_mode,
- leap_home):
+ leap_home,
+ initial_sync=True):
init_monkeypatches()
- events_server.ensure_server(random.randrange(8000, 11999))
- provider, username, password = credentials.read(organization_mode, credentials_file)
- LeapCertificate.set_cert_and_fingerprint(leap_provider_cert, leap_provider_cert_fingerprint)
+ events_server.ensure_server()
+ register(events.KEYMANAGER_FINISHED_KEY_GENERATION,
+ set_fresh_account)
+ provider, username, password = credentials.read(organization_mode,
+ credentials_file)
+ LeapCertificate.set_cert_and_fingerprint(leap_provider_cert,
+ leap_provider_cert_fingerprint)
config = LeapConfig(leap_home=leap_home, start_background_jobs=True)
provider = LeapProvider(provider, config)
LeapCertificate(provider).setup_ca_bundle()
leap_session = LeapSessionFactory(provider).create(username, password)
- return leap_session
+ if initial_sync:
+ leap_session = yield leap_session.initial_sync()
+
+ global fresh_account
+ if fresh_account:
+ add_welcome_mail(leap_session.mail_store)
+
+ defer.returnValue(leap_session)
+
+
+def add_welcome_mail(mail_store):
+ current_path = os.path.dirname(os.path.abspath(__file__))
+ with open(os.path.join(current_path,
+ '..',
+ 'assets',
+ 'welcome.mail')) as mail_template_file:
+ mail_template = message_from_file(mail_template_file)
+
+ input_mail = InputMail.from_python_mail(mail_template)
+ logging.getLogger('pixelated.config.leap').info('Adding the welcome mail')
+ mail_store.add_mail('INBOX', input_mail.raw)
def init_monkeypatches():
- import pixelated.extensions.protobuf_socket
- import pixelated.extensions.sqlcipher_wal
- import pixelated.extensions.esmtp_sender_factory
- import pixelated.extensions.incoming_decrypt_header
- import pixelated.extensions.soledad_sync_exception
- import pixelated.extensions.keymanager_fetch_key
import pixelated.extensions.requests_urllib3
- import pixelated.extensions.shared_db
+
+
+def set_fresh_account(_, x):
+ global fresh_account
+ fresh_account = True