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