Skip to content
Snippets Groups Projects
Commit 0376f33b authored by Václav Bartoš's avatar Václav Bartoš
Browse files

compatibility with Py3.6, params to integrated devel server

parent d58514ed
Branches
Tags
No related merge requests found
# Example of minimal working WSGI script
#!/usr/bin/env python3
import sys
from datetime import datetime
import os.path
import re
import subprocess
from flask import Flask, render_template, request, make_response, redirect, flash
from flask_wtf import FlaskForm
from wtforms import StringField
......@@ -7,11 +13,6 @@ from wtforms.validators import DataRequired, Email
import requests
import yaml
from datetime import datetime
import os.path
import re
import subprocess
app = Flask(__name__)
app.secret_key = "ASDF1234 - CHANGE ME!"
......@@ -26,14 +27,15 @@ def load_config():
"""Load various variables, api keys, etc. and set configuration parameters"""
global SOCTOOLSPROXY, KEYCLOAK_BASE_URL, KEYCLOAK_ADMIN_PASSWORD
variables = yaml.safe_load(open(VARIABLES_FILE, "r"))
print(variables)
# Get FQDN of the main server
SOCTOOLSPROXY = variables["soctoolsproxy"]
assert re.match('[a-zA-Z0-9.-]+', SOCTOOLSPROXY), f"ERROR: The 'soctoolsproxy' variable loaded from '{VARIABLES_FILE}' is not a valid domain name."
# Set base URL to Keycloak
KEYCLOAK_BASE_URL = f"https://{SOCTOOLSPROXY}:12443"
# Load API key for Keycloak
KEYCLOAK_ADMIN_PASSWORD = open(KEYCLOAK_ADMIN_PASSWORD_FILE, "r").read(100) # read max 100 B, the key should never be so long
KEYCLOAK_ADMIN_PASSWORD = open(KEYCLOAK_ADMIN_PASSWORD_FILE, "r").read(100).strip() # read max 100 B, the key should never be so long
print(f"Config loaded:\nSOCTOOLSPROXY={SOCTOOLSPROXY}\nKEYCLOAK_BASE_URL={KEYCLOAK_BASE_URL}\n"
f"KEYCLOAK_ADMIN_PASSWORD={KEYCLOAK_ADMIN_PASSWORD[:3]}...{KEYCLOAK_ADMIN_PASSWORD[-4:]}")
# *** Custom Jinja filters ***
......@@ -105,7 +107,7 @@ def main():
if form_add_user.validate_on_submit():
# TODO check that username doesn't exist, yet (and check validity, i.e. special characters etc.)
# TODO add user
result = subprocess.run(["echo", "test"], capture_output=True)
result = subprocess.run(["echo", "test"])
if result.returncode == 0:
flash(f'User "{form_add_user.username.data}" successfully created.', "success")
else:
......@@ -122,5 +124,12 @@ def main():
# When the script is run directly, run the application on a local development server.
# Optionally pass two parameters, 'host' (IP to listen on) and 'port',
# e.g.: ./main.py 0.0.0.0 8080
if __name__ == '__main__':
app.run()
host, port = '127.0.0.1', 5000 # defaults
if len(sys.argv) > 2:
host = sys.argv[1]
port = int(sys.argv[2])
app.config['ENV'] = 'development'
app.run(host=host, port=port, debug=True)
flask~=2.1.0
flask_wtf~=1.0.0
wtforms~=3.0.1
flask~=2.0.3
flask_wtf~=1.0.1
wtforms~=3.0.0
email-validator~=1.1.3
requests~=2.27.1
jinja2~=3.1.1
PyYAML~=5.2
\ No newline at end of file
jinja2~=3.0.3
PyYAML~=6.0
gunicorn~=20.1.0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment