README: Umfassende Dokumentation des Scheduler-Systems und Logging-Features

This commit is contained in:
2025-08-22 08:15:39 +02:00
parent 9f49a1b865
commit 12655429ac

View File

@ -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