diff --git a/build/rpc.json b/build/rpc.json index c4927f8..83ebcc4 100644 --- a/build/rpc.json +++ b/build/rpc.json @@ -11087,7 +11087,19 @@ "requestMessageName": "CreateSSLCertRequest", "responseMessageName": "CreateSSLCertResponse", "code": "rpc createSSLCert (CreateSSLCertRequest) returns (CreateSSLCertResponse);", - "doc": "创建Cert", + "doc": "创建证书", + "roles": [ + "admin", + "user" + ], + "isDeprecated": false + }, + { + "name": "createSSLCerts", + "requestMessageName": "CreateSSLCertsRequest", + "responseMessageName": "CreateSSLCertsResponse", + "code": "rpc createSSLCerts(CreateSSLCertsRequest) returns (CreateSSLCertsResponse);", + "doc": "创建一组证书", "roles": [ "admin", "user" @@ -11099,7 +11111,7 @@ "requestMessageName": "UpdateSSLCertRequest", "responseMessageName": "RPCSuccess", "code": "rpc updateSSLCert (UpdateSSLCertRequest) returns (RPCSuccess);", - "doc": "修改Cert", + "doc": "修改证书", "roles": [ "admin", "user" @@ -11111,7 +11123,7 @@ "requestMessageName": "DeleteSSLCertRequest", "responseMessageName": "RPCSuccess", "code": "rpc deleteSSLCert (DeleteSSLCertRequest) returns (RPCSuccess);", - "doc": "删除Cert", + "doc": "删除证书", "roles": [ "admin", "user" @@ -11135,7 +11147,7 @@ "requestMessageName": "CountSSLCertRequest", "responseMessageName": "RPCCountResponse", "code": "rpc countSSLCerts (CountSSLCertRequest) returns (RPCCountResponse);", - "doc": "计算匹配的Cert数量", + "doc": "计算匹配的证书数量", "roles": [ "admin", "user" @@ -11147,7 +11159,7 @@ "requestMessageName": "ListSSLCertsRequest", "responseMessageName": "ListSSLCertsResponse", "code": "rpc listSSLCerts (ListSSLCertsRequest) returns (ListSSLCertsResponse);", - "doc": "列出单页匹配的Cert", + "doc": "列出单页匹配的证书", "roles": [ "admin", "user" @@ -14006,8 +14018,8 @@ }, { "name": "CountSSLCertRequest", - "code": "message CountSSLCertRequest {\n\tbool isCA = 1;\n\tbool isAvailable = 2;\n\tbool isExpired = 3;\n\tint32 expiringDays = 4;\n\tstring keyword = 5;\n\tint64 userId = 6;\n}", - "doc": "计算匹配的Cert数量" + "code": "message CountSSLCertRequest {\n\tbool isCA = 1; // 是否为CA证书\n\tbool isAvailable = 2; // 是否可用(在有效期内)\n\tbool isExpired = 3; // 是否已过期\n\tint32 expiringDays = 4; // 离过期日的天数\n\tstring keyword = 5; // 关键词\n\tint64 userId = 6; // 用户ID\n\trepeated string domains = 7; // 搜索使用的域名列表\n}", + "doc": "计算匹配的证书数量" }, { "name": "CountTrafficPackagePricesRequest", @@ -14867,13 +14879,23 @@ { "name": "CreateSSLCertRequest", "code": "message CreateSSLCertRequest {\n\tbool isOn = 1;\n\tstring name = 2;\n\tstring description = 3;\n\tstring serverName = 4;\n\tbool isCA = 5;\n\tbytes certData = 6;\n\tbytes keyData = 7;\n\tint64 timeBeginAt = 8;\n\tint64 timeEndAt = 9;\n\trepeated string dnsNames = 10;\n\trepeated string commonNames = 11;\n}", - "doc": "创建Cert" + "doc": "创建证书" }, { "name": "CreateSSLCertResponse", "code": "message CreateSSLCertResponse {\n\tint64 sslCertId = 1;\n}", "doc": "" }, + { + "name": "CreateSSLCertsRequest", + "code": "message CreateSSLCertsRequest {\n\trepeated cert SSLCerts = 1; // 证书信息\n\tint64 userId = 2; // 用户ID\n\n\n\tmessage cert {\n\t\tbool isOn = 1;\n\t\tstring name = 2;\n\t\tstring description = 3;\n\t\tstring serverName = 4;\n\t\tbool isCA = 5;\n\t\tbytes certData = 6;\n\t\tbytes keyData = 7;\n\t\tint64 timeBeginAt = 8;\n\t\tint64 timeEndAt = 9;\n\t\trepeated string dnsNames = 10;\n\t\trepeated string commonNames = 11;\n\t}\n}", + "doc": "创建一组证书" + }, + { + "name": "CreateSSLCertsResponse", + "code": "message CreateSSLCertsResponse {\n\trepeated int64 sslCertIds = 1;\n}", + "doc": "" + }, { "name": "CreateSSLPolicyRequest", "code": "message CreateSSLPolicyRequest {\n\tbool http2Enabled = 1;\n\tstring minVersion = 2;\n\tbytes sslCertsJSON = 3;\n\tbytes hstsJSON = 4;\n\tint32 clientAuthType = 5;\n\tbytes clientCACertsJSON = 6;\n\trepeated string cipherSuites = 7;\n\tbool cipherSuitesIsOn = 8;\n\tbool ocspIsOn = 9;\n}", @@ -19786,8 +19808,8 @@ }, { "name": "ListSSLCertsRequest", - "code": "message ListSSLCertsRequest {\n\tbool isCA = 1;\n\tbool isAvailable = 2;\n\tbool isExpired = 3;\n\tint32 expiringDays = 4;\n\tstring keyword = 5;\n\tint64 offset = 6;\n\tint64 size = 7;\n\tint64 userId = 8;\n}", - "doc": "列出单页匹配的Cert" + "code": "message ListSSLCertsRequest {\n\tbool isCA = 1; // 是否为CA证书\n\tbool isAvailable = 2; // 是否可用(在有效期内)\n\tbool isExpired = 3; // 是否已过期\n\tint32 expiringDays = 4; // 离过期日的天数\n\tstring keyword = 5; // 关键词\n\tint64 userId = 8; // 用户ID\n\trepeated string domains = 9; // 搜索使用的域名列表\n\tint64 offset = 6; // 读取位置\n\tint64 size = 7; // 读取长度\n}", + "doc": "列出单页匹配的证书" }, { "name": "ListSSLCertsResponse", @@ -21667,7 +21689,7 @@ { "name": "UpdateSSLCertRequest", "code": "message UpdateSSLCertRequest {\n\tint64 sslCertId = 1;\n\tbool isOn = 2;\n\tstring name = 3;\n\tstring description = 4;\n\tstring serverName = 5;\n\tbool isCA = 6;\n\tbytes certData = 7;\n\tbytes keyData = 8;\n\tint64 timeBeginAt = 9;\n\tint64 timeEndAt = 10;\n\trepeated string dnsNames = 11;\n\trepeated string commonNames = 12;\n}", - "doc": "修改Cert" + "doc": "修改证书" }, { "name": "UpdateSSLPolicyRequest", diff --git a/pkg/rpc/pb/service_ssl_cert.pb.go b/pkg/rpc/pb/service_ssl_cert.pb.go index b54dff5..1f0b187 100644 --- a/pkg/rpc/pb/service_ssl_cert.pb.go +++ b/pkg/rpc/pb/service_ssl_cert.pb.go @@ -29,7 +29,7 @@ const ( // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 -// 创建Cert +// 创建证书 type CreateSSLCertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -204,7 +204,110 @@ func (x *CreateSSLCertResponse) GetSslCertId() int64 { return 0 } -// 修改Cert +// 创建一组证书 +type CreateSSLCertsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SSLCerts []*CreateSSLCertsRequestCert `protobuf:"bytes,1,rep,name=SSLCerts,proto3" json:"SSLCerts,omitempty"` // 证书信息 + UserId int64 `protobuf:"varint,2,opt,name=userId,proto3" json:"userId,omitempty"` // 用户ID +} + +func (x *CreateSSLCertsRequest) Reset() { + *x = CreateSSLCertsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ssl_cert_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSSLCertsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSSLCertsRequest) ProtoMessage() {} + +func (x *CreateSSLCertsRequest) ProtoReflect() protoreflect.Message { + mi := &file_service_ssl_cert_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSSLCertsRequest.ProtoReflect.Descriptor instead. +func (*CreateSSLCertsRequest) Descriptor() ([]byte, []int) { + return file_service_ssl_cert_proto_rawDescGZIP(), []int{2} +} + +func (x *CreateSSLCertsRequest) GetSSLCerts() []*CreateSSLCertsRequestCert { + if x != nil { + return x.SSLCerts + } + return nil +} + +func (x *CreateSSLCertsRequest) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +type CreateSSLCertsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SslCertIds []int64 `protobuf:"varint,1,rep,packed,name=sslCertIds,proto3" json:"sslCertIds,omitempty"` +} + +func (x *CreateSSLCertsResponse) Reset() { + *x = CreateSSLCertsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ssl_cert_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSSLCertsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSSLCertsResponse) ProtoMessage() {} + +func (x *CreateSSLCertsResponse) ProtoReflect() protoreflect.Message { + mi := &file_service_ssl_cert_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSSLCertsResponse.ProtoReflect.Descriptor instead. +func (*CreateSSLCertsResponse) Descriptor() ([]byte, []int) { + return file_service_ssl_cert_proto_rawDescGZIP(), []int{3} +} + +func (x *CreateSSLCertsResponse) GetSslCertIds() []int64 { + if x != nil { + return x.SslCertIds + } + return nil +} + +// 修改证书 type UpdateSSLCertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -227,7 +330,7 @@ type UpdateSSLCertRequest struct { func (x *UpdateSSLCertRequest) Reset() { *x = UpdateSSLCertRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[2] + mi := &file_service_ssl_cert_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -240,7 +343,7 @@ func (x *UpdateSSLCertRequest) String() string { func (*UpdateSSLCertRequest) ProtoMessage() {} func (x *UpdateSSLCertRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[2] + mi := &file_service_ssl_cert_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -253,7 +356,7 @@ func (x *UpdateSSLCertRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSSLCertRequest.ProtoReflect.Descriptor instead. func (*UpdateSSLCertRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{2} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{4} } func (x *UpdateSSLCertRequest) GetSslCertId() int64 { @@ -352,7 +455,7 @@ type FindEnabledSSLCertConfigRequest struct { func (x *FindEnabledSSLCertConfigRequest) Reset() { *x = FindEnabledSSLCertConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[3] + mi := &file_service_ssl_cert_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -365,7 +468,7 @@ func (x *FindEnabledSSLCertConfigRequest) String() string { func (*FindEnabledSSLCertConfigRequest) ProtoMessage() {} func (x *FindEnabledSSLCertConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[3] + mi := &file_service_ssl_cert_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -378,7 +481,7 @@ func (x *FindEnabledSSLCertConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindEnabledSSLCertConfigRequest.ProtoReflect.Descriptor instead. func (*FindEnabledSSLCertConfigRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{3} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{5} } func (x *FindEnabledSSLCertConfigRequest) GetSslCertId() int64 { @@ -399,7 +502,7 @@ type FindEnabledSSLCertConfigResponse struct { func (x *FindEnabledSSLCertConfigResponse) Reset() { *x = FindEnabledSSLCertConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[4] + mi := &file_service_ssl_cert_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -412,7 +515,7 @@ func (x *FindEnabledSSLCertConfigResponse) String() string { func (*FindEnabledSSLCertConfigResponse) ProtoMessage() {} func (x *FindEnabledSSLCertConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[4] + mi := &file_service_ssl_cert_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -425,7 +528,7 @@ func (x *FindEnabledSSLCertConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindEnabledSSLCertConfigResponse.ProtoReflect.Descriptor instead. func (*FindEnabledSSLCertConfigResponse) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{4} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{6} } func (x *FindEnabledSSLCertConfigResponse) GetSslCertJSON() []byte { @@ -447,7 +550,7 @@ type DeleteSSLCertRequest struct { func (x *DeleteSSLCertRequest) Reset() { *x = DeleteSSLCertRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[5] + mi := &file_service_ssl_cert_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -460,7 +563,7 @@ func (x *DeleteSSLCertRequest) String() string { func (*DeleteSSLCertRequest) ProtoMessage() {} func (x *DeleteSSLCertRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[5] + mi := &file_service_ssl_cert_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -473,7 +576,7 @@ func (x *DeleteSSLCertRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSSLCertRequest.ProtoReflect.Descriptor instead. func (*DeleteSSLCertRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{5} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{7} } func (x *DeleteSSLCertRequest) GetSslCertId() int64 { @@ -483,24 +586,25 @@ func (x *DeleteSSLCertRequest) GetSslCertId() int64 { return 0 } -// 计算匹配的Cert数量 +// 计算匹配的证书数量 type CountSSLCertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IsCA bool `protobuf:"varint,1,opt,name=isCA,proto3" json:"isCA,omitempty"` - IsAvailable bool `protobuf:"varint,2,opt,name=isAvailable,proto3" json:"isAvailable,omitempty"` - IsExpired bool `protobuf:"varint,3,opt,name=isExpired,proto3" json:"isExpired,omitempty"` - ExpiringDays int32 `protobuf:"varint,4,opt,name=expiringDays,proto3" json:"expiringDays,omitempty"` - Keyword string `protobuf:"bytes,5,opt,name=keyword,proto3" json:"keyword,omitempty"` - UserId int64 `protobuf:"varint,6,opt,name=userId,proto3" json:"userId,omitempty"` + IsCA bool `protobuf:"varint,1,opt,name=isCA,proto3" json:"isCA,omitempty"` // 是否为CA证书 + IsAvailable bool `protobuf:"varint,2,opt,name=isAvailable,proto3" json:"isAvailable,omitempty"` // 是否可用(在有效期内) + IsExpired bool `protobuf:"varint,3,opt,name=isExpired,proto3" json:"isExpired,omitempty"` // 是否已过期 + ExpiringDays int32 `protobuf:"varint,4,opt,name=expiringDays,proto3" json:"expiringDays,omitempty"` // 离过期日的天数 + Keyword string `protobuf:"bytes,5,opt,name=keyword,proto3" json:"keyword,omitempty"` // 关键词 + UserId int64 `protobuf:"varint,6,opt,name=userId,proto3" json:"userId,omitempty"` // 用户ID + Domains []string `protobuf:"bytes,7,rep,name=domains,proto3" json:"domains,omitempty"` // 搜索使用的域名列表 } func (x *CountSSLCertRequest) Reset() { *x = CountSSLCertRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[6] + mi := &file_service_ssl_cert_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -513,7 +617,7 @@ func (x *CountSSLCertRequest) String() string { func (*CountSSLCertRequest) ProtoMessage() {} func (x *CountSSLCertRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[6] + mi := &file_service_ssl_cert_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -526,7 +630,7 @@ func (x *CountSSLCertRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountSSLCertRequest.ProtoReflect.Descriptor instead. func (*CountSSLCertRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{6} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{8} } func (x *CountSSLCertRequest) GetIsCA() bool { @@ -571,26 +675,34 @@ func (x *CountSSLCertRequest) GetUserId() int64 { return 0 } -// 列出单页匹配的Cert +func (x *CountSSLCertRequest) GetDomains() []string { + if x != nil { + return x.Domains + } + return nil +} + +// 列出单页匹配的证书 type ListSSLCertsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IsCA bool `protobuf:"varint,1,opt,name=isCA,proto3" json:"isCA,omitempty"` - IsAvailable bool `protobuf:"varint,2,opt,name=isAvailable,proto3" json:"isAvailable,omitempty"` - IsExpired bool `protobuf:"varint,3,opt,name=isExpired,proto3" json:"isExpired,omitempty"` - ExpiringDays int32 `protobuf:"varint,4,opt,name=expiringDays,proto3" json:"expiringDays,omitempty"` - Keyword string `protobuf:"bytes,5,opt,name=keyword,proto3" json:"keyword,omitempty"` - Offset int64 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"` - Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` - UserId int64 `protobuf:"varint,8,opt,name=userId,proto3" json:"userId,omitempty"` + IsCA bool `protobuf:"varint,1,opt,name=isCA,proto3" json:"isCA,omitempty"` // 是否为CA证书 + IsAvailable bool `protobuf:"varint,2,opt,name=isAvailable,proto3" json:"isAvailable,omitempty"` // 是否可用(在有效期内) + IsExpired bool `protobuf:"varint,3,opt,name=isExpired,proto3" json:"isExpired,omitempty"` // 是否已过期 + ExpiringDays int32 `protobuf:"varint,4,opt,name=expiringDays,proto3" json:"expiringDays,omitempty"` // 离过期日的天数 + Keyword string `protobuf:"bytes,5,opt,name=keyword,proto3" json:"keyword,omitempty"` // 关键词 + UserId int64 `protobuf:"varint,8,opt,name=userId,proto3" json:"userId,omitempty"` // 用户ID + Domains []string `protobuf:"bytes,9,rep,name=domains,proto3" json:"domains,omitempty"` // 搜索使用的域名列表 + Offset int64 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"` // 读取位置 + Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` // 读取长度 } func (x *ListSSLCertsRequest) Reset() { *x = ListSSLCertsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[7] + mi := &file_service_ssl_cert_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -603,7 +715,7 @@ func (x *ListSSLCertsRequest) String() string { func (*ListSSLCertsRequest) ProtoMessage() {} func (x *ListSSLCertsRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[7] + mi := &file_service_ssl_cert_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -616,7 +728,7 @@ func (x *ListSSLCertsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSSLCertsRequest.ProtoReflect.Descriptor instead. func (*ListSSLCertsRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{7} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{9} } func (x *ListSSLCertsRequest) GetIsCA() bool { @@ -654,6 +766,20 @@ func (x *ListSSLCertsRequest) GetKeyword() string { return "" } +func (x *ListSSLCertsRequest) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *ListSSLCertsRequest) GetDomains() []string { + if x != nil { + return x.Domains + } + return nil +} + func (x *ListSSLCertsRequest) GetOffset() int64 { if x != nil { return x.Offset @@ -668,13 +794,6 @@ func (x *ListSSLCertsRequest) GetSize() int64 { return 0 } -func (x *ListSSLCertsRequest) GetUserId() int64 { - if x != nil { - return x.UserId - } - return 0 -} - type ListSSLCertsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -686,7 +805,7 @@ type ListSSLCertsResponse struct { func (x *ListSSLCertsResponse) Reset() { *x = ListSSLCertsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[8] + mi := &file_service_ssl_cert_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -699,7 +818,7 @@ func (x *ListSSLCertsResponse) String() string { func (*ListSSLCertsResponse) ProtoMessage() {} func (x *ListSSLCertsResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[8] + mi := &file_service_ssl_cert_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -712,7 +831,7 @@ func (x *ListSSLCertsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSSLCertsResponse.ProtoReflect.Descriptor instead. func (*ListSSLCertsResponse) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{8} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{10} } func (x *ListSSLCertsResponse) GetSslCertsJSON() []byte { @@ -734,7 +853,7 @@ type CountAllSSLCertsWithOCSPErrorRequest struct { func (x *CountAllSSLCertsWithOCSPErrorRequest) Reset() { *x = CountAllSSLCertsWithOCSPErrorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[9] + mi := &file_service_ssl_cert_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -747,7 +866,7 @@ func (x *CountAllSSLCertsWithOCSPErrorRequest) String() string { func (*CountAllSSLCertsWithOCSPErrorRequest) ProtoMessage() {} func (x *CountAllSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[9] + mi := &file_service_ssl_cert_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -760,7 +879,7 @@ func (x *CountAllSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use CountAllSSLCertsWithOCSPErrorRequest.ProtoReflect.Descriptor instead. func (*CountAllSSLCertsWithOCSPErrorRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{9} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{11} } func (x *CountAllSSLCertsWithOCSPErrorRequest) GetKeyword() string { @@ -784,7 +903,7 @@ type ListSSLCertsWithOCSPErrorRequest struct { func (x *ListSSLCertsWithOCSPErrorRequest) Reset() { *x = ListSSLCertsWithOCSPErrorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[10] + mi := &file_service_ssl_cert_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -797,7 +916,7 @@ func (x *ListSSLCertsWithOCSPErrorRequest) String() string { func (*ListSSLCertsWithOCSPErrorRequest) ProtoMessage() {} func (x *ListSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[10] + mi := &file_service_ssl_cert_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -810,7 +929,7 @@ func (x *ListSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSSLCertsWithOCSPErrorRequest.ProtoReflect.Descriptor instead. func (*ListSSLCertsWithOCSPErrorRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{10} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{12} } func (x *ListSSLCertsWithOCSPErrorRequest) GetKeyword() string { @@ -845,7 +964,7 @@ type ListSSLCertsWithOCSPErrorResponse struct { func (x *ListSSLCertsWithOCSPErrorResponse) Reset() { *x = ListSSLCertsWithOCSPErrorResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[11] + mi := &file_service_ssl_cert_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -858,7 +977,7 @@ func (x *ListSSLCertsWithOCSPErrorResponse) String() string { func (*ListSSLCertsWithOCSPErrorResponse) ProtoMessage() {} func (x *ListSSLCertsWithOCSPErrorResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[11] + mi := &file_service_ssl_cert_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -871,7 +990,7 @@ func (x *ListSSLCertsWithOCSPErrorResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ListSSLCertsWithOCSPErrorResponse.ProtoReflect.Descriptor instead. func (*ListSSLCertsWithOCSPErrorResponse) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{11} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{13} } func (x *ListSSLCertsWithOCSPErrorResponse) GetSslCerts() []*SSLCert { @@ -893,7 +1012,7 @@ type IgnoreSSLCertsWithOCSPErrorRequest struct { func (x *IgnoreSSLCertsWithOCSPErrorRequest) Reset() { *x = IgnoreSSLCertsWithOCSPErrorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[12] + mi := &file_service_ssl_cert_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -906,7 +1025,7 @@ func (x *IgnoreSSLCertsWithOCSPErrorRequest) String() string { func (*IgnoreSSLCertsWithOCSPErrorRequest) ProtoMessage() {} func (x *IgnoreSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[12] + mi := &file_service_ssl_cert_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -919,7 +1038,7 @@ func (x *IgnoreSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message // Deprecated: Use IgnoreSSLCertsWithOCSPErrorRequest.ProtoReflect.Descriptor instead. func (*IgnoreSSLCertsWithOCSPErrorRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{12} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{14} } func (x *IgnoreSSLCertsWithOCSPErrorRequest) GetSslCertIds() []int64 { @@ -941,7 +1060,7 @@ type ResetSSLCertsWithOCSPErrorRequest struct { func (x *ResetSSLCertsWithOCSPErrorRequest) Reset() { *x = ResetSSLCertsWithOCSPErrorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[13] + mi := &file_service_ssl_cert_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -954,7 +1073,7 @@ func (x *ResetSSLCertsWithOCSPErrorRequest) String() string { func (*ResetSSLCertsWithOCSPErrorRequest) ProtoMessage() {} func (x *ResetSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[13] + mi := &file_service_ssl_cert_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -967,7 +1086,7 @@ func (x *ResetSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ResetSSLCertsWithOCSPErrorRequest.ProtoReflect.Descriptor instead. func (*ResetSSLCertsWithOCSPErrorRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{13} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{15} } func (x *ResetSSLCertsWithOCSPErrorRequest) GetSslCertIds() []int64 { @@ -987,7 +1106,7 @@ type ResetAllSSLCertsWithOCSPErrorRequest struct { func (x *ResetAllSSLCertsWithOCSPErrorRequest) Reset() { *x = ResetAllSSLCertsWithOCSPErrorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[14] + mi := &file_service_ssl_cert_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1000,7 +1119,7 @@ func (x *ResetAllSSLCertsWithOCSPErrorRequest) String() string { func (*ResetAllSSLCertsWithOCSPErrorRequest) ProtoMessage() {} func (x *ResetAllSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[14] + mi := &file_service_ssl_cert_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1013,7 +1132,7 @@ func (x *ResetAllSSLCertsWithOCSPErrorRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ResetAllSSLCertsWithOCSPErrorRequest.ProtoReflect.Descriptor instead. func (*ResetAllSSLCertsWithOCSPErrorRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{14} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{16} } // 读取证书的OCSP @@ -1029,7 +1148,7 @@ type ListUpdatedSSLCertOCSPRequest struct { func (x *ListUpdatedSSLCertOCSPRequest) Reset() { *x = ListUpdatedSSLCertOCSPRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[15] + mi := &file_service_ssl_cert_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1042,7 +1161,7 @@ func (x *ListUpdatedSSLCertOCSPRequest) String() string { func (*ListUpdatedSSLCertOCSPRequest) ProtoMessage() {} func (x *ListUpdatedSSLCertOCSPRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[15] + mi := &file_service_ssl_cert_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1055,7 +1174,7 @@ func (x *ListUpdatedSSLCertOCSPRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUpdatedSSLCertOCSPRequest.ProtoReflect.Descriptor instead. func (*ListUpdatedSSLCertOCSPRequest) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{15} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{17} } func (x *ListUpdatedSSLCertOCSPRequest) GetVersion() int64 { @@ -1083,7 +1202,7 @@ type ListUpdatedSSLCertOCSPResponse struct { func (x *ListUpdatedSSLCertOCSPResponse) Reset() { *x = ListUpdatedSSLCertOCSPResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[16] + mi := &file_service_ssl_cert_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1096,7 +1215,7 @@ func (x *ListUpdatedSSLCertOCSPResponse) String() string { func (*ListUpdatedSSLCertOCSPResponse) ProtoMessage() {} func (x *ListUpdatedSSLCertOCSPResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[16] + mi := &file_service_ssl_cert_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1109,7 +1228,7 @@ func (x *ListUpdatedSSLCertOCSPResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUpdatedSSLCertOCSPResponse.ProtoReflect.Descriptor instead. func (*ListUpdatedSSLCertOCSPResponse) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{16} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{18} } func (x *ListUpdatedSSLCertOCSPResponse) GetSslCertOCSP() []*ListUpdatedSSLCertOCSPResponse_SSLCertOCSP { @@ -1119,6 +1238,133 @@ func (x *ListUpdatedSSLCertOCSPResponse) GetSslCertOCSP() []*ListUpdatedSSLCertO return nil } +type CreateSSLCertsRequestCert struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsOn bool `protobuf:"varint,1,opt,name=isOn,proto3" json:"isOn,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + ServerName string `protobuf:"bytes,4,opt,name=serverName,proto3" json:"serverName,omitempty"` + IsCA bool `protobuf:"varint,5,opt,name=isCA,proto3" json:"isCA,omitempty"` + CertData []byte `protobuf:"bytes,6,opt,name=certData,proto3" json:"certData,omitempty"` + KeyData []byte `protobuf:"bytes,7,opt,name=keyData,proto3" json:"keyData,omitempty"` + TimeBeginAt int64 `protobuf:"varint,8,opt,name=timeBeginAt,proto3" json:"timeBeginAt,omitempty"` + TimeEndAt int64 `protobuf:"varint,9,opt,name=timeEndAt,proto3" json:"timeEndAt,omitempty"` + DnsNames []string `protobuf:"bytes,10,rep,name=dnsNames,proto3" json:"dnsNames,omitempty"` + CommonNames []string `protobuf:"bytes,11,rep,name=commonNames,proto3" json:"commonNames,omitempty"` +} + +func (x *CreateSSLCertsRequestCert) Reset() { + *x = CreateSSLCertsRequestCert{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ssl_cert_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSSLCertsRequestCert) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSSLCertsRequestCert) ProtoMessage() {} + +func (x *CreateSSLCertsRequestCert) ProtoReflect() protoreflect.Message { + mi := &file_service_ssl_cert_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSSLCertsRequestCert.ProtoReflect.Descriptor instead. +func (*CreateSSLCertsRequestCert) Descriptor() ([]byte, []int) { + return file_service_ssl_cert_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *CreateSSLCertsRequestCert) GetIsOn() bool { + if x != nil { + return x.IsOn + } + return false +} + +func (x *CreateSSLCertsRequestCert) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateSSLCertsRequestCert) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CreateSSLCertsRequestCert) GetServerName() string { + if x != nil { + return x.ServerName + } + return "" +} + +func (x *CreateSSLCertsRequestCert) GetIsCA() bool { + if x != nil { + return x.IsCA + } + return false +} + +func (x *CreateSSLCertsRequestCert) GetCertData() []byte { + if x != nil { + return x.CertData + } + return nil +} + +func (x *CreateSSLCertsRequestCert) GetKeyData() []byte { + if x != nil { + return x.KeyData + } + return nil +} + +func (x *CreateSSLCertsRequestCert) GetTimeBeginAt() int64 { + if x != nil { + return x.TimeBeginAt + } + return 0 +} + +func (x *CreateSSLCertsRequestCert) GetTimeEndAt() int64 { + if x != nil { + return x.TimeEndAt + } + return 0 +} + +func (x *CreateSSLCertsRequestCert) GetDnsNames() []string { + if x != nil { + return x.DnsNames + } + return nil +} + +func (x *CreateSSLCertsRequestCert) GetCommonNames() []string { + if x != nil { + return x.CommonNames + } + return nil +} + type ListUpdatedSSLCertOCSPResponse_SSLCertOCSP struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1133,7 +1379,7 @@ type ListUpdatedSSLCertOCSPResponse_SSLCertOCSP struct { func (x *ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) Reset() { *x = ListUpdatedSSLCertOCSPResponse_SSLCertOCSP{} if protoimpl.UnsafeEnabled { - mi := &file_service_ssl_cert_proto_msgTypes[17] + mi := &file_service_ssl_cert_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1146,7 +1392,7 @@ func (x *ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) String() string { func (*ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) ProtoMessage() {} func (x *ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) ProtoReflect() protoreflect.Message { - mi := &file_service_ssl_cert_proto_msgTypes[17] + mi := &file_service_ssl_cert_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1159,7 +1405,7 @@ func (x *ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) ProtoReflect() protoreflect // Deprecated: Use ListUpdatedSSLCertOCSPResponse_SSLCertOCSP.ProtoReflect.Descriptor instead. func (*ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) Descriptor() ([]byte, []int) { - return file_service_ssl_cert_proto_rawDescGZIP(), []int{16, 0} + return file_service_ssl_cert_proto_rawDescGZIP(), []int{18, 0} } func (x *ListUpdatedSSLCertOCSPResponse_SSLCertOCSP) GetSslCertId() int64 { @@ -1222,124 +1468,162 @@ var file_service_ssl_cert_proto_rawDesc = []byte{ 0x35, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, - 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x22, 0xe6, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, - 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x22, 0xa6, 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, + 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x63, 0x65, + 0x72, 0x74, 0x52, 0x08, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x1a, 0xb8, 0x02, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x43, 0x41, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, + 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x41, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x67, 0x69, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x41, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x41, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x41, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, + 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, - 0x3f, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x53, - 0x4c, 0x43, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x38, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, + 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x73, + 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x22, 0xe6, 0x02, 0x0a, 0x14, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, - 0x22, 0x44, 0x0a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, - 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x4a, - 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x73, 0x6c, 0x43, 0x65, - 0x72, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x34, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x22, 0xbf, 0x01, 0x0a, - 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x43, 0x41, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x41, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, - 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, - 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, - 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xeb, - 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x43, 0x41, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x69, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x69, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x14, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x73, - 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x73, 0x6c, 0x43, - 0x65, 0x72, 0x74, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x40, 0x0a, 0x24, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, - 0x4f, 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x68, 0x0a, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, - 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4c, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, - 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x73, 0x73, 0x6c, - 0x43, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, - 0x2e, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x08, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, - 0x74, 0x73, 0x22, 0x44, 0x0a, 0x22, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x53, 0x53, 0x4c, 0x43, - 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x43, - 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x73, - 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x22, 0x43, 0x0a, 0x21, 0x52, 0x65, 0x73, 0x65, - 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, - 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x0a, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x22, 0x26, 0x0a, - 0x24, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, + 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, + 0x43, 0x41, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x65, 0x67, 0x69, + 0x6e, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x42, + 0x65, 0x67, 0x69, 0x6e, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, + 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x45, + 0x6e, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, + 0x74, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x43, 0x65, + 0x72, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x73, + 0x6c, 0x43, 0x65, 0x72, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x22, 0x34, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x22, + 0xd9, 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x43, 0x41, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x20, 0x0a, 0x0b, 0x69, + 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x69, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x69, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x69, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x43, 0x41, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x41, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x45, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, + 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6b, + 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, + 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, + 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, + 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x22, + 0x40, 0x0a, 0x24, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x53, 0x4c, 0x43, 0x65, + 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x22, 0x68, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4c, 0x0a, 0x21, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, + 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x27, 0x0a, 0x08, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, + 0x08, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x22, 0x44, 0x0a, 0x22, 0x49, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, + 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x73, 0x22, + 0x43, 0x0a, 0x21, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, + 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, + 0x74, 0x49, 0x64, 0x73, 0x22, 0x26, 0x0a, 0x24, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6c, 0x6c, + 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x43, 0x53, 0x50, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a, 0x1d, + 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x53, 0x4c, 0x43, 0x65, + 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x1e, + 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x53, 0x4c, 0x43, 0x65, + 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x43, 0x65, - 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, - 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x53, 0x4c, - 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x52, 0x0b, 0x73, 0x73, - 0x6c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x1a, 0x77, 0x0a, 0x0b, 0x53, 0x53, 0x4c, - 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, - 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, - 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x41, 0x74, 0x32, 0xe9, 0x07, 0x0a, 0x0e, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x75, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x4f, + 0x43, 0x53, 0x50, 0x52, 0x0b, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, + 0x1a, 0x77, 0x0a, 0x0b, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x4f, 0x43, 0x53, 0x50, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x32, 0xb2, 0x08, 0x0a, 0x0e, 0x53, 0x53, + 0x4c, 0x43, 0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x0d, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, + 0x65, 0x72, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, + 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x4c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, @@ -1412,62 +1696,68 @@ func file_service_ssl_cert_proto_rawDescGZIP() []byte { return file_service_ssl_cert_proto_rawDescData } -var file_service_ssl_cert_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_service_ssl_cert_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_service_ssl_cert_proto_goTypes = []interface{}{ (*CreateSSLCertRequest)(nil), // 0: pb.CreateSSLCertRequest (*CreateSSLCertResponse)(nil), // 1: pb.CreateSSLCertResponse - (*UpdateSSLCertRequest)(nil), // 2: pb.UpdateSSLCertRequest - (*FindEnabledSSLCertConfigRequest)(nil), // 3: pb.FindEnabledSSLCertConfigRequest - (*FindEnabledSSLCertConfigResponse)(nil), // 4: pb.FindEnabledSSLCertConfigResponse - (*DeleteSSLCertRequest)(nil), // 5: pb.DeleteSSLCertRequest - (*CountSSLCertRequest)(nil), // 6: pb.CountSSLCertRequest - (*ListSSLCertsRequest)(nil), // 7: pb.ListSSLCertsRequest - (*ListSSLCertsResponse)(nil), // 8: pb.ListSSLCertsResponse - (*CountAllSSLCertsWithOCSPErrorRequest)(nil), // 9: pb.CountAllSSLCertsWithOCSPErrorRequest - (*ListSSLCertsWithOCSPErrorRequest)(nil), // 10: pb.ListSSLCertsWithOCSPErrorRequest - (*ListSSLCertsWithOCSPErrorResponse)(nil), // 11: pb.ListSSLCertsWithOCSPErrorResponse - (*IgnoreSSLCertsWithOCSPErrorRequest)(nil), // 12: pb.IgnoreSSLCertsWithOCSPErrorRequest - (*ResetSSLCertsWithOCSPErrorRequest)(nil), // 13: pb.ResetSSLCertsWithOCSPErrorRequest - (*ResetAllSSLCertsWithOCSPErrorRequest)(nil), // 14: pb.ResetAllSSLCertsWithOCSPErrorRequest - (*ListUpdatedSSLCertOCSPRequest)(nil), // 15: pb.ListUpdatedSSLCertOCSPRequest - (*ListUpdatedSSLCertOCSPResponse)(nil), // 16: pb.ListUpdatedSSLCertOCSPResponse - (*ListUpdatedSSLCertOCSPResponse_SSLCertOCSP)(nil), // 17: pb.ListUpdatedSSLCertOCSPResponse.SSLCertOCSP - (*SSLCert)(nil), // 18: pb.SSLCert - (*RPCSuccess)(nil), // 19: pb.RPCSuccess - (*RPCCountResponse)(nil), // 20: pb.RPCCountResponse + (*CreateSSLCertsRequest)(nil), // 2: pb.CreateSSLCertsRequest + (*CreateSSLCertsResponse)(nil), // 3: pb.CreateSSLCertsResponse + (*UpdateSSLCertRequest)(nil), // 4: pb.UpdateSSLCertRequest + (*FindEnabledSSLCertConfigRequest)(nil), // 5: pb.FindEnabledSSLCertConfigRequest + (*FindEnabledSSLCertConfigResponse)(nil), // 6: pb.FindEnabledSSLCertConfigResponse + (*DeleteSSLCertRequest)(nil), // 7: pb.DeleteSSLCertRequest + (*CountSSLCertRequest)(nil), // 8: pb.CountSSLCertRequest + (*ListSSLCertsRequest)(nil), // 9: pb.ListSSLCertsRequest + (*ListSSLCertsResponse)(nil), // 10: pb.ListSSLCertsResponse + (*CountAllSSLCertsWithOCSPErrorRequest)(nil), // 11: pb.CountAllSSLCertsWithOCSPErrorRequest + (*ListSSLCertsWithOCSPErrorRequest)(nil), // 12: pb.ListSSLCertsWithOCSPErrorRequest + (*ListSSLCertsWithOCSPErrorResponse)(nil), // 13: pb.ListSSLCertsWithOCSPErrorResponse + (*IgnoreSSLCertsWithOCSPErrorRequest)(nil), // 14: pb.IgnoreSSLCertsWithOCSPErrorRequest + (*ResetSSLCertsWithOCSPErrorRequest)(nil), // 15: pb.ResetSSLCertsWithOCSPErrorRequest + (*ResetAllSSLCertsWithOCSPErrorRequest)(nil), // 16: pb.ResetAllSSLCertsWithOCSPErrorRequest + (*ListUpdatedSSLCertOCSPRequest)(nil), // 17: pb.ListUpdatedSSLCertOCSPRequest + (*ListUpdatedSSLCertOCSPResponse)(nil), // 18: pb.ListUpdatedSSLCertOCSPResponse + (*CreateSSLCertsRequestCert)(nil), // 19: pb.CreateSSLCertsRequest.cert + (*ListUpdatedSSLCertOCSPResponse_SSLCertOCSP)(nil), // 20: pb.ListUpdatedSSLCertOCSPResponse.SSLCertOCSP + (*SSLCert)(nil), // 21: pb.SSLCert + (*RPCSuccess)(nil), // 22: pb.RPCSuccess + (*RPCCountResponse)(nil), // 23: pb.RPCCountResponse } var file_service_ssl_cert_proto_depIdxs = []int32{ - 18, // 0: pb.ListSSLCertsWithOCSPErrorResponse.sslCerts:type_name -> pb.SSLCert - 17, // 1: pb.ListUpdatedSSLCertOCSPResponse.sslCertOCSP:type_name -> pb.ListUpdatedSSLCertOCSPResponse.SSLCertOCSP - 0, // 2: pb.SSLCertService.createSSLCert:input_type -> pb.CreateSSLCertRequest - 2, // 3: pb.SSLCertService.updateSSLCert:input_type -> pb.UpdateSSLCertRequest - 5, // 4: pb.SSLCertService.deleteSSLCert:input_type -> pb.DeleteSSLCertRequest - 3, // 5: pb.SSLCertService.findEnabledSSLCertConfig:input_type -> pb.FindEnabledSSLCertConfigRequest - 6, // 6: pb.SSLCertService.countSSLCerts:input_type -> pb.CountSSLCertRequest - 7, // 7: pb.SSLCertService.listSSLCerts:input_type -> pb.ListSSLCertsRequest - 9, // 8: pb.SSLCertService.countAllSSLCertsWithOCSPError:input_type -> pb.CountAllSSLCertsWithOCSPErrorRequest - 10, // 9: pb.SSLCertService.listSSLCertsWithOCSPError:input_type -> pb.ListSSLCertsWithOCSPErrorRequest - 12, // 10: pb.SSLCertService.ignoreSSLCertsWithOCSPError:input_type -> pb.IgnoreSSLCertsWithOCSPErrorRequest - 13, // 11: pb.SSLCertService.resetSSLCertsWithOCSPError:input_type -> pb.ResetSSLCertsWithOCSPErrorRequest - 14, // 12: pb.SSLCertService.resetAllSSLCertsWithOCSPError:input_type -> pb.ResetAllSSLCertsWithOCSPErrorRequest - 15, // 13: pb.SSLCertService.listUpdatedSSLCertOCSP:input_type -> pb.ListUpdatedSSLCertOCSPRequest - 1, // 14: pb.SSLCertService.createSSLCert:output_type -> pb.CreateSSLCertResponse - 19, // 15: pb.SSLCertService.updateSSLCert:output_type -> pb.RPCSuccess - 19, // 16: pb.SSLCertService.deleteSSLCert:output_type -> pb.RPCSuccess - 4, // 17: pb.SSLCertService.findEnabledSSLCertConfig:output_type -> pb.FindEnabledSSLCertConfigResponse - 20, // 18: pb.SSLCertService.countSSLCerts:output_type -> pb.RPCCountResponse - 8, // 19: pb.SSLCertService.listSSLCerts:output_type -> pb.ListSSLCertsResponse - 20, // 20: pb.SSLCertService.countAllSSLCertsWithOCSPError:output_type -> pb.RPCCountResponse - 11, // 21: pb.SSLCertService.listSSLCertsWithOCSPError:output_type -> pb.ListSSLCertsWithOCSPErrorResponse - 19, // 22: pb.SSLCertService.ignoreSSLCertsWithOCSPError:output_type -> pb.RPCSuccess - 19, // 23: pb.SSLCertService.resetSSLCertsWithOCSPError:output_type -> pb.RPCSuccess - 19, // 24: pb.SSLCertService.resetAllSSLCertsWithOCSPError:output_type -> pb.RPCSuccess - 16, // 25: pb.SSLCertService.listUpdatedSSLCertOCSP:output_type -> pb.ListUpdatedSSLCertOCSPResponse - 14, // [14:26] is the sub-list for method output_type - 2, // [2:14] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 19, // 0: pb.CreateSSLCertsRequest.SSLCerts:type_name -> pb.CreateSSLCertsRequest.cert + 21, // 1: pb.ListSSLCertsWithOCSPErrorResponse.sslCerts:type_name -> pb.SSLCert + 20, // 2: pb.ListUpdatedSSLCertOCSPResponse.sslCertOCSP:type_name -> pb.ListUpdatedSSLCertOCSPResponse.SSLCertOCSP + 0, // 3: pb.SSLCertService.createSSLCert:input_type -> pb.CreateSSLCertRequest + 2, // 4: pb.SSLCertService.createSSLCerts:input_type -> pb.CreateSSLCertsRequest + 4, // 5: pb.SSLCertService.updateSSLCert:input_type -> pb.UpdateSSLCertRequest + 7, // 6: pb.SSLCertService.deleteSSLCert:input_type -> pb.DeleteSSLCertRequest + 5, // 7: pb.SSLCertService.findEnabledSSLCertConfig:input_type -> pb.FindEnabledSSLCertConfigRequest + 8, // 8: pb.SSLCertService.countSSLCerts:input_type -> pb.CountSSLCertRequest + 9, // 9: pb.SSLCertService.listSSLCerts:input_type -> pb.ListSSLCertsRequest + 11, // 10: pb.SSLCertService.countAllSSLCertsWithOCSPError:input_type -> pb.CountAllSSLCertsWithOCSPErrorRequest + 12, // 11: pb.SSLCertService.listSSLCertsWithOCSPError:input_type -> pb.ListSSLCertsWithOCSPErrorRequest + 14, // 12: pb.SSLCertService.ignoreSSLCertsWithOCSPError:input_type -> pb.IgnoreSSLCertsWithOCSPErrorRequest + 15, // 13: pb.SSLCertService.resetSSLCertsWithOCSPError:input_type -> pb.ResetSSLCertsWithOCSPErrorRequest + 16, // 14: pb.SSLCertService.resetAllSSLCertsWithOCSPError:input_type -> pb.ResetAllSSLCertsWithOCSPErrorRequest + 17, // 15: pb.SSLCertService.listUpdatedSSLCertOCSP:input_type -> pb.ListUpdatedSSLCertOCSPRequest + 1, // 16: pb.SSLCertService.createSSLCert:output_type -> pb.CreateSSLCertResponse + 3, // 17: pb.SSLCertService.createSSLCerts:output_type -> pb.CreateSSLCertsResponse + 22, // 18: pb.SSLCertService.updateSSLCert:output_type -> pb.RPCSuccess + 22, // 19: pb.SSLCertService.deleteSSLCert:output_type -> pb.RPCSuccess + 6, // 20: pb.SSLCertService.findEnabledSSLCertConfig:output_type -> pb.FindEnabledSSLCertConfigResponse + 23, // 21: pb.SSLCertService.countSSLCerts:output_type -> pb.RPCCountResponse + 10, // 22: pb.SSLCertService.listSSLCerts:output_type -> pb.ListSSLCertsResponse + 23, // 23: pb.SSLCertService.countAllSSLCertsWithOCSPError:output_type -> pb.RPCCountResponse + 13, // 24: pb.SSLCertService.listSSLCertsWithOCSPError:output_type -> pb.ListSSLCertsWithOCSPErrorResponse + 22, // 25: pb.SSLCertService.ignoreSSLCertsWithOCSPError:output_type -> pb.RPCSuccess + 22, // 26: pb.SSLCertService.resetSSLCertsWithOCSPError:output_type -> pb.RPCSuccess + 22, // 27: pb.SSLCertService.resetAllSSLCertsWithOCSPError:output_type -> pb.RPCSuccess + 18, // 28: pb.SSLCertService.listUpdatedSSLCertOCSP:output_type -> pb.ListUpdatedSSLCertOCSPResponse + 16, // [16:29] is the sub-list for method output_type + 3, // [3:16] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_service_ssl_cert_proto_init() } @@ -1503,7 +1793,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSSLCertRequest); i { + switch v := v.(*CreateSSLCertsRequest); i { case 0: return &v.state case 1: @@ -1515,7 +1805,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindEnabledSSLCertConfigRequest); i { + switch v := v.(*CreateSSLCertsResponse); i { case 0: return &v.state case 1: @@ -1527,7 +1817,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindEnabledSSLCertConfigResponse); i { + switch v := v.(*UpdateSSLCertRequest); i { case 0: return &v.state case 1: @@ -1539,7 +1829,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSSLCertRequest); i { + switch v := v.(*FindEnabledSSLCertConfigRequest); i { case 0: return &v.state case 1: @@ -1551,7 +1841,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountSSLCertRequest); i { + switch v := v.(*FindEnabledSSLCertConfigResponse); i { case 0: return &v.state case 1: @@ -1563,7 +1853,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSSLCertsRequest); i { + switch v := v.(*DeleteSSLCertRequest); i { case 0: return &v.state case 1: @@ -1575,7 +1865,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSSLCertsResponse); i { + switch v := v.(*CountSSLCertRequest); i { case 0: return &v.state case 1: @@ -1587,7 +1877,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountAllSSLCertsWithOCSPErrorRequest); i { + switch v := v.(*ListSSLCertsRequest); i { case 0: return &v.state case 1: @@ -1599,7 +1889,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSSLCertsWithOCSPErrorRequest); i { + switch v := v.(*ListSSLCertsResponse); i { case 0: return &v.state case 1: @@ -1611,7 +1901,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSSLCertsWithOCSPErrorResponse); i { + switch v := v.(*CountAllSSLCertsWithOCSPErrorRequest); i { case 0: return &v.state case 1: @@ -1623,7 +1913,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IgnoreSSLCertsWithOCSPErrorRequest); i { + switch v := v.(*ListSSLCertsWithOCSPErrorRequest); i { case 0: return &v.state case 1: @@ -1635,7 +1925,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetSSLCertsWithOCSPErrorRequest); i { + switch v := v.(*ListSSLCertsWithOCSPErrorResponse); i { case 0: return &v.state case 1: @@ -1647,7 +1937,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetAllSSLCertsWithOCSPErrorRequest); i { + switch v := v.(*IgnoreSSLCertsWithOCSPErrorRequest); i { case 0: return &v.state case 1: @@ -1659,7 +1949,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUpdatedSSLCertOCSPRequest); i { + switch v := v.(*ResetSSLCertsWithOCSPErrorRequest); i { case 0: return &v.state case 1: @@ -1671,7 +1961,7 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUpdatedSSLCertOCSPResponse); i { + switch v := v.(*ResetAllSSLCertsWithOCSPErrorRequest); i { case 0: return &v.state case 1: @@ -1683,6 +1973,42 @@ func file_service_ssl_cert_proto_init() { } } file_service_ssl_cert_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUpdatedSSLCertOCSPRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_ssl_cert_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUpdatedSSLCertOCSPResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_ssl_cert_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateSSLCertsRequestCert); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_ssl_cert_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListUpdatedSSLCertOCSPResponse_SSLCertOCSP); i { case 0: return &v.state @@ -1701,7 +2027,7 @@ func file_service_ssl_cert_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_service_ssl_cert_proto_rawDesc, NumEnums: 0, - NumMessages: 18, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, @@ -1727,17 +2053,19 @@ const _ = grpc.SupportPackageIsVersion6 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type SSLCertServiceClient interface { - // 创建Cert + // 创建证书 CreateSSLCert(ctx context.Context, in *CreateSSLCertRequest, opts ...grpc.CallOption) (*CreateSSLCertResponse, error) - // 修改Cert + // 创建一组证书 + CreateSSLCerts(ctx context.Context, in *CreateSSLCertsRequest, opts ...grpc.CallOption) (*CreateSSLCertsResponse, error) + // 修改证书 UpdateSSLCert(ctx context.Context, in *UpdateSSLCertRequest, opts ...grpc.CallOption) (*RPCSuccess, error) - // 删除Cert + // 删除证书 DeleteSSLCert(ctx context.Context, in *DeleteSSLCertRequest, opts ...grpc.CallOption) (*RPCSuccess, error) // 查找证书配置 FindEnabledSSLCertConfig(ctx context.Context, in *FindEnabledSSLCertConfigRequest, opts ...grpc.CallOption) (*FindEnabledSSLCertConfigResponse, error) - // 计算匹配的Cert数量 + // 计算匹配的证书数量 CountSSLCerts(ctx context.Context, in *CountSSLCertRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) - // 列出单页匹配的Cert + // 列出单页匹配的证书 ListSSLCerts(ctx context.Context, in *ListSSLCertsRequest, opts ...grpc.CallOption) (*ListSSLCertsResponse, error) // 计算有OCSP错误的证书数量 CountAllSSLCertsWithOCSPError(ctx context.Context, in *CountAllSSLCertsWithOCSPErrorRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) @@ -1770,6 +2098,15 @@ func (c *sSLCertServiceClient) CreateSSLCert(ctx context.Context, in *CreateSSLC return out, nil } +func (c *sSLCertServiceClient) CreateSSLCerts(ctx context.Context, in *CreateSSLCertsRequest, opts ...grpc.CallOption) (*CreateSSLCertsResponse, error) { + out := new(CreateSSLCertsResponse) + err := c.cc.Invoke(ctx, "/pb.SSLCertService/createSSLCerts", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *sSLCertServiceClient) UpdateSSLCert(ctx context.Context, in *UpdateSSLCertRequest, opts ...grpc.CallOption) (*RPCSuccess, error) { out := new(RPCSuccess) err := c.cc.Invoke(ctx, "/pb.SSLCertService/updateSSLCert", in, out, opts...) @@ -1871,17 +2208,19 @@ func (c *sSLCertServiceClient) ListUpdatedSSLCertOCSP(ctx context.Context, in *L // SSLCertServiceServer is the server API for SSLCertService service. type SSLCertServiceServer interface { - // 创建Cert + // 创建证书 CreateSSLCert(context.Context, *CreateSSLCertRequest) (*CreateSSLCertResponse, error) - // 修改Cert + // 创建一组证书 + CreateSSLCerts(context.Context, *CreateSSLCertsRequest) (*CreateSSLCertsResponse, error) + // 修改证书 UpdateSSLCert(context.Context, *UpdateSSLCertRequest) (*RPCSuccess, error) - // 删除Cert + // 删除证书 DeleteSSLCert(context.Context, *DeleteSSLCertRequest) (*RPCSuccess, error) // 查找证书配置 FindEnabledSSLCertConfig(context.Context, *FindEnabledSSLCertConfigRequest) (*FindEnabledSSLCertConfigResponse, error) - // 计算匹配的Cert数量 + // 计算匹配的证书数量 CountSSLCerts(context.Context, *CountSSLCertRequest) (*RPCCountResponse, error) - // 列出单页匹配的Cert + // 列出单页匹配的证书 ListSSLCerts(context.Context, *ListSSLCertsRequest) (*ListSSLCertsResponse, error) // 计算有OCSP错误的证书数量 CountAllSSLCertsWithOCSPError(context.Context, *CountAllSSLCertsWithOCSPErrorRequest) (*RPCCountResponse, error) @@ -1904,6 +2243,9 @@ type UnimplementedSSLCertServiceServer struct { func (*UnimplementedSSLCertServiceServer) CreateSSLCert(context.Context, *CreateSSLCertRequest) (*CreateSSLCertResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateSSLCert not implemented") } +func (*UnimplementedSSLCertServiceServer) CreateSSLCerts(context.Context, *CreateSSLCertsRequest) (*CreateSSLCertsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateSSLCerts not implemented") +} func (*UnimplementedSSLCertServiceServer) UpdateSSLCert(context.Context, *UpdateSSLCertRequest) (*RPCSuccess, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateSSLCert not implemented") } @@ -1960,6 +2302,24 @@ func _SSLCertService_CreateSSLCert_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _SSLCertService_CreateSSLCerts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSSLCertsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SSLCertServiceServer).CreateSSLCerts(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.SSLCertService/CreateSSLCerts", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SSLCertServiceServer).CreateSSLCerts(ctx, req.(*CreateSSLCertsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _SSLCertService_UpdateSSLCert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateSSLCertRequest) if err := dec(in); err != nil { @@ -2166,6 +2526,10 @@ var _SSLCertService_serviceDesc = grpc.ServiceDesc{ MethodName: "createSSLCert", Handler: _SSLCertService_CreateSSLCert_Handler, }, + { + MethodName: "createSSLCerts", + Handler: _SSLCertService_CreateSSLCerts_Handler, + }, { MethodName: "updateSSLCert", Handler: _SSLCertService_UpdateSSLCert_Handler, diff --git a/pkg/rpc/protos/service_ssl_cert.proto b/pkg/rpc/protos/service_ssl_cert.proto index 864e2f4..5c01bb8 100644 --- a/pkg/rpc/protos/service_ssl_cert.proto +++ b/pkg/rpc/protos/service_ssl_cert.proto @@ -8,22 +8,25 @@ import "models/model_ssl_cert.proto"; // SSL证书管理服务 service SSLCertService { - // 创建Cert + // 创建证书 rpc createSSLCert (CreateSSLCertRequest) returns (CreateSSLCertResponse); - // 修改Cert + // 创建一组证书 + rpc createSSLCerts(CreateSSLCertsRequest) returns (CreateSSLCertsResponse); + + // 修改证书 rpc updateSSLCert (UpdateSSLCertRequest) returns (RPCSuccess); - // 删除Cert + // 删除证书 rpc deleteSSLCert (DeleteSSLCertRequest) returns (RPCSuccess); // 查找证书配置 rpc findEnabledSSLCertConfig (FindEnabledSSLCertConfigRequest) returns (FindEnabledSSLCertConfigResponse); - // 计算匹配的Cert数量 + // 计算匹配的证书数量 rpc countSSLCerts (CountSSLCertRequest) returns (RPCCountResponse); - // 列出单页匹配的Cert + // 列出单页匹配的证书 rpc listSSLCerts (ListSSLCertsRequest) returns (ListSSLCertsResponse); // 计算有OCSP错误的证书数量 @@ -45,7 +48,7 @@ service SSLCertService { rpc listUpdatedSSLCertOCSP(ListUpdatedSSLCertOCSPRequest) returns (ListUpdatedSSLCertOCSPResponse); } -// 创建Cert +// 创建证书 message CreateSSLCertRequest { bool isOn = 1; string name = 2; @@ -64,7 +67,31 @@ message CreateSSLCertResponse { int64 sslCertId = 1; } -// 修改Cert +// 创建一组证书 +message CreateSSLCertsRequest { + repeated cert SSLCerts = 1; // 证书信息 + int64 userId = 2; // 用户ID + + message cert { + bool isOn = 1; + string name = 2; + string description = 3; + string serverName = 4; + bool isCA = 5; + bytes certData = 6; + bytes keyData = 7; + int64 timeBeginAt = 8; + int64 timeEndAt = 9; + repeated string dnsNames = 10; + repeated string commonNames = 11; + } +} + +message CreateSSLCertsResponse { + repeated int64 sslCertIds = 1; +} + +// 修改证书 message UpdateSSLCertRequest { int64 sslCertId = 1; bool isOn = 2; @@ -94,26 +121,28 @@ message DeleteSSLCertRequest { int64 sslCertId = 1; } -// 计算匹配的Cert数量 +// 计算匹配的证书数量 message CountSSLCertRequest { - bool isCA = 1; - bool isAvailable = 2; - bool isExpired = 3; - int32 expiringDays = 4; - string keyword = 5; - int64 userId = 6; + bool isCA = 1; // 是否为CA证书 + bool isAvailable = 2; // 是否可用(在有效期内) + bool isExpired = 3; // 是否已过期 + int32 expiringDays = 4; // 离过期日的天数 + string keyword = 5; // 关键词 + int64 userId = 6; // 用户ID + repeated string domains = 7; // 搜索使用的域名列表 } -// 列出单页匹配的Cert +// 列出单页匹配的证书 message ListSSLCertsRequest { - bool isCA = 1; - bool isAvailable = 2; - bool isExpired = 3; - int32 expiringDays = 4; - string keyword = 5; - int64 offset = 6; - int64 size = 7; - int64 userId = 8; + bool isCA = 1; // 是否为CA证书 + bool isAvailable = 2; // 是否可用(在有效期内) + bool isExpired = 3; // 是否已过期 + int32 expiringDays = 4; // 离过期日的天数 + string keyword = 5; // 关键词 + int64 userId = 8; // 用户ID + repeated string domains = 9; // 搜索使用的域名列表 + int64 offset = 6; // 读取位置 + int64 size = 7; // 读取长度 } message ListSSLCertsResponse {