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