fix: system_data als RawJSON durchreichen — Windows-Daten nicht mehr weggeworfen

This commit is contained in:
cynfo3000 2026-03-10 01:56:09 +01:00
parent e94fea3e91
commit 0e6154a0dd
3 changed files with 14 additions and 6 deletions

View File

@ -339,10 +339,15 @@ func (h *Handler) getAgent(w http.ResponseWriter, r *http.Request) {
return return
} }
// system_data als Roh-JSON ausgeben (plattformunabhaengig)
var rawSD interface{} = sysData
if sysData != nil && len(sysData.RawJSON) > 0 {
rawSD = json.RawMessage(sysData.RawJSON)
}
result := map[string]interface{}{ result := map[string]interface{}{
"agent": agent, "agent": agent,
"status": models.CalculateAgentStatus(agent.LastHeartbeat), "status": models.CalculateAgentStatus(agent.LastHeartbeat),
"system_data": sysData, "system_data": rawSD,
} }
writeJSON(w, http.StatusOK, result) writeJSON(w, http.StatusOK, result)
} }

View File

@ -634,7 +634,7 @@ func (d *Database) GetAgent(id string) (*models.Agent, *models.SystemData, error
a.CustomerID = &cid a.CustomerID = &cid
} }
// Systemdaten laden // Systemdaten laden (raw JSON — plattformunabhaengig)
var dataJSON sql.NullString var dataJSON sql.NullString
err = d.db.QueryRow("SELECT data_json FROM system_data WHERE agent_id = $1", id).Scan(&dataJSON) err = d.db.QueryRow("SELECT data_json FROM system_data WHERE agent_id = $1", id).Scan(&dataJSON)
if err != nil && err != sql.ErrNoRows { if err != nil && err != sql.ErrNoRows {
@ -642,11 +642,10 @@ func (d *Database) GetAgent(id string) (*models.Agent, *models.SystemData, error
} }
var sysData *models.SystemData var sysData *models.SystemData
if dataJSON.Valid { if dataJSON.Valid && dataJSON.String != "" {
sysData = &models.SystemData{} sysData = &models.SystemData{}
if err := json.Unmarshal([]byte(dataJSON.String), sysData); err != nil { json.Unmarshal([]byte(dataJSON.String), sysData)
return &a, nil, nil sysData.RawJSON = json.RawMessage(dataJSON.String)
}
} }
return &a, sysData, nil return &a, sysData, nil

View File

@ -31,6 +31,10 @@ type SystemData struct {
PFStates *PFStatesInfo `json:"pf_states,omitempty"` PFStates *PFStatesInfo `json:"pf_states,omitempty"`
HAProxy *HAProxyData `json:"haproxy,omitempty"` HAProxy *HAProxyData `json:"haproxy,omitempty"`
Caddy *CaddyData `json:"caddy,omitempty"` Caddy *CaddyData `json:"caddy,omitempty"`
// Plattform-spezifische Rohdaten (Windows, Linux, etc.)
Windows json.RawMessage `json:"windows,omitempty"`
// RawJSON: vollstaendige Rohdaten aus DB (wird im API-Response verwendet)
RawJSON json.RawMessage `json:"-"`
} }
type LicenseInfo struct { type LicenseInfo struct {