diff options
author | Bruno Wagner <bwgpro@gmail.com> | 2015-06-03 17:10:08 -0300 |
---|---|---|
committer | Bruno Wagner <bwgpro@gmail.com> | 2015-06-03 17:10:08 -0300 |
commit | f4f2f0ff3e808bc2c85b914aa750ad68770ed334 (patch) | |
tree | 1163a23d6914fc6da2efddbf1f936144c1435a9f /service/pixelated/config/__init__.py | |
parent | ff3563cbd29cb4f2977ff476389ba679324dac5a (diff) |
Creating a leap session is now part of leap init
We've moved the init soledad method to the leap_initialization
module and gave it a meaningful name, because it was initializing
the whole leap session instead of only soledad, because of that
we removed some of the uneeded config files and deduplicated
some code on maintenance to use the same facilities.
Some arguments had non-meaningful variable names and args was being
passed everywhere (it was unclear who was using which variables in the args)
We changed the initialization to pass those arguments explicitly, then
we can factor them out sometime when it makes sense
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() |