commit 9d132c94adb53ae196ec4e817100b479ce613685 Author: Tim_THW Date: Tue Nov 11 09:53:59 2025 +0000 app.py hinzugefügt diff --git a/app.py b/app.py new file mode 100644 index 0000000..ed319d1 --- /dev/null +++ b/app.py @@ -0,0 +1,64 @@ +from flask import Flask, request, jsonify +import mysql.connector +import os + +app = Flask(__name__) + +DB_CFG = { + "host": os.getenv("DBHOST", "db"), + "user": os.getenv("DBUSER", "monitor_user"), + "password": os.getenv("DBPASS", "monitor_pass"), + "database": os.getenv("DBNAME", "webmonitor"), +} + +def init_db(): + conn = mysql.connector.connect( + host=DB_CFG["host"], + user=DB_CFG["user"], + password=DB_CFG["password"] + ) + cur = conn.cursor() + cur.execute(f"CREATE DATABASE IF NOT EXISTS {DB_CFG['database']}") + conn.database = DB_CFG["database"] + cur.execute(f""" + CREATE TABLE IF NOT EXISTS status_log ( + id INT AUTO_INCREMENT PRIMARY KEY, + timestamp VARCHAR(30) NOT NULL, + label VARCHAR(100) NOT NULL, + http_code INT NOT NULL + ) + """) + conn.commit() + cur.close() + conn.close() + +@app.route("/api/log", methods=["POST"]) +def log_status(): + data = request.get_json(force=True) + if not all(k in data for k in ("timestamp", "label", "http_code")): + return jsonify({"error": "invalid payload"}), 400 + + conn = mysql.connector.connect(**DB_CFG) + cur = conn.cursor() + cur.execute( + f"INSERT INTO status_log (timestamp,label,http_code) VALUES (%s,%s,%s)", + (data["timestamp"], data["label"], data["http_code"]), + ) + conn.commit() + cur.close() + conn.close() + return jsonify({"status": "ok"}), 201 + +@app.route("/api/status", methods=["GET"]) +def get_status(): + conn = mysql.connector.connect(**DB_CFG) + cur = conn.cursor(dictionary=True) + cur.execute("SELECT * FROM status_log ORDER BY id DESC LIMIT 50") + rows = cur.fetchall() + cur.close() + conn.close() + return jsonify(rows) + +if __name__ == "__main__": + init_db() + app.run(host="0.0.0.0", port=5000)