summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Wagner <bwgpro@gmail.com>2015-06-03 11:50:22 -0300
committerBruno Wagner <bwgpro@gmail.com>2015-06-03 11:50:22 -0300
commit5058713490ad0f74c177b883b84af9bacdf6eaf1 (patch)
treec149ef847df94531e79ea7b46b891222c73b2684
parentfd1820c2951f27341a0010cfc4c6009abdfe8261 (diff)
Leap certificate initialization and credentials gathering is now done on initialize_leap
-rw-r--r--service/pixelated/config/__init__.py17
-rw-r--r--service/pixelated/config/app.py25
-rw-r--r--service/pixelated/config/config_ua.py8
-rw-r--r--service/pixelated/config/dispatcher.py10
-rw-r--r--service/pixelated/config/initialize_leap.py43
-rw-r--r--service/pixelated/config/soledad.py9
6 files changed, 57 insertions, 55 deletions
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 <http://www.gnu.org/licenses/>.
-
-
-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()