Add support for sensor temperature in host state (#359)
* feat: Add support for sensor temperature in host state * chore: Update file permissions for saving config data
This commit is contained in:
		
							parent
							
								
									3782c0dcaf
								
							
						
					
					
						commit
						e0e2b8c3c2
					
				@ -71,7 +71,7 @@ func (c *AgentConfig) Save() error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return os.WriteFile(c.v.ConfigFileUsed(), data, os.ModePerm)
 | 
						return os.WriteFile(c.v.ConfigFileUsed(), data, 0600)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Config 站点配置
 | 
					// Config 站点配置
 | 
				
			||||||
@ -205,5 +205,5 @@ func (c *Config) Save() error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return os.WriteFile(c.v.ConfigFileUsed(), data, os.ModePerm)
 | 
						return os.WriteFile(c.v.ConfigFileUsed(), data, 0600)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,11 @@ const (
 | 
				
			|||||||
	MTReportHostState
 | 
						MTReportHostState
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SensorTemperature struct {
 | 
				
			||||||
 | 
						Name        string
 | 
				
			||||||
 | 
						Temperature float64
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HostState struct {
 | 
					type HostState struct {
 | 
				
			||||||
	CPU            float64
 | 
						CPU            float64
 | 
				
			||||||
	MemUsed        uint64
 | 
						MemUsed        uint64
 | 
				
			||||||
@ -26,9 +31,18 @@ type HostState struct {
 | 
				
			|||||||
	TcpConnCount   uint64
 | 
						TcpConnCount   uint64
 | 
				
			||||||
	UdpConnCount   uint64
 | 
						UdpConnCount   uint64
 | 
				
			||||||
	ProcessCount   uint64
 | 
						ProcessCount   uint64
 | 
				
			||||||
 | 
						Temperatures   []SensorTemperature
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *HostState) PB() *pb.State {
 | 
					func (s *HostState) PB() *pb.State {
 | 
				
			||||||
 | 
						var ts []*pb.State_SensorTemperature
 | 
				
			||||||
 | 
						for _, t := range s.Temperatures {
 | 
				
			||||||
 | 
							ts = append(ts, &pb.State_SensorTemperature{
 | 
				
			||||||
 | 
								Name:        t.Name,
 | 
				
			||||||
 | 
								Temperature: t.Temperature,
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &pb.State{
 | 
						return &pb.State{
 | 
				
			||||||
		Cpu:            s.CPU,
 | 
							Cpu:            s.CPU,
 | 
				
			||||||
		MemUsed:        s.MemUsed,
 | 
							MemUsed:        s.MemUsed,
 | 
				
			||||||
@ -45,10 +59,19 @@ func (s *HostState) PB() *pb.State {
 | 
				
			|||||||
		TcpConnCount:   s.TcpConnCount,
 | 
							TcpConnCount:   s.TcpConnCount,
 | 
				
			||||||
		UdpConnCount:   s.UdpConnCount,
 | 
							UdpConnCount:   s.UdpConnCount,
 | 
				
			||||||
		ProcessCount:   s.ProcessCount,
 | 
							ProcessCount:   s.ProcessCount,
 | 
				
			||||||
 | 
							Temperatures:   ts,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func PB2State(s *pb.State) HostState {
 | 
					func PB2State(s *pb.State) HostState {
 | 
				
			||||||
 | 
						var ts []SensorTemperature
 | 
				
			||||||
 | 
						for _, t := range s.GetTemperatures() {
 | 
				
			||||||
 | 
							ts = append(ts, SensorTemperature{
 | 
				
			||||||
 | 
								Name:        t.GetName(),
 | 
				
			||||||
 | 
								Temperature: t.GetTemperature(),
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HostState{
 | 
						return HostState{
 | 
				
			||||||
		CPU:            s.GetCpu(),
 | 
							CPU:            s.GetCpu(),
 | 
				
			||||||
		MemUsed:        s.GetMemUsed(),
 | 
							MemUsed:        s.GetMemUsed(),
 | 
				
			||||||
@ -65,6 +88,7 @@ func PB2State(s *pb.State) HostState {
 | 
				
			|||||||
		TcpConnCount:   s.GetTcpConnCount(),
 | 
							TcpConnCount:   s.GetTcpConnCount(),
 | 
				
			||||||
		UdpConnCount:   s.GetUdpConnCount(),
 | 
							UdpConnCount:   s.GetUdpConnCount(),
 | 
				
			||||||
		ProcessCount:   s.GetProcessCount(),
 | 
							ProcessCount:   s.GetProcessCount(),
 | 
				
			||||||
 | 
							Temperatures:   ts,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
// versions:
 | 
					// versions:
 | 
				
			||||||
// 	protoc-gen-go v1.30.0
 | 
					// 	protoc-gen-go v1.30.0
 | 
				
			||||||
// 	protoc        v3.21.12
 | 
					// 	protoc        v5.26.1
 | 
				
			||||||
// source: proto/nezha.proto
 | 
					// source: proto/nezha.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package proto
 | 
					package proto
 | 
				
			||||||
@ -175,6 +175,7 @@ type State struct {
 | 
				
			|||||||
	TcpConnCount   uint64                     `protobuf:"varint,14,opt,name=tcp_conn_count,json=tcpConnCount,proto3" json:"tcp_conn_count,omitempty"`
 | 
						TcpConnCount   uint64                     `protobuf:"varint,14,opt,name=tcp_conn_count,json=tcpConnCount,proto3" json:"tcp_conn_count,omitempty"`
 | 
				
			||||||
	UdpConnCount   uint64                     `protobuf:"varint,15,opt,name=udp_conn_count,json=udpConnCount,proto3" json:"udp_conn_count,omitempty"`
 | 
						UdpConnCount   uint64                     `protobuf:"varint,15,opt,name=udp_conn_count,json=udpConnCount,proto3" json:"udp_conn_count,omitempty"`
 | 
				
			||||||
	ProcessCount   uint64                     `protobuf:"varint,16,opt,name=process_count,json=processCount,proto3" json:"process_count,omitempty"`
 | 
						ProcessCount   uint64                     `protobuf:"varint,16,opt,name=process_count,json=processCount,proto3" json:"process_count,omitempty"`
 | 
				
			||||||
 | 
						Temperatures   []*State_SensorTemperature `protobuf:"bytes,17,rep,name=temperatures,proto3" json:"temperatures,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *State) Reset() {
 | 
					func (x *State) Reset() {
 | 
				
			||||||
@ -314,6 +315,68 @@ func (x *State) GetProcessCount() uint64 {
 | 
				
			|||||||
	return 0
 | 
						return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *State) GetTemperatures() []*State_SensorTemperature {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Temperatures
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type State_SensorTemperature struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Name        string  `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 | 
				
			||||||
 | 
						Temperature float64 `protobuf:"fixed64,2,opt,name=temperature,proto3" json:"temperature,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *State_SensorTemperature) Reset() {
 | 
				
			||||||
 | 
						*x = State_SensorTemperature{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_proto_nezha_proto_msgTypes[2]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *State_SensorTemperature) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*State_SensorTemperature) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *State_SensorTemperature) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_proto_nezha_proto_msgTypes[2]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use State_SensorTemperature.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*State_SensorTemperature) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_proto_nezha_proto_rawDescGZIP(), []int{2}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *State_SensorTemperature) GetName() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Name
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *State_SensorTemperature) GetTemperature() float64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Temperature
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Task struct {
 | 
					type Task struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@ -327,7 +390,7 @@ type Task struct {
 | 
				
			|||||||
func (x *Task) Reset() {
 | 
					func (x *Task) Reset() {
 | 
				
			||||||
	*x = Task{}
 | 
						*x = Task{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_proto_nezha_proto_msgTypes[2]
 | 
							mi := &file_proto_nezha_proto_msgTypes[3]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -340,7 +403,7 @@ func (x *Task) String() string {
 | 
				
			|||||||
func (*Task) ProtoMessage() {}
 | 
					func (*Task) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Task) ProtoReflect() protoreflect.Message {
 | 
					func (x *Task) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_proto_nezha_proto_msgTypes[2]
 | 
						mi := &file_proto_nezha_proto_msgTypes[3]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -353,7 +416,7 @@ func (x *Task) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use Task.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use Task.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*Task) Descriptor() ([]byte, []int) {
 | 
					func (*Task) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_proto_nezha_proto_rawDescGZIP(), []int{2}
 | 
						return file_proto_nezha_proto_rawDescGZIP(), []int{3}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Task) GetId() uint64 {
 | 
					func (x *Task) GetId() uint64 {
 | 
				
			||||||
@ -392,7 +455,7 @@ type TaskResult struct {
 | 
				
			|||||||
func (x *TaskResult) Reset() {
 | 
					func (x *TaskResult) Reset() {
 | 
				
			||||||
	*x = TaskResult{}
 | 
						*x = TaskResult{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_proto_nezha_proto_msgTypes[3]
 | 
							mi := &file_proto_nezha_proto_msgTypes[4]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -405,7 +468,7 @@ func (x *TaskResult) String() string {
 | 
				
			|||||||
func (*TaskResult) ProtoMessage() {}
 | 
					func (*TaskResult) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *TaskResult) ProtoReflect() protoreflect.Message {
 | 
					func (x *TaskResult) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_proto_nezha_proto_msgTypes[3]
 | 
						mi := &file_proto_nezha_proto_msgTypes[4]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -418,7 +481,7 @@ func (x *TaskResult) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use TaskResult.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use TaskResult.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*TaskResult) Descriptor() ([]byte, []int) {
 | 
					func (*TaskResult) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_proto_nezha_proto_rawDescGZIP(), []int{3}
 | 
						return file_proto_nezha_proto_rawDescGZIP(), []int{4}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *TaskResult) GetId() uint64 {
 | 
					func (x *TaskResult) GetId() uint64 {
 | 
				
			||||||
@ -467,7 +530,7 @@ type Receipt struct {
 | 
				
			|||||||
func (x *Receipt) Reset() {
 | 
					func (x *Receipt) Reset() {
 | 
				
			||||||
	*x = Receipt{}
 | 
						*x = Receipt{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_proto_nezha_proto_msgTypes[4]
 | 
							mi := &file_proto_nezha_proto_msgTypes[5]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -480,7 +543,7 @@ func (x *Receipt) String() string {
 | 
				
			|||||||
func (*Receipt) ProtoMessage() {}
 | 
					func (*Receipt) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Receipt) ProtoReflect() protoreflect.Message {
 | 
					func (x *Receipt) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_proto_nezha_proto_msgTypes[4]
 | 
						mi := &file_proto_nezha_proto_msgTypes[5]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@ -493,7 +556,7 @@ func (x *Receipt) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use Receipt.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use Receipt.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*Receipt) Descriptor() ([]byte, []int) {
 | 
					func (*Receipt) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_proto_nezha_proto_rawDescGZIP(), []int{4}
 | 
						return file_proto_nezha_proto_rawDescGZIP(), []int{5}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Receipt) GetProced() bool {
 | 
					func (x *Receipt) GetProced() bool {
 | 
				
			||||||
@ -529,7 +592,7 @@ var file_proto_nezha_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65,
 | 
						0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65,
 | 
				
			||||||
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43,
 | 
						0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43,
 | 
				
			||||||
	0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c,
 | 
						0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x03,
 | 
						0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x04,
 | 
				
			||||||
	0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01,
 | 
						0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d,
 | 
						0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d,
 | 
				
			||||||
	0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d,
 | 
						0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d,
 | 
				
			||||||
@ -559,35 +622,45 @@ var file_proto_nezha_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x52, 0x0c, 0x75, 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23,
 | 
						0x52, 0x0c, 0x75, 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23,
 | 
				
			||||||
	0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
 | 
						0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
 | 
				
			||||||
	0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f,
 | 
						0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f,
 | 
				
			||||||
	0x75, 0x6e, 0x74, 0x22, 0x3e, 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69,
 | 
						0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75,
 | 
				
			||||||
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74,
 | 
						0x72, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 | 
				
			||||||
	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
 | 
						0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x54, 0x65,
 | 
				
			||||||
	0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64,
 | 
						0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x65,
 | 
				
			||||||
	0x61, 0x74, 0x61, 0x22, 0x7a, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c,
 | 
						0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x65,
 | 
				
			||||||
	0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69,
 | 
						0x5f, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75,
 | 
				
			||||||
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
 | 
						0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
 | 
				
			||||||
	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03,
 | 
						0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64,
 | 
						0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x65, 0x6d,
 | 
				
			||||||
	0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
 | 
						0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3e, 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b,
 | 
				
			||||||
	0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x05, 0x20,
 | 
						0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64,
 | 
				
			||||||
	0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22,
 | 
						0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04,
 | 
				
			||||||
	0x21, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72,
 | 
						0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
 | 
				
			||||||
	0x6f, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x63,
 | 
						0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7a, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b,
 | 
				
			||||||
	0x65, 0x64, 0x32, 0xd6, 0x01, 0x0a, 0x0c, 0x4e, 0x65, 0x7a, 0x68, 0x61, 0x53, 0x65, 0x72, 0x76,
 | 
						0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
 | 
				
			||||||
	0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x79, 0x73,
 | 
						0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
 | 
				
			||||||
	0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
						0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65,
 | 
				
			||||||
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52,
 | 
						0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79,
 | 
				
			||||||
	0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f,
 | 
						0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
 | 
				
			||||||
	0x72, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0b, 0x2e, 0x70,
 | 
						0x64, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 | 
						0x75, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
 | 
				
			||||||
	0x6f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x52,
 | 
						0x73, 0x66, 0x75, 0x6c, 0x22, 0x21, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12,
 | 
				
			||||||
	0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 | 
						0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
 | 
				
			||||||
	0x6f, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
 | 
						0x06, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x64, 0x32, 0xd6, 0x01, 0x0a, 0x0c, 0x4e, 0x65, 0x7a, 0x68,
 | 
				
			||||||
	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x00, 0x12, 0x2b,
 | 
						0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f,
 | 
				
			||||||
	0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0b, 0x2e,
 | 
						0x72, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x2e,
 | 
				
			||||||
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x72, 0x6f,
 | 
						0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x0e, 0x2e, 0x70, 0x72,
 | 
				
			||||||
	0x74, 0x6f, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x22, 0x00, 0x30, 0x01, 0x42, 0x09, 0x5a, 0x07, 0x2e,
 | 
						0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x00, 0x12, 0x31, 0x0a,
 | 
				
			||||||
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						0x10, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66,
 | 
				
			||||||
 | 
						0x6f, 0x12, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x1a, 0x0e,
 | 
				
			||||||
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x00,
 | 
				
			||||||
 | 
						0x12, 0x31, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x11,
 | 
				
			||||||
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c,
 | 
				
			||||||
 | 
						0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70,
 | 
				
			||||||
 | 
						0x74, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x61,
 | 
				
			||||||
 | 
						0x73, 0x6b, 0x12, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x1a,
 | 
				
			||||||
 | 
						0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x22, 0x00, 0x30, 0x01,
 | 
				
			||||||
 | 
						0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f,
 | 
				
			||||||
 | 
						0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@ -602,28 +675,30 @@ func file_proto_nezha_proto_rawDescGZIP() []byte {
 | 
				
			|||||||
	return file_proto_nezha_proto_rawDescData
 | 
						return file_proto_nezha_proto_rawDescData
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_proto_nezha_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
 | 
					var file_proto_nezha_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 | 
				
			||||||
var file_proto_nezha_proto_goTypes = []interface{}{
 | 
					var file_proto_nezha_proto_goTypes = []interface{}{
 | 
				
			||||||
	(*Host)(nil),                    // 0: proto.Host
 | 
						(*Host)(nil),                    // 0: proto.Host
 | 
				
			||||||
	(*State)(nil),                   // 1: proto.State
 | 
						(*State)(nil),                   // 1: proto.State
 | 
				
			||||||
	(*Task)(nil),       // 2: proto.Task
 | 
						(*State_SensorTemperature)(nil), // 2: proto.State_SensorTemperature
 | 
				
			||||||
	(*TaskResult)(nil), // 3: proto.TaskResult
 | 
						(*Task)(nil),                    // 3: proto.Task
 | 
				
			||||||
	(*Receipt)(nil),    // 4: proto.Receipt
 | 
						(*TaskResult)(nil),              // 4: proto.TaskResult
 | 
				
			||||||
 | 
						(*Receipt)(nil),                 // 5: proto.Receipt
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_proto_nezha_proto_depIdxs = []int32{
 | 
					var file_proto_nezha_proto_depIdxs = []int32{
 | 
				
			||||||
	1, // 0: proto.NezhaService.ReportSystemState:input_type -> proto.State
 | 
						2, // 0: proto.State.temperatures:type_name -> proto.State_SensorTemperature
 | 
				
			||||||
	0, // 1: proto.NezhaService.ReportSystemInfo:input_type -> proto.Host
 | 
						1, // 1: proto.NezhaService.ReportSystemState:input_type -> proto.State
 | 
				
			||||||
	3, // 2: proto.NezhaService.ReportTask:input_type -> proto.TaskResult
 | 
						0, // 2: proto.NezhaService.ReportSystemInfo:input_type -> proto.Host
 | 
				
			||||||
	0, // 3: proto.NezhaService.RequestTask:input_type -> proto.Host
 | 
						4, // 3: proto.NezhaService.ReportTask:input_type -> proto.TaskResult
 | 
				
			||||||
	4, // 4: proto.NezhaService.ReportSystemState:output_type -> proto.Receipt
 | 
						0, // 4: proto.NezhaService.RequestTask:input_type -> proto.Host
 | 
				
			||||||
	4, // 5: proto.NezhaService.ReportSystemInfo:output_type -> proto.Receipt
 | 
						5, // 5: proto.NezhaService.ReportSystemState:output_type -> proto.Receipt
 | 
				
			||||||
	4, // 6: proto.NezhaService.ReportTask:output_type -> proto.Receipt
 | 
						5, // 6: proto.NezhaService.ReportSystemInfo:output_type -> proto.Receipt
 | 
				
			||||||
	2, // 7: proto.NezhaService.RequestTask:output_type -> proto.Task
 | 
						5, // 7: proto.NezhaService.ReportTask:output_type -> proto.Receipt
 | 
				
			||||||
	4, // [4:8] is the sub-list for method output_type
 | 
						3, // 8: proto.NezhaService.RequestTask:output_type -> proto.Task
 | 
				
			||||||
	0, // [0:4] is the sub-list for method input_type
 | 
						5, // [5:9] is the sub-list for method output_type
 | 
				
			||||||
	0, // [0:0] is the sub-list for extension type_name
 | 
						1, // [1:5] is the sub-list for method input_type
 | 
				
			||||||
	0, // [0:0] is the sub-list for extension extendee
 | 
						1, // [1:1] is the sub-list for extension type_name
 | 
				
			||||||
	0, // [0:0] is the sub-list for field type_name
 | 
						1, // [1:1] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:1] is the sub-list for field type_name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() { file_proto_nezha_proto_init() }
 | 
					func init() { file_proto_nezha_proto_init() }
 | 
				
			||||||
@ -657,7 +732,7 @@ func file_proto_nezha_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_proto_nezha_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_proto_nezha_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*Task); i {
 | 
								switch v := v.(*State_SensorTemperature); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -669,7 +744,7 @@ func file_proto_nezha_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_proto_nezha_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_proto_nezha_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*TaskResult); i {
 | 
								switch v := v.(*Task); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@ -681,6 +756,18 @@ func file_proto_nezha_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_proto_nezha_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_proto_nezha_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*TaskResult); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_proto_nezha_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*Receipt); i {
 | 
								switch v := v.(*Receipt); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
@ -699,7 +786,7 @@ func file_proto_nezha_proto_init() {
 | 
				
			|||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
			RawDescriptor: file_proto_nezha_proto_rawDesc,
 | 
								RawDescriptor: file_proto_nezha_proto_rawDesc,
 | 
				
			||||||
			NumEnums:      0,
 | 
								NumEnums:      0,
 | 
				
			||||||
			NumMessages:   5,
 | 
								NumMessages:   6,
 | 
				
			||||||
			NumExtensions: 0,
 | 
								NumExtensions: 0,
 | 
				
			||||||
			NumServices:   1,
 | 
								NumServices:   1,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
				
			|||||||
@ -41,6 +41,12 @@ message State {
 | 
				
			|||||||
    uint64 tcp_conn_count = 14;
 | 
					    uint64 tcp_conn_count = 14;
 | 
				
			||||||
    uint64 udp_conn_count = 15;
 | 
					    uint64 udp_conn_count = 15;
 | 
				
			||||||
    uint64 process_count = 16;
 | 
					    uint64 process_count = 16;
 | 
				
			||||||
 | 
					    repeated State_SensorTemperature temperatures = 17;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message State_SensorTemperature {
 | 
				
			||||||
 | 
					    string name = 1;
 | 
				
			||||||
 | 
					    double temperature = 2;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message Task {
 | 
					message Task {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								resource/l10n/en-US.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								resource/l10n/en-US.toml
									
									
									
									
										vendored
									
									
								
							@ -640,6 +640,9 @@ other = "Template"
 | 
				
			|||||||
[Stat]
 | 
					[Stat]
 | 
				
			||||||
other = "Asset"
 | 
					other = "Asset"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Temperature]
 | 
				
			||||||
 | 
					other = "Temperature"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[DisableSwitchTemplateInFrontend]
 | 
					[DisableSwitchTemplateInFrontend]
 | 
				
			||||||
other = "Disable Switch Template in Frontend"
 | 
					other = "Disable Switch Template in Frontend"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								resource/l10n/es-ES.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								resource/l10n/es-ES.toml
									
									
									
									
										vendored
									
									
								
							@ -640,6 +640,9 @@ other = "Plantilla"
 | 
				
			|||||||
[Stat]
 | 
					[Stat]
 | 
				
			||||||
other = "Stat"
 | 
					other = "Stat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Temperature]
 | 
				
			||||||
 | 
					other = "Temperatura"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[DisableSwitchTemplateInFrontend]
 | 
					[DisableSwitchTemplateInFrontend]
 | 
				
			||||||
other = "Deshabilitar Cambio de Plantilla en Frontend"
 | 
					other = "Deshabilitar Cambio de Plantilla en Frontend"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								resource/l10n/zh-CN.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								resource/l10n/zh-CN.toml
									
									
									
									
										vendored
									
									
								
							@ -640,6 +640,9 @@ other = "主题"
 | 
				
			|||||||
[Stat]
 | 
					[Stat]
 | 
				
			||||||
other = "信息"
 | 
					other = "信息"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Temperature]
 | 
				
			||||||
 | 
					other = "温度"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[DisableSwitchTemplateInFrontend]
 | 
					[DisableSwitchTemplateInFrontend]
 | 
				
			||||||
other = "禁止前台切换模板"
 | 
					other = "禁止前台切换模板"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								resource/l10n/zh-TW.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								resource/l10n/zh-TW.toml
									
									
									
									
										vendored
									
									
								
							@ -640,6 +640,9 @@ other = "主題"
 | 
				
			|||||||
[Stat]
 | 
					[Stat]
 | 
				
			||||||
other = "信息"
 | 
					other = "信息"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Temperature]
 | 
				
			||||||
 | 
					other = "溫度"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[DisableSwitchTemplateInFrontend]
 | 
					[DisableSwitchTemplateInFrontend]
 | 
				
			||||||
other = "禁止前台切換主題"
 | 
					other = "禁止前台切換主題"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										7
									
								
								resource/template/theme-default/home.html
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								resource/template/theme-default/home.html
									
									
									
									
										vendored
									
									
								
							@ -41,7 +41,12 @@
 | 
				
			|||||||
                    {{tr "ConnCount"}}: TCP @# server.State.TcpConnCount #@ / UDP @# server.State.UdpConnCount #@<br />
 | 
					                    {{tr "ConnCount"}}: TCP @# server.State.TcpConnCount #@ / UDP @# server.State.UdpConnCount #@<br />
 | 
				
			||||||
                    {{tr "BootTime"}}: @# formatTimestamp(server.Host.BootTime) #@<br />
 | 
					                    {{tr "BootTime"}}: @# formatTimestamp(server.Host.BootTime) #@<br />
 | 
				
			||||||
                    {{tr "LastActive"}}: @# new Date(server.LastActive).toLocaleString() #@<br />
 | 
					                    {{tr "LastActive"}}: @# new Date(server.LastActive).toLocaleString() #@<br />
 | 
				
			||||||
                    {{tr "Version"}}: @#server.Host.Version#@
 | 
					                    {{tr "Version"}}: @#server.Host.Version#@ <br/>
 | 
				
			||||||
 | 
					                    {{tr "Temperature"}}: 
 | 
				
			||||||
 | 
					                      <span v-for="temp in server.State.Temperatures">
 | 
				
			||||||
 | 
					                        @#temp.Name#@: @#temp.Temperature#@°C  
 | 
				
			||||||
 | 
					                      </span>
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
                    <div class="chartbox" :key="server.ID" :ref="`chart${server.ID}`" style="width: 100%; height: auto; margin-bottom: 2px;"></div>
 | 
					                    <div class="chartbox" :key="server.ID" :ref="`chart${server.ID}`" style="width: 100%; height: auto; margin-bottom: 2px;"></div>
 | 
				
			||||||
                  </div>
 | 
					                  </div>
 | 
				
			||||||
                  <div class="ui divider" style="margin-bottom: 5px"></div>
 | 
					                  <div class="ui divider" style="margin-bottom: 5px"></div>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user