Mache Port konfigurierbar über Umgebungsvariablen und Kommandozeilenparameter

This commit is contained in:
2025-08-21 13:44:28 +02:00
parent 9540a800b0
commit 47f8903fa2
2 changed files with 136 additions and 6 deletions

View File

@ -1,15 +1,43 @@
package main
import (
"flag"
"fmt"
"log"
"medi-wol/internal/database"
"medi-wol/internal/handlers"
"medi-wol/internal/wol"
"os"
"strconv"
"github.com/gin-gonic/gin"
)
func main() {
// Kommandozeilenparameter definieren
var port int
flag.IntVar(&port, "port", 0, "Port für den Server (Standard: 8080 oder PORT Umgebungsvariable)")
flag.Parse()
// Port aus Umgebungsvariable oder Standardwert
if port == 0 {
if envPort := os.Getenv("PORT"); envPort != "" {
if parsedPort, err := strconv.Atoi(envPort); err == nil {
port = parsedPort
} else {
log.Printf("Warnung: Ungültige PORT Umgebungsvariable '%s', verwende Standard-Port 8080", envPort)
port = 8080
}
} else {
port = 8080
}
}
// Port-Validierung
if port < 1 || port > 65535 {
log.Fatal("Fehler: Port muss zwischen 1 und 65535 liegen")
}
// Datenbank initialisieren
db, err := database.InitDB()
if err != nil {
@ -39,8 +67,11 @@ func main() {
r.POST("/api/pcs/:id/wake", pcHandler.WakePC)
// Server starten
log.Println("Server startet auf Port 8080...")
if err := r.Run(":8080"); err != nil {
serverAddr := fmt.Sprintf(":%d", port)
log.Printf("Server 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)
}
}