# Medi-WOL Autostart-System

## Übersicht

Das Medi-WOL Autostart-System ermöglicht es, PCs automatisch zu bestimmten Zeitpunkten über Wake-on-LAN zu starten. Es verwendet die Standard-Crontab-Syntax für die Zeitplanung und integriert sich nahtlos in das bestehende Logging-System.

## Funktionen

### 1. **Autostart-Konfiguration pro PC**
- **Crontab-Syntax**: Unterstützt alle Standard-Crontab-Ausdrücke
- **Aktivierung/Deaktivierung**: Einzelne PCs können unabhängig voneinander konfiguriert werden
- **Standardwert**: "30 7 * * Mon-Fri" (Mo-Fr um 7:30 Uhr)

### 2. **Crontab-Syntax-Unterstützung**
- **Minute**: 0-59
- **Stunde**: 0-23
- **Tag**: 1-31
- **Monat**: 1-12
- **Wochentag**: 0-6 (0=Sonntag) oder Mon, Tue, Wed, Thu, Fri, Sat, Sun

### 3. **Automatische Ausführung**
- **Scheduler**: Läuft im Hintergrund und prüft jede Minute
- **Logging**: Alle automatischen WOL-Ereignisse werden mit Trigger "cron" protokolliert
- **Fehlerbehandlung**: Robuste Fehlerbehandlung bei WOL-Ausführung

## Verwendung

### 1. **PC mit Autostart hinzufügen**
1. Navigieren Sie zur Hauptseite
2. Füllen Sie alle Pflichtfelder aus (Name, MAC, IP)
3. Geben Sie den gewünschten Crontab-Ausdruck ein
4. Aktivieren Sie die Checkbox "Autostart aktiv"
5. Klicken Sie auf "PC hinzufügen"

### 2. **Autostart bearbeiten**
1. Klicken Sie auf "Bearbeiten" bei dem gewünschten PC
2. Ändern Sie den Crontab-Ausdruck oder die Aktivierung
3. Klicken Sie auf "Speichern"

### 3. **Crontab-Ausdrücke verstehen**
- **Hilfe**: Klicken Sie auf den Link zu [Crontab-Guru](https://crontab.guru/)
- **Beispiele**:
  - `30 7 * * Mon-Fri` = Mo-Fr um 7:30 Uhr
  - `0 8 * * 1-5` = Mo-Fr um 8:00 Uhr
  - `0 9 * * 0,6` = Sa und So um 9:00 Uhr
  - `*/15 * * * *` = Alle 15 Minuten

## Technische Details

### 1. **Datenbankstruktur**
```sql
ALTER TABLE pcs ADD COLUMN autostart_cron TEXT DEFAULT '30 7 * * Mon-Fri';
ALTER TABLE pcs ADD COLUMN autostart_enabled BOOLEAN DEFAULT 0;
```

### 2. **Scheduler-Implementierung**
- **Go-Routine**: Läuft parallel zum Hauptserver
- **Ticker**: Prüft jede Minute auf auszuführende Aufgaben
- **Crontab-Parser**: Eigene Implementierung für häufige Anwendungsfälle
- **Graceful Shutdown**: Sauberes Beenden bei Server-Herunterfahrt

### 3. **Crontab-Parser-Features**
- **Wildcards**: `*` für "alle"
- **Bereiche**: `1-5` für "1 bis 5"
- **Wochentage**: `Mon-Fri` für "Montag bis Freitag"
- **Einzelwerte**: `30` für "nur 30"

## Beispiele

### **Geschäftliche Anwendungen**
- **Büro-PCs**: `30 7 * * Mon-Fri` - Startet alle Büro-PCs Mo-Fr um 7:30
- **Server**: `0 6 * * *` - Startet Server täglich um 6:00
- **Backup-Systeme**: `0 2 * * 0` - Startet Backup-Systeme sonntags um 2:00

### **Private Anwendungen**
- **Home-Office**: `0 8 * * Mon-Fri` - Startet Arbeits-PC Mo-Fr um 8:00
- **Gaming**: `0 18 * * Fri-Sun` - Startet Gaming-PC Fr-So um 18:00
- **Medien-Server**: `0 20 * * *` - Startet Medien-Server täglich um 20:00

## Sicherheit und Monitoring

### 1. **Logging**
- Alle automatischen WOL-Ereignisse werden protokolliert
- Trigger wird als "cron" gekennzeichnet
- Vollständige Protokollierung in der Logs-Seite

### 2. **Fehlerbehandlung**
- WOL-Fehler werden geloggt, aber nicht an den Benutzer weitergegeben
- Scheduler läuft weiter, auch wenn einzelne WOL-Befehle fehlschlagen
- Robuste Behandlung ungültiger Crontab-Ausdrücke

### 3. **Performance**
- Scheduler prüft nur alle PCs mit aktiviertem Autostart
- Effiziente Datenbankabfragen
- Minimale Server-Belastung

## Erweiterungen

### **Zukünftige Features**
- **Webhook-Integration**: Benachrichtigungen bei erfolgreichen/fehlgeschlagenen Autostarts
- **Erweiterte Crontab-Syntax**: Unterstützung für komplexere Ausdrücke
- **Zeitzonen**: Lokale Zeitzonen-Unterstützung
- **Bedingte Ausführung**: Nur starten wenn PC offline ist

### **Monitoring und Alerting**
- **E-Mail-Benachrichtigungen**: Bei fehlgeschlagenen Autostarts
- **Dashboard**: Übersicht aller geplanten Autostarts
- **Statistiken**: Erfolgsrate und Ausführungszeiten

## Fehlerbehebung

### **Häufige Probleme**
1. **PC startet nicht**: Überprüfen Sie MAC-Adresse und Netzwerk-Konfiguration
2. **Falsche Zeit**: Überprüfen Sie den Crontab-Ausdruck mit Crontab-Guru
3. **Scheduler läuft nicht**: Überprüfen Sie die Server-Logs

### **Debugging**
- **Server-Logs**: Zeigen alle Scheduler-Aktivitäten
- **Logs-Seite**: Zeigt alle WOL-Ereignisse (auch automatische)
- **Crontab-Validierung**: Verwenden Sie Crontab-Guru für Tests

## Support

### **Hilfreiche Links**
- [Crontab-Guru](https://crontab.guru/) - Online-Crontab-Editor und Validator
- [Cron-Wiki](https://en.wikipedia.org/wiki/Cron) - Detaillierte Crontab-Dokumentation
- [Crontab-Examples](https://crontab.guru/examples.html) - Häufige Crontab-Beispiele

### **Kontakt**
Bei Fragen oder Problemen wenden Sie sich an das Medi-WOL-Entwicklungsteam.
