54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import typing
|
|
import uuid
|
|
|
|
from clients.webclients import Client, CLIENTS
|
|
|
|
from flask import Flask, render_template, request, redirect, session
|
|
|
|
BIOGAMES_HOST = "http://biogames.potato.kinf.wiai.uni-bamberg.de"
|
|
|
|
app = Flask(__name__)
|
|
clients: typing.Dict[str, Client] = {}
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template("index.html", clients=CLIENTS)
|
|
|
|
|
|
@app.route("/login", methods=["POST"])
|
|
def login():
|
|
game = request.form["game"]
|
|
if not game in CLIENTS:
|
|
return redirect("/")
|
|
client = CLIENTS[game](host=BIOGAMES_HOST, username=request.form['username'], password=request.form['password'])
|
|
if client.login():
|
|
session['logged_in'] = True
|
|
session['uid'] = str(uuid.uuid4())
|
|
session['cookies'] = client.cookies
|
|
session['game'] = game
|
|
session['host'] = BIOGAMES_HOST
|
|
clients[session['uid']] = client
|
|
return redirect("/games")
|
|
return redirect("/")
|
|
|
|
|
|
@app.route("/games")
|
|
def games():
|
|
if not session['logged_in']:
|
|
return redirect("/")
|
|
if session['logged_in'] and not session['uid'] in clients:
|
|
clients[session['uid']] = CLIENTS[session['game']](host=session['host'], **session['cookies'])
|
|
return render_template("games.html", logs=clients[session['uid']].list())
|
|
|
|
@app.route("/start", methods=['POST'])
|
|
def start():
|
|
pass
|
|
|
|
@app.route("/status")
|
|
def status():
|
|
pass
|
|
|
|
if __name__ == '__main__':
|
|
app.config.update({"SECRET_KEY":"59765798-2784-11e8-8d05-db4d6f6606c9"})
|
|
app.run(host="0.0.0.0", debug=True)
|