Einbau Restart

This commit is contained in:
2026-07-12 08:53:09 +02:00
parent 5709f32fcd
commit 5e2f3868be
+59 -2
View File
@@ -1,10 +1,10 @@
#u!/usr/bin/env python3 #u!/usr/bin/env python3
from flask import Flask, render_template, request, redirect, url_for, flash from flask import Flask, render_template, request, redirect, url_for, flash, jsonify
from flask_login import LoginManager, login_user, login_required, logout_user, UserMixin, current_user from flask_login import LoginManager, login_user, login_required, logout_user, UserMixin, current_user
from flask_bcrypt import Bcrypt from flask_bcrypt import Bcrypt
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
from datetime import datetime from datetime import datetime
import sqlite3, glob, os, re import sqlite3, glob, os, re, subprocess
app = Flask(__name__) app = Flask(__name__)
app.secret_key = "309cc4d5ce1fe7486ae25cbd232bbdfe6a72539c03f0127d372186dbdc0fc928" app.secret_key = "309cc4d5ce1fe7486ae25cbd232bbdfe6a72539c03f0127d372186dbdc0fc928"
@@ -15,6 +15,7 @@ login_manager.login_view = "login"
login_manager.init_app(app) login_manager.init_app(app)
DB_PATH = "/srv/poe_manager/sqlite.db" DB_PATH = "/srv/poe_manager/sqlite.db"
POE_SCRIPT = "/usr/local/bin/custom/poe.sh"
class User(UserMixin): class User(UserMixin):
def __init__(self, id_, username, is_admin): def __init__(self, id_, username, is_admin):
@@ -458,6 +459,62 @@ def get_log():
except Exception as e: except Exception as e:
return f"Fehler beim Lesen des Logs: {e}" return f"Fehler beim Lesen des Logs: {e}"
@app.route("/restart/<mac>", methods=["POST"])
@login_required
def restart_device(mac):
conn = sqlite3.connect("sqlite.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute("""
SELECT
mac,
name,
is_active
FROM devices
WHERE mac=?
""", (mac,))
device = c.fetchone()
conn.close()
if not device:
return jsonify({
"success": False,
"message": "Gerät wurde nicht gefunden."
}), 404
if device["is_active"] == 0:
return jsonify({
"success": False,
"message": f"{device['name']} ist deaktiviert."
}), 400
try:
subprocess.Popen(
[
POE_SCRIPT,
"restart",
mac
],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
return jsonify({
"success": True,
"device": device["name"]
})
except Exception as e:
return jsonify({
"success": False,
"message": str(e)
}), 500
@app.route('/logs') @app.route('/logs')
@login_required @login_required
def logs(): def logs():