#!/usr/bin/env python3 import sys import time import threading import socket from pathlib import Path from flask import Flask, render_template, request, redirect, jsonify app = Flask(__name__) class Args: def __init__(self, name, port='8050', webport='8051'): if '.' in name: name, port = name.split('.') webport = str(int(port) + 1) args = dict( html = 'common.html', svg = 'common.svg', css = 'common.css', js = 'secop.js', ) common, _, variant = name.partition('_') names = [common, name] if variant else [name] for name in names: for key in list(args): print(f'{name}.{key}') if (Path('templates') / f'{name}.{key}').is_file(): print(f'--- {name}.{key}') args[key] = f'{name}.{key}' hostname = socket.gethostname() if '.' not in hostname: hostname += '.psi.ch' self.hostname = hostname self.webport = webport self.port = int(port) self.html = args.pop('html') self.args = args args = Args(*sys.argv[1:]) @app.route('/') def index(): if request.args.get('tunneled'): wsaddr = f'127.0.0.1:{args.webport}' else: wsaddr = f'{args.hostname}:{args.webport}' return render_template(f'{args.html}', wsaddr=wsaddr, **args.args) if __name__ == '__main__': app.run(host="0.0.0.0", port=args.port, debug=True)