summaryrefslogtreecommitdiff
path: root/service/pixelated/application.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/application.py')
-rw-r--r--service/pixelated/application.py36
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()