From 5058713490ad0f74c177b883b84af9bacdf6eaf1 Mon Sep 17 00:00:00 2001 From: Bruno Wagner Date: Wed, 3 Jun 2015 11:50:22 -0300 Subject: Leap certificate initialization and credentials gathering is now done on initialize_leap --- service/pixelated/config/__init__.py | 17 ++++-------- service/pixelated/config/app.py | 25 ----------------- service/pixelated/config/config_ua.py | 8 ++---- service/pixelated/config/dispatcher.py | 10 +++---- service/pixelated/config/initialize_leap.py | 43 +++++++++++++++++++++++++++-- service/pixelated/config/soledad.py | 9 +++--- 6 files changed, 57 insertions(+), 55 deletions(-) delete mode 100644 service/pixelated/config/app.py diff --git a/service/pixelated/config/__init__.py b/service/pixelated/config/__init__.py index e9953ded..cda452cd 100644 --- a/service/pixelated/config/__init__.py +++ b/service/pixelated/config/__init__.py @@ -17,11 +17,8 @@ from functools import partial import sys -from pixelated.config.app import App from pixelated.config import app_factory from pixelated.config.args import parse as parse_args -from pixelated.config.config_ua import config_user_agent -from pixelated.config.dispatcher import config_dispatcher from pixelated.config.events_server import init_events_server from pixelated.config.loading_page import loading from pixelated.config.register import register @@ -38,20 +35,16 @@ def initialize(): args = parse_args() init_logging(debug=args.debug) - initialize_leap(args.leap_provider_cert, - args.leap_provider_cert_fingerprint) - - app = App() + app = initialize_leap(args.leap_provider_cert, + args.leap_provider_cert_fingerprint, + args.config, + args.dispatcher, + args.dispatcher_stdin) if args.register: register(*args.register) sys.exit(0) - if args.dispatcher or args.dispatcher_stdin: - config_dispatcher(app, args) - else: - config_user_agent(app, args) - init_events_server() def load_app(): diff --git a/service/pixelated/config/app.py b/service/pixelated/config/app.py deleted file mode 100644 index 6dea9baa..00000000 --- a/service/pixelated/config/app.py +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2014 ThoughtWorks, Inc. -# -# Pixelated is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Pixelated is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with Pixelated. If not, see . - - -class App: - - def __getitem__(self, item): - return self.config[item] - - def __init__(self): - self.resource = None - self.config = {} diff --git a/service/pixelated/config/config_ua.py b/service/pixelated/config/config_ua.py index 50abca1f..5afb501b 100644 --- a/service/pixelated/config/config_ua.py +++ b/service/pixelated/config/config_ua.py @@ -28,7 +28,6 @@ def parse_config_from_file(config_file): config_parser.get('pixelated', 'leap_username'), \ config_parser.get('pixelated', 'leap_password') - # TODO: add error messages in case one of the parameters are empty return provider, user, password @@ -39,10 +38,7 @@ def prompt_for_credentials(): return provider, username, password -def config_user_agent(app, args): - config_file = args.config +def config_user_agent(config_file): provider, user, password = parse_config_from_file(config_file) if config_file else prompt_for_credentials() - app.config['LEAP_SERVER_NAME'] = provider - app.config['LEAP_USERNAME'] = user - app.config['LEAP_PASSWORD'] = password + return (provider, user, password) diff --git a/service/pixelated/config/dispatcher.py b/service/pixelated/config/dispatcher.py index 0a4805dc..eb5634ab 100644 --- a/service/pixelated/config/dispatcher.py +++ b/service/pixelated/config/dispatcher.py @@ -19,7 +19,7 @@ import sys import os -def config_dispatcher(app, args): +def config_dispatcher(dispatcher): def fetch_credentials_from_dispatcher(filename): if not os.path.exists(filename): @@ -31,8 +31,8 @@ def config_dispatcher(app, args): def fetch_credentials_from_dispatcher_stdin(): return json.loads(sys.stdin.read()) - config = fetch_credentials_from_dispatcher(args.dispatcher) if args.dispatcher else fetch_credentials_from_dispatcher_stdin() + config = fetch_credentials_from_dispatcher(dispatcher) if dispatcher else fetch_credentials_from_dispatcher_stdin() - app.config['LEAP_SERVER_NAME'] = config['leap_provider_hostname'] - app.config['LEAP_USERNAME'] = config['user'] - app.config['LEAP_PASSWORD'] = config['password'] + return (config['leap_provider_hostname'], + config['user'], + config['password']) diff --git a/service/pixelated/config/initialize_leap.py b/service/pixelated/config/initialize_leap.py index e393ec3f..856c915b 100644 --- a/service/pixelated/config/initialize_leap.py +++ b/service/pixelated/config/initialize_leap.py @@ -1,7 +1,46 @@ from pixelated.config.leap_cert import init_leap_cert +from pixelated.config.config import Config +from pixelated.config.config_ua import config_user_agent +from pixelated.config.dispatcher import config_dispatcher +import pixelated.bitmask_libraries.certs as certs +def initialize_leap(leap_provider_cert, + leap_provider_cert_fingerprint, + config_file, + dispatcher, + dispatcher_stdin): -def initialize_leap(leap_provider_cert, leap_provider_cert_fingerprint): + init_monkeypatches() + + provider, user, password = gather_credentials(dispatcher, + dispatcher_stdin, + config_file) + + config = Config() + config.provider = provider + config.username = user + config.password = password + + init_leap_cert(leap_provider_cert, leap_provider_cert_fingerprint) + + return config + + +def gather_credentials(dispatcher, dispatcher_stdin, config_file): + if dispatcher or dispatcher_stdin: + return config_dispatcher(dispatcher) + else: + return config_user_agent(config_file) + +def init_leap_cert(leap_provider_cert, leap_provider_cert_fingerprint): + if leap_provider_cert_fingerprint is None: + certs.LEAP_CERT = leap_provider_cert or True + certs.LEAP_FINGERPRINT = None + else: + certs.LEAP_FINGERPRINT = leap_provider_cert_fingerprint + certs.LEAP_CERT = False + +def init_monkeypatches(): import pixelated.support.ext_protobuf import pixelated.support.ext_sqlcipher import pixelated.support.ext_esmtp_sender_factory @@ -9,5 +48,3 @@ def initialize_leap(leap_provider_cert, leap_provider_cert_fingerprint): import pixelated.support.ext_sync import pixelated.support.ext_keymanager_fetch_key import pixelated.support.ext_requests_urllib3 - - init_leap_cert(leap_provider_cert, leap_provider_cert_fingerprint) diff --git a/service/pixelated/config/soledad.py b/service/pixelated/config/soledad.py index 13a6dbd4..6f03d02b 100644 --- a/service/pixelated/config/soledad.py +++ b/service/pixelated/config/soledad.py @@ -17,11 +17,12 @@ from pixelated.bitmask_libraries.session import open as open_leap_session -def init_soledad_and_user_key(app, leap_home): - leap_session = open_leap_session(app['LEAP_USERNAME'], - app['LEAP_PASSWORD'], - app['LEAP_SERVER_NAME'], +def init_soledad_and_user_key(config, leap_home): + leap_session = open_leap_session(config.username, + config.password, + config.provider, leap_home) + soledad = leap_session.soledad_session.soledad soledad.sync(defer_decryption=False) leap_session.nicknym.generate_openpgp_key() -- cgit v1.2.3