Einbau Restart
This commit is contained in:
+59
-2
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user