mirror of
https://github.com/henrygd/beszel.git
synced 2025-12-02 09:52:34 +00:00
- Implement SmartManager for collecting SMART data from SATA and NVMe drives - Add smartctl-based data collection with standby mode detection - Support comprehensive SMART attributes parsing and storage - Add hub API endpoint for fetching SMART data from agents - Create SMART table UI with detailed disk information Co-authored-by: geekifan <i@ifan.dev>
68 lines
2.2 KiB
Go
68 lines
2.2 KiB
Go
package common
|
|
|
|
import (
|
|
"github.com/henrygd/beszel/internal/entities/smart"
|
|
"github.com/henrygd/beszel/internal/entities/system"
|
|
)
|
|
|
|
type WebSocketAction = uint8
|
|
|
|
const (
|
|
// Request system data from agent
|
|
GetData WebSocketAction = iota
|
|
// Check the fingerprint of the agent
|
|
CheckFingerprint
|
|
// Request container logs from agent
|
|
GetContainerLogs
|
|
// Request container info from agent
|
|
GetContainerInfo
|
|
// Request SMART data from agent
|
|
GetSmartData
|
|
// Add new actions here...
|
|
)
|
|
|
|
// HubRequest defines the structure for requests sent from hub to agent.
|
|
type HubRequest[T any] struct {
|
|
Action WebSocketAction `cbor:"0,keyasint"`
|
|
Data T `cbor:"1,keyasint,omitempty,omitzero"`
|
|
Id *uint32 `cbor:"2,keyasint,omitempty"`
|
|
}
|
|
|
|
// AgentResponse defines the structure for responses sent from agent to hub.
|
|
type AgentResponse struct {
|
|
Id *uint32 `cbor:"0,keyasint,omitempty"`
|
|
SystemData *system.CombinedData `cbor:"1,keyasint,omitempty,omitzero"`
|
|
Fingerprint *FingerprintResponse `cbor:"2,keyasint,omitempty,omitzero"`
|
|
Error string `cbor:"3,keyasint,omitempty,omitzero"`
|
|
String *string `cbor:"4,keyasint,omitempty,omitzero"`
|
|
SmartData map[string]smart.SmartData `cbor:"5,keyasint,omitempty,omitzero"`
|
|
// Logs *LogsPayload `cbor:"4,keyasint,omitempty,omitzero"`
|
|
// RawBytes []byte `cbor:"4,keyasint,omitempty,omitzero"`
|
|
}
|
|
|
|
type FingerprintRequest struct {
|
|
Signature []byte `cbor:"0,keyasint"`
|
|
NeedSysInfo bool `cbor:"1,keyasint"` // For universal token system creation
|
|
}
|
|
|
|
type FingerprintResponse struct {
|
|
Fingerprint string `cbor:"0,keyasint"`
|
|
// Optional system info for universal token system creation
|
|
Hostname string `cbor:"1,keyasint,omitzero"`
|
|
Port string `cbor:"2,keyasint,omitzero"`
|
|
Name string `cbor:"3,keyasint,omitzero"`
|
|
}
|
|
|
|
type DataRequestOptions struct {
|
|
CacheTimeMs uint16 `cbor:"0,keyasint"`
|
|
// ResourceType uint8 `cbor:"1,keyasint,omitempty,omitzero"`
|
|
}
|
|
|
|
type ContainerLogsRequest struct {
|
|
ContainerID string `cbor:"0,keyasint"`
|
|
}
|
|
|
|
type ContainerInfoRequest struct {
|
|
ContainerID string `cbor:"0,keyasint"`
|
|
}
|