diff options
Diffstat (limited to 'service/pixelated/application.py')
-rw-r--r-- | service/pixelated/application.py | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/service/pixelated/application.py b/service/pixelated/application.py index 6d83c6f7..dfeb8d82 100644 --- a/service/pixelated/application.py +++ b/service/pixelated/application.py @@ -15,9 +15,7 @@ # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. from twisted.internet import reactor -from twisted.internet.threads import deferToThread from twisted.internet import defer -from twisted.web.server import Site from twisted.internet import ssl from OpenSSL import SSL from OpenSSL import crypto @@ -26,15 +24,22 @@ from pixelated.config import arguments from pixelated.config.services import Services from pixelated.config.leap import initialize_leap from pixelated.config import logger +from pixelated.config.site import PixelatedSite from pixelated.resources.loading_page import LoadingResource from pixelated.resources.root_resource import RootResource +from leap.common.events import ( + register, + catalog as events +) + @defer.inlineCallbacks def start_user_agent(loading_app, host, port, sslkey, sslcert, leap_home, leap_session): yield loading_app.stopListening() services = Services(leap_home, leap_session) + yield services.setup(leap_home, leap_session) resource = RootResource() @@ -42,12 +47,13 @@ def start_user_agent(loading_app, host, port, sslkey, sslcert, leap_home, leap_s services.keymanager, services.search_engine, services.mail_service, - services.draft_service) + services.draft_service, + services.feedback_service) if sslkey and sslcert: - reactor.listenSSL(port, Site(resource), _ssl_options(sslkey, sslcert), interface=host) + reactor.listenSSL(port, PixelatedSite(resource), _ssl_options(sslkey, sslcert), interface=host) else: - reactor.listenTCP(port, Site(resource), interface=host) + reactor.listenTCP(port, PixelatedSite(resource), interface=host) # soledad needs lots of threads reactor.threadpool.adjustPoolsize(5, 15) @@ -71,16 +77,13 @@ def _ssl_options(sslkey, sslcert): def initialize(): args = arguments.parse_user_agent_args() logger.init(debug=args.debug) + loading_app = reactor.listenTCP(args.port, PixelatedSite(LoadingResource()), interface=args.host) - loading_app = reactor.listenTCP(args.port, Site(LoadingResource()), interface=args.host) - - deferred = deferToThread( - lambda: initialize_leap( - args.leap_provider_cert, - args.leap_provider_cert_fingerprint, - args.credentials_file, - args.organization_mode, - args.leap_home)) + deferred = initialize_leap(args.leap_provider_cert, + args.leap_provider_cert_fingerprint, + args.credentials_file, + args.organization_mode, + args.leap_home) deferred.addCallback( lambda leap_session: start_user_agent( @@ -96,6 +99,11 @@ def initialize(): failure.printTraceback() reactor.stop() + def _register_shutdown_on_token_expire(leap_session): + register(events.SOLEDAD_INVALID_AUTH_TOKEN, lambda _: reactor.stop()) + return leap_session + + deferred.addCallback(_register_shutdown_on_token_expire) deferred.addErrback(_quit_on_error) reactor.run() |