From 995049a04fb15bd4e1cf27bf11e3be46f84e3bfe Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Tue, 19 Jan 2016 13:36:31 +0100 Subject: Add mutli-user mode to user-agent - Issue #576 - To start in multi user, run with --multi-user --provider provider-name.tld --- service/pixelated/config/leap.py | 61 +++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 14 deletions(-) (limited to 'service/pixelated/config/leap.py') diff --git a/service/pixelated/config/leap.py b/service/pixelated/config/leap.py index 00723224..b8e5f50d 100644 --- a/service/pixelated/config/leap.py +++ b/service/pixelated/config/leap.py @@ -10,28 +10,61 @@ from twisted.internet import defer import os import logging +import logging +log = logging.getLogger(__name__) + + +def initialize_leap_provider(provider_hostname, provider_cert, provider_fingerprint, leap_home): + LeapCertificate.set_cert_and_fingerprint(provider_cert, + provider_fingerprint) + + config = LeapConfig(leap_home=leap_home, start_background_jobs=True) + provider = LeapProvider(provider_hostname, config) + LeapCertificate(provider).setup_ca_bundle() + + return config, provider + @defer.inlineCallbacks -def initialize_leap(leap_provider_cert, - leap_provider_cert_fingerprint, - credentials_file, - organization_mode, - leap_home, - initial_sync=True): +def initialize_leap_multi_user(provider_hostname, + leap_provider_cert, + leap_provider_cert_fingerprint, + credentials_file, + organization_mode, + leap_home): + + config, provider = initialize_leap_provider(provider_hostname, leap_provider_cert, leap_provider_cert_fingerprint, leap_home) + + defer.returnValue((config, provider)) + + +@defer.inlineCallbacks +def authenticate_user(provider, username, password, initial_sync=True): + leap_session = LeapSessionFactory(provider).create(username, password) + + if initial_sync: + yield leap_session.initial_sync() + + defer.returnValue(leap_session) + + +@defer.inlineCallbacks +def initialize_leap_single_user(leap_provider_cert, + leap_provider_cert_fingerprint, + credentials_file, + organization_mode, + leap_home, + initial_sync=True): + init_monkeypatches() events_server.ensure_server() + 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) + config, provider = initialize_leap_provider(provider, leap_provider_cert, leap_provider_cert_fingerprint, leap_home) - if initial_sync: - leap_session = yield leap_session.initial_sync() + leap_session = yield authenticate_user(provider, username, password) defer.returnValue(leap_session) -- cgit v1.2.3