diff options
| -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 | ||||
| -rw-r--r-- | testing/tests/conftest.py | 2 | ||||
| -rw-r--r-- | testing/tests/server/test_auth.py | 2 | 
6 files changed, 55 insertions, 19 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']) diff --git a/testing/tests/conftest.py b/testing/tests/conftest.py index 1ff1cbb7..decfb0a9 100644 --- a/testing/tests/conftest.py +++ b/testing/tests/conftest.py @@ -103,7 +103,7 @@ class SoledadServer(object):              '--logfile=%s' % self._logfile,              '--pidfile=%s' % self._pidfile,              'web', -            '--wsgi=leap.soledad.server.application.wsgi_application', +            '--class=leap.soledad.server.entrypoint.SoledadEntrypoint',              '--port=2424'          ]) diff --git a/testing/tests/server/test_auth.py b/testing/tests/server/test_auth.py index 5b215650..8ef35177 100644 --- a/testing/tests/server/test_auth.py +++ b/testing/tests/server/test_auth.py @@ -31,7 +31,7 @@ from twisted.web.test import test_httpauth  from leap.soledad.server.auth import SoledadRealm  from leap.soledad.server.auth import TokenChecker  from leap.soledad.server.auth import TokenCredentialFactory -from leap.soledad.server.resource import SoledadResource +from leap.soledad.server._resource import SoledadResource  class SoledadRealmTestCase(unittest.TestCase): | 
