diff options
Diffstat (limited to 'service/pixelated/config/__init__.py')
-rw-r--r-- | service/pixelated/config/__init__.py | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/service/pixelated/config/__init__.py b/service/pixelated/config/__init__.py index 871a7925..125ee1cb 100644 --- a/service/pixelated/config/__init__.py +++ b/service/pixelated/config/__init__.py @@ -19,51 +19,54 @@ import sys from pixelated.config import app_factory from pixelated.config.args import parse_user_agent_args -from pixelated.config.events_server import init_events_server -from pixelated.config.loading_page import loading +from pixelated.config.loading_page import LoadingResource from pixelated.config.register import register from pixelated.config.logging_setup import init_logging -from pixelated.config.soledad import init_soledad_and_user_key from twisted.internet import reactor from twisted.internet.threads import deferToThread -from pixelated.support.error_handler import error_handler +from twisted.internet import defer +from twisted.web.server import Site from pixelated.config.initialize_leap import initialize_leap +@defer.inlineCallbacks +def start_user_agent(loading_app, host, port, sslkey, sslcert, leap_home, leap_session): + yield loading_app.stopListening() + + app_factory.create_app(leap_home, + leap_session, + host, + port, + sslkey=sslkey, + sslcert=sslcert) + + def initialize(): args = parse_user_agent_args() init_logging(debug=args.debug) - 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) - init_events_server() - - def load_app(): - # welcome to deferred hell. Or maybe you'll be welcomed later, who knows. - loading_app = loading(args) - - def init_soledad(): - return init_soledad_and_user_key(app, args.home) - - def stop_loading_app(leap_session): - d = loading_app.stopListening() - d.addCallback(partial(start_user_agent_app, leap_session)) + loading_app = reactor.listenTCP(args.port, Site(LoadingResource()), interface=args.host) - def start_user_agent_app(leap_session, _): - app_factory.create_app(app, args, leap_session) + deferred = deferToThread( + lambda: initialize_leap(args.leap_provider_cert, + args.leap_provider_cert_fingerprint, + args.config_file, + args.dispatcher, + args.dispatcher_stdin, + args.leap_home)) - d = deferToThread(init_soledad) - d.addCallback(stop_loading_app) - d.addErrback(error_handler) + deferred.addCallback( + lambda leap_session: start_user_agent(loading_app, + args.host, + args.port, + args.sslkey, + args.sslcert, + args.leap_home, + leap_session)) - reactor.callWhenRunning(load_app) reactor.run() |