feat: Tenable-style patch_status - pending_updates, last_patch, reboot_pending across full stack
This commit is contained in:
@@ -519,8 +519,20 @@ func (h *WSHub) HandleAgentWS(w http.ResponseWriter, r *http.Request) {
|
||||
CPUUsagePct float64 `json:"cpu_usage_pct"`
|
||||
MemoryUsagePct float64 `json:"memory_usage_pct"`
|
||||
UptimeSeconds int `json:"uptime_seconds"`
|
||||
SSHAvailable *bool `json:"ssh_available,omitempty"`
|
||||
}
|
||||
SSHAvailable *bool `json:"ssh_available,omitempty"`
|
||||
PostureScore *int `json:"posture_score,omitempty"`
|
||||
DefenderEnabled *bool `json:"defender_enabled,omitempty"`
|
||||
DefenderRTP *bool `json:"defender_rtp,omitempty"`
|
||||
AVProducts []string `json:"av_products,omitempty"`
|
||||
FirewallDomain *bool `json:"firewall_domain,omitempty"`
|
||||
FirewallPrivate *bool `json:"firewall_private,omitempty"`
|
||||
FirewallPublic *bool `json:"firewall_public,omitempty"`
|
||||
LastPatchDays *int `json:"last_patch_days,omitempty"`
|
||||
LastPatch *string `json:"last_patch,omitempty"`
|
||||
PendingUpdates *int `json:"pending_updates,omitempty"`
|
||||
RebootPending *bool `json:"reboot_pending,omitempty"`
|
||||
AgentElevated *bool `json:"agent_elevated,omitempty"`
|
||||
}
|
||||
if err := json.Unmarshal(msg.Payload, &stats); err != nil {
|
||||
continue
|
||||
}
|
||||
@@ -550,6 +562,42 @@ func (h *WSHub) HandleAgentWS(w http.ResponseWriter, r *http.Request) {
|
||||
if stats.SSHAvailable != nil {
|
||||
broadcast["ssh_available"] = *stats.SSHAvailable
|
||||
}
|
||||
if stats.PostureScore != nil {
|
||||
broadcast["posture_score"] = *stats.PostureScore
|
||||
}
|
||||
if stats.DefenderEnabled != nil {
|
||||
broadcast["defender_enabled"] = *stats.DefenderEnabled
|
||||
}
|
||||
if stats.DefenderRTP != nil {
|
||||
broadcast["defender_rtp"] = *stats.DefenderRTP
|
||||
}
|
||||
if len(stats.AVProducts) > 0 {
|
||||
broadcast["av_products"] = stats.AVProducts
|
||||
}
|
||||
if stats.FirewallDomain != nil {
|
||||
broadcast["firewall_domain"] = *stats.FirewallDomain
|
||||
}
|
||||
if stats.FirewallPrivate != nil {
|
||||
broadcast["firewall_private"] = *stats.FirewallPrivate
|
||||
}
|
||||
if stats.FirewallPublic != nil {
|
||||
broadcast["firewall_public"] = *stats.FirewallPublic
|
||||
}
|
||||
if stats.LastPatchDays != nil {
|
||||
broadcast["last_patch_days"] = *stats.LastPatchDays
|
||||
}
|
||||
if stats.LastPatch != nil {
|
||||
broadcast["last_patch"] = *stats.LastPatch
|
||||
}
|
||||
if stats.PendingUpdates != nil {
|
||||
broadcast["pending_updates"] = *stats.PendingUpdates
|
||||
}
|
||||
if stats.RebootPending != nil {
|
||||
broadcast["reboot_pending"] = *stats.RebootPending
|
||||
}
|
||||
if stats.AgentElevated != nil {
|
||||
broadcast["agent_elevated"] = *stats.AgentElevated
|
||||
}
|
||||
h.broadcastDashboard(Message{Type: "stats_update", Payload: mustMarshal(broadcast)})
|
||||
|
||||
case "submit_share":
|
||||
|
||||
Reference in New Issue
Block a user