diff --git a/pkg/rpc/pb/model_ip_item.pb.go b/pkg/rpc/pb/model_ip_item.pb.go index d0015fc..690645a 100644 --- a/pkg/rpc/pb/model_ip_item.pb.go +++ b/pkg/rpc/pb/model_ip_item.pb.go @@ -51,6 +51,7 @@ type IPItem struct { SourceHTTPFirewallRuleGroupId int64 `protobuf:"varint,18,opt,name=sourceHTTPFirewallRuleGroupId,proto3" json:"sourceHTTPFirewallRuleGroupId,omitempty"` SourceHTTPFirewallRuleSetId int64 `protobuf:"varint,19,opt,name=sourceHTTPFirewallRuleSetId,proto3" json:"sourceHTTPFirewallRuleSetId,omitempty"` SourceServer *Server `protobuf:"bytes,30,opt,name=sourceServer,proto3" json:"sourceServer,omitempty"` + Server *Server `protobuf:"bytes,34,opt,name=server,proto3" json:"server,omitempty"` SourceHTTPFirewallPolicy *HTTPFirewallPolicy `protobuf:"bytes,31,opt,name=sourceHTTPFirewallPolicy,proto3" json:"sourceHTTPFirewallPolicy,omitempty"` SourceHTTPFirewallRuleGroup *HTTPFirewallRuleGroup `protobuf:"bytes,32,opt,name=sourceHTTPFirewallRuleGroup,proto3" json:"sourceHTTPFirewallRuleGroup,omitempty"` SourceHTTPFirewallRuleSet *HTTPFirewallRuleSet `protobuf:"bytes,33,opt,name=sourceHTTPFirewallRuleSet,proto3" json:"sourceHTTPFirewallRuleSet,omitempty"` @@ -235,6 +236,13 @@ func (x *IPItem) GetSourceServer() *Server { return nil } +func (x *IPItem) GetServer() *Server { + if x != nil { + return x.Server + } + return nil +} + func (x *IPItem) GetSourceHTTPFirewallPolicy() *HTTPFirewallPolicy { if x != nil { return x.SourceHTTPFirewallPolicy @@ -270,7 +278,7 @@ var file_models_model_ip_item_proto_rawDesc = []byte{ 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x07, 0x0a, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x07, 0x0a, 0x06, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x12, @@ -315,25 +323,27 @@ var file_models_model_ip_item_proto_rawDesc = []byte{ 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0c, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x18, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, - 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x18, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, - 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, - 0x5b, 0x0a, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x20, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x55, 0x0a, 0x19, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, - 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, - 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x19, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, - 0x53, 0x65, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x06, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x52, 0x0a, 0x18, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, + 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x18, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x12, 0x5b, 0x0a, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, + 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, + 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, + 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x55, 0x0a, 0x19, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, + 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x19, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -358,14 +368,15 @@ var file_models_model_ip_item_proto_goTypes = []interface{}{ } var file_models_model_ip_item_proto_depIdxs = []int32{ 1, // 0: pb.IPItem.sourceServer:type_name -> pb.Server - 2, // 1: pb.IPItem.sourceHTTPFirewallPolicy:type_name -> pb.HTTPFirewallPolicy - 3, // 2: pb.IPItem.sourceHTTPFirewallRuleGroup:type_name -> pb.HTTPFirewallRuleGroup - 4, // 3: pb.IPItem.sourceHTTPFirewallRuleSet:type_name -> pb.HTTPFirewallRuleSet - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 1, // 1: pb.IPItem.server:type_name -> pb.Server + 2, // 2: pb.IPItem.sourceHTTPFirewallPolicy:type_name -> pb.HTTPFirewallPolicy + 3, // 3: pb.IPItem.sourceHTTPFirewallRuleGroup:type_name -> pb.HTTPFirewallRuleGroup + 4, // 4: pb.IPItem.sourceHTTPFirewallRuleSet:type_name -> pb.HTTPFirewallRuleSet + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_models_model_ip_item_proto_init() } diff --git a/pkg/rpc/pb/service_ip_item.pb.go b/pkg/rpc/pb/service_ip_item.pb.go index e35d0d2..30f8f7f 100644 --- a/pkg/rpc/pb/service_ip_item.pb.go +++ b/pkg/rpc/pb/service_ip_item.pb.go @@ -1007,6 +1007,236 @@ func (x *ExistsEnabledIPItemResponse) GetExists() bool { return false } +// 计算所有IP数量 +type CountAllEnabledIPItemsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` +} + +func (x *CountAllEnabledIPItemsRequest) Reset() { + *x = CountAllEnabledIPItemsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ip_item_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CountAllEnabledIPItemsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountAllEnabledIPItemsRequest) ProtoMessage() {} + +func (x *CountAllEnabledIPItemsRequest) ProtoReflect() protoreflect.Message { + mi := &file_service_ip_item_proto_msgTypes[15] + 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 CountAllEnabledIPItemsRequest.ProtoReflect.Descriptor instead. +func (*CountAllEnabledIPItemsRequest) Descriptor() ([]byte, []int) { + return file_service_ip_item_proto_rawDescGZIP(), []int{15} +} + +func (x *CountAllEnabledIPItemsRequest) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +// 列出所有名单中的IP +type ListAllEnabledIPItemsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + Offset int64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` +} + +func (x *ListAllEnabledIPItemsRequest) Reset() { + *x = ListAllEnabledIPItemsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ip_item_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllEnabledIPItemsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllEnabledIPItemsRequest) ProtoMessage() {} + +func (x *ListAllEnabledIPItemsRequest) ProtoReflect() protoreflect.Message { + mi := &file_service_ip_item_proto_msgTypes[16] + 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 ListAllEnabledIPItemsRequest.ProtoReflect.Descriptor instead. +func (*ListAllEnabledIPItemsRequest) Descriptor() ([]byte, []int) { + return file_service_ip_item_proto_rawDescGZIP(), []int{16} +} + +func (x *ListAllEnabledIPItemsRequest) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +func (x *ListAllEnabledIPItemsRequest) GetOffset() int64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *ListAllEnabledIPItemsRequest) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +type ListAllEnabledIPItemsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Results []*ListAllEnabledIPItemsResponse_Result `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *ListAllEnabledIPItemsResponse) Reset() { + *x = ListAllEnabledIPItemsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ip_item_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllEnabledIPItemsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllEnabledIPItemsResponse) ProtoMessage() {} + +func (x *ListAllEnabledIPItemsResponse) ProtoReflect() protoreflect.Message { + mi := &file_service_ip_item_proto_msgTypes[17] + 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 ListAllEnabledIPItemsResponse.ProtoReflect.Descriptor instead. +func (*ListAllEnabledIPItemsResponse) Descriptor() ([]byte, []int) { + return file_service_ip_item_proto_rawDescGZIP(), []int{17} +} + +func (x *ListAllEnabledIPItemsResponse) GetResults() []*ListAllEnabledIPItemsResponse_Result { + if x != nil { + return x.Results + } + return nil +} + +type ListAllEnabledIPItemsResponse_Result struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IpList *IPList `protobuf:"bytes,1,opt,name=ipList,proto3" json:"ipList,omitempty"` // 所属名单 + IpItem *IPItem `protobuf:"bytes,2,opt,name=ipItem,proto3" json:"ipItem,omitempty"` // IP信息 + Server *Server `protobuf:"bytes,3,opt,name=server,proto3" json:"server,omitempty"` // 所属服务 + HttpFirewallPolicy *HTTPFirewallPolicy `protobuf:"bytes,4,opt,name=httpFirewallPolicy,proto3" json:"httpFirewallPolicy,omitempty"` // 所属WAF策略 +} + +func (x *ListAllEnabledIPItemsResponse_Result) Reset() { + *x = ListAllEnabledIPItemsResponse_Result{} + if protoimpl.UnsafeEnabled { + mi := &file_service_ip_item_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllEnabledIPItemsResponse_Result) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllEnabledIPItemsResponse_Result) ProtoMessage() {} + +func (x *ListAllEnabledIPItemsResponse_Result) ProtoReflect() protoreflect.Message { + mi := &file_service_ip_item_proto_msgTypes[18] + 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 ListAllEnabledIPItemsResponse_Result.ProtoReflect.Descriptor instead. +func (*ListAllEnabledIPItemsResponse_Result) Descriptor() ([]byte, []int) { + return file_service_ip_item_proto_rawDescGZIP(), []int{17, 0} +} + +func (x *ListAllEnabledIPItemsResponse_Result) GetIpList() *IPList { + if x != nil { + return x.IpList + } + return nil +} + +func (x *ListAllEnabledIPItemsResponse_Result) GetIpItem() *IPItem { + if x != nil { + return x.IpItem + } + return nil +} + +func (x *ListAllEnabledIPItemsResponse_Result) GetServer() *Server { + if x != nil { + return x.Server + } + return nil +} + +func (x *ListAllEnabledIPItemsResponse_Result) GetHttpFirewallPolicy() *HTTPFirewallPolicy { + if x != nil { + return x.HttpFirewallPolicy + } + return nil +} + var File_service_ip_item_proto protoreflect.FileDescriptor var file_service_ip_item_proto_rawDesc = []byte{ @@ -1015,6 +1245,12 @@ var file_service_ip_item_proto_rawDesc = []byte{ 0x65, 0x6c, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x72, + 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x04, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x70, @@ -1129,54 +1365,92 @@ var file_service_ip_item_proto_rawDesc = []byte{ 0x70, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x1b, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x32, 0xd5, - 0x05, 0x0a, 0x0d, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x41, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, - 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x0c, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x17, 0x2e, 0x70, - 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x50, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x2f, + 0x0a, 0x1d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, + 0x5a, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 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, 0xa2, 0x02, 0x0a, 0x1d, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x1a, 0xbc, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x22, 0x0a, 0x06, + 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, + 0x62, 0x2e, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x22, 0x0a, 0x06, 0x69, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x69, 0x70, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, + 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x12, 0x68, 0x74, + 0x74, 0x70, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x32, 0x86, 0x07, 0x0a, 0x0d, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x62, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, + 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, + 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x37, + 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x17, + 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x51, 0x0a, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x64, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x50, 0x49, + 0x64, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x50, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x6c, 0x69, + 0x73, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x2e, 0x70, 0x62, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x2e, + 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x6c, 0x69, 0x73, 0x74, - 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x50, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x11, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x50, 0x49, 0x74, - 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, - 0x0a, 0x13, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, - 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x6c, 0x69, + 0x73, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x50, + 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x50, 0x49, 0x74, + 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x56, 0x0a, 0x13, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x16, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x6c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, + 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1191,55 +1465,71 @@ func file_service_ip_item_proto_rawDescGZIP() []byte { return file_service_ip_item_proto_rawDescData } -var file_service_ip_item_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_service_ip_item_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_service_ip_item_proto_goTypes = []interface{}{ - (*CreateIPItemRequest)(nil), // 0: pb.CreateIPItemRequest - (*CreateIPItemResponse)(nil), // 1: pb.CreateIPItemResponse - (*UpdateIPItemRequest)(nil), // 2: pb.UpdateIPItemRequest - (*DeleteIPItemRequest)(nil), // 3: pb.DeleteIPItemRequest - (*CountIPItemsWithListIdRequest)(nil), // 4: pb.CountIPItemsWithListIdRequest - (*ListIPItemsWithListIdRequest)(nil), // 5: pb.ListIPItemsWithListIdRequest - (*ListIPItemsWithListIdResponse)(nil), // 6: pb.ListIPItemsWithListIdResponse - (*FindEnabledIPItemRequest)(nil), // 7: pb.FindEnabledIPItemRequest - (*FindEnabledIPItemResponse)(nil), // 8: pb.FindEnabledIPItemResponse - (*ListIPItemsAfterVersionRequest)(nil), // 9: pb.ListIPItemsAfterVersionRequest - (*ListIPItemsAfterVersionResponse)(nil), // 10: pb.ListIPItemsAfterVersionResponse - (*CheckIPItemStatusRequest)(nil), // 11: pb.CheckIPItemStatusRequest - (*CheckIPItemStatusResponse)(nil), // 12: pb.CheckIPItemStatusResponse - (*ExistsEnabledIPItemRequest)(nil), // 13: pb.ExistsEnabledIPItemRequest - (*ExistsEnabledIPItemResponse)(nil), // 14: pb.ExistsEnabledIPItemResponse - (*IPItem)(nil), // 15: pb.IPItem - (*RPCSuccess)(nil), // 16: pb.RPCSuccess - (*RPCCountResponse)(nil), // 17: pb.RPCCountResponse + (*CreateIPItemRequest)(nil), // 0: pb.CreateIPItemRequest + (*CreateIPItemResponse)(nil), // 1: pb.CreateIPItemResponse + (*UpdateIPItemRequest)(nil), // 2: pb.UpdateIPItemRequest + (*DeleteIPItemRequest)(nil), // 3: pb.DeleteIPItemRequest + (*CountIPItemsWithListIdRequest)(nil), // 4: pb.CountIPItemsWithListIdRequest + (*ListIPItemsWithListIdRequest)(nil), // 5: pb.ListIPItemsWithListIdRequest + (*ListIPItemsWithListIdResponse)(nil), // 6: pb.ListIPItemsWithListIdResponse + (*FindEnabledIPItemRequest)(nil), // 7: pb.FindEnabledIPItemRequest + (*FindEnabledIPItemResponse)(nil), // 8: pb.FindEnabledIPItemResponse + (*ListIPItemsAfterVersionRequest)(nil), // 9: pb.ListIPItemsAfterVersionRequest + (*ListIPItemsAfterVersionResponse)(nil), // 10: pb.ListIPItemsAfterVersionResponse + (*CheckIPItemStatusRequest)(nil), // 11: pb.CheckIPItemStatusRequest + (*CheckIPItemStatusResponse)(nil), // 12: pb.CheckIPItemStatusResponse + (*ExistsEnabledIPItemRequest)(nil), // 13: pb.ExistsEnabledIPItemRequest + (*ExistsEnabledIPItemResponse)(nil), // 14: pb.ExistsEnabledIPItemResponse + (*CountAllEnabledIPItemsRequest)(nil), // 15: pb.CountAllEnabledIPItemsRequest + (*ListAllEnabledIPItemsRequest)(nil), // 16: pb.ListAllEnabledIPItemsRequest + (*ListAllEnabledIPItemsResponse)(nil), // 17: pb.ListAllEnabledIPItemsResponse + (*ListAllEnabledIPItemsResponse_Result)(nil), // 18: pb.ListAllEnabledIPItemsResponse.Result + (*IPItem)(nil), // 19: pb.IPItem + (*IPList)(nil), // 20: pb.IPList + (*Server)(nil), // 21: pb.Server + (*HTTPFirewallPolicy)(nil), // 22: pb.HTTPFirewallPolicy + (*RPCSuccess)(nil), // 23: pb.RPCSuccess + (*RPCCountResponse)(nil), // 24: pb.RPCCountResponse } var file_service_ip_item_proto_depIdxs = []int32{ - 15, // 0: pb.ListIPItemsWithListIdResponse.ipItems:type_name -> pb.IPItem - 15, // 1: pb.FindEnabledIPItemResponse.ipItem:type_name -> pb.IPItem - 15, // 2: pb.ListIPItemsAfterVersionResponse.ipItems:type_name -> pb.IPItem - 15, // 3: pb.CheckIPItemStatusResponse.ipItem:type_name -> pb.IPItem - 0, // 4: pb.IPItemService.createIPItem:input_type -> pb.CreateIPItemRequest - 2, // 5: pb.IPItemService.updateIPItem:input_type -> pb.UpdateIPItemRequest - 3, // 6: pb.IPItemService.deleteIPItem:input_type -> pb.DeleteIPItemRequest - 4, // 7: pb.IPItemService.countIPItemsWithListId:input_type -> pb.CountIPItemsWithListIdRequest - 5, // 8: pb.IPItemService.listIPItemsWithListId:input_type -> pb.ListIPItemsWithListIdRequest - 7, // 9: pb.IPItemService.findEnabledIPItem:input_type -> pb.FindEnabledIPItemRequest - 9, // 10: pb.IPItemService.listIPItemsAfterVersion:input_type -> pb.ListIPItemsAfterVersionRequest - 11, // 11: pb.IPItemService.checkIPItemStatus:input_type -> pb.CheckIPItemStatusRequest - 13, // 12: pb.IPItemService.existsEnabledIPItem:input_type -> pb.ExistsEnabledIPItemRequest - 1, // 13: pb.IPItemService.createIPItem:output_type -> pb.CreateIPItemResponse - 16, // 14: pb.IPItemService.updateIPItem:output_type -> pb.RPCSuccess - 16, // 15: pb.IPItemService.deleteIPItem:output_type -> pb.RPCSuccess - 17, // 16: pb.IPItemService.countIPItemsWithListId:output_type -> pb.RPCCountResponse - 6, // 17: pb.IPItemService.listIPItemsWithListId:output_type -> pb.ListIPItemsWithListIdResponse - 8, // 18: pb.IPItemService.findEnabledIPItem:output_type -> pb.FindEnabledIPItemResponse - 10, // 19: pb.IPItemService.listIPItemsAfterVersion:output_type -> pb.ListIPItemsAfterVersionResponse - 12, // 20: pb.IPItemService.checkIPItemStatus:output_type -> pb.CheckIPItemStatusResponse - 14, // 21: pb.IPItemService.existsEnabledIPItem:output_type -> pb.ExistsEnabledIPItemResponse - 13, // [13:22] is the sub-list for method output_type - 4, // [4:13] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 19, // 0: pb.ListIPItemsWithListIdResponse.ipItems:type_name -> pb.IPItem + 19, // 1: pb.FindEnabledIPItemResponse.ipItem:type_name -> pb.IPItem + 19, // 2: pb.ListIPItemsAfterVersionResponse.ipItems:type_name -> pb.IPItem + 19, // 3: pb.CheckIPItemStatusResponse.ipItem:type_name -> pb.IPItem + 18, // 4: pb.ListAllEnabledIPItemsResponse.results:type_name -> pb.ListAllEnabledIPItemsResponse.Result + 20, // 5: pb.ListAllEnabledIPItemsResponse.Result.ipList:type_name -> pb.IPList + 19, // 6: pb.ListAllEnabledIPItemsResponse.Result.ipItem:type_name -> pb.IPItem + 21, // 7: pb.ListAllEnabledIPItemsResponse.Result.server:type_name -> pb.Server + 22, // 8: pb.ListAllEnabledIPItemsResponse.Result.httpFirewallPolicy:type_name -> pb.HTTPFirewallPolicy + 0, // 9: pb.IPItemService.createIPItem:input_type -> pb.CreateIPItemRequest + 2, // 10: pb.IPItemService.updateIPItem:input_type -> pb.UpdateIPItemRequest + 3, // 11: pb.IPItemService.deleteIPItem:input_type -> pb.DeleteIPItemRequest + 4, // 12: pb.IPItemService.countIPItemsWithListId:input_type -> pb.CountIPItemsWithListIdRequest + 5, // 13: pb.IPItemService.listIPItemsWithListId:input_type -> pb.ListIPItemsWithListIdRequest + 7, // 14: pb.IPItemService.findEnabledIPItem:input_type -> pb.FindEnabledIPItemRequest + 9, // 15: pb.IPItemService.listIPItemsAfterVersion:input_type -> pb.ListIPItemsAfterVersionRequest + 11, // 16: pb.IPItemService.checkIPItemStatus:input_type -> pb.CheckIPItemStatusRequest + 13, // 17: pb.IPItemService.existsEnabledIPItem:input_type -> pb.ExistsEnabledIPItemRequest + 15, // 18: pb.IPItemService.countAllEnabledIPItems:input_type -> pb.CountAllEnabledIPItemsRequest + 16, // 19: pb.IPItemService.listAllEnabledIPItems:input_type -> pb.ListAllEnabledIPItemsRequest + 1, // 20: pb.IPItemService.createIPItem:output_type -> pb.CreateIPItemResponse + 23, // 21: pb.IPItemService.updateIPItem:output_type -> pb.RPCSuccess + 23, // 22: pb.IPItemService.deleteIPItem:output_type -> pb.RPCSuccess + 24, // 23: pb.IPItemService.countIPItemsWithListId:output_type -> pb.RPCCountResponse + 6, // 24: pb.IPItemService.listIPItemsWithListId:output_type -> pb.ListIPItemsWithListIdResponse + 8, // 25: pb.IPItemService.findEnabledIPItem:output_type -> pb.FindEnabledIPItemResponse + 10, // 26: pb.IPItemService.listIPItemsAfterVersion:output_type -> pb.ListIPItemsAfterVersionResponse + 12, // 27: pb.IPItemService.checkIPItemStatus:output_type -> pb.CheckIPItemStatusResponse + 14, // 28: pb.IPItemService.existsEnabledIPItem:output_type -> pb.ExistsEnabledIPItemResponse + 24, // 29: pb.IPItemService.countAllEnabledIPItems:output_type -> pb.RPCCountResponse + 17, // 30: pb.IPItemService.listAllEnabledIPItems:output_type -> pb.ListAllEnabledIPItemsResponse + 20, // [20:31] is the sub-list for method output_type + 9, // [9:20] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_service_ip_item_proto_init() } @@ -1249,6 +1539,9 @@ func file_service_ip_item_proto_init() { } file_models_rpc_messages_proto_init() file_models_model_ip_item_proto_init() + file_models_model_ip_list_proto_init() + file_models_model_server_proto_init() + file_models_model_http_firewall_policy_proto_init() if !protoimpl.UnsafeEnabled { file_service_ip_item_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateIPItemRequest); i { @@ -1430,6 +1723,54 @@ func file_service_ip_item_proto_init() { return nil } } + file_service_ip_item_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CountAllEnabledIPItemsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_ip_item_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAllEnabledIPItemsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_ip_item_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAllEnabledIPItemsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_ip_item_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAllEnabledIPItemsResponse_Result); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1437,7 +1778,7 @@ func file_service_ip_item_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_service_ip_item_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 19, NumExtensions: 0, NumServices: 1, }, @@ -1481,6 +1822,10 @@ type IPItemServiceClient interface { CheckIPItemStatus(ctx context.Context, in *CheckIPItemStatusRequest, opts ...grpc.CallOption) (*CheckIPItemStatusResponse, error) // 检查IP是否存在 ExistsEnabledIPItem(ctx context.Context, in *ExistsEnabledIPItemRequest, opts ...grpc.CallOption) (*ExistsEnabledIPItemResponse, error) + // 计算所有IP数量 + CountAllEnabledIPItems(ctx context.Context, in *CountAllEnabledIPItemsRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) + // 列出所有名单中的IP + ListAllEnabledIPItems(ctx context.Context, in *ListAllEnabledIPItemsRequest, opts ...grpc.CallOption) (*ListAllEnabledIPItemsResponse, error) } type iPItemServiceClient struct { @@ -1572,6 +1917,24 @@ func (c *iPItemServiceClient) ExistsEnabledIPItem(ctx context.Context, in *Exist return out, nil } +func (c *iPItemServiceClient) CountAllEnabledIPItems(ctx context.Context, in *CountAllEnabledIPItemsRequest, opts ...grpc.CallOption) (*RPCCountResponse, error) { + out := new(RPCCountResponse) + err := c.cc.Invoke(ctx, "/pb.IPItemService/countAllEnabledIPItems", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *iPItemServiceClient) ListAllEnabledIPItems(ctx context.Context, in *ListAllEnabledIPItemsRequest, opts ...grpc.CallOption) (*ListAllEnabledIPItemsResponse, error) { + out := new(ListAllEnabledIPItemsResponse) + err := c.cc.Invoke(ctx, "/pb.IPItemService/listAllEnabledIPItems", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // IPItemServiceServer is the server API for IPItemService service. type IPItemServiceServer interface { // 创建IP @@ -1592,6 +1955,10 @@ type IPItemServiceServer interface { CheckIPItemStatus(context.Context, *CheckIPItemStatusRequest) (*CheckIPItemStatusResponse, error) // 检查IP是否存在 ExistsEnabledIPItem(context.Context, *ExistsEnabledIPItemRequest) (*ExistsEnabledIPItemResponse, error) + // 计算所有IP数量 + CountAllEnabledIPItems(context.Context, *CountAllEnabledIPItemsRequest) (*RPCCountResponse, error) + // 列出所有名单中的IP + ListAllEnabledIPItems(context.Context, *ListAllEnabledIPItemsRequest) (*ListAllEnabledIPItemsResponse, error) } // UnimplementedIPItemServiceServer can be embedded to have forward compatible implementations. @@ -1625,6 +1992,12 @@ func (*UnimplementedIPItemServiceServer) CheckIPItemStatus(context.Context, *Che func (*UnimplementedIPItemServiceServer) ExistsEnabledIPItem(context.Context, *ExistsEnabledIPItemRequest) (*ExistsEnabledIPItemResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ExistsEnabledIPItem not implemented") } +func (*UnimplementedIPItemServiceServer) CountAllEnabledIPItems(context.Context, *CountAllEnabledIPItemsRequest) (*RPCCountResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CountAllEnabledIPItems not implemented") +} +func (*UnimplementedIPItemServiceServer) ListAllEnabledIPItems(context.Context, *ListAllEnabledIPItemsRequest) (*ListAllEnabledIPItemsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllEnabledIPItems not implemented") +} func RegisterIPItemServiceServer(s *grpc.Server, srv IPItemServiceServer) { s.RegisterService(&_IPItemService_serviceDesc, srv) @@ -1792,6 +2165,42 @@ func _IPItemService_ExistsEnabledIPItem_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _IPItemService_CountAllEnabledIPItems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CountAllEnabledIPItemsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IPItemServiceServer).CountAllEnabledIPItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.IPItemService/CountAllEnabledIPItems", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IPItemServiceServer).CountAllEnabledIPItems(ctx, req.(*CountAllEnabledIPItemsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IPItemService_ListAllEnabledIPItems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAllEnabledIPItemsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IPItemServiceServer).ListAllEnabledIPItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.IPItemService/ListAllEnabledIPItems", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IPItemServiceServer).ListAllEnabledIPItems(ctx, req.(*ListAllEnabledIPItemsRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _IPItemService_serviceDesc = grpc.ServiceDesc{ ServiceName: "pb.IPItemService", HandlerType: (*IPItemServiceServer)(nil), @@ -1832,6 +2241,14 @@ var _IPItemService_serviceDesc = grpc.ServiceDesc{ MethodName: "existsEnabledIPItem", Handler: _IPItemService_ExistsEnabledIPItem_Handler, }, + { + MethodName: "countAllEnabledIPItems", + Handler: _IPItemService_CountAllEnabledIPItems_Handler, + }, + { + MethodName: "listAllEnabledIPItems", + Handler: _IPItemService_ListAllEnabledIPItems_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "service_ip_item.proto", diff --git a/pkg/rpc/protos/models/model_ip_item.proto b/pkg/rpc/protos/models/model_ip_item.proto index dfe100c..373828c 100644 --- a/pkg/rpc/protos/models/model_ip_item.proto +++ b/pkg/rpc/protos/models/model_ip_item.proto @@ -32,8 +32,8 @@ message IPItem { int64 sourceHTTPFirewallRuleGroupId = 18; int64 sourceHTTPFirewallRuleSetId = 19; - Server sourceServer = 30; + Server server = 34; HTTPFirewallPolicy sourceHTTPFirewallPolicy = 31; HTTPFirewallRuleGroup sourceHTTPFirewallRuleGroup = 32; HTTPFirewallRuleSet sourceHTTPFirewallRuleSet = 33; diff --git a/pkg/rpc/protos/service_ip_item.proto b/pkg/rpc/protos/service_ip_item.proto index ce5be9e..27de15a 100644 --- a/pkg/rpc/protos/service_ip_item.proto +++ b/pkg/rpc/protos/service_ip_item.proto @@ -5,6 +5,9 @@ package pb; import "models/rpc_messages.proto"; import "models/model_ip_item.proto"; +import "models/model_ip_list.proto"; +import "models/model_server.proto"; +import "models/model_http_firewall_policy.proto"; // IP条目管理 service IPItemService { @@ -34,6 +37,12 @@ service IPItemService { // 检查IP是否存在 rpc existsEnabledIPItem (ExistsEnabledIPItemRequest) returns (ExistsEnabledIPItemResponse); + + // 计算所有IP数量 + rpc countAllEnabledIPItems(CountAllEnabledIPItemsRequest) returns (RPCCountResponse); + + // 列出所有名单中的IP + rpc listAllEnabledIPItems(ListAllEnabledIPItemsRequest) returns (ListAllEnabledIPItemsResponse); } // 创建IP @@ -138,4 +147,27 @@ message ExistsEnabledIPItemRequest { message ExistsEnabledIPItemResponse { bool exists = 1; +} + +// 计算所有IP数量 +message CountAllEnabledIPItemsRequest { + string ip = 1; +} + +// 列出所有名单中的IP +message ListAllEnabledIPItemsRequest { + string ip = 1; + int64 offset = 2; + int64 size = 3; +} + +message ListAllEnabledIPItemsResponse { + repeated Result results = 1; + + message Result { + IPList ipList = 1; // 所属名单 + IPItem ipItem = 2; // IP信息 + Server server = 3; // 所属服务 + HTTPFirewallPolicy httpFirewallPolicy = 4; // 所属WAF策略 + } } \ No newline at end of file