From 0e6154a0dd494b86d7fda32d722fa8668eb8eae5 Mon Sep 17 00:00:00 2001 From: cynfo3000 Date: Tue, 10 Mar 2026 01:56:09 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20system=5Fdata=20als=20RawJSON=20durchrei?= =?UTF-8?q?chen=20=E2=80=94=20Windows-Daten=20nicht=20mehr=20weggeworfen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/handlers.go | 7 ++++++- backend/db/postgres.go | 9 ++++----- backend/models/system.go | 4 ++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/backend/api/handlers.go b/backend/api/handlers.go index 33f68d6..5647779 100644 --- a/backend/api/handlers.go +++ b/backend/api/handlers.go @@ -339,10 +339,15 @@ func (h *Handler) getAgent(w http.ResponseWriter, r *http.Request) { 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{}{ "agent": agent, "status": models.CalculateAgentStatus(agent.LastHeartbeat), - "system_data": sysData, + "system_data": rawSD, } writeJSON(w, http.StatusOK, result) } diff --git a/backend/db/postgres.go b/backend/db/postgres.go index 9f9c21e..03b10c2 100644 --- a/backend/db/postgres.go +++ b/backend/db/postgres.go @@ -634,7 +634,7 @@ func (d *Database) GetAgent(id string) (*models.Agent, *models.SystemData, error a.CustomerID = &cid } - // Systemdaten laden + // Systemdaten laden (raw JSON — plattformunabhaengig) var dataJSON sql.NullString err = d.db.QueryRow("SELECT data_json FROM system_data WHERE agent_id = $1", id).Scan(&dataJSON) 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 - if dataJSON.Valid { + if dataJSON.Valid && dataJSON.String != "" { sysData = &models.SystemData{} - if err := json.Unmarshal([]byte(dataJSON.String), sysData); err != nil { - return &a, nil, nil - } + json.Unmarshal([]byte(dataJSON.String), sysData) + sysData.RawJSON = json.RawMessage(dataJSON.String) } return &a, sysData, nil diff --git a/backend/models/system.go b/backend/models/system.go index 49453cc..5e0af0e 100644 --- a/backend/models/system.go +++ b/backend/models/system.go @@ -31,6 +31,10 @@ type SystemData struct { PFStates *PFStatesInfo `json:"pf_states,omitempty"` HAProxy *HAProxyData `json:"haproxy,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 {