Add IP field, ping service, status endpoint and UI; update README
This commit is contained in:
@@ -3,6 +3,7 @@ package handlers
|
||||
import (
|
||||
"medi-wol/internal/database"
|
||||
"medi-wol/internal/models"
|
||||
"medi-wol/internal/ping"
|
||||
"medi-wol/internal/wol"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -12,15 +13,17 @@ import (
|
||||
|
||||
// PCHandler verwaltet die HTTP-Anfragen für PC-Operationen
|
||||
type PCHandler struct {
|
||||
db *database.DB
|
||||
wolService *wol.Service
|
||||
db *database.DB
|
||||
wolService *wol.Service
|
||||
pingService *ping.PingService
|
||||
}
|
||||
|
||||
// NewPCHandler erstellt einen neuen PC-Handler
|
||||
func NewPCHandler(db *database.DB, wolService *wol.Service) *PCHandler {
|
||||
return &PCHandler{
|
||||
db: db,
|
||||
wolService: wolService,
|
||||
db: db,
|
||||
wolService: wolService,
|
||||
pingService: ping.NewPingService(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,7 +72,7 @@ func (h *PCHandler) CreatePC(c *gin.Context) {
|
||||
}
|
||||
|
||||
// PC erstellen
|
||||
pc, err := h.db.CreatePC(req.Name, req.MAC)
|
||||
pc, err := h.db.CreatePC(req.Name, req.MAC, req.IP)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, models.PCResponse{
|
||||
Success: false,
|
||||
@@ -116,7 +119,7 @@ func (h *PCHandler) UpdatePC(c *gin.Context) {
|
||||
}
|
||||
|
||||
// PC aktualisieren
|
||||
pc, err := h.db.UpdatePC(id, req.Name, req.MAC)
|
||||
pc, err := h.db.UpdatePC(id, req.Name, req.MAC, req.IP)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, models.PCResponse{
|
||||
Success: false,
|
||||
@@ -196,3 +199,33 @@ func (h *PCHandler) WakePC(c *gin.Context) {
|
||||
Message: "Wake-on-LAN Paket erfolgreich gesendet an " + pc.Name,
|
||||
})
|
||||
}
|
||||
|
||||
// GetPCStatus gibt den Online-Status aller PCs zurück
|
||||
func (h *PCHandler) GetPCStatus(c *gin.Context) {
|
||||
pcs, err := h.db.GetAllPCs()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, models.PCResponse{
|
||||
Success: false,
|
||||
Message: "Fehler beim Laden der PCs: " + err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Online-Status für alle PCs überprüfen
|
||||
var statusList []models.PCStatus
|
||||
for _, pc := range pcs {
|
||||
online := h.pingService.IsOnline(pc.IP)
|
||||
statusList = append(statusList, models.PCStatus{
|
||||
ID: pc.ID,
|
||||
Name: pc.Name,
|
||||
MAC: pc.MAC,
|
||||
IP: pc.IP,
|
||||
Online: online,
|
||||
})
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"success": true,
|
||||
"status": statusList,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user