85 lines
2.4 KiB
Python
85 lines
2.4 KiB
Python
from flask import Flask, render_template, redirect, url_for, request, session
|
|
import os
|
|
import subprocess
|
|
import psutil
|
|
|
|
app = Flask(__name__)
|
|
app.secret_key = os.getenv("FLASK_SECRET_KEY", "default_secret_key")
|
|
|
|
# Speichern der Prozess-ID
|
|
bot_process = None
|
|
|
|
def bot_status():
|
|
"""Überprüft, ob der Bot läuft."""
|
|
global bot_process
|
|
if bot_process is None:
|
|
return False
|
|
return bot_process.poll() is None # None bedeutet, dass der Prozess noch läuft
|
|
|
|
def start_bot():
|
|
"""Startet den Bot."""
|
|
global bot_process
|
|
if not bot_status():
|
|
bot_process = subprocess.Popen(["python", "bot.py"], cwd=os.path.dirname(os.path.abspath(__file__)))
|
|
else:
|
|
print("Bot läuft bereits.")
|
|
|
|
def stop_bot():
|
|
"""Stoppt den Bot."""
|
|
global bot_process
|
|
if bot_process and bot_status():
|
|
bot_process.terminate()
|
|
bot_process.wait() # Warten, bis der Prozess beendet ist
|
|
bot_process = None
|
|
else:
|
|
print("Bot läuft nicht.")
|
|
|
|
@app.route("/")
|
|
def index():
|
|
if "username" in session:
|
|
return render_template("index.html", bot_running=bot_status())
|
|
return redirect(url_for("login"))
|
|
|
|
@app.route("/login", methods=["GET", "POST"])
|
|
def login():
|
|
if request.method == "POST":
|
|
username = request.form["username"]
|
|
password = request.form["password"]
|
|
if username == os.getenv("ADMIN_USER") and password == os.getenv("ADMIN_PASS"):
|
|
session["username"] = username
|
|
return redirect(url_for("index"))
|
|
else:
|
|
return "Invalid credentials!"
|
|
return render_template("login.html")
|
|
|
|
@app.route("/logout")
|
|
def logout():
|
|
session.pop("username", None)
|
|
return redirect(url_for("login"))
|
|
|
|
@app.route("/start_bot")
|
|
def start():
|
|
if "username" in session:
|
|
start_bot()
|
|
return redirect(url_for("index"))
|
|
return redirect(url_for("login"))
|
|
|
|
@app.route("/stop_bot")
|
|
def stop():
|
|
if "username" in session:
|
|
stop_bot()
|
|
return redirect(url_for("index"))
|
|
return redirect(url_for("login"))
|
|
|
|
@app.route("/settings", methods=["GET", "POST"])
|
|
def settings():
|
|
if "username" in session:
|
|
if request.method == "POST":
|
|
# Hier kannst du Formulareingaben für Bot-Einstellungen verarbeiten
|
|
pass
|
|
return render_template("settings.html")
|
|
return redirect(url_for("login"))
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=5000, debug=True)
|