diff --git a/api/logagent/register.go b/api/logagent/register.go index cc3e201cf..3f495788b 100644 --- a/api/logagent/register.go +++ b/api/logagent/register.go @@ -66,6 +66,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &LogFileTree{}, &LogFileContent{}, &LogFileProxyOptions{}, + &LogEsDetection{}, &ConfigMap{}, &ConfigMapList{}, ) diff --git a/api/logagent/types.go b/api/logagent/types.go index b5034b9ee..a5a9aeb70 100644 --- a/api/logagent/types.go +++ b/api/logagent/types.go @@ -163,7 +163,18 @@ type LogFileProxyOptions struct { Container string `json:"container,omitempty"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// LogEsDetection +type LogEsDetection struct { + metav1.TypeMeta `json:",inline"` + Scheme string `json:"scheme,omitempty"` + IP string `json:"ip,omitempty"` + Port string `json:"port,omitempty"` + User string `json:"user,omitempty"` + Password string `json:"password,omitempty"` +} // +genclient // +genclient:nonNamespaced diff --git a/api/logagent/v1/generated.pb.go b/api/logagent/v1/generated.pb.go index aa8aab026..1bfabaaa4 100644 --- a/api/logagent/v1/generated.pb.go +++ b/api/logagent/v1/generated.pb.go @@ -241,10 +241,38 @@ func (m *LogAgentStatus) XXX_DiscardUnknown() { var xxx_messageInfo_LogAgentStatus proto.InternalMessageInfo +func (m *LogEsDetection) Reset() { *m = LogEsDetection{} } +func (*LogEsDetection) ProtoMessage() {} +func (*LogEsDetection) Descriptor() ([]byte, []int) { + return fileDescriptor_ff722d899337a963, []int{7} +} +func (m *LogEsDetection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LogEsDetection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *LogEsDetection) XXX_Merge(src proto.Message) { + xxx_messageInfo_LogEsDetection.Merge(m, src) +} +func (m *LogEsDetection) XXX_Size() int { + return m.Size() +} +func (m *LogEsDetection) XXX_DiscardUnknown() { + xxx_messageInfo_LogEsDetection.DiscardUnknown(m) +} + +var xxx_messageInfo_LogEsDetection proto.InternalMessageInfo + func (m *LogFileContent) Reset() { *m = LogFileContent{} } func (*LogFileContent) ProtoMessage() {} func (*LogFileContent) Descriptor() ([]byte, []int) { - return fileDescriptor_ff722d899337a963, []int{7} + return fileDescriptor_ff722d899337a963, []int{8} } func (m *LogFileContent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -272,7 +300,7 @@ var xxx_messageInfo_LogFileContent proto.InternalMessageInfo func (m *LogFileContentSpec) Reset() { *m = LogFileContentSpec{} } func (*LogFileContentSpec) ProtoMessage() {} func (*LogFileContentSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ff722d899337a963, []int{8} + return fileDescriptor_ff722d899337a963, []int{9} } func (m *LogFileContentSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -300,7 +328,7 @@ var xxx_messageInfo_LogFileContentSpec proto.InternalMessageInfo func (m *LogFileProxyOptions) Reset() { *m = LogFileProxyOptions{} } func (*LogFileProxyOptions) ProtoMessage() {} func (*LogFileProxyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_ff722d899337a963, []int{9} + return fileDescriptor_ff722d899337a963, []int{10} } func (m *LogFileProxyOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -328,7 +356,7 @@ var xxx_messageInfo_LogFileProxyOptions proto.InternalMessageInfo func (m *LogFileTree) Reset() { *m = LogFileTree{} } func (*LogFileTree) ProtoMessage() {} func (*LogFileTree) Descriptor() ([]byte, []int) { - return fileDescriptor_ff722d899337a963, []int{10} + return fileDescriptor_ff722d899337a963, []int{11} } func (m *LogFileTree) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -356,7 +384,7 @@ var xxx_messageInfo_LogFileTree proto.InternalMessageInfo func (m *LogFileTreeSpec) Reset() { *m = LogFileTreeSpec{} } func (*LogFileTreeSpec) ProtoMessage() {} func (*LogFileTreeSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_ff722d899337a963, []int{11} + return fileDescriptor_ff722d899337a963, []int{12} } func (m *LogFileTreeSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -391,6 +419,7 @@ func init() { proto.RegisterType((*LogAgentProxyOptions)(nil), "tkestack.io.tke.api.logagent.v1.LogAgentProxyOptions") proto.RegisterType((*LogAgentSpec)(nil), "tkestack.io.tke.api.logagent.v1.LogAgentSpec") proto.RegisterType((*LogAgentStatus)(nil), "tkestack.io.tke.api.logagent.v1.LogAgentStatus") + proto.RegisterType((*LogEsDetection)(nil), "tkestack.io.tke.api.logagent.v1.LogEsDetection") proto.RegisterType((*LogFileContent)(nil), "tkestack.io.tke.api.logagent.v1.LogFileContent") proto.RegisterType((*LogFileContentSpec)(nil), "tkestack.io.tke.api.logagent.v1.LogFileContentSpec") proto.RegisterType((*LogFileProxyOptions)(nil), "tkestack.io.tke.api.logagent.v1.LogFileProxyOptions") @@ -403,68 +432,74 @@ func init() { } var fileDescriptor_ff722d899337a963 = []byte{ - // 976 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x54, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xcf, 0xfa, 0x4f, 0x12, 0x3f, 0xa7, 0x4d, 0x99, 0xf6, 0x60, 0x39, 0xc2, 0x89, 0xb6, 0x12, - 0x4a, 0x2b, 0xba, 0x5b, 0x87, 0x02, 0x55, 0x25, 0x0e, 0x5d, 0x97, 0x4a, 0x91, 0xd2, 0x24, 0x9a, - 0x86, 0x22, 0x21, 0x0e, 0x4c, 0xec, 0xc9, 0x7a, 0xb0, 0x77, 0x76, 0xb5, 0x33, 0xb6, 0x30, 0x27, - 0x3e, 0x02, 0x5c, 0x7a, 0xe4, 0x1b, 0xf0, 0x0d, 0x10, 0x12, 0xe2, 0x92, 0x63, 0x8f, 0x3d, 0x45, - 0xc4, 0x7c, 0x0b, 0x4e, 0x68, 0x66, 0x67, 0xff, 0x38, 0xc1, 0x8d, 0x2b, 0xa4, 0x4a, 0xdc, 0x76, - 0xde, 0xfb, 0xfd, 0x7e, 0x6f, 0xe6, 0xbd, 0xdf, 0x5b, 0x70, 0xe5, 0x80, 0x0a, 0x49, 0xba, 0x03, - 0x87, 0x85, 0xea, 0xdb, 0x25, 0x11, 0x73, 0x87, 0xa1, 0x4f, 0x7c, 0xca, 0xa5, 0x3b, 0x6e, 0xbb, - 0x3e, 0xe5, 0x34, 0x26, 0x92, 0xf6, 0x9c, 0x28, 0x0e, 0x65, 0x88, 0x36, 0x0b, 0x04, 0x47, 0x0e, - 0xa8, 0x43, 0x22, 0xe6, 0xa4, 0x04, 0x67, 0xdc, 0x6e, 0xde, 0xf3, 0x99, 0xec, 0x8f, 0x8e, 0x9d, - 0x6e, 0x18, 0xb8, 0x7e, 0xe8, 0x87, 0xae, 0xe6, 0x1d, 0x8f, 0x4e, 0xf4, 0x49, 0x1f, 0xf4, 0x57, - 0xa2, 0xd7, 0x7c, 0x30, 0x78, 0x28, 0x54, 0x6d, 0x12, 0xb1, 0x80, 0x74, 0xfb, 0x8c, 0xd3, 0x78, - 0xe2, 0x46, 0x03, 0x5f, 0x05, 0x84, 0x1b, 0x50, 0x49, 0xfe, 0xe5, 0x16, 0x4d, 0x77, 0x1e, 0x2b, - 0x1e, 0x71, 0xc9, 0x02, 0x7a, 0x89, 0xf0, 0xc9, 0x55, 0x04, 0xd1, 0xed, 0xd3, 0x80, 0x5c, 0xe4, - 0xd9, 0xbf, 0x94, 0xa1, 0xd6, 0x09, 0xf9, 0x09, 0xf3, 0x9f, 0x91, 0x08, 0x7d, 0x03, 0xab, 0xea, - 0x46, 0x3d, 0x22, 0x49, 0xc3, 0xda, 0xb2, 0xb6, 0xeb, 0x3b, 0xf7, 0x9d, 0x44, 0xd8, 0x29, 0x0a, - 0x3b, 0xd1, 0xc0, 0x57, 0x01, 0xe1, 0x28, 0xb4, 0x33, 0x6e, 0x3b, 0x07, 0xc7, 0xdf, 0xd2, 0xae, - 0x7c, 0x46, 0x25, 0xf1, 0xd0, 0xe9, 0xd9, 0xe6, 0xd2, 0xf4, 0x6c, 0x13, 0xf2, 0x18, 0xce, 0x54, - 0xd1, 0x0b, 0xa8, 0x68, 0xf5, 0xd2, 0x56, 0x79, 0xbb, 0xbe, 0xf3, 0xc0, 0xb9, 0xa2, 0xdb, 0x4e, - 0x76, 0x37, 0xe7, 0x09, 0x91, 0xe4, 0x73, 0x2e, 0xe3, 0x89, 0xb7, 0x66, 0x2a, 0x54, 0x54, 0x08, - 0x6b, 0x3d, 0xc4, 0x01, 0x8e, 0x19, 0x27, 0xf1, 0x44, 0xc5, 0x1a, 0x65, 0xad, 0xfe, 0xe8, 0x2d, - 0xd4, 0xbd, 0x8c, 0x9c, 0xd4, 0xc8, 0x5e, 0x91, 0x27, 0x70, 0xa1, 0x42, 0xf3, 0x53, 0xa8, 0x65, - 0x60, 0x74, 0x03, 0xca, 0x03, 0x3a, 0xd1, 0x1d, 0xab, 0x61, 0xf5, 0x89, 0x6e, 0x41, 0x75, 0x4c, - 0x86, 0x23, 0xda, 0x28, 0xe9, 0x58, 0x72, 0x78, 0x54, 0x7a, 0x68, 0x35, 0x3f, 0x83, 0xf5, 0x0b, - 0xb5, 0xae, 0xa2, 0xaf, 0x15, 0xe8, 0xf6, 0x6f, 0x16, 0x5c, 0xcb, 0x6e, 0xbd, 0xc7, 0x84, 0x44, - 0x5f, 0x5f, 0x9a, 0x99, 0xb3, 0xd8, 0xcc, 0x14, 0x5b, 0x4f, 0xec, 0x86, 0x79, 0xeb, 0x6a, 0x1a, - 0x29, 0xcc, 0xeb, 0x00, 0xaa, 0x4c, 0xd2, 0x40, 0x98, 0x81, 0xdd, 0x5d, 0xbc, 0xa5, 0xde, 0x35, - 0x23, 0x5b, 0xdd, 0x55, 0x02, 0x38, 0xd1, 0xb1, 0x5f, 0x96, 0x60, 0x75, 0x2f, 0xf4, 0x1f, 0x2b, - 0xfc, 0x3b, 0xf0, 0xdb, 0x01, 0x54, 0x44, 0x44, 0xbb, 0xba, 0x91, 0xf5, 0x9d, 0x7b, 0x57, 0x5e, - 0x3f, 0xbd, 0xda, 0xf3, 0x88, 0x76, 0x73, 0xa3, 0xa9, 0x13, 0xd6, 0x42, 0xe8, 0x4b, 0x58, 0x16, - 0x92, 0xc8, 0x91, 0x68, 0x94, 0xb5, 0xa4, 0xbb, 0xb8, 0xa4, 0xa6, 0x79, 0xd7, 0x8d, 0xe8, 0x72, - 0x72, 0xc6, 0x46, 0xce, 0xfe, 0xd5, 0x82, 0xb5, 0x14, 0xfa, 0x0e, 0x06, 0xbb, 0x3f, 0x3b, 0xd8, - 0x3b, 0x0b, 0x3f, 0x63, 0xce, 0x5c, 0x19, 0xdc, 0x4a, 0x11, 0x87, 0x71, 0xf8, 0xdd, 0xe4, 0x20, - 0x92, 0x2c, 0xe4, 0x02, 0xb9, 0x50, 0xe3, 0x24, 0xa0, 0x22, 0x22, 0x5d, 0x9a, 0x58, 0xdc, 0x7b, - 0xcf, 0x08, 0xd4, 0xf6, 0xd3, 0x04, 0xce, 0x31, 0x68, 0x0b, 0x2a, 0xea, 0x90, 0x6c, 0x4e, 0x3e, - 0x02, 0x85, 0xc5, 0x3a, 0x63, 0xff, 0x5c, 0xe8, 0x94, 0x9a, 0x0c, 0xfa, 0x10, 0x56, 0x25, 0xe5, - 0x84, 0xcb, 0xdd, 0x27, 0xa6, 0x44, 0xf6, 0xf2, 0x23, 0x13, 0xc7, 0x19, 0x02, 0x7d, 0x0c, 0xf5, - 0xee, 0x70, 0x24, 0x24, 0x8d, 0xf7, 0xf3, 0x3a, 0x37, 0x0d, 0xa1, 0xde, 0xc9, 0x53, 0xb8, 0x88, - 0x43, 0x77, 0x60, 0x65, 0x4c, 0x63, 0xc1, 0x42, 0xae, 0x27, 0x5f, 0xf3, 0xd6, 0x0d, 0x65, 0xe5, - 0x45, 0x12, 0xc6, 0x69, 0xde, 0x3e, 0x2b, 0xc1, 0xf5, 0xd9, 0xa9, 0x17, 0xd9, 0xd6, 0x9b, 0xd9, - 0xa8, 0x0d, 0xd5, 0xa8, 0x4f, 0x44, 0x7a, 0xb3, 0x8d, 0xb4, 0xdd, 0x87, 0x2a, 0xf8, 0xf7, 0xd9, - 0x26, 0x3c, 0xee, 0xf5, 0x42, 0xae, 0x4f, 0x38, 0x41, 0xa2, 0x0f, 0x60, 0x39, 0xa6, 0x44, 0x64, - 0x57, 0xcb, 0x3c, 0x86, 0x75, 0x14, 0x9b, 0x2c, 0xda, 0x01, 0x88, 0xa9, 0x8c, 0x27, 0x9d, 0x70, - 0xc4, 0x65, 0xa3, 0xb2, 0x65, 0x6d, 0x57, 0xf3, 0xfd, 0xc1, 0x59, 0x06, 0x17, 0x50, 0xe8, 0x27, - 0x0b, 0x36, 0x86, 0x44, 0x48, 0x4c, 0x77, 0x39, 0x93, 0x8c, 0x0c, 0xd9, 0xf7, 0x8c, 0xfb, 0x47, - 0x2c, 0x50, 0x76, 0x09, 0xa2, 0x46, 0x55, 0x5b, 0xf3, 0xee, 0x62, 0xd6, 0x54, 0x34, 0xef, 0xb6, - 0xa9, 0xb8, 0xb1, 0x37, 0x5f, 0x16, 0xbf, 0xa9, 0xa6, 0xed, 0xeb, 0xfe, 0x3e, 0x65, 0x43, 0xda, - 0x09, 0xb9, 0x54, 0x7f, 0x92, 0x2f, 0x66, 0xf6, 0xfc, 0xa3, 0x45, 0xdc, 0x5c, 0xa0, 0xcf, 0xdb, - 0x76, 0xfb, 0xf7, 0x12, 0xa0, 0xcb, 0x50, 0x65, 0x6a, 0x63, 0x8d, 0xdd, 0xde, 0x45, 0x53, 0x77, - 0xd2, 0x04, 0xce, 0x31, 0xb3, 0x5b, 0x50, 0x5a, 0x60, 0x0b, 0x54, 0x85, 0x90, 0x4b, 0xa2, 0xfa, - 0x68, 0x86, 0x9a, 0x57, 0x48, 0x13, 0x38, 0xc7, 0xa0, 0xf7, 0xa1, 0x1c, 0x85, 0x3d, 0x3d, 0xd3, - 0x9a, 0x57, 0x37, 0xd0, 0xf2, 0x61, 0xd8, 0xc3, 0x2a, 0x8e, 0x6e, 0x43, 0x55, 0x48, 0x12, 0x4b, - 0x3d, 0xae, 0x6a, 0xbe, 0xc3, 0xcf, 0x55, 0x10, 0x27, 0x39, 0x65, 0xa3, 0x21, 0xe5, 0xbe, 0xec, - 0x37, 0x96, 0x35, 0x2a, 0xb3, 0xd1, 0x9e, 0x8e, 0x62, 0x93, 0x55, 0xfb, 0x76, 0xc2, 0x86, 0x34, - 0x22, 0xb2, 0xdf, 0x58, 0x99, 0xdd, 0xb7, 0xa7, 0x26, 0x8e, 0x33, 0x84, 0xfd, 0xd2, 0x82, 0x9b, - 0xa6, 0x87, 0xff, 0xed, 0xcf, 0x60, 0x9e, 0x58, 0x9a, 0xf3, 0xc4, 0xb7, 0x6d, 0x99, 0x4d, 0xa0, - 0x6e, 0xee, 0x75, 0x14, 0x53, 0x8a, 0xf0, 0x8c, 0x85, 0xee, 0x2f, 0x6a, 0x21, 0xc5, 0x9d, 0xeb, - 0x9f, 0x3f, 0x2c, 0x58, 0xbf, 0x80, 0xfb, 0xff, 0x99, 0xc7, 0xdb, 0x3e, 0x3d, 0x6f, 0x2d, 0xbd, - 0x3a, 0x6f, 0x2d, 0xbd, 0x3e, 0x6f, 0x2d, 0xfd, 0x30, 0x6d, 0x59, 0xa7, 0xd3, 0x96, 0xf5, 0x6a, - 0xda, 0xb2, 0x5e, 0x4f, 0x5b, 0xd6, 0x9f, 0xd3, 0x96, 0xf5, 0xe3, 0x5f, 0xad, 0xa5, 0xaf, 0x4a, - 0xe3, 0xf6, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdc, 0xad, 0xaf, 0x5b, 0x6f, 0x0b, 0x00, 0x00, + // 1060 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xf7, 0xae, 0xed, 0x34, 0x1e, 0xa7, 0x4d, 0x99, 0xf6, 0x60, 0x39, 0xc2, 0x89, 0xb6, 0x12, + 0x4a, 0x2b, 0xba, 0x5b, 0x87, 0x02, 0x55, 0x25, 0x0e, 0xb5, 0xd3, 0x4a, 0x96, 0xd2, 0xc4, 0x9a, + 0xa6, 0x45, 0x42, 0x1c, 0x98, 0xac, 0x27, 0xeb, 0xc1, 0xf6, 0xcc, 0x6a, 0x67, 0x6c, 0x30, 0x27, + 0x3e, 0x02, 0x5c, 0x7a, 0xe4, 0x1b, 0xf0, 0x0d, 0x10, 0x12, 0x42, 0x42, 0x39, 0xf6, 0xd8, 0x53, + 0x44, 0xcc, 0xb7, 0xe0, 0x84, 0x66, 0x76, 0xf6, 0x8f, 0x13, 0xdc, 0xb8, 0x42, 0xaa, 0xc4, 0xcd, + 0xf3, 0xde, 0xef, 0xf7, 0x7b, 0x6f, 0xde, 0xfb, 0xcd, 0x1a, 0x78, 0x72, 0x40, 0x84, 0xc4, 0xfe, + 0xc0, 0xa5, 0x5c, 0xfd, 0xf6, 0x70, 0x48, 0xbd, 0x21, 0x0f, 0x70, 0x40, 0x98, 0xf4, 0x26, 0x4d, + 0x2f, 0x20, 0x8c, 0x44, 0x58, 0x92, 0x9e, 0x1b, 0x46, 0x5c, 0x72, 0xb8, 0x99, 0x23, 0xb8, 0x72, + 0x40, 0x5c, 0x1c, 0x52, 0x37, 0x21, 0xb8, 0x93, 0x66, 0xfd, 0x6e, 0x40, 0x65, 0x7f, 0x7c, 0xe4, + 0xfa, 0x7c, 0xe4, 0x05, 0x3c, 0xe0, 0x9e, 0xe6, 0x1d, 0x8d, 0x8f, 0xf5, 0x49, 0x1f, 0xf4, 0xaf, + 0x58, 0xaf, 0x7e, 0x7f, 0xf0, 0x40, 0xa8, 0xda, 0x38, 0xa4, 0x23, 0xec, 0xf7, 0x29, 0x23, 0xd1, + 0xd4, 0x0b, 0x07, 0x81, 0x0a, 0x08, 0x6f, 0x44, 0x24, 0xfe, 0x97, 0x2e, 0xea, 0xde, 0x22, 0x56, + 0x34, 0x66, 0x92, 0x8e, 0xc8, 0x05, 0xc2, 0x27, 0x97, 0x11, 0x84, 0xdf, 0x27, 0x23, 0x7c, 0x9e, + 0xe7, 0xfc, 0x5c, 0x04, 0x95, 0x36, 0x67, 0xc7, 0x34, 0x78, 0x8a, 0x43, 0xf8, 0x15, 0x58, 0x55, + 0x1d, 0xf5, 0xb0, 0xc4, 0x35, 0x6b, 0xcb, 0xda, 0xae, 0xee, 0xdc, 0x73, 0x63, 0x61, 0x37, 0x2f, + 0xec, 0x86, 0x83, 0x40, 0x05, 0x84, 0xab, 0xd0, 0xee, 0xa4, 0xe9, 0x1e, 0x1c, 0x7d, 0x4d, 0x7c, + 0xf9, 0x94, 0x48, 0xdc, 0x82, 0x27, 0xa7, 0x9b, 0x85, 0xd9, 0xe9, 0x26, 0xc8, 0x62, 0x28, 0x55, + 0x85, 0x2f, 0x40, 0x49, 0xab, 0xdb, 0x5b, 0xc5, 0xed, 0xea, 0xce, 0x7d, 0xf7, 0x92, 0x69, 0xbb, + 0x69, 0x6f, 0xee, 0x2e, 0x96, 0xf8, 0x31, 0x93, 0xd1, 0xb4, 0xb5, 0x66, 0x2a, 0x94, 0x54, 0x08, + 0x69, 0x3d, 0xc8, 0x00, 0x38, 0xa2, 0x0c, 0x47, 0x53, 0x15, 0xab, 0x15, 0xb5, 0xfa, 0xc3, 0xb7, + 0x50, 0x6f, 0xa5, 0xe4, 0xb8, 0x46, 0x7a, 0x8b, 0x2c, 0x81, 0x72, 0x15, 0xea, 0x9f, 0x82, 0x4a, + 0x0a, 0x86, 0xd7, 0x41, 0x71, 0x40, 0xa6, 0x7a, 0x62, 0x15, 0xa4, 0x7e, 0xc2, 0x9b, 0xa0, 0x3c, + 0xc1, 0xc3, 0x31, 0xa9, 0xd9, 0x3a, 0x16, 0x1f, 0x1e, 0xda, 0x0f, 0xac, 0xfa, 0x67, 0x60, 0xfd, + 0x5c, 0xad, 0xcb, 0xe8, 0x6b, 0x39, 0xba, 0xf3, 0xab, 0x05, 0xae, 0xa6, 0x5d, 0xef, 0x51, 0x21, + 0xe1, 0x97, 0x17, 0x76, 0xe6, 0x2e, 0xb7, 0x33, 0xc5, 0xd6, 0x1b, 0xbb, 0x6e, 0xee, 0xba, 0x9a, + 0x44, 0x72, 0xfb, 0x3a, 0x00, 0x65, 0x2a, 0xc9, 0x48, 0x98, 0x85, 0xdd, 0x59, 0x7e, 0xa4, 0xad, + 0xab, 0x46, 0xb6, 0xdc, 0x51, 0x02, 0x28, 0xd6, 0x71, 0x5e, 0xda, 0x60, 0x75, 0x8f, 0x07, 0x8f, + 0x14, 0xfe, 0x1d, 0xf8, 0xed, 0x00, 0x94, 0x44, 0x48, 0x7c, 0x3d, 0xc8, 0xea, 0xce, 0xdd, 0x4b, + 0xdb, 0x4f, 0x5a, 0x7b, 0x16, 0x12, 0x3f, 0x33, 0x9a, 0x3a, 0x21, 0x2d, 0x04, 0x3f, 0x07, 0x2b, + 0x42, 0x62, 0x39, 0x16, 0xb5, 0xa2, 0x96, 0xf4, 0x96, 0x97, 0xd4, 0xb4, 0xd6, 0x35, 0x23, 0xba, + 0x12, 0x9f, 0x91, 0x91, 0x73, 0x7e, 0xb1, 0xc0, 0x5a, 0x02, 0x7d, 0x07, 0x8b, 0xdd, 0x9f, 0x5f, + 0xec, 0xed, 0xa5, 0xaf, 0xb1, 0x60, 0xaf, 0x14, 0xdc, 0x4c, 0x10, 0xdd, 0x88, 0x7f, 0x3b, 0x3d, + 0x08, 0x25, 0xe5, 0x4c, 0x40, 0x0f, 0x54, 0x18, 0x1e, 0x11, 0x11, 0x62, 0x9f, 0xc4, 0x16, 0x6f, + 0xbd, 0x67, 0x04, 0x2a, 0xfb, 0x49, 0x02, 0x65, 0x18, 0xb8, 0x05, 0x4a, 0xea, 0x10, 0xbf, 0x9c, + 0x6c, 0x05, 0x0a, 0x8b, 0x74, 0xc6, 0xf9, 0x29, 0x37, 0x29, 0xb5, 0x19, 0xf8, 0x21, 0x58, 0x95, + 0x84, 0x61, 0x26, 0x3b, 0xbb, 0xa6, 0x44, 0x7a, 0xf3, 0x43, 0x13, 0x47, 0x29, 0x02, 0x7e, 0x0c, + 0xaa, 0xfe, 0x70, 0x2c, 0x24, 0x89, 0xf6, 0xb3, 0x3a, 0x37, 0x0c, 0xa1, 0xda, 0xce, 0x52, 0x28, + 0x8f, 0x83, 0xb7, 0xc1, 0x95, 0x09, 0x89, 0x04, 0xe5, 0x4c, 0x6f, 0xbe, 0xd2, 0x5a, 0x37, 0x94, + 0x2b, 0x2f, 0xe2, 0x30, 0x4a, 0xf2, 0xce, 0xa9, 0x0d, 0xae, 0xcd, 0x6f, 0x3d, 0xcf, 0xb6, 0xde, + 0xcc, 0x86, 0x4d, 0x50, 0x0e, 0xfb, 0x58, 0x24, 0x9d, 0x6d, 0x24, 0xe3, 0xee, 0xaa, 0xe0, 0xdf, + 0xa7, 0x9b, 0xe0, 0x51, 0xaf, 0xc7, 0x99, 0x3e, 0xa1, 0x18, 0x09, 0x3f, 0x00, 0x2b, 0x11, 0xc1, + 0x22, 0x6d, 0x2d, 0xf5, 0x18, 0xd2, 0x51, 0x64, 0xb2, 0x70, 0x07, 0x80, 0x88, 0xc8, 0x68, 0xda, + 0xe6, 0x63, 0x26, 0x6b, 0xa5, 0x2d, 0x6b, 0xbb, 0x9c, 0xbd, 0x1f, 0x94, 0x66, 0x50, 0x0e, 0x05, + 0x7f, 0xb4, 0xc0, 0xc6, 0x10, 0x0b, 0x89, 0x48, 0x87, 0x51, 0x49, 0xf1, 0x90, 0x7e, 0x47, 0x59, + 0x70, 0x48, 0x47, 0xca, 0x2e, 0xa3, 0xb0, 0x56, 0xd6, 0xd6, 0xbc, 0xb3, 0x9c, 0x35, 0x15, 0xad, + 0x75, 0xcb, 0x54, 0xdc, 0xd8, 0x5b, 0x2c, 0x8b, 0xde, 0x54, 0xd3, 0xf9, 0xc3, 0xd2, 0x03, 0x7e, + 0x2c, 0x76, 0x89, 0x24, 0xbe, 0x32, 0x9a, 0x1a, 0x81, 0xfe, 0x8b, 0x4b, 0x4c, 0x96, 0x3d, 0x33, + 0x1d, 0x45, 0x26, 0x0b, 0xeb, 0xc0, 0xa6, 0xa1, 0x19, 0x2d, 0x30, 0x18, 0xbb, 0xd3, 0x45, 0x36, + 0x0d, 0x95, 0xf5, 0x42, 0x1e, 0x49, 0x33, 0xc4, 0xd4, 0x7a, 0x5d, 0x1e, 0x49, 0xa4, 0x33, 0x0a, + 0x31, 0x16, 0x24, 0xd2, 0xa3, 0xcb, 0x21, 0x9e, 0x0b, 0x12, 0x21, 0x9d, 0x51, 0x5e, 0x0c, 0xb1, + 0x10, 0xdf, 0xf0, 0xa8, 0xa7, 0x47, 0x93, 0xf3, 0x62, 0xd7, 0xc4, 0x51, 0x8a, 0x70, 0x02, 0x7d, + 0x8f, 0x27, 0x74, 0x48, 0xda, 0x9c, 0x49, 0xf5, 0x49, 0x7c, 0x3e, 0xf7, 0xc1, 0xfa, 0x68, 0x99, + 0x67, 0x99, 0xa3, 0x2f, 0xfa, 0x6c, 0x39, 0xbf, 0xd9, 0x00, 0x5e, 0x84, 0xaa, 0xd7, 0x69, 0x3c, + 0xde, 0xe9, 0x9d, 0x7f, 0x9d, 0xed, 0x24, 0x81, 0x32, 0xcc, 0xfc, 0x73, 0xb6, 0x97, 0x78, 0xce, + 0xaa, 0x02, 0x67, 0x12, 0x2b, 0x43, 0x98, 0xc1, 0x66, 0x15, 0x92, 0x04, 0xca, 0x30, 0xf0, 0x7d, + 0x50, 0x0c, 0x79, 0xcf, 0x4c, 0xb8, 0x6a, 0xa0, 0xc5, 0x2e, 0xef, 0x21, 0x15, 0x87, 0xb7, 0x40, + 0x59, 0x48, 0x1c, 0x49, 0x3d, 0xdc, 0x72, 0xf6, 0x31, 0x7a, 0xa6, 0x82, 0x28, 0xce, 0x29, 0x33, + 0x0c, 0x09, 0x0b, 0x64, 0xbf, 0xb6, 0xa2, 0x51, 0xa9, 0x19, 0xf6, 0x74, 0x14, 0x99, 0xac, 0x5a, + 0xd6, 0x31, 0x1d, 0x92, 0x10, 0xcb, 0x7e, 0xed, 0xca, 0xfc, 0xb2, 0x9e, 0x98, 0x38, 0x4a, 0x11, + 0xce, 0x4b, 0x0b, 0xdc, 0x30, 0x33, 0xfc, 0x6f, 0x9f, 0x38, 0x73, 0x45, 0x7b, 0xc1, 0x15, 0xdf, + 0x76, 0x64, 0x0e, 0x06, 0x55, 0xd3, 0xd7, 0x61, 0x44, 0x08, 0x44, 0x73, 0x16, 0xba, 0xb7, 0xac, + 0x85, 0x14, 0x77, 0xa1, 0x7f, 0x7e, 0xb7, 0xc0, 0xfa, 0x39, 0xdc, 0xff, 0xcf, 0x3c, 0xad, 0xed, + 0x93, 0xb3, 0x46, 0xe1, 0xd5, 0x59, 0xa3, 0xf0, 0xfa, 0xac, 0x51, 0xf8, 0x7e, 0xd6, 0xb0, 0x4e, + 0x66, 0x0d, 0xeb, 0xd5, 0xac, 0x61, 0xbd, 0x9e, 0x35, 0xac, 0x3f, 0x67, 0x0d, 0xeb, 0x87, 0xbf, + 0x1a, 0x85, 0x2f, 0xec, 0x49, 0xf3, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x24, 0x56, 0x1f, 0x95, + 0x38, 0x0c, 0x00, 0x00, } func (m *ConfigMap) Marshal() (dAtA []byte, err error) { @@ -819,6 +854,54 @@ func (m *LogAgentStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *LogEsDetection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LogEsDetection) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LogEsDetection) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Password) + copy(dAtA[i:], m.Password) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Password))) + i-- + dAtA[i] = 0x2a + i -= len(m.User) + copy(dAtA[i:], m.User) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i-- + dAtA[i] = 0x22 + i -= len(m.Port) + copy(dAtA[i:], m.Port) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Port))) + i-- + dAtA[i] = 0x1a + i -= len(m.IP) + copy(dAtA[i:], m.IP) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IP))) + i-- + dAtA[i] = 0x12 + i -= len(m.Scheme) + copy(dAtA[i:], m.Scheme) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Scheme))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *LogFileContent) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1157,6 +1240,25 @@ func (m *LogAgentStatus) Size() (n int) { return n } +func (m *LogEsDetection) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Scheme) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Port) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Password) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *LogFileContent) Size() (n int) { if m == nil { return 0 @@ -1351,6 +1453,20 @@ func (this *LogAgentStatus) String() string { }, "") return s } +func (this *LogEsDetection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LogEsDetection{`, + `Scheme:` + fmt.Sprintf("%v", this.Scheme) + `,`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Password:` + fmt.Sprintf("%v", this.Password) + `,`, + `}`, + }, "") + return s +} func (this *LogFileContent) String() string { if this == nil { return "nil" @@ -2620,6 +2736,219 @@ func (m *LogAgentStatus) Unmarshal(dAtA []byte) error { } return nil } +func (m *LogEsDetection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LogEsDetection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LogEsDetection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scheme", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scheme = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Port = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Password = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *LogFileContent) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/api/logagent/v1/generated.proto b/api/logagent/v1/generated.proto index 8ee8a1b24..afbf1a93d 100644 --- a/api/logagent/v1/generated.proto +++ b/api/logagent/v1/generated.proto @@ -120,6 +120,19 @@ message LogAgentStatus { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastReInitializingTimestamp = 5; } +// LogEsDetection +message LogEsDetection { + optional string scheme = 1; + + optional string ip = 2; + + optional string port = 3; + + optional string user = 4; + + optional string password = 5; +} + // LogFileContent message LogFileContent { optional LogFileContentSpec spec = 2; diff --git a/api/logagent/v1/register.go b/api/logagent/v1/register.go index 3aac17c09..4b4f66312 100644 --- a/api/logagent/v1/register.go +++ b/api/logagent/v1/register.go @@ -54,6 +54,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &LogFileTree{}, &LogFileContent{}, &LogFileProxyOptions{}, + &LogEsDetection{}, &ConfigMap{}, &ConfigMapList{}, ) diff --git a/api/logagent/v1/types.go b/api/logagent/v1/types.go index 643af1a46..14a499071 100644 --- a/api/logagent/v1/types.go +++ b/api/logagent/v1/types.go @@ -150,6 +150,19 @@ type LogFileProxyOptions struct { Container string `json:"container,omitempty" protobuf:"bytes,3,opt,name=container"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// LogEsDetection +type LogEsDetection struct { + metav1.TypeMeta `json:",inline"` + + Scheme string `json:"scheme,omitempty" protobuf:"bytes,1,opt,name=scheme"` + IP string `json:"ip,omitempty" protobuf:"bytes,2,opt,name=ip"` + Port string `json:"port,omitempty" protobuf:"bytes,3,opt,name=port"` + User string `json:"user,omitempty" protobuf:"bytes,4,opt,name=user"` + Password string `json:"password,omitempty" protobuf:"bytes,5,opt,name=password"` +} + // +genclient // +genclient:nonNamespaced // +genclient:skipVerbs=deleteCollection diff --git a/api/logagent/v1/types_swagger_doc_generated.go b/api/logagent/v1/types_swagger_doc_generated.go index 5ca089c7e..2c325b7e3 100644 --- a/api/logagent/v1/types_swagger_doc_generated.go +++ b/api/logagent/v1/types_swagger_doc_generated.go @@ -94,6 +94,14 @@ func (LogAgentStatus) SwaggerDoc() map[string]string { return map_LogAgentStatus } +var map_LogEsDetection = map[string]string{ + "": "LogEsDetection", +} + +func (LogEsDetection) SwaggerDoc() map[string]string { + return map_LogEsDetection +} + var map_LogFileContent = map[string]string{ "": "LogFileContent", } diff --git a/api/logagent/v1/zz_generated.conversion.go b/api/logagent/v1/zz_generated.conversion.go index 111ea89ae..068dc38ca 100644 --- a/api/logagent/v1/zz_generated.conversion.go +++ b/api/logagent/v1/zz_generated.conversion.go @@ -107,6 +107,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*LogEsDetection)(nil), (*logagent.LogEsDetection)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_LogEsDetection_To_logagent_LogEsDetection(a.(*LogEsDetection), b.(*logagent.LogEsDetection), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*logagent.LogEsDetection)(nil), (*LogEsDetection)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_logagent_LogEsDetection_To_v1_LogEsDetection(a.(*logagent.LogEsDetection), b.(*LogEsDetection), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*LogFileContent)(nil), (*logagent.LogFileContent)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1_LogFileContent_To_logagent_LogFileContent(a.(*LogFileContent), b.(*logagent.LogFileContent), scope) }); err != nil { @@ -334,6 +344,34 @@ func Convert_logagent_LogAgentStatus_To_v1_LogAgentStatus(in *logagent.LogAgentS return autoConvert_logagent_LogAgentStatus_To_v1_LogAgentStatus(in, out, s) } +func autoConvert_v1_LogEsDetection_To_logagent_LogEsDetection(in *LogEsDetection, out *logagent.LogEsDetection, s conversion.Scope) error { + out.Scheme = in.Scheme + out.IP = in.IP + out.Port = in.Port + out.User = in.User + out.Password = in.Password + return nil +} + +// Convert_v1_LogEsDetection_To_logagent_LogEsDetection is an autogenerated conversion function. +func Convert_v1_LogEsDetection_To_logagent_LogEsDetection(in *LogEsDetection, out *logagent.LogEsDetection, s conversion.Scope) error { + return autoConvert_v1_LogEsDetection_To_logagent_LogEsDetection(in, out, s) +} + +func autoConvert_logagent_LogEsDetection_To_v1_LogEsDetection(in *logagent.LogEsDetection, out *LogEsDetection, s conversion.Scope) error { + out.Scheme = in.Scheme + out.IP = in.IP + out.Port = in.Port + out.User = in.User + out.Password = in.Password + return nil +} + +// Convert_logagent_LogEsDetection_To_v1_LogEsDetection is an autogenerated conversion function. +func Convert_logagent_LogEsDetection_To_v1_LogEsDetection(in *logagent.LogEsDetection, out *LogEsDetection, s conversion.Scope) error { + return autoConvert_logagent_LogEsDetection_To_v1_LogEsDetection(in, out, s) +} + func autoConvert_v1_LogFileContent_To_logagent_LogFileContent(in *LogFileContent, out *logagent.LogFileContent, s conversion.Scope) error { if err := Convert_v1_LogFileContentSpec_To_logagent_LogFileContentSpec(&in.Spec, &out.Spec, s); err != nil { return err diff --git a/api/logagent/v1/zz_generated.deepcopy.go b/api/logagent/v1/zz_generated.deepcopy.go index 55a93ee88..2bbb3694e 100644 --- a/api/logagent/v1/zz_generated.deepcopy.go +++ b/api/logagent/v1/zz_generated.deepcopy.go @@ -226,6 +226,31 @@ func (in *LogAgentStatus) DeepCopy() *LogAgentStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LogEsDetection) DeepCopyInto(out *LogEsDetection) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LogEsDetection. +func (in *LogEsDetection) DeepCopy() *LogEsDetection { + if in == nil { + return nil + } + out := new(LogEsDetection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LogEsDetection) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LogFileContent) DeepCopyInto(out *LogFileContent) { *out = *in diff --git a/api/logagent/zz_generated.deepcopy.go b/api/logagent/zz_generated.deepcopy.go index c62d83659..2394b18f6 100644 --- a/api/logagent/zz_generated.deepcopy.go +++ b/api/logagent/zz_generated.deepcopy.go @@ -226,6 +226,31 @@ func (in *LogAgentStatus) DeepCopy() *LogAgentStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LogEsDetection) DeepCopyInto(out *LogEsDetection) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LogEsDetection. +func (in *LogEsDetection) DeepCopy() *LogEsDetection { + if in == nil { + return nil + } + out := new(LogEsDetection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LogEsDetection) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LogFileContent) DeepCopyInto(out *LogFileContent) { *out = *in diff --git a/api/openapi/zz_generated.openapi.go b/api/openapi/zz_generated.openapi.go index 034f30b2a..eaecc3f26 100644 --- a/api/openapi/zz_generated.openapi.go +++ b/api/openapi/zz_generated.openapi.go @@ -871,6 +871,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "tkestack.io/tke/api/logagent/v1.LogAgentProxyOptions": schema_tke_api_logagent_v1_LogAgentProxyOptions(ref), "tkestack.io/tke/api/logagent/v1.LogAgentSpec": schema_tke_api_logagent_v1_LogAgentSpec(ref), "tkestack.io/tke/api/logagent/v1.LogAgentStatus": schema_tke_api_logagent_v1_LogAgentStatus(ref), + "tkestack.io/tke/api/logagent/v1.LogEsDetection": schema_tke_api_logagent_v1_LogEsDetection(ref), "tkestack.io/tke/api/logagent/v1.LogFileContent": schema_tke_api_logagent_v1_LogFileContent(ref), "tkestack.io/tke/api/logagent/v1.LogFileContentSpec": schema_tke_api_logagent_v1_LogFileContentSpec(ref), "tkestack.io/tke/api/logagent/v1.LogFileProxyOptions": schema_tke_api_logagent_v1_LogFileProxyOptions(ref), @@ -41662,6 +41663,63 @@ func schema_tke_api_logagent_v1_LogAgentStatus(ref common.ReferenceCallback) com } } +func schema_tke_api_logagent_v1_LogEsDetection(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "LogEsDetection", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "kind": { + SchemaProps: spec.SchemaProps{ + Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + Type: []string{"string"}, + Format: "", + }, + }, + "apiVersion": { + SchemaProps: spec.SchemaProps{ + Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + Type: []string{"string"}, + Format: "", + }, + }, + "scheme": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "ip": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "port": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "user": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "password": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + } +} + func schema_tke_api_logagent_v1_LogFileContent(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -48531,6 +48589,24 @@ func schema_tke_api_platform_v1_StorageBackEndES(ref common.ReferenceCallback) c Format: "", }, }, + "user": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "password": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "reserveDays": { + SchemaProps: spec.SchemaProps{ + Type: []string{"integer"}, + Format: "int32", + }, + }, }, }, }, diff --git a/api/platform/types.go b/api/platform/types.go index 34df9f637..d3ff92af7 100644 --- a/api/platform/types.go +++ b/api/platform/types.go @@ -758,6 +758,9 @@ type StorageBackEndES struct { Port int32 Scheme string IndexName string + User string + Password string + ReserveDays int32 } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/api/platform/v1/generated.pb.go b/api/platform/v1/generated.pb.go index 857164ab5..3d88e7c5a 100644 --- a/api/platform/v1/generated.pb.go +++ b/api/platform/v1/generated.pb.go @@ -2977,184 +2977,184 @@ func init() { } var fileDescriptor_6e12a3c1f6fbf61e = []byte{ - // 5686 bytes of a gzipped FileDescriptorProto + // 5727 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3d, 0x5b, 0x8c, 0x24, 0xd7, 0x55, 0xee, 0xd7, 0x4c, 0xf7, 0xe9, 0x79, 0xde, 0x9d, 0xf5, 0xb6, 0xc7, 0xc9, 0xce, 0xa6, 0xad, 0x58, 0xeb, 0xd8, 0xee, 0xf1, 0xae, 0xed, 0xcd, 0xda, 0xc6, 0x76, 0xfa, 0x31, 0x9b, 0x1d, 0xef, 0xcc, 0x6c, 0xfb, 0xf6, 0xec, 0x2e, 0x09, 0x10, 0xbb, 0xa6, 0xfa, 0xce, 0x4c, 0xa5, 0xab, 0xab, 0xda, 0x55, 0xb7, 0x67, 0xb7, 0x0d, 0x1f, 0xe1, 0xf1, 0x81, 0x10, 0xa0, 0x40, 0xa4, 0x20, 0x05, - 0x02, 0xc2, 0x20, 0xf1, 0x08, 0x91, 0x90, 0xc2, 0x57, 0x04, 0x08, 0x21, 0x3e, 0x2c, 0x84, 0x50, - 0xc4, 0x97, 0x85, 0x94, 0x01, 0x0f, 0x0f, 0xc1, 0x07, 0xe2, 0x9b, 0xfd, 0x42, 0xf7, 0x51, 0x55, - 0xb7, 0xaa, 0xbb, 0xa7, 0xbb, 0xd6, 0xb3, 0xed, 0xf9, 0xd8, 0xbf, 0xae, 0xf3, 0xba, 0xa7, 0xee, - 0xbd, 0xe7, 0x75, 0x1f, 0xd5, 0xb0, 0x4a, 0x5b, 0xc4, 0xa5, 0x9a, 0xde, 0x2a, 0x19, 0x36, 0xfb, - 0xbd, 0xaa, 0x75, 0x8c, 0xd5, 0x8e, 0xa9, 0xd1, 0x5d, 0xdb, 0x69, 0xaf, 0x1e, 0x5c, 0x5a, 0xdd, - 0x23, 0x16, 0x71, 0x34, 0x4a, 0x9a, 0xa5, 0x8e, 0x63, 0x53, 0x1b, 0xad, 0x28, 0x0c, 0x25, 0xda, - 0x22, 0x25, 0xad, 0x63, 0x94, 0x3c, 0x86, 0xd2, 0xc1, 0xa5, 0xe5, 0xe7, 0xf7, 0x0c, 0xba, 0xdf, - 0xdd, 0x29, 0xe9, 0x76, 0x7b, 0x75, 0xcf, 0xde, 0xb3, 0x57, 0x39, 0xdf, 0x4e, 0x77, 0x97, 0x3f, - 0xf1, 0x07, 0xfe, 0x4b, 0xc8, 0x5b, 0x2e, 0xb6, 0xae, 0xba, 0xac, 0x6d, 0xd6, 0xae, 0x6e, 0x3b, - 0x64, 0x40, 0x9b, 0xcb, 0x2f, 0x05, 0x34, 0x6d, 0x4d, 0xdf, 0x37, 0x2c, 0xe2, 0xf4, 0x56, 0x3b, - 0xad, 0x3d, 0xce, 0xe4, 0x10, 0xd7, 0xee, 0x3a, 0x3a, 0x89, 0xc5, 0xe5, 0xae, 0xb6, 0x09, 0xd5, - 0x06, 0xb5, 0xb5, 0x3a, 0x8c, 0xcb, 0xe9, 0x5a, 0xd4, 0x68, 0xf7, 0x37, 0x73, 0x65, 0x14, 0x83, - 0xab, 0xef, 0x93, 0xb6, 0xd6, 0xc7, 0xf7, 0xe2, 0x30, 0xbe, 0x2e, 0x35, 0xcc, 0x55, 0xc3, 0xa2, - 0x2e, 0x75, 0xa2, 0x4c, 0xc5, 0xdf, 0x4e, 0x40, 0xae, 0xdc, 0x6c, 0xda, 0x56, 0xa3, 0x43, 0x74, - 0xf4, 0x1c, 0x64, 0x29, 0xb1, 0x34, 0x8b, 0xae, 0xd7, 0x0a, 0x89, 0x0b, 0x89, 0x8b, 0xb9, 0xca, - 0xc2, 0x87, 0x87, 0x2b, 0x8f, 0x1d, 0x1d, 0xae, 0x64, 0xb7, 0x25, 0x1c, 0xfb, 0x14, 0xe8, 0x65, - 0xc8, 0xeb, 0x66, 0xd7, 0xa5, 0xc4, 0xd9, 0xd2, 0xda, 0xa4, 0x90, 0xe4, 0x0c, 0x67, 0x24, 0x43, - 0xbe, 0x1a, 0xa0, 0xb0, 0x4a, 0x87, 0x9e, 0x81, 0xe9, 0x03, 0xe2, 0xb8, 0x86, 0x6d, 0x15, 0x52, - 0x9c, 0x65, 0x5e, 0xb2, 0x4c, 0xdf, 0x16, 0x60, 0xec, 0xe1, 0x8b, 0x1f, 0x25, 0x60, 0xa1, 0xdc, - 0xa5, 0xfb, 0xef, 0xdf, 0x21, 0x3b, 0xfb, 0xb6, 0xdd, 0x2a, 0x37, 0x9b, 0x0e, 0x7a, 0x07, 0xa6, - 0x77, 0xba, 0x86, 0x49, 0x0d, 0x8b, 0xeb, 0x98, 0xbf, 0x7c, 0xb5, 0x34, 0x62, 0x0a, 0x95, 0x2a, - 0x82, 0x3e, 0x2a, 0xaa, 0x92, 0x67, 0xad, 0x4a, 0x24, 0xf6, 0xa4, 0x22, 0x1d, 0xb2, 0xe4, 0x1e, - 0x25, 0x8e, 0xa5, 0x99, 0xfc, 0xa5, 0xf2, 0x97, 0x5f, 0x19, 0xd9, 0xc2, 0x9a, 0x64, 0xe8, 0x6b, - 0x62, 0x86, 0x75, 0x9e, 0x87, 0xc5, 0xbe, 0xe0, 0xe2, 0x13, 0x70, 0x6e, 0x88, 0x56, 0xc5, 0xdf, - 0x4b, 0x42, 0xbe, 0xda, 0x58, 0xbf, 0xd9, 0x61, 0x23, 0x65, 0x3b, 0xe8, 0x5d, 0xc8, 0xb2, 0xc9, - 0xd5, 0xd4, 0xa8, 0x26, 0xdf, 0xf8, 0x85, 0x92, 0x18, 0xeb, 0x92, 0x3a, 0xd6, 0xa5, 0x4e, 0x6b, - 0x8f, 0x01, 0xdc, 0x12, 0xa3, 0x66, 0x4a, 0xdd, 0xdc, 0xf9, 0x3a, 0xd1, 0xe9, 0x26, 0xa1, 0x5a, - 0x05, 0xc9, 0x3e, 0x86, 0x00, 0x86, 0x7d, 0xa9, 0x08, 0x43, 0xda, 0xed, 0x10, 0x5d, 0xbe, 0xed, - 0x0b, 0x23, 0xdf, 0x56, 0xd1, 0x8e, 0xcd, 0x9b, 0xca, 0x8c, 0x94, 0x9e, 0x66, 0x4f, 0x98, 0xcb, - 0x42, 0x5f, 0x85, 0x29, 0x97, 0x6a, 0xb4, 0xeb, 0xf2, 0x51, 0xce, 0x5f, 0xbe, 0x1c, 0x4b, 0x2a, - 0xe7, 0xac, 0xcc, 0x49, 0xb9, 0x53, 0xe2, 0x19, 0x4b, 0x89, 0xc5, 0x37, 0x01, 0x29, 0xc4, 0xd7, - 0x88, 0x46, 0xbb, 0x4e, 0x68, 0x62, 0x25, 0x46, 0x4c, 0xac, 0xbf, 0x4d, 0xc0, 0xbc, 0x22, 0x61, - 0xc3, 0x70, 0x29, 0xfa, 0xe9, 0xbe, 0x6e, 0x2e, 0x8d, 0xd7, 0xcd, 0x8c, 0x9b, 0x77, 0xb2, 0x6f, - 0x2c, 0x1e, 0x44, 0xe9, 0xe2, 0xb7, 0x21, 0x63, 0x50, 0xd2, 0x76, 0x0b, 0xc9, 0x0b, 0xa9, 0x8b, - 0xf9, 0xcb, 0xcf, 0xc5, 0xe9, 0x8d, 0xca, 0xac, 0x14, 0x9c, 0x59, 0x67, 0x22, 0xb0, 0x90, 0x54, - 0xfc, 0xfd, 0xf0, 0x4b, 0x9c, 0x4a, 0x0b, 0xfe, 0x41, 0x0a, 0x16, 0xfb, 0xc6, 0x35, 0xc6, 0x48, - 0xa1, 0x3a, 0x2c, 0xb9, 0xd4, 0x76, 0xb4, 0x3d, 0x72, 0x9b, 0x58, 0x4d, 0xdb, 0x91, 0x04, 0x52, - 0xd7, 0xcf, 0x48, 0xbe, 0xa5, 0xc6, 0x00, 0x1a, 0x3c, 0x90, 0x13, 0x5d, 0x82, 0x4c, 0x67, 0x5f, - 0x73, 0x89, 0xd4, 0xfd, 0x49, 0xaf, 0x6f, 0xeb, 0x0c, 0x78, 0xff, 0x70, 0x05, 0xb8, 0x3f, 0xe4, - 0x4f, 0x58, 0x50, 0xa2, 0xa7, 0x61, 0xca, 0x21, 0x9a, 0x6b, 0x5b, 0x85, 0x34, 0xe7, 0xf1, 0xe7, - 0x25, 0xe6, 0x50, 0x2c, 0xb1, 0xe8, 0x32, 0x80, 0x43, 0xa8, 0xd3, 0xab, 0xda, 0x5d, 0x8b, 0x16, - 0x32, 0x17, 0x12, 0x17, 0x33, 0x81, 0xe5, 0x61, 0x1f, 0x83, 0x15, 0x2a, 0xf4, 0x1b, 0x09, 0x78, - 0xd2, 0xd4, 0x5c, 0x8a, 0xc9, 0xba, 0x65, 0x50, 0x43, 0x33, 0x8d, 0xf7, 0x0d, 0x6b, 0x6f, 0xdb, - 0x68, 0xb3, 0xe9, 0xd1, 0xee, 0x14, 0xa6, 0xf8, 0x54, 0xfc, 0xc2, 0x78, 0x53, 0x91, 0xb1, 0x55, - 0x9e, 0x92, 0x2d, 0x3e, 0xb9, 0x31, 0x5c, 0x2c, 0x3e, 0xae, 0xcd, 0x62, 0x93, 0x4f, 0xac, 0xba, - 0x63, 0xdf, 0xeb, 0xdd, 0xec, 0x50, 0xc3, 0xb6, 0x5c, 0xb4, 0x0a, 0x39, 0x4b, 0x6b, 0x13, 0xb7, - 0xa3, 0xe9, 0x44, 0x0e, 0xda, 0xa2, 0x6c, 0x27, 0xb7, 0xe5, 0x21, 0x70, 0x40, 0x83, 0x2e, 0x40, - 0xda, 0x0a, 0x26, 0x95, 0xef, 0x21, 0xf8, 0x6c, 0xe2, 0x98, 0xe2, 0xb7, 0x92, 0x30, 0x2d, 0xe7, - 0xd8, 0x04, 0x7c, 0xdc, 0x56, 0xc8, 0xc7, 0x8d, 0x61, 0x7f, 0x42, 0xb3, 0xa1, 0xfe, 0xed, 0x76, - 0xc4, 0xbf, 0x95, 0xc6, 0x96, 0x78, 0xbc, 0x6f, 0xfb, 0x20, 0x09, 0x33, 0x92, 0x92, 0x4f, 0xc4, - 0x09, 0x74, 0x4d, 0x23, 0xd4, 0x35, 0x97, 0xc6, 0x7d, 0x11, 0x3f, 0x6f, 0x18, 0xd8, 0x3f, 0x3f, - 0x15, 0xe9, 0x9f, 0x17, 0xe3, 0x89, 0x3d, 0xbe, 0x93, 0xfe, 0x2e, 0x01, 0x0b, 0x2a, 0xf9, 0x04, - 0x1c, 0x38, 0x0e, 0x3b, 0xf0, 0xe7, 0x63, 0xbd, 0xce, 0x10, 0x0f, 0xfe, 0x9b, 0x91, 0xd7, 0xe0, - 0x2e, 0xfc, 0x02, 0xa4, 0x69, 0xaf, 0xe3, 0x19, 0x99, 0xdf, 0xb5, 0xdb, 0xbd, 0x0e, 0xc1, 0x1c, - 0xc3, 0x3c, 0x98, 0x49, 0x0e, 0x88, 0x29, 0x6d, 0xcb, 0xf7, 0x60, 0x1b, 0x0c, 0xe8, 0x7b, 0x30, - 0xfe, 0x84, 0x05, 0x65, 0x1c, 0x97, 0xfd, 0xab, 0x09, 0x40, 0xfd, 0x43, 0x11, 0xc7, 0x67, 0x3f, - 0xe5, 0x79, 0x58, 0xa1, 0xdf, 0x6c, 0xc8, 0xc3, 0xf6, 0xfb, 0xd4, 0xd4, 0x71, 0x3e, 0xb5, 0xf8, - 0xeb, 0xa9, 0x70, 0x1f, 0xb1, 0x7e, 0x98, 0x80, 0x4d, 0x78, 0xa3, 0x90, 0x1c, 0x3d, 0x0a, 0xa9, - 0xb1, 0x47, 0xe1, 0x35, 0x98, 0x35, 0x35, 0x4a, 0x5c, 0xea, 0x45, 0x31, 0x11, 0x4e, 0xce, 0x4a, - 0xd6, 0xd9, 0x0d, 0x15, 0x89, 0xc3, 0xb4, 0x2c, 0x58, 0x37, 0x89, 0xab, 0x3b, 0x06, 0xf7, 0xc8, - 0x3c, 0xba, 0x28, 0xc1, 0xba, 0x16, 0xa0, 0xb0, 0x4a, 0x87, 0x6e, 0xc2, 0x59, 0xdd, 0x6e, 0x77, - 0x34, 0x6a, 0xec, 0x98, 0x44, 0x76, 0x24, 0x7b, 0x8b, 0xc2, 0xd4, 0x85, 0xd4, 0xc5, 0x5c, 0xe5, - 0x89, 0xa3, 0xc3, 0x95, 0xb3, 0xd5, 0x41, 0x04, 0x78, 0x30, 0x5f, 0xf1, 0x1f, 0x12, 0xb0, 0x14, - 0x1d, 0x90, 0x09, 0xd8, 0xdf, 0xed, 0xb0, 0xfd, 0xc5, 0xf3, 0x52, 0x4c, 0xc7, 0x21, 0x36, 0xf8, - 0x47, 0x09, 0x98, 0x0b, 0x48, 0x1d, 0xe2, 0xb2, 0x58, 0xa7, 0x5a, 0xe0, 0x93, 0xea, 0xd8, 0xdf, - 0x3f, 0x5c, 0xc9, 0x4b, 0x32, 0x65, 0x2a, 0x5c, 0x80, 0xf4, 0xbe, 0xed, 0xd2, 0xe8, 0x64, 0xb9, - 0x6e, 0xbb, 0x14, 0x73, 0x0c, 0xa3, 0xe8, 0xd8, 0x0e, 0xe5, 0x73, 0x25, 0x13, 0x50, 0xd4, 0x6d, - 0x87, 0x62, 0x8e, 0xe1, 0x14, 0x1a, 0xdd, 0x97, 0x53, 0x22, 0xa0, 0xd0, 0xe8, 0x3e, 0xe6, 0x98, - 0xe2, 0x35, 0x38, 0xe3, 0x29, 0xda, 0xe9, 0x98, 0xa1, 0xc8, 0x6c, 0xd3, 0x5b, 0x9d, 0xa6, 0x46, - 0x85, 0xca, 0x59, 0x25, 0x32, 0x7b, 0x08, 0x1c, 0xd0, 0x14, 0x7f, 0x18, 0x78, 0x1d, 0x36, 0xf0, - 0xb6, 0x45, 0x2c, 0x3a, 0x86, 0xd7, 0xf9, 0xc5, 0x04, 0x64, 0x1d, 0xd2, 0x31, 0x0d, 0x5d, 0x73, - 0xc7, 0xae, 0x8b, 0xa2, 0xed, 0x60, 0x29, 0xa0, 0xf2, 0x9c, 0x37, 0xd4, 0x1e, 0xe4, 0xfe, 0xe1, - 0x4a, 0x61, 0x18, 0x35, 0xf6, 0x1b, 0x66, 0xb3, 0x6f, 0x28, 0x19, 0xf3, 0x51, 0x4d, 0xe2, 0x1a, - 0x0e, 0x69, 0xf2, 0xf7, 0xc8, 0x04, 0x3e, 0xaa, 0x26, 0xc0, 0xd8, 0xc3, 0x33, 0x52, 0xbd, 0xeb, - 0x38, 0xc4, 0x12, 0xa3, 0xa6, 0x90, 0x56, 0x05, 0x18, 0x7b, 0x78, 0xd6, 0xc1, 0xda, 0x81, 0x66, - 0x98, 0xda, 0x8e, 0x49, 0xe4, 0x00, 0xfa, 0x1d, 0x5c, 0xf6, 0x10, 0x38, 0xa0, 0x61, 0xb2, 0xbb, - 0xbc, 0xab, 0x9b, 0x7c, 0x34, 0x15, 0xd9, 0x62, 0x04, 0x9a, 0xd8, 0xc3, 0x17, 0xff, 0x20, 0xa5, - 0x8c, 0x85, 0xd5, 0x34, 0xb8, 0xc9, 0x8e, 0x1e, 0x8b, 0x57, 0xfc, 0xe0, 0x2a, 0xa6, 0xdc, 0xe7, - 0xc2, 0x71, 0xf2, 0xfe, 0xe1, 0xca, 0xbc, 0x2f, 0x2e, 0x1c, 0x3a, 0xd1, 0x1e, 0xf3, 0x41, 0x2e, - 0xad, 0x3b, 0xf6, 0x0e, 0x61, 0x19, 0x9f, 0x0c, 0xcf, 0x71, 0x12, 0x4c, 0xc5, 0x5f, 0x29, 0x82, - 0x70, 0x58, 0x2e, 0x3a, 0x00, 0xc4, 0x00, 0xdb, 0x8e, 0x66, 0xb9, 0x5c, 0x11, 0xde, 0x5a, 0x3a, - 0x76, 0x6b, 0xcb, 0xb2, 0x35, 0xb4, 0xd1, 0x27, 0x0d, 0x0f, 0x68, 0x41, 0x09, 0x2c, 0x99, 0x63, - 0x93, 0xf5, 0x67, 0x60, 0xba, 0x4d, 0x5c, 0x57, 0xdb, 0x23, 0x3c, 0xc7, 0x56, 0x02, 0xda, 0xa6, - 0x00, 0x63, 0x0f, 0x5f, 0xfc, 0xbf, 0x0c, 0x2c, 0x7a, 0xa3, 0xe4, 0x90, 0x26, 0xb1, 0x58, 0xce, - 0x3c, 0x81, 0x20, 0xa4, 0x56, 0x73, 0xc9, 0xb8, 0xd5, 0x5c, 0x6a, 0xcc, 0x6a, 0xae, 0x04, 0x40, - 0xa8, 0xde, 0xac, 0x96, 0xab, 0xc4, 0xa1, 0x7c, 0x7c, 0x66, 0x2a, 0x73, 0x4c, 0xa5, 0xb5, 0xed, - 0x6a, 0x4d, 0x40, 0xb1, 0x42, 0x81, 0x9e, 0x85, 0x9c, 0x78, 0xba, 0x41, 0x7a, 0xbc, 0x8b, 0x67, - 0x2a, 0xb3, 0xcc, 0x14, 0x04, 0xf9, 0x0d, 0xd2, 0xc3, 0x01, 0x1e, 0x55, 0x61, 0x91, 0x3d, 0x94, - 0xeb, 0xeb, 0x55, 0xd3, 0x20, 0x16, 0xe5, 0x6d, 0x4c, 0x71, 0xa6, 0xb3, 0x47, 0x87, 0x2b, 0x8b, - 0x8c, 0x29, 0x84, 0xc4, 0xfd, 0xf4, 0xe8, 0x4b, 0xb0, 0x10, 0x02, 0xb2, 0x86, 0xa7, 0xb9, 0x8c, - 0xa5, 0xa3, 0xc3, 0x95, 0x85, 0x90, 0x0c, 0xd6, 0x7e, 0x1f, 0x35, 0x2a, 0xc2, 0x94, 0xae, 0xf1, - 0xb6, 0xb3, 0x9c, 0x0f, 0xd8, 0x7c, 0x90, 0xef, 0x26, 0x31, 0x68, 0x05, 0x32, 0xba, 0xc6, 0x44, - 0xe7, 0x38, 0x49, 0x8e, 0x45, 0x0a, 0xf1, 0x3e, 0x02, 0xce, 0x3a, 0x4a, 0x0f, 0x5e, 0x02, 0x82, - 0x8e, 0x52, 0xb4, 0x57, 0x28, 0x58, 0x47, 0xe9, 0xbe, 0xbe, 0xf9, 0xa0, 0xa3, 0x02, 0x45, 0x03, - 0x3c, 0x6b, 0x9d, 0xda, 0x2d, 0x62, 0x15, 0x66, 0xf8, 0xb0, 0xf1, 0xd6, 0xb7, 0x19, 0x00, 0x0b, - 0x38, 0x7a, 0x15, 0xe6, 0x76, 0x6c, 0x9b, 0xba, 0xd4, 0xd1, 0x3a, 0x1c, 0x51, 0x98, 0xe5, 0x94, - 0xe8, 0xe8, 0x70, 0x65, 0xae, 0x12, 0xc2, 0xe0, 0x08, 0x25, 0xe3, 0xd5, 0x89, 0x43, 0x8d, 0x5d, - 0x43, 0xd7, 0x28, 0x61, 0xea, 0xcc, 0x05, 0xbc, 0xd5, 0x10, 0x06, 0x47, 0x28, 0x8b, 0xff, 0x98, - 0x80, 0xb3, 0x7d, 0x73, 0x7f, 0x02, 0xf1, 0xfe, 0x4e, 0x38, 0xde, 0x5f, 0x1e, 0x3b, 0xd4, 0xf8, - 0x4a, 0x0e, 0x09, 0xf8, 0x1f, 0x4f, 0xfb, 0x01, 0xdf, 0x5b, 0x39, 0xfa, 0x0c, 0xa4, 0x8d, 0xce, - 0x81, 0x2b, 0xa3, 0x67, 0x96, 0x39, 0xdb, 0xf5, 0xfa, 0xed, 0x06, 0xe6, 0x50, 0x74, 0x11, 0xb2, - 0x9d, 0xee, 0x8e, 0x69, 0xe8, 0x1b, 0x15, 0x6e, 0x85, 0x59, 0xb1, 0xa8, 0x57, 0x97, 0x30, 0xec, - 0x63, 0xd9, 0x0c, 0x31, 0x2c, 0xb1, 0xc0, 0xb7, 0x51, 0xe1, 0x06, 0x98, 0x15, 0x33, 0x64, 0xdd, - 0x87, 0x62, 0x85, 0x02, 0xbd, 0x00, 0xd3, 0x7b, 0x9d, 0x2e, 0xcf, 0xc6, 0x44, 0xd8, 0x7f, 0x9c, - 0xb9, 0x9f, 0x2f, 0xd7, 0x6f, 0xc9, 0x54, 0xc3, 0xfb, 0x89, 0x3d, 0x32, 0x54, 0x87, 0x25, 0x62, - 0xb1, 0x20, 0xb3, 0xa9, 0xf1, 0x5a, 0x52, 0xdf, 0x27, 0xcd, 0xae, 0x49, 0xb8, 0x1d, 0x66, 0x83, - 0xe5, 0x90, 0xb5, 0x01, 0x34, 0x78, 0x20, 0x27, 0x7a, 0x0d, 0x92, 0xfb, 0x9a, 0x5c, 0x65, 0x78, - 0x6a, 0x64, 0x27, 0x5f, 0x2f, 0x57, 0xa6, 0x8e, 0x0e, 0x57, 0x92, 0xd7, 0xcb, 0x38, 0xb9, 0xaf, - 0xb1, 0x89, 0xe5, 0xb6, 0x8c, 0x8e, 0x1f, 0x6b, 0xdc, 0xc2, 0x34, 0xcf, 0x2a, 0xf9, 0xc4, 0x6a, - 0x84, 0x30, 0x38, 0x42, 0x89, 0xde, 0x82, 0xcc, 0xae, 0x61, 0x12, 0xb7, 0x90, 0xe5, 0x03, 0xfc, - 0xf9, 0x91, 0x6d, 0x5f, 0x33, 0x4c, 0x25, 0x89, 0x63, 0x4f, 0x2e, 0x16, 0x22, 0x50, 0x0b, 0x32, - 0xfb, 0xb6, 0xdd, 0x72, 0x0b, 0x39, 0x2e, 0xeb, 0xd5, 0x71, 0x27, 0x8b, 0x9c, 0x00, 0xa5, 0xeb, - 0x8c, 0x79, 0xcd, 0xa2, 0x4e, 0xaf, 0xf2, 0x84, 0xd7, 0x00, 0x87, 0xfd, 0xc2, 0xbf, 0xac, 0x64, - 0xd9, 0x0f, 0x3e, 0x0a, 0xa2, 0x0d, 0xb4, 0x0b, 0x79, 0xdd, 0x35, 0xbc, 0x25, 0x2d, 0xee, 0x08, - 0xc6, 0x2a, 0x6f, 0xfb, 0x56, 0x2c, 0x2b, 0xf3, 0xdc, 0x31, 0x07, 0x70, 0xac, 0x0a, 0x46, 0x2e, - 0x2c, 0x68, 0x91, 0xb5, 0x61, 0xee, 0x46, 0xc6, 0x49, 0x7e, 0xfb, 0xd6, 0xa1, 0xb9, 0xa7, 0x8c, - 0x42, 0x71, 0x5f, 0x03, 0x68, 0x13, 0xce, 0xc8, 0x69, 0x42, 0xa8, 0x63, 0xe8, 0x6e, 0x83, 0x38, - 0x07, 0xc4, 0xe1, 0x5e, 0x29, 0xeb, 0xa7, 0xc2, 0x67, 0xd6, 0xfa, 0x49, 0xf0, 0x20, 0x3e, 0x56, - 0xf1, 0x18, 0x9d, 0x83, 0x2b, 0xb5, 0xae, 0x66, 0x36, 0x98, 0xbe, 0xdc, 0x69, 0x65, 0x83, 0x0c, - 0x62, 0xbd, 0xae, 0x20, 0x71, 0x98, 0x76, 0xf9, 0x2a, 0x40, 0x30, 0x30, 0x68, 0x01, 0x52, 0x2d, - 0xd2, 0x13, 0x49, 0x11, 0x66, 0x3f, 0xd1, 0x12, 0x64, 0x0e, 0x34, 0xb3, 0x2b, 0x8b, 0x34, 0x2c, - 0x1e, 0x5e, 0x4d, 0x5e, 0x4d, 0xb0, 0x14, 0xd7, 0x0b, 0x78, 0x13, 0x70, 0x55, 0x9b, 0x61, 0x57, - 0x75, 0x71, 0xdc, 0xd9, 0x37, 0xc4, 0x41, 0xfd, 0x77, 0xca, 0x77, 0x50, 0x9b, 0x42, 0x33, 0xb4, - 0x0c, 0x49, 0xa3, 0x23, 0xf3, 0x41, 0x90, 0x4c, 0xc9, 0xf5, 0x3a, 0x4e, 0x1a, 0x1d, 0xbf, 0xb4, - 0x48, 0x0e, 0x2d, 0x2d, 0x9e, 0x83, 0x6c, 0xd7, 0x65, 0x3e, 0xc7, 0xcf, 0x0a, 0xfc, 0xb7, 0xb9, - 0x25, 0xe1, 0xd8, 0xa7, 0xe0, 0xee, 0x4e, 0x73, 0xdd, 0xbb, 0xb6, 0xd3, 0x94, 0xd9, 0x80, 0x70, - 0x77, 0x12, 0x86, 0x7d, 0x2c, 0x73, 0x77, 0x1d, 0xc7, 0x38, 0x90, 0x21, 0x25, 0x13, 0x04, 0xc4, - 0xba, 0x0f, 0xc5, 0x0a, 0x05, 0xa7, 0xd7, 0x5c, 0xb7, 0xbe, 0xef, 0x68, 0x2e, 0x91, 0x59, 0x80, - 0xa0, 0xf7, 0xa1, 0x58, 0xa1, 0x40, 0x3a, 0x4c, 0x99, 0xda, 0x0e, 0x31, 0x85, 0x57, 0xc9, 0x5f, - 0x7e, 0x6d, 0xdc, 0x8e, 0x95, 0xdd, 0x56, 0xda, 0xe0, 0xdc, 0xc2, 0xae, 0xfd, 0x34, 0x50, 0x00, - 0xb1, 0x14, 0x8d, 0xca, 0x30, 0x45, 0x35, 0xc3, 0xa2, 0x9e, 0x1f, 0x7a, 0x42, 0x99, 0x18, 0x25, - 0xdd, 0x76, 0x08, 0x4f, 0x44, 0x19, 0x45, 0x20, 0x82, 0x3f, 0xba, 0x58, 0x32, 0x2e, 0xbf, 0x02, - 0x79, 0xa5, 0xa5, 0x58, 0x13, 0xf5, 0xc7, 0x49, 0x98, 0x97, 0x4a, 0xd7, 0x1d, 0xbb, 0x43, 0x1c, - 0xda, 0x43, 0x1b, 0xb0, 0xd4, 0xd6, 0xee, 0x79, 0xab, 0x85, 0xc4, 0x39, 0x30, 0x74, 0xb2, 0xd5, - 0x6d, 0xcb, 0x92, 0xa6, 0xc0, 0xfc, 0xfb, 0xe6, 0x00, 0x3c, 0x1e, 0xc8, 0x85, 0xbe, 0x08, 0xb3, - 0x6d, 0xed, 0xde, 0x96, 0xdd, 0x24, 0x75, 0xbb, 0xc9, 0xc4, 0x88, 0x79, 0xb2, 0xc8, 0xac, 0x6f, - 0x53, 0x45, 0xe0, 0x30, 0x1d, 0xfa, 0x46, 0x02, 0x66, 0xed, 0x03, 0xe2, 0xb8, 0xb6, 0xd9, 0xc4, - 0x1a, 0x35, 0xec, 0x42, 0x8a, 0x77, 0x50, 0x75, 0xdc, 0x51, 0xf0, 0x5e, 0xa8, 0x74, 0x53, 0x95, - 0x22, 0x46, 0xc3, 0x77, 0x00, 0x21, 0x1c, 0x0e, 0x37, 0xb8, 0xfc, 0x25, 0x40, 0xfd, 0xbc, 0xb1, - 0xfa, 0xf7, 0xbf, 0x32, 0x7e, 0xff, 0x62, 0xb9, 0xaf, 0x8b, 0x7e, 0x0e, 0xb2, 0xba, 0xd6, 0xd1, - 0x74, 0x83, 0x32, 0x21, 0xec, 0x95, 0xde, 0x18, 0xf7, 0x95, 0x3c, 0x19, 0xa5, 0xaa, 0x14, 0x20, - 0xde, 0xe6, 0x82, 0x67, 0x4e, 0x1e, 0xf8, 0xfe, 0xe1, 0xca, 0x8c, 0x47, 0xcb, 0x1c, 0x06, 0xf6, - 0x5b, 0x44, 0xbf, 0x9c, 0x80, 0xbc, 0x66, 0x9a, 0xb6, 0xae, 0x51, 0x5e, 0x50, 0x0a, 0x9f, 0x51, - 0x8e, 0xad, 0x41, 0x39, 0x90, 0x21, 0x94, 0xf0, 0x96, 0xfd, 0xf3, 0x0a, 0xa6, 0x4f, 0x0f, 0xb5, - 0x69, 0x36, 0xc2, 0x39, 0xf9, 0x4c, 0x9a, 0x72, 0x74, 0xdf, 0x7c, 0x50, 0x45, 0x48, 0x53, 0xa8, - 0xf1, 0x39, 0xbf, 0x34, 0xf6, 0xe0, 0x7d, 0x4a, 0x04, 0x8d, 0x2e, 0xb7, 0x60, 0x36, 0xd4, 0x95, - 0x03, 0x06, 0xb7, 0xa6, 0x0e, 0xee, 0x08, 0xc7, 0x5d, 0xf2, 0x36, 0xef, 0x4b, 0x6f, 0x77, 0x35, - 0x8b, 0x1a, 0xb4, 0xa7, 0x4c, 0x86, 0x65, 0x0b, 0x16, 0xa2, 0xbd, 0xf6, 0x50, 0xdb, 0x33, 0x61, - 0x2e, 0xdc, 0x39, 0x0f, 0xb3, 0xb5, 0xe2, 0xb7, 0xcf, 0xfa, 0x31, 0x8f, 0xaf, 0x23, 0xbf, 0x09, - 0xb0, 0x6b, 0x58, 0x9a, 0x69, 0xbc, 0x4f, 0x1c, 0x97, 0x4f, 0xf4, 0x5c, 0x65, 0x85, 0x79, 0xdb, - 0x6b, 0x3e, 0xf4, 0xfe, 0xe1, 0xca, 0xac, 0xff, 0xc4, 0x2b, 0x43, 0x85, 0x25, 0x7e, 0xf5, 0xd9, - 0x34, 0xdc, 0x8e, 0xa9, 0xf5, 0x06, 0x55, 0x9f, 0xb5, 0x00, 0x85, 0x55, 0x3a, 0x7f, 0xad, 0x23, - 0x3d, 0x74, 0xad, 0x43, 0x59, 0x78, 0xce, 0x8c, 0x58, 0x78, 0xae, 0x41, 0xde, 0x22, 0xf4, 0xae, - 0xed, 0xb4, 0xe4, 0x0a, 0x27, 0x23, 0x2f, 0x7a, 0x3a, 0x6c, 0x05, 0xa8, 0xfb, 0xe1, 0x47, 0xac, - 0xb2, 0xb1, 0x9c, 0x45, 0x3e, 0xd6, 0x08, 0xf3, 0xa2, 0xbc, 0xd6, 0x54, 0x56, 0x69, 0xb7, 0x54, - 0x24, 0x0e, 0xd3, 0x2a, 0x45, 0x78, 0x75, 0xbd, 0x86, 0x79, 0xb9, 0xd9, 0x5f, 0x84, 0x33, 0x14, - 0x56, 0xe9, 0xd0, 0x25, 0xc8, 0xbb, 0xc2, 0x67, 0x73, 0xb6, 0x33, 0xe2, 0x45, 0x19, 0x4b, 0x23, - 0x00, 0x63, 0x95, 0x06, 0xad, 0x42, 0xae, 0x69, 0xb9, 0x35, 0xbb, 0xad, 0x19, 0x16, 0xaf, 0x59, - 0x95, 0x1d, 0xb9, 0xda, 0x56, 0x43, 0x20, 0x70, 0x40, 0x83, 0x30, 0x3c, 0x2e, 0x2a, 0x95, 0xb2, - 0xc9, 0x2b, 0x10, 0x6a, 0x1c, 0x10, 0xbe, 0x75, 0x57, 0x00, 0x3e, 0x39, 0x96, 0x8f, 0x0e, 0x57, - 0x1e, 0xaf, 0x0f, 0xa4, 0xc0, 0x43, 0x38, 0x91, 0x0d, 0xd9, 0x5d, 0x91, 0xcc, 0xba, 0x32, 0x37, - 0x5d, 0x8d, 0x99, 0x7b, 0xfb, 0xe3, 0x93, 0x95, 0x00, 0x36, 0x2b, 0x23, 0x05, 0x1a, 0xf6, 0x1b, - 0x41, 0x77, 0x59, 0xce, 0xc1, 0xe3, 0x8a, 0x41, 0x5c, 0x9e, 0x96, 0x8e, 0x75, 0x60, 0x21, 0x1c, - 0x91, 0x2a, 0x9f, 0xf7, 0x96, 0x5d, 0xea, 0xbe, 0x2c, 0xbe, 0x66, 0x16, 0x26, 0xc3, 0x4a, 0x53, - 0xe8, 0x1d, 0xc8, 0x69, 0x62, 0xe1, 0x97, 0xb8, 0x85, 0x59, 0xee, 0x2b, 0x57, 0x63, 0xe6, 0x23, - 0x81, 0xfd, 0x48, 0x80, 0x8b, 0x03, 0x99, 0xe8, 0x97, 0x12, 0x30, 0xdf, 0xb4, 0xf5, 0x16, 0x71, - 0xd6, 0xee, 0x51, 0x47, 0x2b, 0x3b, 0x7b, 0x6e, 0x61, 0x2e, 0x5e, 0x70, 0x60, 0x76, 0x5f, 0xaa, - 0x85, 0x65, 0x08, 0xaf, 0x7c, 0x4e, 0xb6, 0x3c, 0x1f, 0xc1, 0xe2, 0x68, 0x93, 0x2c, 0x3e, 0x2d, - 0xb4, 0xba, 0x3b, 0xc4, 0x24, 0x34, 0xd0, 0x63, 0x9e, 0xeb, 0x51, 0x89, 0xa5, 0xc7, 0x8d, 0x88, - 0x10, 0xa1, 0x48, 0x41, 0x2a, 0xb2, 0x10, 0x45, 0xe3, 0xbe, 0x56, 0xd1, 0x37, 0x13, 0x80, 0xb4, - 0x8e, 0x21, 0x4a, 0x89, 0x40, 0x99, 0x05, 0xae, 0x4c, 0x2d, 0x96, 0x32, 0xe5, 0x3e, 0x31, 0x42, - 0x1d, 0x7f, 0x71, 0xb1, 0x5c, 0x5f, 0x8f, 0x10, 0xe0, 0x01, 0x6d, 0xa3, 0x3f, 0x4f, 0xc0, 0xb2, + 0x02, 0xc2, 0x20, 0x81, 0x08, 0x91, 0x22, 0x85, 0xaf, 0x08, 0x10, 0x42, 0x7c, 0x58, 0x08, 0xa1, + 0x88, 0x2f, 0x0b, 0x29, 0x03, 0x1e, 0x1e, 0x82, 0x0f, 0xc4, 0x37, 0xfb, 0x85, 0xee, 0xa3, 0xaa, + 0x6e, 0x55, 0x77, 0x4f, 0x77, 0xad, 0x67, 0xdb, 0xf3, 0xb1, 0x7f, 0x5d, 0xe7, 0x75, 0x4f, 0xdd, + 0x7b, 0xcf, 0xeb, 0x3e, 0xaa, 0x61, 0x95, 0xb6, 0x88, 0x4b, 0x35, 0xbd, 0x55, 0x32, 0x6c, 0xf6, + 0x7b, 0x55, 0xeb, 0x18, 0xab, 0x1d, 0x53, 0xa3, 0xbb, 0xb6, 0xd3, 0x5e, 0x3d, 0xb8, 0xb4, 0xba, + 0x47, 0x2c, 0xe2, 0x68, 0x94, 0x34, 0x4b, 0x1d, 0xc7, 0xa6, 0x36, 0x5a, 0x51, 0x18, 0x4a, 0xb4, + 0x45, 0x4a, 0x5a, 0xc7, 0x28, 0x79, 0x0c, 0xa5, 0x83, 0x4b, 0xcb, 0xcf, 0xef, 0x19, 0x74, 0xbf, + 0xbb, 0x53, 0xd2, 0xed, 0xf6, 0xea, 0x9e, 0xbd, 0x67, 0xaf, 0x72, 0xbe, 0x9d, 0xee, 0x2e, 0x7f, + 0xe2, 0x0f, 0xfc, 0x97, 0x90, 0xb7, 0x5c, 0x6c, 0x5d, 0x75, 0x59, 0xdb, 0xac, 0x5d, 0xdd, 0x76, + 0xc8, 0x80, 0x36, 0x97, 0x5f, 0x0a, 0x68, 0xda, 0x9a, 0xbe, 0x6f, 0x58, 0xc4, 0xe9, 0xad, 0x76, + 0x5a, 0x7b, 0x9c, 0xc9, 0x21, 0xae, 0xdd, 0x75, 0x74, 0x12, 0x8b, 0xcb, 0x5d, 0x6d, 0x13, 0xaa, + 0x0d, 0x6a, 0x6b, 0x75, 0x18, 0x97, 0xd3, 0xb5, 0xa8, 0xd1, 0xee, 0x6f, 0xe6, 0xca, 0x28, 0x06, + 0x57, 0xdf, 0x27, 0x6d, 0xad, 0x8f, 0xef, 0xc5, 0x61, 0x7c, 0x5d, 0x6a, 0x98, 0xab, 0x86, 0x45, + 0x5d, 0xea, 0x44, 0x99, 0x8a, 0xbf, 0x9b, 0x80, 0x5c, 0xb9, 0xd9, 0xb4, 0xad, 0x46, 0x87, 0xe8, + 0xe8, 0x39, 0xc8, 0x52, 0x62, 0x69, 0x16, 0x5d, 0xaf, 0x15, 0x12, 0x17, 0x12, 0x17, 0x73, 0x95, + 0x85, 0x0f, 0x0f, 0x57, 0x1e, 0x3b, 0x3a, 0x5c, 0xc9, 0x6e, 0x4b, 0x38, 0xf6, 0x29, 0xd0, 0xcb, + 0x90, 0xd7, 0xcd, 0xae, 0x4b, 0x89, 0xb3, 0xa5, 0xb5, 0x49, 0x21, 0xc9, 0x19, 0xce, 0x48, 0x86, + 0x7c, 0x35, 0x40, 0x61, 0x95, 0x0e, 0x3d, 0x03, 0xd3, 0x07, 0xc4, 0x71, 0x0d, 0xdb, 0x2a, 0xa4, + 0x38, 0xcb, 0xbc, 0x64, 0x99, 0xbe, 0x2d, 0xc0, 0xd8, 0xc3, 0x17, 0x3f, 0x4a, 0xc0, 0x42, 0xb9, + 0x4b, 0xf7, 0xdf, 0xbf, 0x43, 0x76, 0xf6, 0x6d, 0xbb, 0x55, 0x6e, 0x36, 0x1d, 0xf4, 0x0e, 0x4c, + 0xef, 0x74, 0x0d, 0x93, 0x1a, 0x16, 0xd7, 0x31, 0x7f, 0xf9, 0x6a, 0x69, 0xc4, 0x14, 0x2a, 0x55, + 0x04, 0x7d, 0x54, 0x54, 0x25, 0xcf, 0x5a, 0x95, 0x48, 0xec, 0x49, 0x45, 0x3a, 0x64, 0xc9, 0x3d, + 0x4a, 0x1c, 0x4b, 0x33, 0xf9, 0x4b, 0xe5, 0x2f, 0xbf, 0x32, 0xb2, 0x85, 0x35, 0xc9, 0xd0, 0xd7, + 0xc4, 0x0c, 0xeb, 0x3c, 0x0f, 0x8b, 0x7d, 0xc1, 0xc5, 0x27, 0xe0, 0xdc, 0x10, 0xad, 0x8a, 0x7f, + 0x90, 0x84, 0x7c, 0xb5, 0xb1, 0x7e, 0xb3, 0xc3, 0x46, 0xca, 0x76, 0xd0, 0xbb, 0x90, 0x65, 0x93, + 0xab, 0xa9, 0x51, 0x4d, 0xbe, 0xf1, 0x0b, 0x25, 0x31, 0xd6, 0x25, 0x75, 0xac, 0x4b, 0x9d, 0xd6, + 0x1e, 0x03, 0xb8, 0x25, 0x46, 0xcd, 0x94, 0xba, 0xb9, 0xf3, 0x75, 0xa2, 0xd3, 0x4d, 0x42, 0xb5, + 0x0a, 0x92, 0x7d, 0x0c, 0x01, 0x0c, 0xfb, 0x52, 0x11, 0x86, 0xb4, 0xdb, 0x21, 0xba, 0x7c, 0xdb, + 0x17, 0x46, 0xbe, 0xad, 0xa2, 0x1d, 0x9b, 0x37, 0x95, 0x19, 0x29, 0x3d, 0xcd, 0x9e, 0x30, 0x97, + 0x85, 0xbe, 0x0a, 0x53, 0x2e, 0xd5, 0x68, 0xd7, 0xe5, 0xa3, 0x9c, 0xbf, 0x7c, 0x39, 0x96, 0x54, + 0xce, 0x59, 0x99, 0x93, 0x72, 0xa7, 0xc4, 0x33, 0x96, 0x12, 0x8b, 0x6f, 0x02, 0x52, 0x88, 0xaf, + 0x11, 0x8d, 0x76, 0x9d, 0xd0, 0xc4, 0x4a, 0x8c, 0x98, 0x58, 0x7f, 0x9b, 0x80, 0x79, 0x45, 0xc2, + 0x86, 0xe1, 0x52, 0xf4, 0xb3, 0x7d, 0xdd, 0x5c, 0x1a, 0xaf, 0x9b, 0x19, 0x37, 0xef, 0x64, 0xdf, + 0x58, 0x3c, 0x88, 0xd2, 0xc5, 0x6f, 0x43, 0xc6, 0xa0, 0xa4, 0xed, 0x16, 0x92, 0x17, 0x52, 0x17, + 0xf3, 0x97, 0x9f, 0x8b, 0xd3, 0x1b, 0x95, 0x59, 0x29, 0x38, 0xb3, 0xce, 0x44, 0x60, 0x21, 0xa9, + 0xf8, 0x87, 0xe1, 0x97, 0x38, 0x95, 0x16, 0xfc, 0xc3, 0x14, 0x2c, 0xf6, 0x8d, 0x6b, 0x8c, 0x91, + 0x42, 0x75, 0x58, 0x72, 0xa9, 0xed, 0x68, 0x7b, 0xe4, 0x36, 0xb1, 0x9a, 0xb6, 0x23, 0x09, 0xa4, + 0xae, 0x9f, 0x91, 0x7c, 0x4b, 0x8d, 0x01, 0x34, 0x78, 0x20, 0x27, 0xba, 0x04, 0x99, 0xce, 0xbe, + 0xe6, 0x12, 0xa9, 0xfb, 0x93, 0x5e, 0xdf, 0xd6, 0x19, 0xf0, 0xfe, 0xe1, 0x0a, 0x70, 0x7f, 0xc8, + 0x9f, 0xb0, 0xa0, 0x44, 0x4f, 0xc3, 0x94, 0x43, 0x34, 0xd7, 0xb6, 0x0a, 0x69, 0xce, 0xe3, 0xcf, + 0x4b, 0xcc, 0xa1, 0x58, 0x62, 0xd1, 0x65, 0x00, 0x87, 0x50, 0xa7, 0x57, 0xb5, 0xbb, 0x16, 0x2d, + 0x64, 0x2e, 0x24, 0x2e, 0x66, 0x02, 0xcb, 0xc3, 0x3e, 0x06, 0x2b, 0x54, 0xe8, 0xb7, 0x12, 0xf0, + 0xa4, 0xa9, 0xb9, 0x14, 0x93, 0x75, 0xcb, 0xa0, 0x86, 0x66, 0x1a, 0xef, 0x1b, 0xd6, 0xde, 0xb6, + 0xd1, 0x66, 0xd3, 0xa3, 0xdd, 0x29, 0x4c, 0xf1, 0xa9, 0xf8, 0x85, 0xf1, 0xa6, 0x22, 0x63, 0xab, + 0x3c, 0x25, 0x5b, 0x7c, 0x72, 0x63, 0xb8, 0x58, 0x7c, 0x5c, 0x9b, 0xc5, 0x26, 0x9f, 0x58, 0x75, + 0xc7, 0xbe, 0xd7, 0xbb, 0xd9, 0xa1, 0x86, 0x6d, 0xb9, 0x68, 0x15, 0x72, 0x96, 0xd6, 0x26, 0x6e, + 0x47, 0xd3, 0x89, 0x1c, 0xb4, 0x45, 0xd9, 0x4e, 0x6e, 0xcb, 0x43, 0xe0, 0x80, 0x06, 0x5d, 0x80, + 0xb4, 0x15, 0x4c, 0x2a, 0xdf, 0x43, 0xf0, 0xd9, 0xc4, 0x31, 0xc5, 0x6f, 0x25, 0x61, 0x5a, 0xce, + 0xb1, 0x09, 0xf8, 0xb8, 0xad, 0x90, 0x8f, 0x1b, 0xc3, 0xfe, 0x84, 0x66, 0x43, 0xfd, 0xdb, 0xed, + 0x88, 0x7f, 0x2b, 0x8d, 0x2d, 0xf1, 0x78, 0xdf, 0xf6, 0x41, 0x12, 0x66, 0x24, 0x25, 0x9f, 0x88, + 0x13, 0xe8, 0x9a, 0x46, 0xa8, 0x6b, 0x2e, 0x8d, 0xfb, 0x22, 0x7e, 0xde, 0x30, 0xb0, 0x7f, 0x7e, + 0x26, 0xd2, 0x3f, 0x2f, 0xc6, 0x13, 0x7b, 0x7c, 0x27, 0xfd, 0x5d, 0x02, 0x16, 0x54, 0xf2, 0x09, + 0x38, 0x70, 0x1c, 0x76, 0xe0, 0xcf, 0xc7, 0x7a, 0x9d, 0x21, 0x1e, 0xfc, 0xb7, 0x23, 0xaf, 0xc1, + 0x5d, 0xf8, 0x05, 0x48, 0xd3, 0x5e, 0xc7, 0x33, 0x32, 0xbf, 0x6b, 0xb7, 0x7b, 0x1d, 0x82, 0x39, + 0x86, 0x79, 0x30, 0x93, 0x1c, 0x10, 0x53, 0xda, 0x96, 0xef, 0xc1, 0x36, 0x18, 0xd0, 0xf7, 0x60, + 0xfc, 0x09, 0x0b, 0xca, 0x38, 0x2e, 0xfb, 0xd7, 0x13, 0x80, 0xfa, 0x87, 0x22, 0x8e, 0xcf, 0x7e, + 0xca, 0xf3, 0xb0, 0x42, 0xbf, 0xd9, 0x90, 0x87, 0xed, 0xf7, 0xa9, 0xa9, 0xe3, 0x7c, 0x6a, 0xf1, + 0x37, 0x53, 0xe1, 0x3e, 0x62, 0xfd, 0x30, 0x01, 0x9b, 0xf0, 0x46, 0x21, 0x39, 0x7a, 0x14, 0x52, + 0x63, 0x8f, 0xc2, 0x6b, 0x30, 0x6b, 0x6a, 0x94, 0xb8, 0xd4, 0x8b, 0x62, 0x22, 0x9c, 0x9c, 0x95, + 0xac, 0xb3, 0x1b, 0x2a, 0x12, 0x87, 0x69, 0x59, 0xb0, 0x6e, 0x12, 0x57, 0x77, 0x0c, 0xee, 0x91, + 0x79, 0x74, 0x51, 0x82, 0x75, 0x2d, 0x40, 0x61, 0x95, 0x0e, 0xdd, 0x84, 0xb3, 0xba, 0xdd, 0xee, + 0x68, 0xd4, 0xd8, 0x31, 0x89, 0xec, 0x48, 0xf6, 0x16, 0x85, 0xa9, 0x0b, 0xa9, 0x8b, 0xb9, 0xca, + 0x13, 0x47, 0x87, 0x2b, 0x67, 0xab, 0x83, 0x08, 0xf0, 0x60, 0xbe, 0xe2, 0x3f, 0x24, 0x60, 0x29, + 0x3a, 0x20, 0x13, 0xb0, 0xbf, 0xdb, 0x61, 0xfb, 0x8b, 0xe7, 0xa5, 0x98, 0x8e, 0x43, 0x6c, 0xf0, + 0x4f, 0x12, 0x30, 0x17, 0x90, 0x3a, 0xc4, 0x65, 0xb1, 0x4e, 0xb5, 0xc0, 0x27, 0xd5, 0xb1, 0xbf, + 0x7f, 0xb8, 0x92, 0x97, 0x64, 0xca, 0x54, 0xb8, 0x00, 0xe9, 0x7d, 0xdb, 0xa5, 0xd1, 0xc9, 0x72, + 0xdd, 0x76, 0x29, 0xe6, 0x18, 0x46, 0xd1, 0xb1, 0x1d, 0xca, 0xe7, 0x4a, 0x26, 0xa0, 0xa8, 0xdb, + 0x0e, 0xc5, 0x1c, 0xc3, 0x29, 0x34, 0xba, 0x2f, 0xa7, 0x44, 0x40, 0xa1, 0xd1, 0x7d, 0xcc, 0x31, + 0xc5, 0x6b, 0x70, 0xc6, 0x53, 0xb4, 0xd3, 0x31, 0x43, 0x91, 0xd9, 0xa6, 0xb7, 0x3a, 0x4d, 0x8d, + 0x0a, 0x95, 0xb3, 0x4a, 0x64, 0xf6, 0x10, 0x38, 0xa0, 0x29, 0xfe, 0x28, 0xf0, 0x3a, 0x6c, 0xe0, + 0x6d, 0x8b, 0x58, 0x74, 0x0c, 0xaf, 0xf3, 0xcb, 0x09, 0xc8, 0x3a, 0xa4, 0x63, 0x1a, 0xba, 0xe6, + 0x8e, 0x5d, 0x17, 0x45, 0xdb, 0xc1, 0x52, 0x40, 0xe5, 0x39, 0x6f, 0xa8, 0x3d, 0xc8, 0xfd, 0xc3, + 0x95, 0xc2, 0x30, 0x6a, 0xec, 0x37, 0xcc, 0x66, 0xdf, 0x50, 0x32, 0xe6, 0xa3, 0x9a, 0xc4, 0x35, + 0x1c, 0xd2, 0xe4, 0xef, 0x91, 0x09, 0x7c, 0x54, 0x4d, 0x80, 0xb1, 0x87, 0x67, 0xa4, 0x7a, 0xd7, + 0x71, 0x88, 0x25, 0x46, 0x4d, 0x21, 0xad, 0x0a, 0x30, 0xf6, 0xf0, 0xac, 0x83, 0xb5, 0x03, 0xcd, + 0x30, 0xb5, 0x1d, 0x93, 0xc8, 0x01, 0xf4, 0x3b, 0xb8, 0xec, 0x21, 0x70, 0x40, 0xc3, 0x64, 0x77, + 0x79, 0x57, 0x37, 0xf9, 0x68, 0x2a, 0xb2, 0xc5, 0x08, 0x34, 0xb1, 0x87, 0x2f, 0xfe, 0x51, 0x4a, + 0x19, 0x0b, 0xab, 0x69, 0x70, 0x93, 0x1d, 0x3d, 0x16, 0xaf, 0xf8, 0xc1, 0x55, 0x4c, 0xb9, 0xcf, + 0x85, 0xe3, 0xe4, 0xfd, 0xc3, 0x95, 0x79, 0x5f, 0x5c, 0x38, 0x74, 0xa2, 0x3d, 0xe6, 0x83, 0x5c, + 0x5a, 0x77, 0xec, 0x1d, 0xc2, 0x32, 0x3e, 0x19, 0x9e, 0xe3, 0x24, 0x98, 0x8a, 0xbf, 0x52, 0x04, + 0xe1, 0xb0, 0x5c, 0x74, 0x00, 0x88, 0x01, 0xb6, 0x1d, 0xcd, 0x72, 0xb9, 0x22, 0xbc, 0xb5, 0x74, + 0xec, 0xd6, 0x96, 0x65, 0x6b, 0x68, 0xa3, 0x4f, 0x1a, 0x1e, 0xd0, 0x82, 0x12, 0x58, 0x32, 0xc7, + 0x26, 0xeb, 0xcf, 0xc0, 0x74, 0x9b, 0xb8, 0xae, 0xb6, 0x47, 0x78, 0x8e, 0xad, 0x04, 0xb4, 0x4d, + 0x01, 0xc6, 0x1e, 0xbe, 0xf8, 0x7f, 0x19, 0x58, 0xf4, 0x46, 0xc9, 0x21, 0x4d, 0x62, 0xb1, 0x9c, + 0x79, 0x02, 0x41, 0x48, 0xad, 0xe6, 0x92, 0x71, 0xab, 0xb9, 0xd4, 0x98, 0xd5, 0x5c, 0x09, 0x80, + 0x50, 0xbd, 0x59, 0x2d, 0x57, 0x89, 0x43, 0xf9, 0xf8, 0xcc, 0x54, 0xe6, 0x98, 0x4a, 0x6b, 0xdb, + 0xd5, 0x9a, 0x80, 0x62, 0x85, 0x02, 0x3d, 0x0b, 0x39, 0xf1, 0x74, 0x83, 0xf4, 0x78, 0x17, 0xcf, + 0x54, 0x66, 0x99, 0x29, 0x08, 0xf2, 0x1b, 0xa4, 0x87, 0x03, 0x3c, 0xaa, 0xc2, 0x22, 0x7b, 0x28, + 0xd7, 0xd7, 0xab, 0xa6, 0x41, 0x2c, 0xca, 0xdb, 0x98, 0xe2, 0x4c, 0x67, 0x8f, 0x0e, 0x57, 0x16, + 0x19, 0x53, 0x08, 0x89, 0xfb, 0xe9, 0xd1, 0x97, 0x60, 0x21, 0x04, 0x64, 0x0d, 0x4f, 0x73, 0x19, + 0x4b, 0x47, 0x87, 0x2b, 0x0b, 0x21, 0x19, 0xac, 0xfd, 0x3e, 0x6a, 0x54, 0x84, 0x29, 0x5d, 0xe3, + 0x6d, 0x67, 0x39, 0x1f, 0xb0, 0xf9, 0x20, 0xdf, 0x4d, 0x62, 0xd0, 0x0a, 0x64, 0x74, 0x8d, 0x89, + 0xce, 0x71, 0x92, 0x1c, 0x8b, 0x14, 0xe2, 0x7d, 0x04, 0x9c, 0x75, 0x94, 0x1e, 0xbc, 0x04, 0x04, + 0x1d, 0xa5, 0x68, 0xaf, 0x50, 0xb0, 0x8e, 0xd2, 0x7d, 0x7d, 0xf3, 0x41, 0x47, 0x05, 0x8a, 0x06, + 0x78, 0xd6, 0x3a, 0xb5, 0x5b, 0xc4, 0x2a, 0xcc, 0xf0, 0x61, 0xe3, 0xad, 0x6f, 0x33, 0x00, 0x16, + 0x70, 0xf4, 0x2a, 0xcc, 0xed, 0xd8, 0x36, 0x75, 0xa9, 0xa3, 0x75, 0x38, 0xa2, 0x30, 0xcb, 0x29, + 0xd1, 0xd1, 0xe1, 0xca, 0x5c, 0x25, 0x84, 0xc1, 0x11, 0x4a, 0xc6, 0xab, 0x13, 0x87, 0x1a, 0xbb, + 0x86, 0xae, 0x51, 0xc2, 0xd4, 0x99, 0x0b, 0x78, 0xab, 0x21, 0x0c, 0x8e, 0x50, 0x16, 0xff, 0x31, + 0x01, 0x67, 0xfb, 0xe6, 0xfe, 0x04, 0xe2, 0xfd, 0x9d, 0x70, 0xbc, 0xbf, 0x3c, 0x76, 0xa8, 0xf1, + 0x95, 0x1c, 0x12, 0xf0, 0x3f, 0x9e, 0xf6, 0x03, 0xbe, 0xb7, 0x72, 0xf4, 0x19, 0x48, 0x1b, 0x9d, + 0x03, 0x57, 0x46, 0xcf, 0x2c, 0x73, 0xb6, 0xeb, 0xf5, 0xdb, 0x0d, 0xcc, 0xa1, 0xe8, 0x22, 0x64, + 0x3b, 0xdd, 0x1d, 0xd3, 0xd0, 0x37, 0x2a, 0xdc, 0x0a, 0xb3, 0x62, 0x51, 0xaf, 0x2e, 0x61, 0xd8, + 0xc7, 0xb2, 0x19, 0x62, 0x58, 0x62, 0x81, 0x6f, 0xa3, 0xc2, 0x0d, 0x30, 0x2b, 0x66, 0xc8, 0xba, + 0x0f, 0xc5, 0x0a, 0x05, 0x7a, 0x01, 0xa6, 0xf7, 0x3a, 0x5d, 0x9e, 0x8d, 0x89, 0xb0, 0xff, 0x38, + 0x73, 0x3f, 0x5f, 0xae, 0xdf, 0x92, 0xa9, 0x86, 0xf7, 0x13, 0x7b, 0x64, 0xa8, 0x0e, 0x4b, 0xc4, + 0x62, 0x41, 0x66, 0x53, 0xe3, 0xb5, 0xa4, 0xbe, 0x4f, 0x9a, 0x5d, 0x93, 0x70, 0x3b, 0xcc, 0x06, + 0xcb, 0x21, 0x6b, 0x03, 0x68, 0xf0, 0x40, 0x4e, 0xf4, 0x1a, 0x24, 0xf7, 0x35, 0xb9, 0xca, 0xf0, + 0xd4, 0xc8, 0x4e, 0xbe, 0x5e, 0xae, 0x4c, 0x1d, 0x1d, 0xae, 0x24, 0xaf, 0x97, 0x71, 0x72, 0x5f, + 0x63, 0x13, 0xcb, 0x6d, 0x19, 0x1d, 0x3f, 0xd6, 0xb8, 0x85, 0x69, 0x9e, 0x55, 0xf2, 0x89, 0xd5, + 0x08, 0x61, 0x70, 0x84, 0x12, 0xbd, 0x05, 0x99, 0x5d, 0xc3, 0x24, 0x6e, 0x21, 0xcb, 0x07, 0xf8, + 0xf3, 0x23, 0xdb, 0xbe, 0x66, 0x98, 0x4a, 0x12, 0xc7, 0x9e, 0x5c, 0x2c, 0x44, 0xa0, 0x16, 0x64, + 0xf6, 0x6d, 0xbb, 0xe5, 0x16, 0x72, 0x5c, 0xd6, 0xab, 0xe3, 0x4e, 0x16, 0x39, 0x01, 0x4a, 0xd7, + 0x19, 0xf3, 0x9a, 0x45, 0x9d, 0x5e, 0xe5, 0x09, 0xaf, 0x01, 0x0e, 0xfb, 0xa5, 0x7f, 0x59, 0xc9, + 0xb2, 0x1f, 0x7c, 0x14, 0x44, 0x1b, 0x68, 0x17, 0xf2, 0xba, 0x6b, 0x78, 0x4b, 0x5a, 0xdc, 0x11, + 0x8c, 0x55, 0xde, 0xf6, 0xad, 0x58, 0x56, 0xe6, 0xb9, 0x63, 0x0e, 0xe0, 0x58, 0x15, 0x8c, 0x5c, + 0x58, 0xd0, 0x22, 0x6b, 0xc3, 0xdc, 0x8d, 0x8c, 0x93, 0xfc, 0xf6, 0xad, 0x43, 0x73, 0x4f, 0x19, + 0x85, 0xe2, 0xbe, 0x06, 0xd0, 0x26, 0x9c, 0x91, 0xd3, 0x84, 0x50, 0xc7, 0xd0, 0xdd, 0x06, 0x71, + 0x0e, 0x88, 0xc3, 0xbd, 0x52, 0xd6, 0x4f, 0x85, 0xcf, 0xac, 0xf5, 0x93, 0xe0, 0x41, 0x7c, 0xac, + 0xe2, 0x31, 0x3a, 0x07, 0x57, 0x6a, 0x5d, 0xcd, 0x6c, 0x30, 0x7d, 0xb9, 0xd3, 0xca, 0x06, 0x19, + 0xc4, 0x7a, 0x5d, 0x41, 0xe2, 0x30, 0xed, 0xf2, 0x55, 0x80, 0x60, 0x60, 0xd0, 0x02, 0xa4, 0x5a, + 0xa4, 0x27, 0x92, 0x22, 0xcc, 0x7e, 0xa2, 0x25, 0xc8, 0x1c, 0x68, 0x66, 0x57, 0x16, 0x69, 0x58, + 0x3c, 0xbc, 0x9a, 0xbc, 0x9a, 0x60, 0x29, 0xae, 0x17, 0xf0, 0x26, 0xe0, 0xaa, 0x36, 0xc3, 0xae, + 0xea, 0xe2, 0xb8, 0xb3, 0x6f, 0x88, 0x83, 0xfa, 0xef, 0x94, 0xef, 0xa0, 0x36, 0x85, 0x66, 0x68, + 0x19, 0x92, 0x46, 0x47, 0xe6, 0x83, 0x20, 0x99, 0x92, 0xeb, 0x75, 0x9c, 0x34, 0x3a, 0x7e, 0x69, + 0x91, 0x1c, 0x5a, 0x5a, 0x3c, 0x07, 0xd9, 0xae, 0xcb, 0x7c, 0x8e, 0x9f, 0x15, 0xf8, 0x6f, 0x73, + 0x4b, 0xc2, 0xb1, 0x4f, 0xc1, 0xdd, 0x9d, 0xe6, 0xba, 0x77, 0x6d, 0xa7, 0x29, 0xb3, 0x01, 0xe1, + 0xee, 0x24, 0x0c, 0xfb, 0x58, 0xe6, 0xee, 0x3a, 0x8e, 0x71, 0x20, 0x43, 0x4a, 0x26, 0x08, 0x88, + 0x75, 0x1f, 0x8a, 0x15, 0x0a, 0x4e, 0xaf, 0xb9, 0x6e, 0x7d, 0xdf, 0xd1, 0x5c, 0x22, 0xb3, 0x00, + 0x41, 0xef, 0x43, 0xb1, 0x42, 0x81, 0x74, 0x98, 0x32, 0xb5, 0x1d, 0x62, 0x0a, 0xaf, 0x92, 0xbf, + 0xfc, 0xda, 0xb8, 0x1d, 0x2b, 0xbb, 0xad, 0xb4, 0xc1, 0xb9, 0x85, 0x5d, 0xfb, 0x69, 0xa0, 0x00, + 0x62, 0x29, 0x1a, 0x95, 0x61, 0x8a, 0x6a, 0x86, 0x45, 0x3d, 0x3f, 0xf4, 0x84, 0x32, 0x31, 0x4a, + 0xba, 0xed, 0x10, 0x9e, 0x88, 0x32, 0x8a, 0x40, 0x04, 0x7f, 0x74, 0xb1, 0x64, 0x5c, 0x7e, 0x05, + 0xf2, 0x4a, 0x4b, 0xb1, 0x26, 0xea, 0x4f, 0x92, 0x30, 0x2f, 0x95, 0xae, 0x3b, 0x76, 0x87, 0x38, + 0xb4, 0x87, 0x36, 0x60, 0xa9, 0xad, 0xdd, 0xf3, 0x56, 0x0b, 0x89, 0x73, 0x60, 0xe8, 0x64, 0xab, + 0xdb, 0x96, 0x25, 0x4d, 0x81, 0xf9, 0xf7, 0xcd, 0x01, 0x78, 0x3c, 0x90, 0x0b, 0x7d, 0x11, 0x66, + 0xdb, 0xda, 0xbd, 0x2d, 0xbb, 0x49, 0xea, 0x76, 0x93, 0x89, 0x11, 0xf3, 0x64, 0x91, 0x59, 0xdf, + 0xa6, 0x8a, 0xc0, 0x61, 0x3a, 0xf4, 0x8d, 0x04, 0xcc, 0xda, 0x07, 0xc4, 0x71, 0x6d, 0xb3, 0x89, + 0x35, 0x6a, 0xd8, 0x85, 0x14, 0xef, 0xa0, 0xea, 0xb8, 0xa3, 0xe0, 0xbd, 0x50, 0xe9, 0xa6, 0x2a, + 0x45, 0x8c, 0x86, 0xef, 0x00, 0x42, 0x38, 0x1c, 0x6e, 0x70, 0xf9, 0x4b, 0x80, 0xfa, 0x79, 0x63, + 0xf5, 0xef, 0x7f, 0x65, 0xfc, 0xfe, 0xc5, 0x72, 0x5f, 0x17, 0xfd, 0x02, 0x64, 0x75, 0xad, 0xa3, + 0xe9, 0x06, 0x65, 0x42, 0xd8, 0x2b, 0xbd, 0x31, 0xee, 0x2b, 0x79, 0x32, 0x4a, 0x55, 0x29, 0x40, + 0xbc, 0xcd, 0x05, 0xcf, 0x9c, 0x3c, 0xf0, 0xfd, 0xc3, 0x95, 0x19, 0x8f, 0x96, 0x39, 0x0c, 0xec, + 0xb7, 0x88, 0x7e, 0x35, 0x01, 0x79, 0xcd, 0x34, 0x6d, 0x5d, 0xa3, 0xbc, 0xa0, 0x14, 0x3e, 0xa3, + 0x1c, 0x5b, 0x83, 0x72, 0x20, 0x43, 0x28, 0xe1, 0x2d, 0xfb, 0xe7, 0x15, 0x4c, 0x9f, 0x1e, 0x6a, + 0xd3, 0x6c, 0x84, 0x73, 0xf2, 0x99, 0x34, 0xe5, 0xe8, 0xbe, 0xf9, 0xa0, 0x8a, 0x90, 0xa6, 0x50, + 0xe3, 0x73, 0x7e, 0x69, 0xec, 0xc1, 0xfb, 0x94, 0x08, 0x1a, 0x5d, 0x6e, 0xc1, 0x6c, 0xa8, 0x2b, + 0x07, 0x0c, 0x6e, 0x4d, 0x1d, 0xdc, 0x11, 0x8e, 0xbb, 0xe4, 0x6d, 0xde, 0x97, 0xde, 0xee, 0x6a, + 0x16, 0x35, 0x68, 0x4f, 0x99, 0x0c, 0xcb, 0x16, 0x2c, 0x44, 0x7b, 0xed, 0xa1, 0xb6, 0x67, 0xc2, + 0x5c, 0xb8, 0x73, 0x1e, 0x66, 0x6b, 0xc5, 0x6f, 0x9f, 0xf5, 0x63, 0x1e, 0x5f, 0x47, 0x7e, 0x13, + 0x60, 0xd7, 0xb0, 0x34, 0xd3, 0x78, 0x9f, 0x38, 0x2e, 0x9f, 0xe8, 0xb9, 0xca, 0x0a, 0xf3, 0xb6, + 0xd7, 0x7c, 0xe8, 0xfd, 0xc3, 0x95, 0x59, 0xff, 0x89, 0x57, 0x86, 0x0a, 0x4b, 0xfc, 0xea, 0xb3, + 0x69, 0xb8, 0x1d, 0x53, 0xeb, 0x0d, 0xaa, 0x3e, 0x6b, 0x01, 0x0a, 0xab, 0x74, 0xfe, 0x5a, 0x47, + 0x7a, 0xe8, 0x5a, 0x87, 0xb2, 0xf0, 0x9c, 0x19, 0xb1, 0xf0, 0x5c, 0x83, 0xbc, 0x45, 0xe8, 0x5d, + 0xdb, 0x69, 0xc9, 0x15, 0x4e, 0x46, 0x5e, 0xf4, 0x74, 0xd8, 0x0a, 0x50, 0xf7, 0xc3, 0x8f, 0x58, + 0x65, 0x63, 0x39, 0x8b, 0x7c, 0xac, 0x11, 0xe6, 0x45, 0x79, 0xad, 0xa9, 0xac, 0xd2, 0x6e, 0xa9, + 0x48, 0x1c, 0xa6, 0x55, 0x8a, 0xf0, 0xea, 0x7a, 0x0d, 0xf3, 0x72, 0xb3, 0xbf, 0x08, 0x67, 0x28, + 0xac, 0xd2, 0xa1, 0x4b, 0x90, 0x77, 0x85, 0xcf, 0xe6, 0x6c, 0x67, 0xc4, 0x8b, 0x32, 0x96, 0x46, + 0x00, 0xc6, 0x2a, 0x0d, 0x5a, 0x85, 0x5c, 0xd3, 0x72, 0x6b, 0x76, 0x5b, 0x33, 0x2c, 0x5e, 0xb3, + 0x2a, 0x3b, 0x72, 0xb5, 0xad, 0x86, 0x40, 0xe0, 0x80, 0x06, 0x61, 0x78, 0x5c, 0x54, 0x2a, 0x65, + 0x93, 0x57, 0x20, 0xd4, 0x38, 0x20, 0x7c, 0xeb, 0xae, 0x00, 0x7c, 0x72, 0x2c, 0x1f, 0x1d, 0xae, + 0x3c, 0x5e, 0x1f, 0x48, 0x81, 0x87, 0x70, 0x22, 0x1b, 0xb2, 0xbb, 0x22, 0x99, 0x75, 0x65, 0x6e, + 0xba, 0x1a, 0x33, 0xf7, 0xf6, 0xc7, 0x27, 0x2b, 0x01, 0x6c, 0x56, 0x46, 0x0a, 0x34, 0xec, 0x37, + 0x82, 0xee, 0xb2, 0x9c, 0x83, 0xc7, 0x15, 0x83, 0xb8, 0x3c, 0x2d, 0x1d, 0xeb, 0xc0, 0x42, 0x38, + 0x22, 0x55, 0x3e, 0xef, 0x2d, 0xbb, 0xd4, 0x7d, 0x59, 0x7c, 0xcd, 0x2c, 0x4c, 0x86, 0x95, 0xa6, + 0xd0, 0x3b, 0x90, 0xd3, 0xc4, 0xc2, 0x2f, 0x71, 0x0b, 0xb3, 0xdc, 0x57, 0xae, 0xc6, 0xcc, 0x47, + 0x02, 0xfb, 0x91, 0x00, 0x17, 0x07, 0x32, 0xd1, 0xaf, 0x24, 0x60, 0xbe, 0x69, 0xeb, 0x2d, 0xe2, + 0xac, 0xdd, 0xa3, 0x8e, 0x56, 0x76, 0xf6, 0xdc, 0xc2, 0x5c, 0xbc, 0xe0, 0xc0, 0xec, 0xbe, 0x54, + 0x0b, 0xcb, 0x10, 0x5e, 0xf9, 0x9c, 0x6c, 0x79, 0x3e, 0x82, 0xc5, 0xd1, 0x26, 0x59, 0x7c, 0x5a, + 0x68, 0x75, 0x77, 0x88, 0x49, 0x68, 0xa0, 0xc7, 0x3c, 0xd7, 0xa3, 0x12, 0x4b, 0x8f, 0x1b, 0x11, + 0x21, 0x42, 0x91, 0x82, 0x54, 0x64, 0x21, 0x8a, 0xc6, 0x7d, 0xad, 0xa2, 0x6f, 0x26, 0x00, 0x69, + 0x1d, 0x43, 0x94, 0x12, 0x81, 0x32, 0x0b, 0x5c, 0x99, 0x5a, 0x2c, 0x65, 0xca, 0x7d, 0x62, 0x84, + 0x3a, 0xfe, 0xe2, 0x62, 0xb9, 0xbe, 0x1e, 0x21, 0xc0, 0x03, 0xda, 0x46, 0x3f, 0x48, 0xc0, 0xb2, 0x6e, 0x5b, 0xd4, 0xb1, 0x4d, 0x93, 0x8d, 0xab, 0xa5, 0xed, 0xa9, 0xaa, 0x2d, 0x72, 0xd5, 0x36, 0x62, 0xa9, 0x56, 0x1d, 0x2a, 0x4e, 0xa8, 0xe8, 0xd9, 0xc7, 0xf2, 0x70, 0x42, 0x7c, 0x8c, 0x4e, 0xbc, 0x17, 0x5d, 0x59, 0xed, 0x2b, 0xaa, 0xa2, 0x07, 0xe8, 0xc5, 0x46, 0x9f, 0x98, 0x48, 0x2f, @@ -3198,22 +3198,22 @@ var fileDescriptor_6e12a3c1f6fbf61e = []byte{ 0xf0, 0x85, 0xf1, 0xbb, 0x74, 0xc8, 0x06, 0x01, 0x3f, 0x38, 0xeb, 0xd8, 0xd6, 0xf5, 0x7a, 0xf9, 0x34, 0x1e, 0x9c, 0x15, 0x9a, 0x9d, 0xe4, 0xc1, 0x59, 0x29, 0xf1, 0xf8, 0x33, 0xa1, 0x7c, 0xcf, 0x47, 0x50, 0x9e, 0xca, 0x3d, 0x1f, 0xa1, 0xda, 0x90, 0x21, 0xdd, 0x87, 0x33, 0x92, 0xe0, 0x61, - 0x9f, 0xba, 0xfe, 0x6e, 0xd0, 0x4d, 0xa7, 0xf2, 0xc6, 0xc0, 0x8f, 0x93, 0x30, 0x1b, 0x1a, 0xf0, + 0x9f, 0xba, 0xfe, 0x6e, 0xd0, 0x4d, 0xa7, 0xf2, 0xc6, 0xc0, 0x4f, 0x92, 0x30, 0x1b, 0x1a, 0xf0, 0x38, 0x27, 0x4f, 0x2f, 0x85, 0x4f, 0x9e, 0xc6, 0x3b, 0xdb, 0x9f, 0x8a, 0x71, 0xb6, 0x3f, 0x7d, - 0x22, 0x67, 0xfb, 0x33, 0x9f, 0xc2, 0xd9, 0xfe, 0x3f, 0x4b, 0x00, 0xaf, 0x66, 0xd1, 0x0d, 0xc8, + 0x22, 0x67, 0xfb, 0x33, 0x9f, 0xc2, 0xd9, 0xfe, 0x3f, 0x4f, 0x00, 0xaf, 0x66, 0xd1, 0x0d, 0xc8, 0x98, 0xac, 0xa8, 0x96, 0xc6, 0x31, 0xda, 0x2d, 0xf1, 0x12, 0x9c, 0x97, 0xc4, 0xfc, 0x74, 0x0a, 0x7f, 0xc4, 0x42, 0x06, 0xba, 0xd3, 0x77, 0x67, 0xea, 0xf9, 0xb1, 0xef, 0x4c, 0x71, 0x91, 0xc3, - 0xee, 0x49, 0xfd, 0x24, 0x14, 0x86, 0xdd, 0xad, 0xfa, 0x64, 0xbb, 0xa2, 0xc5, 0xbf, 0x4c, 0xc0, + 0xee, 0x49, 0xfd, 0x34, 0x14, 0x86, 0xdd, 0xad, 0xfa, 0x64, 0xbb, 0xa2, 0xc5, 0xbf, 0x4c, 0xc0, 0x8c, 0xaa, 0x02, 0x3f, 0xd8, 0x64, 0x35, 0x3b, 0x36, 0xdf, 0x0c, 0x14, 0xeb, 0xe5, 0xe2, 0x60, 0x93, 0x07, 0xc4, 0x01, 0x9e, 0x4d, 0x1b, 0x5d, 0xbb, 0x66, 0x98, 0xde, 0x54, 0xf3, 0xa7, 0x4d, 0xb5, 0xcc, 0xa0, 0x58, 0x62, 0x99, 0x79, 0xe9, 0xc4, 0xa1, 0x9c, 0x32, 0xb2, 0xf7, 0x5a, 0x95, 0x70, 0xec, 0x53, 0xb0, 0xa9, 0xde, 0x22, 0x3d, 0x4e, 0x9c, 0x0e, 0x4f, 0xf5, 0x1b, 0x02, 0x8c, 0x3d, 0x7c, 0xb1, 0x06, 0x69, 0xce, 0xf2, 0x59, 0x48, 0xb9, 0x8e, 0x2e, 0x7b, 0x21, 0x2f, 0xc9, 0x53, 0x0d, 0x47, 0xc7, 0x0c, 0xce, 0xd0, 0x4d, 0xff, 0x64, 0xaa, 0x8f, 0xae, 0xb9, 0x14, 0x33, - 0x78, 0xf1, 0x4f, 0x13, 0x90, 0xbc, 0x5e, 0x46, 0x55, 0x48, 0xd1, 0x16, 0x91, 0x33, 0xe1, 0xe9, + 0x78, 0xf1, 0xcf, 0x12, 0x90, 0xbc, 0x5e, 0x46, 0x55, 0x48, 0xd1, 0x16, 0x91, 0x33, 0xe1, 0xe9, 0x91, 0x23, 0xb7, 0x7d, 0x63, 0xed, 0x7a, 0x59, 0x9e, 0x51, 0x62, 0x3f, 0x31, 0xe3, 0x46, 0xef, 0x00, 0xd0, 0x7d, 0xc3, 0x69, 0xd6, 0x35, 0x87, 0xf6, 0xc6, 0x9e, 0x05, 0xdb, 0x3e, 0xcb, 0xf5, - 0x72, 0x65, 0xe1, 0xe8, 0x70, 0x65, 0x46, 0x85, 0x60, 0x45, 0x64, 0xf1, 0x57, 0x92, 0x90, 0xbe, + 0x72, 0x65, 0xe1, 0xe8, 0x70, 0x65, 0x46, 0x85, 0x60, 0x45, 0x64, 0xf1, 0xd7, 0x92, 0x90, 0xbe, 0x4e, 0xcc, 0xf6, 0x04, 0x82, 0xde, 0x8d, 0x50, 0xd0, 0x7b, 0x66, 0xf4, 0xb9, 0x18, 0x62, 0xb6, 0x87, 0x46, 0xbc, 0x46, 0x24, 0xe2, 0x3d, 0x3b, 0x9e, 0xb8, 0xe3, 0xc3, 0xdd, 0x5f, 0x24, 0x20, 0xcb, 0xc8, 0x26, 0x10, 0xeb, 0xde, 0x0a, 0xc7, 0xba, 0xcf, 0x8f, 0xa5, 0xfe, 0x90, 0x40, 0xf7, @@ -3223,14 +3223,14 @@ var fileDescriptor_6e12a3c1f6fbf61e = []byte{ 0xdb, 0x3c, 0x23, 0x3b, 0x8d, 0x36, 0xcf, 0xf4, 0x1a, 0x6e, 0xf3, 0x0c, 0xfb, 0x00, 0x36, 0xef, 0x75, 0xf1, 0xa9, 0xb4, 0xf9, 0x60, 0xc0, 0x1e, 0xd9, 0xfc, 0x89, 0xdb, 0xfc, 0x46, 0xa5, 0x7a, 0xed, 0x14, 0xda, 0x3c, 0x53, 0xeb, 0x04, 0x6d, 0x9e, 0x8b, 0x1b, 0x6d, 0xf3, 0x8c, 0xec, 0x34, - 0xda, 0x3c, 0xd3, 0x6b, 0x88, 0xcd, 0xff, 0x5a, 0x02, 0x16, 0x18, 0xfa, 0x21, 0x97, 0xb3, 0xcc, + 0xda, 0x3c, 0xd3, 0x6b, 0x88, 0xcd, 0xff, 0x46, 0x02, 0x16, 0x18, 0xfa, 0x21, 0x97, 0xb3, 0xcc, 0x36, 0x34, 0x9d, 0x1a, 0xfd, 0xb6, 0x51, 0xe6, 0x50, 0x2c, 0xb1, 0xdc, 0x9b, 0x78, 0x83, 0x77, 0x2a, 0xbd, 0x49, 0x30, 0x15, 0x1e, 0x79, 0x93, 0x13, 0xf5, 0x26, 0xff, 0x94, 0x84, 0x9c, 0x5f, 0xba, 0xf2, 0x2b, 0x62, 0x1a, 0xd5, 0x6a, 0x86, 0x13, 0xed, 0xdb, 0x9a, 0x00, 0x63, 0x0f, 0x8f, 0xbe, 0x0e, 0x39, 0xe2, 0x6f, 0x97, 0x0b, 0x93, 0x78, 0x65, 0xfc, 0x22, 0xb9, 0x14, 0xd9, 0x23, 0xf7, 0x27, 0x7a, 0xb0, 0x35, 0x1e, 0x88, 0xe7, 0x07, 0xe9, 0xf9, 0xee, 0x21, 0x2b, 0x0a, 0x1b, 0xe5, 0x2d, 0x97, 0xaf, 0xbf, 0x7a, 0x07, 0xe9, 0x43, 0x18, 0x1c, 0xa1, 0x44, 0x2f, 0xc1, 0x4c, - 0x87, 0x28, 0x9c, 0x69, 0xce, 0xc9, 0x4b, 0xa9, 0xba, 0x02, 0xc7, 0x21, 0xaa, 0xe5, 0x9f, 0x80, + 0x87, 0x28, 0x9c, 0x69, 0xce, 0xc9, 0x4b, 0xa9, 0xba, 0x02, 0xc7, 0x21, 0xaa, 0xe5, 0x9f, 0x82, 0xb9, 0x07, 0xdf, 0x13, 0xe4, 0xb7, 0xd4, 0x37, 0xec, 0xbd, 0xaa, 0x6d, 0x9a, 0x44, 0x9f, 0xcc, 0x47, 0x4a, 0xe2, 0xde, 0x52, 0x57, 0xd5, 0x3b, 0xc1, 0x5b, 0xea, 0x21, 0xb1, 0xa3, 0x6f, 0xa9, 0xab, 0xe4, 0xa7, 0xf1, 0x96, 0xba, 0xaa, 0xdf, 0x10, 0x57, 0xde, 0x86, 0x82, 0x4a, 0xf5, 0xb0, @@ -3239,7 +3239,7 @@ var fileDescriptor_6e12a3c1f6fbf61e = []byte{ 0xec, 0x04, 0xf7, 0x39, 0x3c, 0x89, 0xc7, 0x7b, 0x15, 0x17, 0xe6, 0x24, 0xa1, 0x77, 0x5f, 0xfd, 0x4a, 0xe8, 0xbe, 0x70, 0x31, 0x72, 0x5f, 0x1d, 0x85, 0xa9, 0xc3, 0x27, 0x6b, 0xe5, 0x9e, 0x7f, 0xf4, 0x88, 0x85, 0xa4, 0xc5, 0x1e, 0x9e, 0xdf, 0x53, 0x96, 0x72, 0x1e, 0xdd, 0x53, 0x3e, 0xb5, - 0xf7, 0x94, 0x7f, 0x98, 0x80, 0xbc, 0x1c, 0xa5, 0xd3, 0xb8, 0x05, 0xe6, 0x1d, 0xf0, 0x1a, 0x1c, + 0xf7, 0x94, 0x7f, 0x94, 0x80, 0xbc, 0x1c, 0xa5, 0xd3, 0xb8, 0x05, 0xe6, 0x1d, 0xf0, 0x1a, 0x1c, 0x66, 0xbe, 0x97, 0xf1, 0x95, 0xff, 0x94, 0xce, 0xaf, 0x3f, 0xc8, 0xed, 0xe9, 0xd1, 0xe7, 0xd7, 0xc5, 0x2e, 0x45, 0xe6, 0xd8, 0x5d, 0x8a, 0xa9, 0xb1, 0xee, 0x6e, 0x4d, 0xc7, 0xba, 0xbb, 0x95, 0x8d, 0x71, 0x77, 0x2b, 0x17, 0xf3, 0xee, 0x16, 0x8c, 0xbc, 0xbb, 0xf5, 0xae, 0x7f, 0x77, 0x2b, @@ -3269,16 +3269,16 @@ var fileDescriptor_6e12a3c1f6fbf61e = []byte{ 0x62, 0xd1, 0xc9, 0x1c, 0xb6, 0x53, 0xaa, 0x82, 0xd1, 0x87, 0xed, 0x22, 0x1a, 0x0e, 0xad, 0x0e, 0xbe, 0x16, 0xa9, 0x0e, 0xae, 0xc4, 0x96, 0x7c, 0x7c, 0x95, 0xf0, 0xf7, 0x09, 0x38, 0x13, 0xe1, 0x98, 0x40, 0x4a, 0x78, 0x2b, 0x9c, 0x12, 0xbe, 0x10, 0xf7, 0xa5, 0x86, 0xa4, 0x86, 0x1f, 0x24, - 0xfb, 0x5e, 0x66, 0x72, 0xab, 0x02, 0x3f, 0x0b, 0x8b, 0x9d, 0xa8, 0x99, 0x8c, 0xfd, 0x4d, 0xdb, + 0xfb, 0x5e, 0x66, 0x72, 0xab, 0x02, 0x3f, 0x0f, 0x8b, 0x9d, 0xa8, 0x99, 0x8c, 0xfd, 0x4d, 0xdb, 0x3e, 0x03, 0xf3, 0xbf, 0x2f, 0xd1, 0x6f, 0x7b, 0xb8, 0xbf, 0x1d, 0x75, 0x41, 0x21, 0x3d, 0x62, 0x49, 0xe2, 0x3f, 0x92, 0x70, 0x76, 0xe0, 0x1c, 0x79, 0xb4, 0x2a, 0x71, 0xa2, 0xab, 0x12, 0xbf, - 0x93, 0x04, 0xa8, 0x3b, 0x76, 0x9b, 0xd0, 0x7d, 0xd2, 0x75, 0x27, 0xe0, 0x82, 0xde, 0x0e, 0xb9, + 0x97, 0x04, 0xa8, 0x3b, 0x76, 0x9b, 0xd0, 0x7d, 0xd2, 0x75, 0x27, 0xe0, 0x82, 0xde, 0x0e, 0xb9, 0xa0, 0xd1, 0x09, 0x54, 0xa0, 0xdc, 0x50, 0xef, 0xf3, 0x95, 0x88, 0xf7, 0xb9, 0x14, 0x47, 0xe8, 0xf1, 0x8e, 0xe7, 0x6f, 0x12, 0x30, 0x17, 0x10, 0x4f, 0xc0, 0xe7, 0xd4, 0xc3, 0x3e, 0xe7, 0xd9, 0x18, 0xaf, 0x32, 0x74, 0xc1, 0x73, 0x29, 0xa0, 0xc1, 0xa4, 0x6d, 0x53, 0x9e, 0x8d, 0xa2, 0x67, 0x21, 0x77, 0xd7, 0x31, 0xc4, 0x83, 0x7a, 0x40, 0xec, 0x8e, 0x07, 0xc4, 0x01, 0x9e, 0x95, 0x62, 0x0e, 0xd1, 0x9a, 0x9c, 0x36, 0xc9, 0x69, 0x67, 0xc4, 0x6d, 0x08, 0x01, 0xc3, 0x3e, 0xb6, 0xf8, - 0xbb, 0x53, 0x6a, 0x8f, 0x9d, 0xc6, 0xe5, 0x4e, 0xe4, 0x02, 0xb8, 0xdd, 0x9d, 0x20, 0xab, 0x1c, + 0xfb, 0x53, 0x6a, 0x8f, 0x9d, 0xc6, 0xe5, 0x4e, 0xe4, 0x02, 0xb8, 0xdd, 0x9d, 0x20, 0xab, 0x1c, 0xef, 0x4b, 0x01, 0xe1, 0x97, 0x2a, 0x35, 0x7c, 0x09, 0x91, 0xf3, 0xe1, 0x01, 0x02, 0x2b, 0xcd, 0x20, 0x07, 0x66, 0x1d, 0xbf, 0xf3, 0x89, 0xeb, 0x4a, 0x6b, 0x7f, 0x39, 0x46, 0xbb, 0xc1, 0xe0, 0x05, 0x49, 0x30, 0x56, 0x65, 0xe2, 0x70, 0x13, 0xfc, 0xee, 0xb7, 0x4d, 0x8d, 0xdd, 0x9e, 0x3c, @@ -3299,41 +3299,43 @@ var fileDescriptor_6e12a3c1f6fbf61e = []byte{ 0xfc, 0x31, 0xe3, 0xad, 0xb1, 0x6e, 0xf9, 0x6b, 0xac, 0x5b, 0xd1, 0x35, 0xd6, 0xa9, 0x80, 0xb2, 0x7f, 0x8d, 0xb5, 0xf8, 0x3f, 0x29, 0x58, 0x1a, 0xe4, 0xde, 0x51, 0x0f, 0xa6, 0x4c, 0xa3, 0x6d, 0xc8, 0x63, 0xe6, 0xe3, 0x58, 0xda, 0x20, 0x31, 0xa5, 0x0d, 0x2e, 0x43, 0x58, 0xda, 0x79, 0x7f, - 0x95, 0x94, 0x03, 0xfb, 0xbe, 0xb9, 0x23, 0x1b, 0x44, 0x3f, 0xcf, 0xbf, 0xe2, 0xfb, 0x5e, 0x97, + 0x95, 0x94, 0x03, 0xfb, 0xbe, 0xb9, 0x23, 0x1b, 0x44, 0xbf, 0xc8, 0xbf, 0xe2, 0xfb, 0x5e, 0x97, 0xb8, 0xd4, 0x9b, 0x07, 0xd5, 0x07, 0x6b, 0x1d, 0x4b, 0x29, 0x91, 0x4f, 0x20, 0x79, 0xe0, 0xfe, 0x4f, 0x20, 0x79, 0xcd, 0x2e, 0x1b, 0x90, 0x57, 0x54, 0x7f, 0xa8, 0x9f, 0xe0, 0x69, 0xc1, 0x6c, 0x48, 0xcf, 0x87, 0xfa, 0x05, 0x1e, 0x13, 0x16, 0xfb, 0xd6, 0x43, 0x98, 0x4d, 0x98, 0xf6, 0x5e, 0x83, 0x0c, 0xb0, 0x89, 0x0d, 0x09, 0xc7, 0x3e, 0x05, 0x8b, 0x6a, 0xd4, 0xee, 0x18, 0xba, 0xbf, - 0x34, 0xe8, 0x47, 0xb5, 0x6d, 0x01, 0xc6, 0x1e, 0xbe, 0xf8, 0x27, 0x09, 0x58, 0x88, 0x2e, 0x98, - 0x7c, 0xc2, 0x0f, 0xc5, 0x3d, 0x0d, 0x53, 0xfc, 0xcf, 0x85, 0x48, 0x34, 0xea, 0x35, 0x38, 0x14, - 0x4b, 0x2c, 0x5a, 0x85, 0x9c, 0x61, 0x35, 0xc9, 0x3d, 0x6e, 0x2d, 0xe9, 0xf0, 0x6a, 0xd4, 0xba, - 0x87, 0xc0, 0x01, 0x4d, 0xf1, 0x69, 0x10, 0x17, 0x05, 0x98, 0x15, 0x1e, 0xf8, 0x0a, 0xfa, 0x56, - 0x78, 0x7b, 0xbd, 0x8e, 0x19, 0xbc, 0xf8, 0xc7, 0x49, 0x98, 0xdb, 0xd6, 0x3a, 0x9d, 0xe0, 0x16, - 0xfc, 0x04, 0xdc, 0xfa, 0xad, 0x90, 0x5b, 0x1f, 0x7d, 0x02, 0x24, 0xac, 0xe0, 0xd0, 0x1a, 0xeb, - 0x67, 0x22, 0x35, 0xd6, 0xcb, 0x71, 0x05, 0x1f, 0x5f, 0x67, 0x7d, 0x98, 0x00, 0x14, 0x66, 0x98, - 0x40, 0x04, 0xd9, 0x0e, 0x47, 0x90, 0xd5, 0x98, 0xaf, 0x34, 0x24, 0x8e, 0xfc, 0x56, 0x02, 0x96, - 0xc3, 0x84, 0xa7, 0xe5, 0xd4, 0xe0, 0x1f, 0xf6, 0x75, 0xf2, 0xa9, 0x3c, 0x8d, 0xf2, 0xef, 0x49, - 0x58, 0x1a, 0x34, 0x79, 0x1e, 0x25, 0xc9, 0x27, 0xba, 0xf2, 0x83, 0x21, 0x74, 0x37, 0x69, 0x84, - 0x33, 0x43, 0x4f, 0x41, 0xe6, 0x40, 0x71, 0xb8, 0xfe, 0xdc, 0xbf, 0xcd, 0x3d, 0xae, 0xc0, 0x15, - 0xbf, 0x93, 0x00, 0xef, 0x6b, 0x30, 0x68, 0x15, 0xd2, 0x6d, 0xbb, 0xd9, 0xf7, 0xbf, 0x03, 0x9b, - 0x76, 0x93, 0x7f, 0xb0, 0x4c, 0x92, 0xb1, 0x47, 0xcc, 0x09, 0xd1, 0xd7, 0x20, 0xeb, 0x52, 0x47, - 0xa3, 0x64, 0xaf, 0x37, 0xf6, 0x7f, 0x77, 0x49, 0x29, 0x0d, 0xc9, 0x17, 0xcc, 0x5c, 0x0f, 0x82, - 0x7d, 0x99, 0x45, 0x17, 0xe6, 0x23, 0xe4, 0xe8, 0x5d, 0x80, 0xb6, 0x76, 0xef, 0x96, 0xe5, 0x10, - 0xad, 0xd9, 0x1b, 0xe9, 0x90, 0xbb, 0xd4, 0x30, 0x4b, 0xe2, 0xaf, 0xe7, 0x4a, 0xeb, 0x16, 0xbd, - 0xe9, 0x34, 0xa8, 0x63, 0x58, 0x7b, 0x62, 0xe7, 0x78, 0xd3, 0x97, 0x83, 0x15, 0x99, 0x7c, 0x9d, - 0xff, 0xb6, 0x6d, 0x76, 0xdb, 0xa4, 0x46, 0x74, 0x7b, 0x52, 0x7f, 0x81, 0x16, 0x77, 0x9d, 0x3f, - 0xa2, 0xe1, 0x09, 0xae, 0xf3, 0x47, 0x25, 0x8f, 0x5e, 0xe7, 0x8f, 0x70, 0x9c, 0xc6, 0x75, 0xfe, - 0x88, 0x8a, 0xc3, 0xfe, 0xd1, 0x2c, 0xd9, 0xf7, 0x32, 0xa7, 0x72, 0x39, 0xec, 0x12, 0xe4, 0x0f, - 0xb8, 0x9a, 0xdb, 0xbd, 0x0e, 0xf1, 0x0e, 0xdc, 0xf2, 0x6f, 0x74, 0xdc, 0x0e, 0xc0, 0x58, 0xa5, - 0x41, 0x5f, 0x86, 0xc5, 0xbb, 0xb6, 0xd3, 0x32, 0x6d, 0xad, 0x59, 0x6e, 0xb6, 0x0d, 0xd7, 0xff, - 0x9e, 0x61, 0x36, 0xd8, 0x11, 0xb8, 0x13, 0x25, 0xc0, 0xfd, 0x3c, 0xc5, 0x1f, 0xa4, 0xe1, 0xec, - 0xc0, 0x29, 0x12, 0xcf, 0xd9, 0x87, 0x5e, 0x20, 0xf9, 0xa0, 0x2f, 0x90, 0x8a, 0xff, 0x02, 0x43, - 0xff, 0xd1, 0x2d, 0xfd, 0xc9, 0xff, 0xd1, 0x2d, 0xf3, 0x00, 0xa1, 0x6b, 0x2a, 0x46, 0xe8, 0x9a, - 0x3e, 0x91, 0xd0, 0x95, 0x9d, 0x7c, 0xe8, 0xaa, 0x5c, 0xfc, 0xf0, 0xe3, 0xf3, 0x8f, 0xfd, 0xe8, - 0xe3, 0xf3, 0x8f, 0x7d, 0xf4, 0xf1, 0xf9, 0xc7, 0xbe, 0x71, 0x74, 0x3e, 0xf1, 0xe1, 0xd1, 0xf9, - 0xc4, 0x8f, 0x8e, 0xce, 0x27, 0x3e, 0x3a, 0x3a, 0x9f, 0xf8, 0xd7, 0xa3, 0xf3, 0x89, 0x6f, 0xfe, - 0xdb, 0xf9, 0xc7, 0xbe, 0x9a, 0x3c, 0xb8, 0xf4, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xa5, - 0x74, 0x13, 0xc1, 0x75, 0x00, 0x00, + 0x34, 0xe8, 0x47, 0xb5, 0x6d, 0x01, 0xc6, 0x1e, 0xbe, 0xf8, 0x83, 0x24, 0x2c, 0x44, 0x17, 0x4c, + 0x3e, 0xe1, 0x87, 0xe2, 0x9e, 0x86, 0x29, 0xfe, 0xe7, 0x42, 0x24, 0x1a, 0xf5, 0x1a, 0x1c, 0x8a, + 0x25, 0x16, 0xad, 0x42, 0xce, 0xb0, 0x9a, 0xe4, 0x1e, 0xb7, 0x96, 0x74, 0x78, 0x35, 0x6a, 0xdd, + 0x43, 0xe0, 0x80, 0x86, 0x35, 0xcd, 0xec, 0xc7, 0xb3, 0x2c, 0xaf, 0x69, 0x66, 0x5d, 0x98, 0x63, + 0x58, 0x37, 0x45, 0xac, 0xca, 0xef, 0xa6, 0x01, 0xbb, 0x17, 0x2c, 0x03, 0x22, 0xfc, 0x18, 0x4c, + 0x4d, 0xeb, 0x89, 0x5c, 0x2b, 0xa3, 0x64, 0x40, 0x01, 0x0a, 0xab, 0x74, 0xc5, 0xa7, 0x41, 0xdc, + 0x57, 0x60, 0xce, 0xe0, 0xc0, 0xef, 0x27, 0xdf, 0x19, 0xdc, 0x5e, 0xaf, 0x63, 0x06, 0x2f, 0xfe, + 0x69, 0x12, 0xe6, 0xb6, 0xb5, 0x4e, 0x27, 0xb8, 0x8c, 0x3f, 0x81, 0xe8, 0x72, 0x2b, 0x14, 0x5d, + 0x46, 0x1f, 0x44, 0x09, 0x2b, 0x38, 0xb4, 0xd4, 0xfb, 0xb9, 0x48, 0xa9, 0xf7, 0x72, 0x5c, 0xc1, + 0xc7, 0x97, 0x7b, 0x1f, 0x26, 0x00, 0x85, 0x19, 0x26, 0x10, 0xc8, 0xb6, 0xc3, 0x81, 0x6c, 0x35, + 0xe6, 0x2b, 0x0d, 0x09, 0x67, 0xbf, 0x93, 0x80, 0xe5, 0x30, 0xe1, 0x69, 0x39, 0xbc, 0xf8, 0xc7, + 0x7d, 0x9d, 0x7c, 0x2a, 0x0f, 0xc5, 0xfc, 0x7b, 0x12, 0x96, 0x06, 0x4d, 0x9e, 0x47, 0xb9, 0xfa, + 0x89, 0x2e, 0x40, 0x61, 0x08, 0x5d, 0x91, 0x1a, 0xe1, 0xcc, 0xd0, 0x53, 0x90, 0x39, 0x50, 0xfc, + 0xbe, 0x3f, 0xf7, 0x6f, 0x73, 0xc7, 0x2f, 0x70, 0xc5, 0xef, 0x24, 0xc0, 0xfb, 0x28, 0x0d, 0x5a, + 0x85, 0x74, 0xdb, 0x6e, 0xf6, 0xfd, 0xfd, 0xc1, 0xa6, 0xdd, 0xe4, 0xdf, 0x4d, 0x93, 0x64, 0xec, + 0x11, 0x73, 0x42, 0xf4, 0x35, 0xc8, 0xba, 0xd4, 0xd1, 0x28, 0xd9, 0xeb, 0x8d, 0xfd, 0x17, 0x62, + 0x52, 0x4a, 0x43, 0xf2, 0x05, 0x33, 0xd7, 0x83, 0x60, 0x5f, 0x66, 0xd1, 0x85, 0xf9, 0x08, 0x39, + 0x7a, 0x17, 0xa0, 0xad, 0xdd, 0xbb, 0x65, 0x39, 0x44, 0x6b, 0xf6, 0x46, 0x3a, 0xe4, 0x2e, 0x35, + 0xcc, 0x92, 0xf8, 0x07, 0xbc, 0xd2, 0xba, 0x45, 0x6f, 0x3a, 0x0d, 0xea, 0x18, 0xd6, 0x9e, 0xd8, + 0xc0, 0xde, 0xf4, 0xe5, 0x60, 0x45, 0x26, 0xdf, 0x6e, 0xb8, 0x6d, 0x9b, 0xdd, 0x36, 0xa9, 0x11, + 0xdd, 0x9e, 0xd4, 0x3f, 0xb1, 0xc5, 0xdd, 0x6e, 0x88, 0x68, 0x78, 0x82, 0xdb, 0x0d, 0x51, 0xc9, + 0xa3, 0xb7, 0x1b, 0x22, 0x1c, 0xa7, 0x71, 0xbb, 0x21, 0xa2, 0xe2, 0xb0, 0x3f, 0x56, 0x4b, 0xf6, + 0xbd, 0xcc, 0xa9, 0x5c, 0x95, 0xbb, 0x04, 0xf9, 0x03, 0xae, 0xe6, 0x76, 0xaf, 0x43, 0xbc, 0x73, + 0xbf, 0xfc, 0x53, 0x21, 0xb7, 0x03, 0x30, 0x56, 0x69, 0xd0, 0x97, 0x61, 0xf1, 0xae, 0xed, 0xb4, + 0x4c, 0x5b, 0x6b, 0x96, 0x9b, 0x6d, 0xc3, 0xf5, 0x3f, 0xab, 0x98, 0x0d, 0x36, 0x26, 0xee, 0x44, + 0x09, 0x70, 0x3f, 0x4f, 0xf1, 0x87, 0x69, 0x38, 0x3b, 0x70, 0x8a, 0xc4, 0x73, 0xf6, 0xa1, 0x17, + 0x48, 0x3e, 0xe8, 0x0b, 0xa4, 0xe2, 0xbf, 0xc0, 0xd0, 0x3f, 0x96, 0x4b, 0x7f, 0xf2, 0x3f, 0x96, + 0xcb, 0x3c, 0x40, 0xe8, 0x9a, 0x8a, 0x11, 0xba, 0xa6, 0x4f, 0x24, 0x74, 0x65, 0x27, 0x1f, 0xba, + 0x2a, 0x17, 0x3f, 0xfc, 0xf8, 0xfc, 0x63, 0x3f, 0xfe, 0xf8, 0xfc, 0x63, 0x1f, 0x7d, 0x7c, 0xfe, + 0xb1, 0x6f, 0x1c, 0x9d, 0x4f, 0x7c, 0x78, 0x74, 0x3e, 0xf1, 0xe3, 0xa3, 0xf3, 0x89, 0x8f, 0x8e, + 0xce, 0x27, 0xfe, 0xf5, 0xe8, 0x7c, 0xe2, 0x9b, 0xff, 0x76, 0xfe, 0xb1, 0xaf, 0x26, 0x0f, 0x2e, + 0xfd, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x9c, 0x67, 0x43, 0x48, 0x76, 0x00, 0x00, } func (m *AddonSpec) Marshal() (dAtA []byte, err error) { @@ -8254,6 +8256,19 @@ func (m *StorageBackEndES) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + i = encodeVarintGenerated(dAtA, i, uint64(m.ReserveDays)) + i-- + dAtA[i] = 0x38 + i -= len(m.Password) + copy(dAtA[i:], m.Password) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Password))) + i-- + dAtA[i] = 0x32 + i -= len(m.User) + copy(dAtA[i:], m.User) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i-- + dAtA[i] = 0x2a i -= len(m.IndexName) copy(dAtA[i:], m.IndexName) i = encodeVarintGenerated(dAtA, i, uint64(len(m.IndexName))) @@ -10664,6 +10679,11 @@ func (m *StorageBackEndES) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.IndexName) n += 1 + l + sovGenerated(uint64(l)) + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Password) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.ReserveDays)) return n } @@ -12332,6 +12352,9 @@ func (this *StorageBackEndES) String() string { `Port:` + fmt.Sprintf("%v", this.Port) + `,`, `Scheme:` + fmt.Sprintf("%v", this.Scheme) + `,`, `IndexName:` + fmt.Sprintf("%v", this.IndexName) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Password:` + fmt.Sprintf("%v", this.Password) + `,`, + `ReserveDays:` + fmt.Sprintf("%v", this.ReserveDays) + `,`, `}`, }, "") return s @@ -29837,6 +29860,89 @@ func (m *StorageBackEndES) Unmarshal(dAtA []byte) error { } m.IndexName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Password = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReserveDays", wireType) + } + m.ReserveDays = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReserveDays |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/api/platform/v1/generated.proto b/api/platform/v1/generated.proto index be40fce6a..d215d1fa0 100644 --- a/api/platform/v1/generated.proto +++ b/api/platform/v1/generated.proto @@ -1374,6 +1374,12 @@ message StorageBackEndES { optional string scheme = 3; optional string indexName = 4; + + optional string user = 5; + + optional string password = 6; + + optional int32 reserveDays = 7; } message TKEHA { diff --git a/api/platform/v1/types.go b/api/platform/v1/types.go index a8649c29c..ebad875ee 100644 --- a/api/platform/v1/types.go +++ b/api/platform/v1/types.go @@ -768,10 +768,13 @@ type StorageBackEndCLS struct { // StorageBackEndES records the attributes required when the backend storage // type is ElasticSearch. type StorageBackEndES struct { - IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` - Port int32 `json:"port,omitempty" protobuf:"varint,2,opt,name=port"` - Scheme string `json:"scheme,omitempty" protobuf:"bytes,3,opt,name=scheme"` - IndexName string `json:"indexName,omitempty" protobuf:"bytes,4,opt,name=indexName"` + IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` + Port int32 `json:"port,omitempty" protobuf:"varint,2,opt,name=port"` + Scheme string `json:"scheme,omitempty" protobuf:"bytes,3,opt,name=scheme"` + IndexName string `json:"indexName,omitempty" protobuf:"bytes,4,opt,name=indexName"` + User string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"` + Password string `json:"password,omitempty" protobuf:"bytes,6,opt,name=password"` + ReserveDays int32 `json:"reserveDays,omitempty" protobuf:"varint,7,opt,name=reserveDays"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/api/platform/v1/zz_generated.conversion.go b/api/platform/v1/zz_generated.conversion.go index 560d1dba7..25623cfec 100644 --- a/api/platform/v1/zz_generated.conversion.go +++ b/api/platform/v1/zz_generated.conversion.go @@ -3425,6 +3425,9 @@ func autoConvert_v1_StorageBackEndES_To_platform_StorageBackEndES(in *StorageBac out.Port = in.Port out.Scheme = in.Scheme out.IndexName = in.IndexName + out.User = in.User + out.Password = in.Password + out.ReserveDays = in.ReserveDays return nil } @@ -3438,6 +3441,9 @@ func autoConvert_platform_StorageBackEndES_To_v1_StorageBackEndES(in *platform.S out.Port = in.Port out.Scheme = in.Scheme out.IndexName = in.IndexName + out.User = in.User + out.Password = in.Password + out.ReserveDays = in.ReserveDays return nil } diff --git a/go.mod b/go.mod index 7fe22518f..55f5ec8b0 100644 --- a/go.mod +++ b/go.mod @@ -81,6 +81,7 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/square/go-jose.v2 v2.4.1 gopkg.in/yaml.v2 v2.2.8 + gotest.tools v2.2.0+incompatible helm.sh/chartmuseum v0.12.0 helm.sh/helm/v3 v3.2.1 k8s.io/api v0.18.2 diff --git a/pkg/logagent/registry/logagent/storage/esdetection.go b/pkg/logagent/registry/logagent/storage/esdetection.go new file mode 100644 index 000000000..425ec01fb --- /dev/null +++ b/pkg/logagent/registry/logagent/storage/esdetection.go @@ -0,0 +1,100 @@ +/* + * Tencent is pleased to support the open source community by making TKEStack + * available. + * + * Copyright (C) 2012-2019 Tencent. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://opensource.org/licenses/Apache-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +package storage + +import ( + //"bytes" + "context" + "io/ioutil" + "strings" + "time" + + //"encoding/json" + "fmt" + "io" + "net/http" + + //"k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apiserver/pkg/registry/generic/registry" + "k8s.io/apiserver/pkg/registry/rest" + platformversionedclient "tkestack.io/tke/api/client/clientset/versioned/typed/platform/v1" + "tkestack.io/tke/api/logagent" + "tkestack.io/tke/pkg/logagent/util" + "tkestack.io/tke/pkg/util/log" +) + +// TokenREST implements the REST endpoint. +type ESDetectionREST struct { + apiKeyStore *registry.Store + PlatformClient platformversionedclient.PlatformV1Interface +} + +var _ = rest.Creater(&ESDetectionREST{}) + +// New returns an empty object that can be used with Create after request data +// has been put into it. +func (r *ESDetectionREST) New() runtime.Object { + return &logagent.LogEsDetection{} +} + +type ESDetectionProxy struct { + Scheme string + IP string + Port string + User string + Password string +} + +func (p *ESDetectionProxy) GetReaderCloser() (io.ReadCloser, error) { + if p.Scheme == "" || p.IP == "" || p.Port == "" { + return nil, fmt.Errorf("es detection: scheme, ip, port maybe null") + } + + url := fmt.Sprintf("%s://%s:%s@%s:%s/_cat/health", p.Scheme, p.User, p.Password, p.IP, p.Port) + httpReq, err := http.NewRequest("GET", url, nil) + httpReq.Header.Set("Content-Type", "application/json") + if err != nil { + log.Errorf("es detection: unable to generate request %v", err) + return nil, fmt.Errorf("es detection: unable to generate request") + } + + client := &http.Client{Timeout: time.Second * 5} + resp, err := client.Do(httpReq) + if err != nil { + log.Errorf("es detection: unable to connect %v", err) + return nil, fmt.Errorf("es detection: unable to connect") + } + + if resp.StatusCode != 200 { + return ioutil.NopCloser(strings.NewReader(fmt.Sprintf(`{"status": "Failure", "code": "%d"}`, resp.StatusCode))), nil + } + //return resp.Body, nil + return ioutil.NopCloser(strings.NewReader(fmt.Sprintf(`{"status": "Success", "code": "%d"}`, resp.StatusCode))), nil +} + +func (r *ESDetectionREST) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error) { + esDetection := obj.(*logagent.LogEsDetection) + return &util.LocationStreamer{ + Request: &ESDetectionProxy{Scheme: esDetection.Scheme, IP: esDetection.IP, Port: esDetection.Port, User: esDetection.User, Password: esDetection.Password}, + Transport: nil, + ContentType: "application/json", + }, nil +} diff --git a/pkg/logagent/registry/logagent/storage/storage.go b/pkg/logagent/registry/logagent/storage/storage.go index ca658ee3a..813807199 100644 --- a/pkg/logagent/registry/logagent/storage/storage.go +++ b/pkg/logagent/registry/logagent/storage/storage.go @@ -41,6 +41,7 @@ type Storage struct { LogAgent *REST LogFileTree *FileNodeREST LogFileContent *FileContentREST + LogESDetection *ESDetectionREST LogagentProxy *LogagentProxyREST LogfileProxy *LogfileProxyREST Status *StatusREST @@ -79,6 +80,7 @@ func NewStorage(optsGetter genericregistry.RESTOptionsGetter, privilegedUsername LogAgent: &REST{store, privilegedUsername}, LogFileTree: &FileNodeREST{store, platformClient}, LogFileContent: &FileContentREST{store, platformClient}, + LogESDetection: &ESDetectionREST{store, platformClient}, LogagentProxy: &LogagentProxyREST{store, platformClient}, LogfileProxy: &LogfileProxyREST{store, platformClient}, Status: &StatusREST{&statusStore}, diff --git a/pkg/logagent/registry/rest/rest.go b/pkg/logagent/registry/rest/rest.go index b098b8ebb..b7cc76bcc 100644 --- a/pkg/logagent/registry/rest/rest.go +++ b/pkg/logagent/registry/rest/rest.go @@ -69,6 +69,7 @@ func (s *StorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIRes storageMap["logagents/filecontent"] = logagentRest.LogFileContent storageMap["logagents/logcollector"] = logagentRest.LogagentProxy storageMap["logagents/filedownload"] = logagentRest.LogfileProxy + storageMap["logagents/esdetection"] = logagentRest.LogESDetection configMapREST := configmapstorage.NewStorage(restOptionsGetter) storageMap["configmaps"] = configMapREST.ConfigMap } diff --git a/pkg/platform/controller/addon/persistentevent/images/images.go b/pkg/platform/controller/addon/persistentevent/images/images.go index 8e45032b1..39ee3754b 100644 --- a/pkg/platform/controller/addon/persistentevent/images/images.go +++ b/pkg/platform/controller/addon/persistentevent/images/images.go @@ -49,7 +49,7 @@ func (c Components) Get(name string) *containerregistry.Image { var versionMap = map[string]Components{ LatestVersion: { - Collector: containerregistry.Image{Name: "tke-audit-collector", Tag: "v0.3"}, + Collector: containerregistry.Image{Name: "tke-audit-collector", Tag: "v1.10.0"}, Watcher: containerregistry.Image{Name: "tke-event-watcher", Tag: "v0.1"}, }, } diff --git a/pkg/platform/controller/addon/persistentevent/persistentevent_controller.go b/pkg/platform/controller/addon/persistentevent/persistentevent_controller.go index 4ae3a5a1a..fc941dace 100644 --- a/pkg/platform/controller/addon/persistentevent/persistentevent_controller.go +++ b/pkg/platform/controller/addon/persistentevent/persistentevent_controller.go @@ -21,12 +21,11 @@ package persistentevent import ( "bytes" "context" + "encoding/base64" normalerrors "errors" "fmt" "html/template" - "io/ioutil" "reflect" - "strings" "time" "tkestack.io/tke/pkg/platform/controller/addon/persistentevent/images" @@ -53,21 +52,48 @@ import ( const ( persistentEventClientRetryCount = 5 persistentEventClientRetryInterval = 5 * time.Second + persistentEventMaxRetryCount = 5 + persistentEventTimeOut = 5 * time.Minute - persistentEventMaxRetryCount = 5 - persistentEventTimeOut = 5 * time.Minute + configTemplate = ` + @type tail + path /data/log/* + pos_file /data/pos + tag host.path.* + format json + read_from_head true + path_key path + + + @type elasticsearch + host <<.ES.IP>> + port <<.ES.Port>> + scheme <<.ES.Scheme>> + index_name <<.ES.IndexName>> + log_es_400_reason true + type_name _doc<> + user %{<<.ES.User>>} + password %{<<.ES.Password>>}<> + flush_interval 5s + + flush_mode interval + retry_type exponential_backoff + total_limit_size 32MB + chunk_limit_size 1MB + chunk_full_threshold 0.8 + @type file + path /var/log/td-agent/buffer/ccs.cluster.log_collector.buffer.audit-event-collector.host-path + overflow_action block + flush_interval 1s + flush_thread_burst_interval 0.01 + chunk_limit_records 8000 + + +` ) var ( - regionToDomain = map[string]string{ - "bj": "ap-beijing.cls.myqcloud.com", - "sh": "ap-shanghai.cls.myqcloud.com", - "gz": "ap-guangzhou.cls.myqcloud.com", - "cd": "ap-chengdu.cls.myqcloud.com", - "szjr": "ap-shenzhen-fsi.cls.myqcloud.com", - "shjr": "ap-shanghai-fsi.cls.myqcloud.com", - "na": "na-toronto.cls.myqcloud.com", - } + configTmpl = template.Must(template.New("fluentd-config").Delims("<<", ">>").Parse(configTemplate)) ) // Controller is used to synchronize the installation, upgrade and @@ -280,6 +306,7 @@ func (c *Controller) persistentEventReinitialize(ctx context.Context, key string } return true, nil } + log.Errorf("unable to install PersistentEventComponent %v", err) // First, rollback the persistentEvent if err := c.uninstallPersistentEventComponent(ctx, persistentEvent); err != nil { log.Error("Uninstall persistent event component error.") @@ -761,66 +788,21 @@ func (c *Controller) makeDeployment(version string) *appsv1.Deployment { } func (c *Controller) makeConfigMap(ctx context.Context, backend *v1.PersistentBackEnd) (*corev1.ConfigMap, error) { - domain := "" - if backend.CLS != nil { - var err error - domain, err = c.getCLSDomain(ctx) + var err error + password := backend.ES.Password + if password != "" { + password, err := base64.StdEncoding.DecodeString(password) if err != nil { - return nil, err + return nil, fmt.Errorf("unable to parse password %v", err) } - } - - config := fmt.Sprintf(` - @type tail - path /data/log/* - pos_file /data/pos - tag host.path.* - format json - read_from_head true - path_key path - - - {{if .CLS}} - @type cls_buffered - host %s - port 80 - topic_id {{.CLS.TopicID}} - {{else if .ES}} - @type elasticsearch - host {{.ES.IP}} - port {{.ES.Port}} - scheme {{.ES.Scheme}} - index_name {{.ES.IndexName}} - type_name tke-k8s-event - flush_interval 5s - {{end}} - - flush_mode interval - retry_type exponential_backoff - total_limit_size 32MB - chunk_limit_size 1MB - chunk_full_threshold 0.8 - @type file - path /var/log/td-agent/buffer/ccs.cluster.log_collector.buffer.audit-event-collector.host-path - overflow_action block - flush_interval 1s - flush_thread_burst_interval 0.01 - chunk_limit_records 8000 - -`, domain) - - var err error - t := template.New("fluentd-config") - t, err = t.Parse(config) - if err != nil { - return nil, err + backend.ES.Password = string(password) } var b bytes.Buffer - if err = t.Execute(&b, backend); err != nil { + if err = configTmpl.Execute(&b, backend); err != nil { return nil, err } - config = b.String() + config := b.String() return &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: "fluentd-config", @@ -830,34 +812,3 @@ func (c *Controller) makeConfigMap(ctx context.Context, backend *v1.PersistentBa }, }, nil } - -func (c *Controller) getCLSDomain(ctx context.Context) (string, error) { - f, err := ioutil.ReadFile("/etc/qcloudzone") - if err != nil { - fmt.Printf("%s\n", err) - return "", fmt.Errorf("read qcloudzone error") - } - zone := string(f) - zone = strings.Replace(zone, "\n", "", -1) - domain, ok := regionToDomain[zone] - if !ok { - domain, err := c.getCLSDomainFromConfigMap(ctx, zone) - if err != nil { - return "", fmt.Errorf("unsupported region") - } - return domain, nil - } - return domain, nil -} - -func (c *Controller) getCLSDomainFromConfigMap(ctx context.Context, zone string) (string, error) { - configMap, err := c.client.PlatformV1().ConfigMaps().Get(ctx, "tke-controller-persistentevent", metav1.GetOptions{}) - if err != nil { - return "", err - } - domain, ok := configMap.Data[fmt.Sprintf("cls-zone-%s", zone)] - if !ok { - return "", fmt.Errorf("unsupported region") - } - return domain, nil -} diff --git a/pkg/platform/controller/addon/persistentevent/persistentevent_controller_test.go b/pkg/platform/controller/addon/persistentevent/persistentevent_controller_test.go new file mode 100644 index 000000000..05794e815 --- /dev/null +++ b/pkg/platform/controller/addon/persistentevent/persistentevent_controller_test.go @@ -0,0 +1,96 @@ +package persistentevent + +import ( + "context" + "gotest.tools/assert" + "testing" + v1 "tkestack.io/tke/api/platform/v1" +) + +func TestMakeConfigMap(t *testing.T) { + c := &Controller{} + backend := &v1.PersistentBackEnd{ + ES: &v1.StorageBackEndES{ + IP: "127.0.0.1", + Port: 9200, + Scheme: "http", + IndexName: "fluentd", + }, + } + + cm, _ := c.makeConfigMap(context.TODO(), backend) + + assert.Equal(t, cm.Data["fluentd.conf"], ` + @type tail + path /data/log/* + pos_file /data/pos + tag host.path.* + format json + read_from_head true + path_key path + + + @type elasticsearch + host 127.0.0.1 + port 9200 + scheme http + index_name fluentd + log_es_400_reason true + type_name _doc + flush_interval 5s + + flush_mode interval + retry_type exponential_backoff + total_limit_size 32MB + chunk_limit_size 1MB + chunk_full_threshold 0.8 + @type file + path /var/log/td-agent/buffer/ccs.cluster.log_collector.buffer.audit-event-collector.host-path + overflow_action block + flush_interval 1s + flush_thread_burst_interval 0.01 + chunk_limit_records 8000 + + +`) + + backend.ES.User = "user" + backend.ES.Password = "cGFzc3dvcmQK" + cm, _ = c.makeConfigMap(context.TODO(), backend) + assert.Equal(t, cm.Data["fluentd.conf"], ` + @type tail + path /data/log/* + pos_file /data/pos + tag host.path.* + format json + read_from_head true + path_key path + + + @type elasticsearch + host 127.0.0.1 + port 9200 + scheme http + index_name fluentd + log_es_400_reason true + type_name _doc + user user + password password + + flush_interval 5s + + flush_mode interval + retry_type exponential_backoff + total_limit_size 32MB + chunk_limit_size 1MB + chunk_full_threshold 0.8 + @type file + path /var/log/td-agent/buffer/ccs.cluster.log_collector.buffer.audit-event-collector.host-path + overflow_action block + flush_interval 1s + flush_thread_burst_interval 0.01 + chunk_limit_records 8000 + + +`) +} diff --git a/web/console/public/static/css/tea2.0/tea.2020_03_24.css b/web/console/public/static/css/tea2.0/tea.2020_03_24.css index ad1457842..525b18357 100644 --- a/web/console/public/static/css/tea2.0/tea.2020_03_24.css +++ b/web/console/public/static/css/tea2.0/tea.2020_03_24.css @@ -5126,7 +5126,9 @@ input[type=checkbox][disabled]:indeterminate { color: #e1504a; line-height: 1; position: absolute; - margin: 5px 0 0 3px + margin: 5px 0 0 3px; + top: 0; + right: -15px } .tea-form--fixed-layout .tea-form__label label { diff --git a/web/console/src/modules/addon/actions/peEditActions.ts b/web/console/src/modules/addon/actions/peEditActions.ts index 6d8f5d8f3..64e257f24 100644 --- a/web/console/src/modules/addon/actions/peEditActions.ts +++ b/web/console/src/modules/addon/actions/peEditActions.ts @@ -21,5 +21,21 @@ export const peEditActions = { type: ActionType.IndexName, payload: indexName }; - } + }, + + /** 输入当前的索引 */ + inputEsUsername: (username: string): ReduxAction => { + return { + type: ActionType.EsUsername, + payload: username + }; + }, + + /** 输入当前的索引 */ + inputEsPassword: (password: string): ReduxAction => { + return { + type: ActionType.EsPassword, + payload: password + }; + }, }; diff --git a/web/console/src/modules/addon/actions/validatorActions.ts b/web/console/src/modules/addon/actions/validatorActions.ts index d3f1bd53b..d35277b95 100644 --- a/web/console/src/modules/addon/actions/validatorActions.ts +++ b/web/console/src/modules/addon/actions/validatorActions.ts @@ -11,12 +11,13 @@ export const validatorActions = { _validateEsAddress(address: string) { let status = 0, message = '', - hostReg = /^((http|https):\/\/)((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d):([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; + hostReg = /^((http|https):\/\/)((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d):([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/, + domainReg = /^((http|https):\/\/)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]:([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/; if (!address) { status = 2; message = t('Elasticsearch地址不能为空'); - } else if (!hostReg.test(address)) { + } else if (!hostReg.test(address) && !domainReg.test(address)) { status = 2; message = t('Elasticsearch地址格式不正确,{{scheme}}://{{addr}}:{{port}}'); } else { diff --git a/web/console/src/modules/addon/components/EditAddonPanel.tsx b/web/console/src/modules/addon/components/EditAddonPanel.tsx index 9e5414e83..2930ba6aa 100644 --- a/web/console/src/modules/addon/components/EditAddonPanel.tsx +++ b/web/console/src/modules/addon/components/EditAddonPanel.tsx @@ -27,13 +27,15 @@ import { EditPersistentEventPanel } from './EditPersistentEventPanel'; // import { addonRules } from '../constants/ValidateConfig'; +import { Base64 } from 'js-base64'; + /** * 创建persistentEvent的yaml * @param options */ const ReducePersistentEventJsonData = (options: { resourceInfo: ResourceInfo; clusterId: string; peEdit: PeEdit }) => { let { resourceInfo, clusterId, peEdit } = options, - { esAddress, indexName } = peEdit; + { esAddress, indexName, esUsername, esPassword } = peEdit; let esInfo: EsInfo; @@ -43,8 +45,10 @@ const ReducePersistentEventJsonData = (options: { resourceInfo: ResourceInfo; cl esInfo = { ip: ipAddress, port: +port, - scheme, - indexName + scheme: scheme, + indexName: indexName, + user: esUsername, + password: Base64.encode(esPassword) }; let jsonData: AddonEditPeJsonYaml = { diff --git a/web/console/src/modules/addon/components/EditPersistentEventPanel.tsx b/web/console/src/modules/addon/components/EditPersistentEventPanel.tsx index 2f37b04bf..891b18281 100644 --- a/web/console/src/modules/addon/components/EditPersistentEventPanel.tsx +++ b/web/console/src/modules/addon/components/EditPersistentEventPanel.tsx @@ -8,6 +8,7 @@ import { Input } from '@tencent/tea-component'; import { allActions } from '../actions'; import { RootProps } from './AddonApp'; +import { InputField } from '@src/modules/common'; const mapDispatchToProps = dispatch => Object.assign({}, bindActionCreators({ actions: allActions }, dispatch), { dispatch }); @@ -17,7 +18,7 @@ export class EditPersistentEventPanel extends React.Component { render() { let { editAddon, route, actions } = this.props, { peEdit } = editAddon, - { esAddress, indexName, v_esAddress, v_indexName } = peEdit; + { esAddress, indexName, v_esAddress, v_indexName, esUsername, esPassword } = peEdit; let { rid } = route.queries; @@ -49,6 +50,34 @@ export class EditPersistentEventPanel extends React.Component { onBlur={actions.validator.validateIndexName} /> + + + { + actions.editAddon.pe.inputEsUsername(value); + }} + /> + + + + { + actions.editAddon.pe.inputEsPassword(value); + }} + /> + + ); } diff --git a/web/console/src/modules/addon/constants/ActionType.ts b/web/console/src/modules/addon/constants/ActionType.ts index 108049109..6b0347410 100644 --- a/web/console/src/modules/addon/constants/ActionType.ts +++ b/web/console/src/modules/addon/constants/ActionType.ts @@ -13,4 +13,6 @@ export const EsAddress = 'EsAddress'; export const V_EsAddress = 'V_EsAddress'; export const IndexName = 'IndexName'; export const V_IndexName = 'V_IndexName'; +export const EsUsername = 'EsUsername'; +export const EsPassword = 'EsPassword'; /** ======================== end 事件持久化相关的 ======================= */ diff --git a/web/console/src/modules/addon/models/AddonEdit.ts b/web/console/src/modules/addon/models/AddonEdit.ts index 49812be81..455b2238e 100644 --- a/web/console/src/modules/addon/models/AddonEdit.ts +++ b/web/console/src/modules/addon/models/AddonEdit.ts @@ -56,5 +56,7 @@ export interface EsInfo { port: number; scheme: string; indexName: string; + user: string; + password: string; } /** ====================== persistentEvent创建相关的yaml ===================== */ diff --git a/web/console/src/modules/addon/models/PeEdit.ts b/web/console/src/modules/addon/models/PeEdit.ts index c4f500a7d..aa4c5b69a 100644 --- a/web/console/src/modules/addon/models/PeEdit.ts +++ b/web/console/src/modules/addon/models/PeEdit.ts @@ -8,4 +8,10 @@ export interface PeEdit { /** 索引名称 */ indexName?: string; v_indexName?: Validation; + + /** ES 认证用户名 */ + esUsername?: string; + + /** ES 认证密码 */ + esPassword?: string; } diff --git a/web/console/src/modules/addon/reducers/PeEditReducer.ts b/web/console/src/modules/addon/reducers/PeEditReducer.ts index aeadfc91f..812a4a368 100644 --- a/web/console/src/modules/addon/reducers/PeEditReducer.ts +++ b/web/console/src/modules/addon/reducers/PeEditReducer.ts @@ -12,5 +12,9 @@ export const PeEditReducer = combineReducers({ indexName: reduceToPayload(ActionType.IndexName, ''), - v_indexName: reduceToPayload(ActionType.V_IndexName, initValidator) + v_indexName: reduceToPayload(ActionType.V_IndexName, initValidator), + + esUsername: reduceToPayload(ActionType.EsUsername, ''), + + esPassword: reduceToPayload(ActionType.EsPassword, '') }); diff --git a/web/console/src/modules/common/components/dropdown/index.ts b/web/console/src/modules/common/components/dropdown/index.ts index 1ccf70bf8..55332e2da 100644 --- a/web/console/src/modules/common/components/dropdown/index.ts +++ b/web/console/src/modules/common/components/dropdown/index.ts @@ -1 +1 @@ -export { DropdownList, DropdownListItem, DropdownListProps } from './Dropdown'; +export { DropdownList, DropdownListItem, DropdownListProps } from './Dropdown'; diff --git a/web/console/src/modules/logStash/WebAPI.ts b/web/console/src/modules/logStash/WebAPI.ts index 4245cb5f9..4e96d020f 100644 --- a/web/console/src/modules/logStash/WebAPI.ts +++ b/web/console/src/modules/logStash/WebAPI.ts @@ -310,3 +310,35 @@ export async function fetchProjectNamespaceList(query: QueryState => { + return { + type: ActionType.EsUsername, + payload: esUsername + }; + }, + + /** + * pre: 消费端类型为ES - password + */ + inputEsPassword: (esPassword: string): ReduxAction => { + return { + type: ActionType.EsPassword, + payload: esPassword + }; + }, + /** 清空logStashEdit的内容 */ clearLogStashEdit: (): ReduxAction => { return { diff --git a/web/console/src/modules/logStash/actions/logActions.ts b/web/console/src/modules/logStash/actions/logActions.ts index 9befffc71..73f921ea2 100644 --- a/web/console/src/modules/logStash/actions/logActions.ts +++ b/web/console/src/modules/logStash/actions/logActions.ts @@ -17,6 +17,7 @@ import { Resource } from '../models/Resource'; import { editLogStashActions } from './editLogStashActions'; import { podActions } from './podActions'; import { resourceActions } from './resourceActions'; +import { Base64 } from 'js-base64'; type GetState = () => RootState; @@ -260,6 +261,8 @@ export const restActions = { outputOption = log.spec.output.elasticsearch_output; dispatch(editLogStashActions.inputEsAddress('http://' + outputOption.hosts[0])); dispatch(editLogStashActions.inputIndexName(outputOption.index)); + dispatch(editLogStashActions.inputEsUsername(outputOption.user)); + dispatch(editLogStashActions.inputEsPassword(Base64.decode(outputOption.password))); } } }; diff --git a/web/console/src/modules/logStash/actions/validatorActions.ts b/web/console/src/modules/logStash/actions/validatorActions.ts index 5180f4279..ddc6486ad 100644 --- a/web/console/src/modules/logStash/actions/validatorActions.ts +++ b/web/console/src/modules/logStash/actions/validatorActions.ts @@ -387,12 +387,13 @@ export const validatorActions = { _validateEsAddress(address: string) { let status = 0, message = '', - hostReg = /^((http|https):\/\/)((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d):([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; + hostReg = /^((http|https):\/\/)((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d):([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/, + domainReg = /^((http|https):\/\/)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]:([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/; if (!address) { status = 2; message = 'Elasticsearch地址不能为空'; - } else if (!hostReg.test(address)) { + } else if (!hostReg.test(address) && !domainReg.test(address)) { status = 2; message = 'Elasticsearch地址格式不正确,{scheme}://{addr}:{port}'; } else { diff --git a/web/console/src/modules/logStash/components/EditConsumerPanel.tsx b/web/console/src/modules/logStash/components/EditConsumerPanel.tsx index b75784d55..2aa3aef53 100644 --- a/web/console/src/modules/logStash/components/EditConsumerPanel.tsx +++ b/web/console/src/modules/logStash/components/EditConsumerPanel.tsx @@ -4,13 +4,18 @@ import { connect } from 'react-redux'; import { FormPanel } from '@tencent/ff-component'; import { bindActionCreators } from '@tencent/ff-redux'; import { t, Trans } from '@tencent/tea-app/lib/i18n'; -import { Segment, Text } from '@tencent/tea-component'; +import { Justify, Button, Segment, Text } from '@tencent/tea-component'; import { SegmentOption } from '@tencent/tea-component/lib/segment/SegmentOption'; import { InputField } from '../../common/components'; import { allActions } from '../actions'; import { clsRegionMap, consumerModeList } from '../constants/Config'; import { RootProps } from './LogStashApp'; +import * as WebAPI from '../WebAPI'; + +interface PropTypes extends RootProps { + onESStatusChange: (status: number) => void; +} /** buttonBar的样式 */ const ButtonBarStyle = { marginBottom: '5px' }; @@ -28,7 +33,49 @@ const mapDispatchToProps = dispatch => }); @connect(state => state, mapDispatchToProps) -export class EditConsumerPanel extends React.Component { +export class EditConsumerPanel extends React.Component { + constructor(props) { + super(props); + + this.esDetection = this.esDetection.bind(this); + + /** checkESStatus + * 0: init + * 1: need es detection + * 2: start detecting + * 3: result success + * 4: result failure + */ + this.state = { + checkESStatus: 0 + }; + } + + async esDetection() { + this.changeESStatus(2); + + let { logStashEdit } = this.props; + let { esAddress, esUsername, esPassword } = logStashEdit; + let [scheme, address] = esAddress.split('://'); + let [host, port] = address.split(':'); + let ret = await WebAPI.fetchEsDetection({ + scheme: scheme, + host: host, + port: port, + user: esUsername, + password: esPassword + }) ? 3 : 4; + + this.changeESStatus(ret); + } + + changeESStatus(status) { + this.setState({ + checkESStatus: status + }); + this.props.onESStatusChange(status); + } + render() { let { actions, logStashEdit } = this.props, { consumerMode } = logStashEdit; @@ -61,7 +108,10 @@ export class EditConsumerPanel extends React.Component { actions.editLogStash.changeConsumerMode(value)} + onChange={value => { + actions.editLogStash.changeConsumerMode(value); + this.changeESStatus(value === 'es' ? 1 : 0); + }} /> @@ -124,13 +174,34 @@ export class EditConsumerPanel extends React.Component { /** 渲染Elasticsearch */ private _renderESOption() { let { actions, logStashEdit } = this.props, - { consumerMode, esAddress, v_esAddress, indexName, v_indexName } = logStashEdit; + { consumerMode, esAddress, v_esAddress, indexName, v_indexName, esUsername, esPassword } = logStashEdit; + + const checkESStatus = this.state.checkESStatus; + + const esStatusMsg = { + 2: { + color: 'primary', + text: '连接中...' + }, + 3: { + color: 'success', + text: '连接成功!点击下方【完成】以设置事件持久化' + }, + 4: { + color: 'warning', + text: '连接失败!请检查 ElasticSearch 相关配置,注意开启了用户验证的 ElasticSearch 需要输入用户名和密码' + } + }; + + const esStatusMsgColor = esStatusMsg[checkESStatus] ? esStatusMsg[checkESStatus].color : 'text'; + const esStatusMsgText = esStatusMsg[checkESStatus] ? esStatusMsg[checkESStatus].text : ''; return consumerMode !== 'es' ? (