From 12655429ac2c99ac2b2f76bd09088d317551ae77 Mon Sep 17 00:00:00 2001 From: Markus Date: Fri, 22 Aug 2025 08:15:39 +0200 Subject: [PATCH] README: Umfassende Dokumentation des Scheduler-Systems und Logging-Features --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5d42aae..064a068 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf - **Wake-on-LAN**: Ein-Klick-Aufwecken von Computern über MAC-Adressen - **IP-Adressverwaltung**: Pro Gerät wird eine IP-Adresse gespeichert - **Online-Status (Ping)**: Geräte können per Ping geprüft und im UI als Online/Offline angezeigt werden +- **Automatischer Autostart**: Scheduler für geplante Wake-on-LAN Ereignisse mit Crontab-Syntax +- **Logging-System**: Vollständige Protokollierung aller WOL-Ereignisse (Button-Klick und Scheduler) - **Moderne Web-Oberfläche**: Responsive Design mit Bootstrap und FontAwesome - **SQLite-Datenbank**: Einfache lokale Datenspeicherung - **Cross-Platform**: Läuft auf Windows und Linux @@ -114,6 +116,22 @@ Falls weder Kommandozeilenparameter noch Umgebungsvariable gesetzt sind, wird Po - Klicken Sie auf den "Löschen"-Button neben dem gewünschten PC - Bestätigen Sie die Löschung +### Autostart konfigurieren +1. **Autostart aktivieren**: Aktivieren Sie die Checkbox "Autostart aktiv" +2. **Crontab-Syntax eingeben**: Verwenden Sie das Format `Minute Stunde Tag Monat Wochentag` + - **Standard**: `30 7 * * Mon-Fri` (Mo-Fr um 7:30 Uhr) + - **Beispiele**: + - `0 8 * * *` = Täglich um 8:00 Uhr + - `0 9 * * Mon,Wed,Fri` = Mo, Mi, Fr um 9:00 Uhr + - `30 7 * * 1-5` = Mo-Fr um 7:30 Uhr +3. **Hilfe**: Link zu [crontab.guru](https://crontab.guru/) für Crontab-Syntax +4. **Speichern**: Änderungen werden automatisch vom Scheduler übernommen + +### Logs einsehen +- **Tooltips**: Die letzten 5 Log-Einträge werden als Tooltip über jeder PC-Zeile angezeigt +- **Logs-Seite**: Vollständige Log-Übersicht unter `/logs` +- **Log-Details**: Jeder Eintrag enthält Timestamp, PC-Name, MAC-Adresse und Auslöser (Button/Scheduler) + ## Windows Installer ### Features @@ -282,6 +300,7 @@ medi-wol/ │ ├── database/ # Datenbanklogik │ ├── handlers/ # HTTP-Handler │ ├── models/ # Datenmodelle +│ ├── scheduler/ # Autostart-Scheduler für WOL-Ereignisse │ └── wol/ # Wake-on-LAN Service ├── web/ # Web-Oberfläche │ ├── static/ # CSS, JavaScript @@ -292,6 +311,8 @@ medi-wol/ ├── go.mod # Go-Module ├── build.bat # Windows Build-Skript (inkl. Installer) ├── build.sh # Linux Build-Skript +├── AUTOSTART_README.md # Dokumentation des Autostart-Systems +├── LOGGING_README.md # Dokumentation des Logging-Systems └── README.md # Diese Datei ``` @@ -302,6 +323,7 @@ Das `installer/` Verzeichnis enthält alle Dateien für den Windows Installer: ## API-Endpunkte +### PC-Management - `GET /` - Hauptseite - `GET /api/pcs` - Alle PCs abrufen - `POST /api/pcs` - Neuen PC erstellen @@ -310,19 +332,37 @@ Das `installer/` Verzeichnis enthält alle Dateien für den Windows Installer: - `POST /api/pcs/:id/wake` - PC aufwecken - `GET /api/pcs/status` - Online-Status aller PCs abrufen (Ping) +### Logging +- `GET /logs` - Logs-Seite anzeigen +- `GET /api/logs` - Alle Log-Einträge abrufen +- `GET /api/logs/pc/:id` - Logs für einen spezifischen PC abrufen +- `GET /api/logs/pc/:id/recent` - Die letzten 5 Logs für einen PC abrufen + ## Datenbank Die Anwendung verwendet SQLite als lokale Datenbank. Die Datenbankdatei `medi-wol.db` wird automatisch im Projektverzeichnis erstellt. ### Tabellenstruktur `pcs` -| Spalte | Typ | Hinweis | -|-------------|----------|------------------------| -| id | INTEGER | Primärschlüssel | -| name | TEXT | Pflichtfeld | -| mac | TEXT | Pflichtfeld, eindeutig | -| ip | TEXT | Pflichtfeld | -| created_at | DATETIME | Automatisch | -| updated_at | DATETIME | Automatisch | +| Spalte | Typ | Hinweis | +|------------------|----------|--------------------------------------------| +| id | INTEGER | Primärschlüssel | +| name | TEXT | Pflichtfeld | +| mac | TEXT | Pflichtfeld, eindeutig | +| ip | TEXT | Pflichtfeld | +| autostart_cron | TEXT | Crontab-Syntax für Autostart (Standard: `30 7 * * Mon-Fri`) | +| autostart_enabled| BOOLEAN | Autostart aktiviert (Standard: false) | +| created_at | DATETIME | Automatisch | +| updated_at | DATETIME | Automatisch | + +### Tabellenstruktur `wol_logs` +| Spalte | Typ | Hinweis | +|-------------|----------|--------------------------------------------| +| id | INTEGER | Primärschlüssel | +| timestamp | DATETIME | Zeitstempel des WOL-Ereignisses | +| pc_id | INTEGER | Referenz auf PC (Foreign Key) | +| pc_name | TEXT | Name des PCs zum Zeitpunkt des Ereignisses | +| mac | TEXT | MAC-Adresse des PCs | +| trigger | TEXT | Auslöser: "button" oder "cron" | ## Wake-on-LAN @@ -375,6 +415,32 @@ golint ./... go vet ./... ``` +## Scheduler-System + +### Übersicht +Der integrierte Scheduler ermöglicht es, Wake-on-LAN Ereignisse automatisch zu geplanten Zeiten auszuführen. Dies ist ideal für: +- **Bürozeiten**: PCs starten automatisch vor Arbeitsbeginn +- **Wartungsfenster**: Regelmäßige Systemstarts für Updates +- **Energiesparen**: PCs werden nur bei Bedarf gestartet + +### Funktionsweise +1. **Crontab-Parser**: Unterstützt Standard Crontab-Syntax +2. **Minuten-Intervall**: Prüft jede Minute auf fällige Aufgaben +3. **Automatische Ausführung**: Sendet WOL-Pakete ohne Benutzerinteraktion +4. **Logging**: Alle Scheduler-Ereignisse werden protokolliert + +### Unterstützte Crontab-Formate +- **Einfache Werte**: `30 7 * * Mon-Fri` (Mo-Fr um 7:30 Uhr) +- **Bereiche**: `0 8-18 * * *` (8:00-18:00 Uhr stündlich) +- **Wochentage**: `0 9 * * Mon,Wed,Fri` (Mo, Mi, Fr um 9:00 Uhr) +- **Wochentag-Bereiche**: `0 8 * * Mon-Fri` (Mo-Fr um 8:00 Uhr) + +### Konfiguration +- **Standard**: `30 7 * * Mon-Fri` (Mo-Fr um 7:30 Uhr) +- **Anpassung**: Über die Web-Oberfläche bei jedem PC individuell +- **Aktivierung**: Checkbox "Autostart aktiv" pro PC +- **Sofortige Übernahme**: Änderungen werden sofort vom Scheduler berücksichtigt + ## Deployment ### Windows Service