节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
6.29 KiB
Stardust
package protocol

// 命令状态取值。
const (
	StatusReady      = 0
	StatusProcessing = 1
	StatusCompleted  = 2
	StatusCanceled   = 3
	StatusError      = 4
)

// NodeInfo 是节点硬件与系统信息。
type NodeInfo struct {
	Version            string   `json:"Version,omitempty"`
	Compile            Time     `json:"Compile"`
	OSName             string   `json:"OSName,omitempty"`
	OSVersion          string   `json:"OSVersion,omitempty"`
	Architecture       string   `json:"Architecture,omitempty"`
	MachineName        string   `json:"MachineName,omitempty"`
	UserName           string   `json:"UserName,omitempty"`
	IP                 string   `json:"IP,omitempty"`
	Gateway            string   `json:"Gateway,omitempty"`
	Dns                string   `json:"Dns,omitempty"`
	ProcessorCount     int      `json:"ProcessorCount"`
	Memory             uint64   `json:"Memory"`
	AvailableMemory    uint64   `json:"AvailableMemory"`
	FreeMemory         uint64   `json:"FreeMemory"`
	TotalSize          uint64   `json:"TotalSize"`
	AvailableFreeSpace uint64   `json:"AvailableFreeSpace"`
	DriveSize          uint64   `json:"DriveSize"`
	DriveInfo          string   `json:"DriveInfo,omitempty"`
	MaxOpenFiles       uint64   `json:"MaxOpenFiles,omitempty"`
	CLibVersion        string   `json:"CLibVersion,omitempty"`
	Dpi                string   `json:"Dpi,omitempty"`
	Resolution         string   `json:"Resolution,omitempty"`
	Product            string   `json:"Product,omitempty"`
	Vendor             string   `json:"Vendor,omitempty"`
	Processor          string   `json:"Processor,omitempty"`
	GPU                string   `json:"GPU,omitempty"`
	UUID               string   `json:"UUID,omitempty"`
	MachineGuid        string   `json:"MachineGuid,omitempty"`
	SerialNumber       string   `json:"SerialNumber,omitempty"`
	Board              string   `json:"Board,omitempty"`
	DiskID             string   `json:"DiskID,omitempty"`
	Macs               string   `json:"Macs,omitempty"`
	InstallPath        string   `json:"InstallPath,omitempty"`
	Runtime            string   `json:"Runtime,omitempty"`
	Framework          string   `json:"Framework,omitempty"`
	TimeZone           string   `json:"TimeZone,omitempty"`
	Time               Time     `json:"Time"`
	Plugins            []string `json:"Plugins,omitempty"`
}

// LoginInfo 是 POST /node/login 请求体。
type LoginInfo struct {
	Code        string   `json:"Code"`
	Secret      string   `json:"Secret"`
	ProductCode string   `json:"ProductCode"`
	ClientId    string   `json:"ClientId,omitempty"`
	Project     string   `json:"Project,omitempty"`
	Node        NodeInfo `json:"Node"`
}

// LoginResponse 是登录/注销响应。
type LoginResponse struct {
	Code       string `json:"Code,omitempty"`
	Secret     string `json:"Secret,omitempty"`
	Name       string `json:"Name,omitempty"`
	Token      string `json:"Token,omitempty"`
	Expire     int    `json:"Expire"`
	Time       int64  `json:"Time"`
	ServerTime int64  `json:"ServerTime"`
}

// PingInfo 是 POST /node/ping 请求体。
type PingInfo struct {
	Time               int64   `json:"Time"`
	IP                 string  `json:"IP,omitempty"`
	Gateway            string  `json:"Gateway,omitempty"`
	Dns                string  `json:"Dns,omitempty"`
	Macs               string  `json:"Macs,omitempty"`
	DriveInfo          string  `json:"DriveInfo,omitempty"`
	Framework          string  `json:"Framework,omitempty"`
	Processes          string  `json:"Processes,omitempty"`
	ProcessCount       uint64  `json:"ProcessCount"`
	Memory             uint64  `json:"Memory"`
	AvailableMemory    uint64  `json:"AvailableMemory"`
	FreeMemory         uint64  `json:"FreeMemory"`
	TotalSize          uint64  `json:"TotalSize"`
	AvailableFreeSpace uint64  `json:"AvailableFreeSpace"`
	CpuRate            float64 `json:"CpuRate"`
	Temperature        float64 `json:"Temperature"`
	Battery            float64 `json:"Battery"`
	Signal             int     `json:"Signal"`
	UplinkSpeed        uint64  `json:"UplinkSpeed"`
	DownlinkSpeed      uint64  `json:"DownlinkSpeed"`
	Uptime             uint64  `json:"Uptime"`
	Delay              int64   `json:"Delay"`
	TcpConnections     uint64  `json:"TcpConnections"`
	TcpTimeWait        uint64  `json:"TcpTimeWait"`
	TcpCloseWait       uint64  `json:"TcpCloseWait"`
	IntranetScore      float64 `json:"IntranetScore"`
	InternetScore      float64 `json:"InternetScore"`
	SystemLoad         float64 `json:"SystemLoad"`
	DiskIOPS           uint64  `json:"DiskIOPS"`
	DiskActiveTime     float64 `json:"DiskActiveTime"`
	GatewayLatency     uint64  `json:"GatewayLatency"`
	GatewayLossRate    float64 `json:"GatewayLossRate"`
	DnsLatency         uint64  `json:"DnsLatency"`
	DnsLossRate        float64 `json:"DnsLossRate"`
	ServerLatency      uint64  `json:"ServerLatency"`
	ServerLossRate     float64 `json:"ServerLossRate"`
}

// PingResponse 是 POST /node/ping 响应体。
type PingResponse struct {
	Time       int64          `json:"Time"`
	ServerTime int64          `json:"ServerTime"`
	Period     int            `json:"Period"`
	Token      string         `json:"Token,omitempty"`
	NewServer  string         `json:"NewServer,omitempty"`
	SyncTime   int            `json:"SyncTime"`
	Commands   []CommandModel `json:"Commands,omitempty"`
}

// CommandModel 是服务端下发的命令。
type CommandModel struct {
	Id        int64  `json:"Id"`
	Command   string `json:"Command"`
	Argument  string `json:"Argument,omitempty"`
	StartTime Time   `json:"StartTime"`
	Expire    Time   `json:"Expire"`
	TraceId   string `json:"TraceId,omitempty"`
	Status    int    `json:"Status"`
}

// CommandReplyModel 是 POST /node/commandreply 请求体。
type CommandReplyModel struct {
	Id     int64  `json:"Id"`
	Status int    `json:"Status"`
	Data   string `json:"Data,omitempty"`
}

// EventModel 是事件上报模型。
type EventModel struct {
	Time   int64  `json:"Time"`
	Type   string `json:"Type"`
	Name   string `json:"Name"`
	Remark string `json:"Remark,omitempty"`
}

// UpgradeInfo 是升级检查响应。
type UpgradeInfo struct {
	Version     string `json:"Version,omitempty"`
	Source      string `json:"Source,omitempty"`
	FileHash    string `json:"FileHash,omitempty"`
	FileSize    int64  `json:"FileSize"`
	Preinstall  string `json:"Preinstall,omitempty"`
	Executor    string `json:"Executor,omitempty"`
	Force       bool   `json:"Force"`
	Description string `json:"Description,omitempty"`
}