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
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_bcrypt import Bcrypt
from cryptography.fernet import Fernet
from datetime import datetime
import sqlite3, glob, os, re
import sqlite3, glob, os, re, subprocess
app = Flask(__name__)
app.secret_key = "309cc4d5ce1fe7486ae25cbd232bbdfe6a72539c03f0127d372186dbdc0fc928"
@@ -15,6 +15,7 @@ login_manager.login_view = "login"
login_manager.init_app(app)
DB_PATH = "/srv/poe_manager/sqlite.db"
POE_SCRIPT = "/usr/local/bin/custom/poe.sh"
class User(UserMixin):
def __init__(self, id_, username, is_admin):
@@ -458,6 +459,62 @@ def get_log():
except Exception as 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')
@login_required
def logs():