Initial commit: PoE Manager modern UI rebuild
- Neues, eigenständiges Frontend (Sidebar, zentriertes Logo in der Topbar, Dark/Light-Theme, Karten-Dashboard, Toasts/Modals statt Bootstrap) - Oeffentliches Kurz-Dashboard ohne Login (Status-Uebersicht) - Browser-SSH-Terminal (paramiko, plattformunabhaengig) zum Testen von Switch-Zugangsdaten inkl. interaktiver Host-Key-Bestaetigung - Granulares Rechtesystem mit Gruppen (Devices/Switches-Berechtigungen) - Aufgeraeumtes Backend mit konfigurierbaren Pfaden, auto-generierten Secrets statt hart codierter Werte im Original Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Gibt pipe-getrennt die Zugangsdaten aller aktiven Geräte + ihrer Switche aus.
|
||||
Wird von poe.sh (Bash) konsumiert, um Erreichbarkeit zu prüfen und im
|
||||
Fehlerfall den PoE-Port neu zu starten.
|
||||
"""
|
||||
import sqlite3
|
||||
from app import decrypt_password, DB_PATH
|
||||
|
||||
|
||||
def generate_ips_list():
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
conn.row_factory = sqlite3.Row
|
||||
|
||||
switches = {
|
||||
row["hostname"]: row
|
||||
for row in conn.execute("SELECT hostname, ip, username, password FROM switches")
|
||||
}
|
||||
|
||||
devices = conn.execute("""
|
||||
SELECT mac, rpi_ip, port, name, switch_hostname
|
||||
FROM devices
|
||||
WHERE is_active=1
|
||||
""").fetchall()
|
||||
conn.close()
|
||||
|
||||
for dev in devices:
|
||||
switch = switches.get(dev["switch_hostname"])
|
||||
if switch:
|
||||
switch_ip = switch["ip"]
|
||||
switch_user = switch["username"]
|
||||
switch_pass = decrypt_password(switch["password"])
|
||||
else:
|
||||
switch_ip = ""
|
||||
switch_user = ""
|
||||
switch_pass = ""
|
||||
|
||||
port = dev["port"] or ""
|
||||
print(
|
||||
f"{dev['rpi_ip']}|"
|
||||
f"{dev['name']}|"
|
||||
f"{switch_ip}|"
|
||||
f"{dev['switch_hostname'] or 'kein Switch'}|"
|
||||
f"{port}|"
|
||||
f"{switch_user}|"
|
||||
f"{switch_pass}|"
|
||||
f"{dev['mac']}"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate_ips_list()
|
||||
Reference in New Issue
Block a user