Autostart-Funktionalität implementiert: Crontab-Syntax, Scheduler und UI-Integration

This commit is contained in:
2025-08-22 07:49:45 +02:00
parent b6888ca5da
commit 5bfc380a37
9 changed files with 521 additions and 58 deletions

View File

@ -6,9 +6,12 @@ import (
"log"
"medi-wol/internal/database"
"medi-wol/internal/handlers"
"medi-wol/internal/scheduler"
"medi-wol/internal/wol"
"os"
"os/signal"
"strconv"
"syscall"
"github.com/gin-gonic/gin"
)
@ -48,6 +51,11 @@ func main() {
// Wake-on-LAN Service initialisieren
wolService := wol.NewService()
// Scheduler initialisieren und starten
scheduler := scheduler.NewScheduler(db, wolService)
scheduler.Start()
defer scheduler.Stop()
// Handler initialisieren
pcHandler := handlers.NewPCHandler(db, wolService)
@ -75,12 +83,22 @@ func main() {
// Statische Dateien bereitstellen (nach den spezifischen Routen)
r.Static("/static", "./web/static")
// Server starten
serverAddr := fmt.Sprintf(":%d", port)
log.Printf("Medi-WOL startet auf Port %d...", port)
log.Printf("Web-Oberfläche verfügbar unter: http://localhost%s", serverAddr)
// Graceful Shutdown konfigurieren
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
if err := r.Run(serverAddr); err != nil {
log.Fatal("Fehler beim Starten des Servers:", err)
}
// Server in Goroutine starten
go func() {
serverAddr := fmt.Sprintf(":%d", port)
log.Printf("Medi-WOL startet auf Port %d...", port)
log.Printf("Web-Oberfläche verfügbar unter: http://localhost%s", serverAddr)
if err := r.Run(serverAddr); err != nil {
log.Fatal("Fehler beim Starten des Servers:", err)
}
}()
// Auf Shutdown-Signal warten
<-quit
log.Println("Server wird heruntergefahren...")
}