summaryrefslogtreecommitdiff
path: root/service/pixelated/config/app_factory.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/config/app_factory.py')
-rw-r--r--service/pixelated/config/app_factory.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/service/pixelated/config/app_factory.py b/service/pixelated/config/app_factory.py
index d02472ec..c74a46f7 100644
--- a/service/pixelated/config/app_factory.py
+++ b/service/pixelated/config/app_factory.py
@@ -93,7 +93,7 @@ def stop_incoming_mail_fetcher(reactor_stop_function, leap_session):
return wrapper
-def init_app(app, leap_home, leap_session):
+def init_app(resource, leap_home, leap_session):
leap_session.start_background_jobs()
keymanager = leap_session.nicknym.keymanager
@@ -110,7 +110,7 @@ def init_app(app, leap_home, leap_session):
MailboxIndexerListener.SEARCH_ENGINE = search_engine
InputMail.FROM_EMAIL_ADDRESS = leap_session.account_email()
- app.resource.initialize(soledad_querier, keymanager, search_engine, mail_service, draft_service)
+ resource.initialize(soledad_querier, keymanager, search_engine, mail_service, draft_service)
register(signal=proto.SOLEDAD_DONE_DATA_SYNC,
uid=INIT_INDEX_AND_REMOVE_DUPES_CALLBACK,
@@ -130,33 +130,36 @@ def init_app(app, leap_home, leap_session):
reactor.stop = stop_incoming_mail_fetcher(reactor.stop, leap_session)
-def create_app(app, args, leap_session):
- app.resource = RootResource()
- init_app(app, args.home, leap_session)
- if args.sslkey and args.sslcert:
- listen_with_ssl(app, args)
+def create_app(leap_home, leap_session, host, port, sslkey=None, sslcert=None):
+ resource = RootResource()
+ init_app(resource, leap_home, leap_session)
+ if sslkey and sslcert:
+ listen_with_ssl(resource, host, port, sslkey, sslcert)
else:
- listen_without_ssl(app, args)
+ listen_without_ssl(resource, host, port)
-def listen_without_ssl(app, args):
- reactor.listenTCP(args.port, Site(app.resource), interface=args.host)
+def listen_without_ssl(resource, host, port):
+ reactor.listenTCP(port, Site(resource), interface=host)
-def _ssl_options(args):
- with open(args.sslkey) as keyfile:
+def _ssl_options(sslkey, sslcert):
+ with open(sslkey) as keyfile:
pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, keyfile.read())
- with open(args.sslcert) as certfile:
+ with open(sslcert) as certfile:
cert = crypto.load_certificate(crypto.FILETYPE_PEM, certfile.read())
+
acceptable = ssl.AcceptableCiphers.fromOpenSSLCipherString(
u'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:!RC4:HIGH:!MD5:!aNULL:!EDH')
- options = ssl.CertificateOptions(privateKey=pkey, certificate=cert, method=SSL.TLSv1_2_METHOD,
+ options = ssl.CertificateOptions(privateKey=pkey,
+ certificate=cert,
+ method=SSL.TLSv1_2_METHOD,
acceptableCiphers=acceptable)
return options
-def listen_with_ssl(app, args):
- reactor.listenSSL(args.port, Site(app.resource), _ssl_options(args), interface=args.host)
+def listen_with_ssl(resource, host, port, sslkey, sslcert):
+ reactor.listenSSL(port, Site(resource), _ssl_options(sslkey, sslcert), interface=host)
class RedirectToSSL(resource.Resource):