diff options
Diffstat (limited to 'server/src/leap')
-rw-r--r-- | server/src/leap/soledad/server/_resource.py (renamed from server/src/leap/soledad/server/resource.py) | 14 | ||||
-rw-r--r-- | server/src/leap/soledad/server/_wsgi.py (renamed from server/src/leap/soledad/server/application.py) | 12 | ||||
-rw-r--r-- | server/src/leap/soledad/server/auth.py | 5 | ||||
-rw-r--r-- | server/src/leap/soledad/server/entrypoint.py | 39 |
4 files changed, 53 insertions, 17 deletions
diff --git a/server/src/leap/soledad/server/resource.py b/server/src/leap/soledad/server/_resource.py index 67e9ae32..89e252d6 100644 --- a/server/src/leap/soledad/server/resource.py +++ b/server/src/leap/soledad/server/_resource.py @@ -18,23 +18,13 @@ A twisted resource that serves the Soledad Server. """ from twisted.web.resource import Resource -from twisted.web.wsgi import WSGIResource -from twisted.internet import reactor -from twisted.python import threadpool -from leap.soledad.server.application import wsgi_application +from ._wsgi import sync_resource __all__ = ['SoledadResource'] -# setup a wsgi resource with its own threadpool -pool = threadpool.ThreadPool() -reactor.callWhenRunning(pool.start) -reactor.addSystemEventTrigger('after', 'shutdown', pool.stop) -wsgi_resource = WSGIResource(reactor, pool, wsgi_application) - - class SoledadResource(Resource): """ This is a dummy twisted resource, used only to allow different entry points @@ -42,7 +32,7 @@ class SoledadResource(Resource): """ def __init__(self): - self.children = {'': wsgi_resource} + self.children = {'': sync_resource} def getChild(self, path, request): # for now, just "rewind" the path and serve the wsgi resource for all diff --git a/server/src/leap/soledad/server/application.py b/server/src/leap/soledad/server/_wsgi.py index 8fd343b3..13c8d13b 100644 --- a/server/src/leap/soledad/server/application.py +++ b/server/src/leap/soledad/server/_wsgi.py @@ -22,6 +22,8 @@ Use it like this: twistd web --wsgi=leap.soledad.server.application.wsgi_application """ from twisted.internet import reactor +from twisted.python import threadpool +from twisted.web.wsgi import WSGIResource from leap.soledad.server import SoledadApp from leap.soledad.server.gzip_middleware import GzipMiddleware @@ -31,7 +33,7 @@ from leap.soledad.common.couch.state import CouchServerState from leap.soledad.common.log import getLogger -__all__ = ['wsgi_application'] +__all__ = ['init_couch_state', 'sync_resource'] _config = None @@ -65,7 +67,7 @@ wsgi_application = GzipMiddleware(_app) # work. Because of that, we delay couch state initialization until the reactor # is running. -def _init_couch_state(_app): +def init_couch_state(_app): try: _app.state = _get_couch_state() except Exception as e: @@ -74,4 +76,8 @@ def _init_couch_state(_app): reactor.stop() -reactor.callWhenRunning(_init_couch_state, _app) +# setup a wsgi resource with its own threadpool +pool = threadpool.ThreadPool() +reactor.callWhenRunning(pool.start) +reactor.addSystemEventTrigger('after', 'shutdown', pool.stop) +sync_resource = WSGIResource(reactor, pool, wsgi_application) diff --git a/server/src/leap/soledad/server/auth.py b/server/src/leap/soledad/server/auth.py index 1f078bff..e616a94f 100644 --- a/server/src/leap/soledad/server/auth.py +++ b/server/src/leap/soledad/server/auth.py @@ -34,8 +34,9 @@ from twisted.web.iweb import ICredentialFactory from twisted.web.resource import IResource from leap.soledad.common.couch import couch_server -from leap.soledad.server.resource import SoledadResource -from leap.soledad.server.application import get_config + +from ._resource import SoledadResource +from ._wsgi import get_config @implementer(IRealm) diff --git a/server/src/leap/soledad/server/entrypoint.py b/server/src/leap/soledad/server/entrypoint.py new file mode 100644 index 00000000..df2b8934 --- /dev/null +++ b/server/src/leap/soledad/server/entrypoint.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# entrypoint.py +# Copyright (C) 2016 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +""" +The entrypoint for Soledad server. +""" +from twisted.internet import reactor + +from .config import load_configuration +from ._resource import SoledadResource +from ._wsgi import init_couch_state + + +# load configuration from file +conf = load_configuration('/etc/soledad/soledad-server.conf') + + +class SoledadEntrypoint(SoledadResource): + + def __init__(self): + SoledadResource.__init__(self, conf) + + +# see the comments in application.py recarding why couch state has to be +# initialized when the reactor is running +reactor.callWhenRunning(init_couch_state, conf['soledad-server']) |