From 6707a1aeee1397104d92baaec1e652c657559023 Mon Sep 17 00:00:00 2001 From: Travis Rivers <travrivers88@gmail.com> Date: Mon, 16 Mar 2020 10:15:17 -0600 Subject: [PATCH] split app into restricted and public side --- geomagio/webservice/__init__.py | 2 +- geomagio/webservice/{app.py => public_app.py} | 4 +-- geomagio/webservice/restricted_app.py | 27 +++++++++++++++++++ geomagio/webservice/run_both.py | 22 +++++++++++++++ geomagio/webservice/run_public.py | 7 +++++ geomagio/webservice/run_restricted.py | 6 +++++ geomagio/webservice/wsgi_both.py | 1 + geomagio/webservice/wsgi_public.py | 1 + geomagio/webservice/wsgi_restricted.py | 1 + 9 files changed, 67 insertions(+), 4 deletions(-) rename geomagio/webservice/{app.py => public_app.py} (85%) create mode 100644 geomagio/webservice/restricted_app.py create mode 100644 geomagio/webservice/run_both.py create mode 100644 geomagio/webservice/run_public.py create mode 100644 geomagio/webservice/run_restricted.py create mode 100644 geomagio/webservice/wsgi_both.py create mode 100644 geomagio/webservice/wsgi_public.py create mode 100644 geomagio/webservice/wsgi_restricted.py diff --git a/geomagio/webservice/__init__.py b/geomagio/webservice/__init__.py index 86eab560..d04c97a4 100644 --- a/geomagio/webservice/__init__.py +++ b/geomagio/webservice/__init__.py @@ -1,7 +1,7 @@ from __future__ import absolute_import -from .app import create_app +from .wsgi_both import application __all__ = ["create_app"] diff --git a/geomagio/webservice/app.py b/geomagio/webservice/public_app.py similarity index 85% rename from geomagio/webservice/app.py rename to geomagio/webservice/public_app.py index 97a498ab..9150b71b 100644 --- a/geomagio/webservice/app.py +++ b/geomagio/webservice/public_app.py @@ -6,18 +6,16 @@ import flask from . import data from . import database from . import login -from . import session def create_app(): - app = flask.Flask(__name__) + app = flask.Flask(__name__, instance_relative_config=True) # configure using environment variables app.config.update(os.environ) # connect modules database.init_app(app) login.init_app(app) - session.init_app(app) data.init_app(app) # add default route diff --git a/geomagio/webservice/restricted_app.py b/geomagio/webservice/restricted_app.py new file mode 100644 index 00000000..d7a77871 --- /dev/null +++ b/geomagio/webservice/restricted_app.py @@ -0,0 +1,27 @@ +from __future__ import absolute_import, unicode_literals + +import os +import flask + +from . import data +from . import database +from . import login + + +def create_app(): + app = flask.Flask(__name__, instance_relative_config=True) + # configure using environment variables + app.config.update(os.environ) + + # connect modules + database.init_app(app) + login.init_app(app) + data.init_app(app) + + # add default route + @app.route("/") + def index(): + return "<h1>Restricted Page</h1>" + + return app + diff --git a/geomagio/webservice/run_both.py b/geomagio/webservice/run_both.py new file mode 100644 index 00000000..5bd93e62 --- /dev/null +++ b/geomagio/webservice/run_both.py @@ -0,0 +1,22 @@ +from werkzeug.middleware.dispatcher import DispatcherMiddleware +from werkzeug.serving import run_simple + +from .public_app import create_app as create_public_app +from .restricted_app import create_app as create_restricted_app + +public_app = create_public_app() +restricted_app = create_restricted_app() + +# merge +application = DispatcherMiddleware(public_app, {"/restricted": restricted_app}) + +if __name__ == "__main__": + run_simple( + hostname="localhost", + port=5000, + application=application, + use_reloader=True, + use_debugger=True, + use_evalex=True, + ) + diff --git a/geomagio/webservice/run_public.py b/geomagio/webservice/run_public.py new file mode 100644 index 00000000..d6a76633 --- /dev/null +++ b/geomagio/webservice/run_public.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import +from public_app import create_app + +public_app = create_app() + +if __name__ == "__main__": + public_app.run(host="0.0.0.0") diff --git a/geomagio/webservice/run_restricted.py b/geomagio/webservice/run_restricted.py new file mode 100644 index 00000000..f534fd1d --- /dev/null +++ b/geomagio/webservice/run_restricted.py @@ -0,0 +1,6 @@ +from restricted_app import create_app + +restricted_app = create_app() + +if __name__ == "__main__": + restricted_app.run(host="0.0.0.0") diff --git a/geomagio/webservice/wsgi_both.py b/geomagio/webservice/wsgi_both.py new file mode 100644 index 00000000..fd1cbd80 --- /dev/null +++ b/geomagio/webservice/wsgi_both.py @@ -0,0 +1 @@ +from .run_both import application diff --git a/geomagio/webservice/wsgi_public.py b/geomagio/webservice/wsgi_public.py new file mode 100644 index 00000000..32135e8c --- /dev/null +++ b/geomagio/webservice/wsgi_public.py @@ -0,0 +1 @@ +from run_public import public_app diff --git a/geomagio/webservice/wsgi_restricted.py b/geomagio/webservice/wsgi_restricted.py new file mode 100644 index 00000000..7efe04e0 --- /dev/null +++ b/geomagio/webservice/wsgi_restricted.py @@ -0,0 +1 @@ +from run_restricted import restricted_app -- GitLab