diff --git a/setup/docker-compose.yml b/setup/docker-compose.yml index 7c31d2cd..6d14153a 100644 --- a/setup/docker-compose.yml +++ b/setup/docker-compose.yml @@ -5,17 +5,21 @@ version: '3.6' services: redis: image: redis:alpine + networks: + - default setup_master: image: mailu/setup:master networks: - web + - default env_file: .env environment: this_version: "master" labels: - traefik.enable=true - traefik.port=80 + - traefik.docker.network=web - traefik.main.frontend.rule=Host:${ADDRESS};PathPrefix:/master/ depends_on: - redis @@ -24,12 +28,14 @@ services: image: mailu/setup:${RELEASE} networks: - web + - default env_file: .env environment: this_version: ${RELEASE} labels: - traefik.enable=true - traefik.port=80 + - traefik.docker.network=web - traefik.root.frontend.redirect.regex=.* - traefik.root.frontend.redirect.replacement=/${RELEASE}/ - traefik.root.frontend.rule=Host:${ADDRESS};PathPrefix:/ @@ -40,3 +46,5 @@ services: networks: web: external: true + default: + external: false diff --git a/setup/flavors/compose/setup.html b/setup/flavors/compose/setup.html index 0487c98f..46369577 100644 --- a/setup/flavors/compose/setup.html +++ b/setup/flavors/compose/setup.html @@ -11,8 +11,8 @@ in a project directory. First create your project directory.
to read and check the configuration variables generated by the wizard.cd {{ root }}
-curl {{ url_for('.file', uid=uid, filepath='docker-compose.yml', _external=True) }} > docker-compose.yml
-curl {{ url_for('.file', uid=uid, filepath='mailu.env', _external=True) }} > mailu.env
+wget {{ url_for('.file', uid=uid, filepath='docker-compose.yml', _external=True) }}
+wget {{ url_for('.file', uid=uid, filepath='mailu.env', _external=True) }}
{% endcall %}
diff --git a/setup/flavors/stack/setup.html b/setup/flavors/stack/setup.html
index 329a2cba..81470b5b 100644
--- a/setup/flavors/stack/setup.html
+++ b/setup/flavors/stack/setup.html
@@ -11,8 +11,8 @@ in a project directory. First create your project directory.
to read and check the configuration variables generated by the wizard.
cd {{ root }}
-curl {{ url_for('.file', uid=uid, filepath='docker-compose.yml', _external=True) }} > docker-compose.yml
-curl {{ url_for('.file', uid=uid, filepath='mailu.env', _external=True) }} > mailu.env
+wget {{ url_for('.file', uid=uid, filepath='docker-compose.yml', _external=True) }}
+wget {{ url_for('.file', uid=uid, filepath='mailu.env', _external=True) }}
{% endcall %}
diff --git a/setup/server.py b/setup/server.py
index 456cb539..4474cd6c 100644
--- a/setup/server.py
+++ b/setup/server.py
@@ -10,7 +10,9 @@ import random
import ipaddress
-app = flask.Flask(__name__)
+version = os.getenv("this_version")
+static_url_path = "/" + version + "/static"
+app = flask.Flask(__name__, static_url_path=static_url_path)
flask_bootstrap.Bootstrap(app)
db = redis.StrictRedis(host='redis', port=6379, db=0)
@@ -40,29 +42,37 @@ def build_app(path):
def app_context():
return dict(versions=os.getenv("VERSIONS","master").split(','))
- version = os.getenv("this_version")
-
- bp = flask.Blueprint(version, __name__)
- bp.jinja_loader = jinja2.ChoiceLoader([
+ prefix_bp = flask.Blueprint(version, __name__)
+ prefix_bp.jinja_loader = jinja2.ChoiceLoader([
jinja2.FileSystemLoader(os.path.join(path, "templates")),
jinja2.FileSystemLoader(os.path.join(path, "flavors"))
])
- @bp.context_processor
+ root_bp = flask.Blueprint("root", __name__)
+ root_bp.jinja_loader = jinja2.ChoiceLoader([
+ jinja2.FileSystemLoader(os.path.join(path, "templates")),
+ jinja2.FileSystemLoader(os.path.join(path, "flavors"))
+ ])
+
+ @prefix_bp.context_processor
+ @root_bp.context_processor
def bp_context(version=version):
return dict(version=version)
- @bp.route("/")
+ @prefix_bp.route("/")
+ @root_bp.route("/")
def wizard():
return flask.render_template('wizard.html')
- @bp.route("/submit_flavor", methods=["POST"])
+ @prefix_bp.route("/submit_flavor", methods=["POST"])
+ @root_bp.route("/submit_flavor", methods=["POST"])
def submit_flavor():
data = flask.request.form.copy()
steps = sorted(os.listdir(os.path.join(path, "templates", "steps", data["flavor"])))
return flask.render_template('wizard.html', flavor=data["flavor"], steps=steps)
- @bp.route("/submit", methods=["POST"])
+ @prefix_bp.route("/submit", methods=["POST"])
+ @root_bp.route("/submit", methods=["POST"])
def submit():
data = flask.request.form.copy()
data['uid'] = str(uuid.uuid4())
@@ -70,14 +80,16 @@ def build_app(path):
db.set(data['uid'], json.dumps(data))
return flask.redirect(flask.url_for('.setup', uid=data['uid']))
- @bp.route("/setup/