srv/poe_manager/app.py aktualisiert

This commit is contained in:
2025-10-07 18:11:44 +02:00
parent 290584e0d9
commit bbbe53f0db

View File

@@ -311,58 +311,103 @@ def toggle_device(mac):
def switches(): def switches():
conn = get_db_connection() conn = get_db_connection()
# Inline-Add # 🔒 Admin-Prüfung
if request.method == 'POST' and not current_user.is_admin:
flash("Zugriff verweigert!")
conn.close()
return redirect(url_for('switches'))
# -------------------------
# 🔹 SWITCH HINZUFÜGEN
# -------------------------
if request.method == 'POST' and 'add_switch' in request.form: if request.method == 'POST' and 'add_switch' in request.form:
if not current_user.is_admin: hostname = request.form['hostname'].strip()
flash("Zugriff verweigert!") ip = request.form['ip'].strip()
return redirect(url_for('switches')) username = request.form['username'].strip()
hostname = request.form['hostname'] password = encrypt_password(request.form['password'].strip())
ip = request.form['ip']
username = request.form['username']
password = encrypt_password(request.form['password'])
try:
conn.execute("INSERT INTO switches (hostname, ip, username, password) VALUES (?, ?, ?, ?)",
(hostname, ip, username, password))
conn.commit()
flash(f"Switch {hostname} hinzugefügt.")
except sqlite3.IntegrityError:
flash("Hostname existiert bereits oder Eingabefehler!")
# Inline-Edit # Prüfung auf doppelte Hostnamen
if request.method == 'POST' and 'edit_switch' in request.form: existing_host = conn.execute(
if not current_user.is_admin: "SELECT hostname FROM switches WHERE hostname = ?", (hostname,)
flash("Zugriff verweigert!") ).fetchone()
if existing_host:
flash(f"Hostname '{hostname}' existiert bereits!")
conn.close()
return redirect(url_for('switches')) return redirect(url_for('switches'))
# Prüfung auf doppelte IP
existing_ip = conn.execute(
"SELECT hostname FROM switches WHERE ip = ?", (ip,)
).fetchone()
if existing_ip:
flash(f"IP-Adresse {ip} wird bereits vom Switch '{existing_ip['hostname']}' verwendet!")
conn.close()
return redirect(url_for('switches'))
# Einfügen
conn.execute(
"INSERT INTO switches (hostname, ip, username, password) VALUES (?, ?, ?, ?)",
(hostname, ip, username, password)
)
conn.commit()
flash(f"Switch '{hostname}' erfolgreich hinzugefügt.")
# -------------------------
# 🔹 SWITCH BEARBEITEN
# -------------------------
elif request.method == 'POST' and 'edit_switch' in request.form:
old_hostname = request.form['old_hostname'] old_hostname = request.form['old_hostname']
hostname = request.form['hostname'] hostname = request.form['hostname'].strip()
ip = request.form['ip'] ip = request.form['ip'].strip()
username = request.form['username'] username = request.form['username'].strip()
password = encrypt_password(request.form['password']) password = encrypt_password(request.form['password'].strip())
try:
conn.execute("""
UPDATE switches
SET hostname=?, ip=?, username=?, password=?
WHERE hostname=?
""", (hostname, ip, username, password, old_hostname))
conn.commit()
flash(f"Switch {hostname} aktualisiert.")
except sqlite3.IntegrityError:
flash("Hostname existiert bereits oder Eingabefehler!")
# Inline-Delete # Hostname prüfen
if request.method == 'POST' and 'delete_switch' in request.form: existing_host = conn.execute(
if not current_user.is_admin: "SELECT hostname FROM switches WHERE hostname = ? AND hostname != ?",
flash("Zugriff verweigert!") (hostname, old_hostname)
).fetchone()
if existing_host:
flash(f"Hostname '{hostname}' existiert bereits für einen anderen Switch!")
conn.close()
return redirect(url_for('switches')) return redirect(url_for('switches'))
# IP prüfen
existing_ip = conn.execute(
"SELECT hostname FROM switches WHERE ip = ? AND hostname != ?",
(ip, old_hostname)
).fetchone()
if existing_ip:
flash(f"IP-Adresse {ip} wird bereits vom Switch '{existing_ip['hostname']}' verwendet!")
conn.close()
return redirect(url_for('switches'))
# Update durchführen
conn.execute("""
UPDATE switches
SET hostname=?, ip=?, username=?, password=?
WHERE hostname=?
""", (hostname, ip, username, password, old_hostname))
conn.commit()
flash(f"Switch '{hostname}' erfolgreich aktualisiert.")
# -------------------------
# 🔹 SWITCH LÖSCHEN
# -------------------------
elif request.method == 'POST' and 'delete_switch' in request.form:
del_hostname = request.form['delete_switch'] del_hostname = request.form['delete_switch']
conn.execute("UPDATE devices SET switch_hostname=NULL WHERE switch_hostname=?", (del_hostname,)) conn.execute("UPDATE devices SET switch_hostname=NULL WHERE switch_hostname=?", (del_hostname,))
conn.execute("DELETE FROM switches WHERE hostname=?", (del_hostname,)) conn.execute("DELETE FROM switches WHERE hostname=?", (del_hostname,))
conn.commit() conn.commit()
flash(f"Switch {del_hostname} gelöscht.") flash(f"Switch '{del_hostname}' gelöscht.")
switches = conn.execute("SELECT hostname, ip, username FROM switches").fetchall() # -------------------------
# 🔹 SWITCHES LADEN
# -------------------------
switches = conn.execute("SELECT hostname, ip, username FROM switches ORDER BY hostname ASC").fetchall()
conn.close() conn.close()
return render_template('switche.html', switches=switches) return render_template('switches.html', switches=switches)
@app.route("/get_log") @app.route("/get_log")
@login_required @login_required