diff --git a/Makefile b/Makefile index c419951..3a83796 100644 --- a/Makefile +++ b/Makefile @@ -7,12 +7,12 @@ PROTOC_GEN_GO_VERSION:=v1.34.2 PROTOC_GEN_GO_GRPC_VERSION:=v1.5.1 # add any components here after their directory has been created with .proto files -COMPONENTS:=connector device +COMPONENTS:=common connector device all: docker-run docker-run: docker-build - $(foreach component, $(COMPONENTS), docker run -v $(PWD)/$(component):/app/proto $(NAME)-builder;) + $(foreach component, $(COMPONENTS), docker run -v $(PWD)/common:/app/shared/common -v $(PWD)/$(component):/app/proto $(NAME)-builder;) docker-build: docker build --build-arg PROTOC_GEN_GO_VERSION=$(PROTOC_GEN_GO_VERSION) --build-arg PROTOC_GEN_GO_GRPC_VERSION=$(PROTOC_GEN_GO_GRPC_VERSION) -t $(NAME)-builder . diff --git a/common/messages.pb.go b/common/messages.pb.go new file mode 100644 index 0000000..3d1b271 --- /dev/null +++ b/common/messages.pb.go @@ -0,0 +1,747 @@ +// sets the .proto file syntax version + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v4.24.4 +// source: messages.proto + +// sets the protobuf package name (i.e. definitions namespace) + +package common + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DisconnectionReason int32 + +const ( + DisconnectionReason_UNKNOWN DisconnectionReason = 0 + DisconnectionReason_SERVER_SHUTDOWN DisconnectionReason = 1 +) + +// Enum value maps for DisconnectionReason. +var ( + DisconnectionReason_name = map[int32]string{ + 0: "UNKNOWN", + 1: "SERVER_SHUTDOWN", + } + DisconnectionReason_value = map[string]int32{ + "UNKNOWN": 0, + "SERVER_SHUTDOWN": 1, + } +) + +func (x DisconnectionReason) Enum() *DisconnectionReason { + p := new(DisconnectionReason) + *p = x + return p +} + +func (x DisconnectionReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DisconnectionReason) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[0].Descriptor() +} + +func (DisconnectionReason) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[0] +} + +func (x DisconnectionReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DisconnectionReason.Descriptor instead. +func (DisconnectionReason) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{0} +} + +type DiscoveryDetailsMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Discoverable bool `protobuf:"varint,1,opt,name=discoverable,proto3" json:"discoverable,omitempty"` // whether the peer should be returned along with the networks its in + EndpointPublicUdp4 string `protobuf:"bytes,2,opt,name=endpoint_public_udp4,json=endpointPublicUdp4,proto3" json:"endpoint_public_udp4,omitempty"` // the endpoint (IPv4 + port) to send packets to for the peer + EndpointPublicUdp6 string `protobuf:"bytes,3,opt,name=endpoint_public_udp6,json=endpointPublicUdp6,proto3" json:"endpoint_public_udp6,omitempty"` // the endpoint (IPv6 + port) to send packets to for the peer + PublicKey string `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // the public key of the peer, only used in connector +} + +func (x *DiscoveryDetailsMessage) Reset() { + *x = DiscoveryDetailsMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscoveryDetailsMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoveryDetailsMessage) ProtoMessage() {} + +func (x *DiscoveryDetailsMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[0] + 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 DiscoveryDetailsMessage.ProtoReflect.Descriptor instead. +func (*DiscoveryDetailsMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{0} +} + +func (x *DiscoveryDetailsMessage) GetDiscoverable() bool { + if x != nil { + return x.Discoverable + } + return false +} + +func (x *DiscoveryDetailsMessage) GetEndpointPublicUdp4() string { + if x != nil { + return x.EndpointPublicUdp4 + } + return "" +} + +func (x *DiscoveryDetailsMessage) GetEndpointPublicUdp6() string { + if x != nil { + return x.EndpointPublicUdp6 + } + return "" +} + +func (x *DiscoveryDetailsMessage) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +type HeartbeatMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *HeartbeatMessage) Reset() { + *x = HeartbeatMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HeartbeatMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeartbeatMessage) ProtoMessage() {} + +func (x *HeartbeatMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[1] + 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 HeartbeatMessage.ProtoReflect.Descriptor instead. +func (*HeartbeatMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{1} +} + +type PeerOnlineMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NetworkId string `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + Peer *WireGuardPeer `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"` +} + +func (x *PeerOnlineMessage) Reset() { + *x = PeerOnlineMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PeerOnlineMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PeerOnlineMessage) ProtoMessage() {} + +func (x *PeerOnlineMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_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 PeerOnlineMessage.ProtoReflect.Descriptor instead. +func (*PeerOnlineMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{2} +} + +func (x *PeerOnlineMessage) GetNetworkId() string { + if x != nil { + return x.NetworkId + } + return "" +} + +func (x *PeerOnlineMessage) GetPeer() *WireGuardPeer { + if x != nil { + return x.Peer + } + return nil +} + +type PeerOfflineMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NetworkId string `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + PeerPublicKey string `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey,proto3" json:"peer_public_key,omitempty"` +} + +func (x *PeerOfflineMessage) Reset() { + *x = PeerOfflineMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PeerOfflineMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PeerOfflineMessage) ProtoMessage() {} + +func (x *PeerOfflineMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_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 PeerOfflineMessage.ProtoReflect.Descriptor instead. +func (*PeerOfflineMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{3} +} + +func (x *PeerOfflineMessage) GetNetworkId() string { + if x != nil { + return x.NetworkId + } + return "" +} + +func (x *PeerOfflineMessage) GetPeerPublicKey() string { + if x != nil { + return x.PeerPublicKey + } + return "" +} + +type NetworkStateMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NetworkId string `protobuf:"bytes,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + NetworkCidrV4 string `protobuf:"bytes,2,opt,name=network_cidr_v4,json=networkCidrV4,proto3" json:"network_cidr_v4,omitempty"` + NetworkCidrV6 string `protobuf:"bytes,3,opt,name=network_cidr_v6,json=networkCidrV6,proto3" json:"network_cidr_v6,omitempty"` + SelfIpv4 string `protobuf:"bytes,4,opt,name=self_ipv4,json=selfIpv4,proto3" json:"self_ipv4,omitempty"` + SelfIpv6 string `protobuf:"bytes,5,opt,name=self_ipv6,json=selfIpv6,proto3" json:"self_ipv6,omitempty"` + OnlinePeers []*WireGuardPeer `protobuf:"bytes,6,rep,name=online_peers,json=onlinePeers,proto3" json:"online_peers,omitempty"` +} + +func (x *NetworkStateMessage) Reset() { + *x = NetworkStateMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetworkStateMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkStateMessage) ProtoMessage() {} + +func (x *NetworkStateMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[4] + 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 NetworkStateMessage.ProtoReflect.Descriptor instead. +func (*NetworkStateMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{4} +} + +func (x *NetworkStateMessage) GetNetworkId() string { + if x != nil { + return x.NetworkId + } + return "" +} + +func (x *NetworkStateMessage) GetNetworkCidrV4() string { + if x != nil { + return x.NetworkCidrV4 + } + return "" +} + +func (x *NetworkStateMessage) GetNetworkCidrV6() string { + if x != nil { + return x.NetworkCidrV6 + } + return "" +} + +func (x *NetworkStateMessage) GetSelfIpv4() string { + if x != nil { + return x.SelfIpv4 + } + return "" +} + +func (x *NetworkStateMessage) GetSelfIpv6() string { + if x != nil { + return x.SelfIpv6 + } + return "" +} + +func (x *NetworkStateMessage) GetOnlinePeers() []*WireGuardPeer { + if x != nil { + return x.OnlinePeers + } + return nil +} + +type WireGuardPeer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // the public key of the peer, used for identification and encryption + Ipv4 string `protobuf:"bytes,2,opt,name=ipv4,proto3" json:"ipv4,omitempty"` // the peer's (private) IPv4 address in the wireguard network + Ipv6 string `protobuf:"bytes,3,opt,name=ipv6,proto3" json:"ipv6,omitempty"` // the peer's (private) IPv6 address in the wireguard network + AllowedIps []string `protobuf:"bytes,4,rep,name=allowed_ips,json=allowedIps,proto3" json:"allowed_ips,omitempty"` // list of routes (CIDRs) to be routed through this peer (most peers will just have their own IP/32) + PersistentKeepaliveIntervalSeconds uint32 `protobuf:"varint,5,opt,name=persistent_keepalive_interval_seconds,json=persistentKeepaliveIntervalSeconds,proto3" json:"persistent_keepalive_interval_seconds,omitempty"` // the interval for sending keepalive packets (0 means disabled) + PublicUdp4Endpoint string `protobuf:"bytes,6,opt,name=public_udp4_endpoint,json=publicUdp4Endpoint,proto3" json:"public_udp4_endpoint,omitempty"` // endpoint for udp peer-to-peer communication over ipv4 (public IPv4 + port as seen from the Internet) + PublicUdp6Endpoint string `protobuf:"bytes,7,opt,name=public_udp6_endpoint,json=publicUdp6Endpoint,proto3" json:"public_udp6_endpoint,omitempty"` // endpoint for udp peer-to-peer communication over ipv6 (public IPv6 + port as seen from the Internet) +} + +func (x *WireGuardPeer) Reset() { + *x = WireGuardPeer{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WireGuardPeer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WireGuardPeer) ProtoMessage() {} + +func (x *WireGuardPeer) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[5] + 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 WireGuardPeer.ProtoReflect.Descriptor instead. +func (*WireGuardPeer) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{5} +} + +func (x *WireGuardPeer) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *WireGuardPeer) GetIpv4() string { + if x != nil { + return x.Ipv4 + } + return "" +} + +func (x *WireGuardPeer) GetIpv6() string { + if x != nil { + return x.Ipv6 + } + return "" +} + +func (x *WireGuardPeer) GetAllowedIps() []string { + if x != nil { + return x.AllowedIps + } + return nil +} + +func (x *WireGuardPeer) GetPersistentKeepaliveIntervalSeconds() uint32 { + if x != nil { + return x.PersistentKeepaliveIntervalSeconds + } + return 0 +} + +func (x *WireGuardPeer) GetPublicUdp4Endpoint() string { + if x != nil { + return x.PublicUdp4Endpoint + } + return "" +} + +func (x *WireGuardPeer) GetPublicUdp6Endpoint() string { + if x != nil { + return x.PublicUdp6Endpoint + } + return "" +} + +type DisconnectMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Reason DisconnectionReason `protobuf:"varint,1,opt,name=reason,proto3,enum=border0.common.v1.DisconnectionReason" json:"reason,omitempty"` +} + +func (x *DisconnectMessage) Reset() { + *x = DisconnectMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisconnectMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisconnectMessage) ProtoMessage() {} + +func (x *DisconnectMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[6] + 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 DisconnectMessage.ProtoReflect.Descriptor instead. +func (*DisconnectMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{6} +} + +func (x *DisconnectMessage) GetReason() DisconnectionReason { + if x != nil { + return x.Reason + } + return DisconnectionReason_UNKNOWN +} + +var File_messages_proto protoreflect.FileDescriptor + +var file_messages_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x11, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x22, 0xc0, 0x01, 0x0a, 0x17, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x75, 0x64, 0x70, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x55, 0x64, 0x70, 0x34, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x75, 0x64, 0x70, 0x36, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x55, 0x64, 0x70, 0x36, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x12, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x11, 0x50, 0x65, + 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x34, + 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x69, 0x72, 0x65, 0x47, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, + 0x70, 0x65, 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x6c, + 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x65, 0x65, + 0x72, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x22, 0x83, 0x02, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x5f, 0x76, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x69, 0x64, 0x72, 0x56, 0x34, + 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x69, 0x64, 0x72, + 0x5f, 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x43, 0x69, 0x64, 0x72, 0x56, 0x36, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x66, + 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, + 0x66, 0x49, 0x70, 0x76, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x66, 0x49, 0x70, + 0x76, 0x36, 0x12, 0x43, 0x0a, 0x0c, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x65, 0x65, + 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x72, + 0x65, 0x47, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x22, 0xae, 0x02, 0x0a, 0x0d, 0x57, 0x69, 0x72, 0x65, + 0x47, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x12, 0x0a, 0x04, + 0x69, 0x70, 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, + 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, + 0x73, 0x12, 0x51, 0x0a, 0x25, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x22, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x65, 0x70, + 0x61, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x75, + 0x64, 0x70, 0x34, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x64, 0x70, 0x34, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x5f, 0x75, 0x64, 0x70, 0x36, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x64, 0x70, 0x36, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x53, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3e, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x37, 0x0a, + 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x55, 0x54, + 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x7a, 0x65, 0x72, 0x6f, 0x2f, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_messages_proto_rawDescOnce sync.Once + file_messages_proto_rawDescData = file_messages_proto_rawDesc +) + +func file_messages_proto_rawDescGZIP() []byte { + file_messages_proto_rawDescOnce.Do(func() { + file_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_messages_proto_rawDescData) + }) + return file_messages_proto_rawDescData +} + +var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_messages_proto_goTypes = []any{ + (DisconnectionReason)(0), // 0: border0.common.v1.DisconnectionReason + (*DiscoveryDetailsMessage)(nil), // 1: border0.common.v1.DiscoveryDetailsMessage + (*HeartbeatMessage)(nil), // 2: border0.common.v1.HeartbeatMessage + (*PeerOnlineMessage)(nil), // 3: border0.common.v1.PeerOnlineMessage + (*PeerOfflineMessage)(nil), // 4: border0.common.v1.PeerOfflineMessage + (*NetworkStateMessage)(nil), // 5: border0.common.v1.NetworkStateMessage + (*WireGuardPeer)(nil), // 6: border0.common.v1.WireGuardPeer + (*DisconnectMessage)(nil), // 7: border0.common.v1.DisconnectMessage +} +var file_messages_proto_depIdxs = []int32{ + 6, // 0: border0.common.v1.PeerOnlineMessage.peer:type_name -> border0.common.v1.WireGuardPeer + 6, // 1: border0.common.v1.NetworkStateMessage.online_peers:type_name -> border0.common.v1.WireGuardPeer + 0, // 2: border0.common.v1.DisconnectMessage.reason:type_name -> border0.common.v1.DisconnectionReason + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] 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_messages_proto_init() } +func file_messages_proto_init() { + if File_messages_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_messages_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*DiscoveryDetailsMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*HeartbeatMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*PeerOnlineMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*PeerOfflineMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*NetworkStateMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*WireGuardPeer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*DisconnectMessage); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_messages_proto_rawDesc, + NumEnums: 1, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_messages_proto_goTypes, + DependencyIndexes: file_messages_proto_depIdxs, + EnumInfos: file_messages_proto_enumTypes, + MessageInfos: file_messages_proto_msgTypes, + }.Build() + File_messages_proto = out.File + file_messages_proto_rawDesc = nil + file_messages_proto_goTypes = nil + file_messages_proto_depIdxs = nil +} diff --git a/common/messages.proto b/common/messages.proto new file mode 100644 index 0000000..2be0e27 --- /dev/null +++ b/common/messages.proto @@ -0,0 +1,55 @@ +// sets the .proto file syntax version +syntax = "proto3"; + +// sets the output golang package name +option go_package = "github.com/borderzero/border0-proto/common"; + +// sets the protobuf package name (i.e. definitions namespace) +package border0.common.v1; + +message DiscoveryDetailsMessage { + bool discoverable = 1; // whether the peer should be returned along with the networks it's in + string endpoint_public_udp4 = 2; // the endpoint (IPv4 + port) to send packets to for the peer + string endpoint_public_udp6 = 3; // the endpoint (IPv6 + port) to send packets to for the peer + string public_key = 4; // the public key of the peer, only used in connector +} + +message HeartbeatMessage {} + +message PeerOnlineMessage { + string network_id = 1; + WireGuardPeer peer = 2; +} + +message PeerOfflineMessage { + string network_id = 1; + string peer_public_key = 2; +} + +message NetworkStateMessage { + string network_id = 1; + string network_cidr_v4 = 2; + string network_cidr_v6 = 3; + string self_ipv4 = 4; + string self_ipv6 = 5; + repeated WireGuardPeer online_peers = 6; +} + +message WireGuardPeer { + string public_key = 1; // the public key of the peer, used for identification and encryption + string ipv4 = 2; // the peer's (private) IPv4 address in the WireGuard network + string ipv6 = 3; // the peer's (private) IPv6 address in the WireGuard network + repeated string allowed_ips = 4; // list of routes (CIDRs) to be routed through this peer (most peers will just have their own IP/32) + uint32 persistent_keepalive_interval_seconds = 5; // the interval for sending keepalive packets (0 means disabled) + string public_udp4_endpoint = 6; // endpoint for UDP peer-to-peer communication over IPv4 (public IPv4 + port as seen from the Internet) + string public_udp6_endpoint = 7; // endpoint for UDP peer-to-peer communication over IPv6 (public IPv6 + port as seen from the Internet) +} + +enum DisconnectionReason { + UNKNOWN = 0; + SERVER_SHUTDOWN = 1; +} + +message DisconnectMessage { + DisconnectionReason reason = 1; +} \ No newline at end of file diff --git a/connector/connector.pb.go b/connector/connector.pb.go index e412ff7..c3e33ea 100644 --- a/connector/connector.pb.go +++ b/connector/connector.pb.go @@ -11,6 +11,7 @@ package connector import ( + common "github.com/borderzero/border0-proto/common" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" structpb "google.golang.org/protobuf/types/known/structpb" @@ -95,8 +96,9 @@ type ControlStreamRequest struct { // *ControlStreamRequest_SessionUpdate // *ControlStreamRequest_SshCertificateSignRequest // *ControlStreamRequest_UploadRecording - // *ControlStreamRequest_CertifcateSignRequest + // *ControlStreamRequest_CertificateSignRequest // *ControlStreamRequest_SessionEvent + // *ControlStreamRequest_DiscoveryDetails RequestType isControlStreamRequest_RequestType `protobuf_oneof:"RequestType"` } @@ -146,7 +148,7 @@ func (x *ControlStreamRequest) GetConfig() *Config { return nil } -func (x *ControlStreamRequest) GetHeartbeat() *HeartbeatRequest { +func (x *ControlStreamRequest) GetHeartbeat() *common.HeartbeatMessage { if x, ok := x.GetRequestType().(*ControlStreamRequest_Heartbeat); ok { return x.Heartbeat } @@ -195,7 +197,7 @@ func (x *ControlStreamRequest) GetSessionUpdate() *SessionUpdateRequest { return nil } -func (x *ControlStreamRequest) GetSshCertificateSignRequest() *SshCertifcateSignRequest { +func (x *ControlStreamRequest) GetSshCertificateSignRequest() *SshCertificateSignRequest { if x, ok := x.GetRequestType().(*ControlStreamRequest_SshCertificateSignRequest); ok { return x.SshCertificateSignRequest } @@ -209,9 +211,9 @@ func (x *ControlStreamRequest) GetUploadRecording() *UploadRecording { return nil } -func (x *ControlStreamRequest) GetCertifcateSignRequest() *CertifcateSignRequest { - if x, ok := x.GetRequestType().(*ControlStreamRequest_CertifcateSignRequest); ok { - return x.CertifcateSignRequest +func (x *ControlStreamRequest) GetCertificateSignRequest() *CertificateSignRequest { + if x, ok := x.GetRequestType().(*ControlStreamRequest_CertificateSignRequest); ok { + return x.CertificateSignRequest } return nil } @@ -223,6 +225,13 @@ func (x *ControlStreamRequest) GetSessionEvent() *SessionEvent { return nil } +func (x *ControlStreamRequest) GetDiscoveryDetails() *common.DiscoveryDetailsMessage { + if x, ok := x.GetRequestType().(*ControlStreamRequest_DiscoveryDetails); ok { + return x.DiscoveryDetails + } + return nil +} + type isControlStreamRequest_RequestType interface { isControlStreamRequest_RequestType() } @@ -232,7 +241,7 @@ type ControlStreamRequest_Config struct { } type ControlStreamRequest_Heartbeat struct { - Heartbeat *HeartbeatRequest `protobuf:"bytes,2,opt,name=heartbeat,proto3,oneof"` + Heartbeat *common.HeartbeatMessage `protobuf:"bytes,2,opt,name=heartbeat,proto3,oneof"` } type ControlStreamRequest_PluginDiscoveryResults struct { @@ -260,21 +269,25 @@ type ControlStreamRequest_SessionUpdate struct { } type ControlStreamRequest_SshCertificateSignRequest struct { - SshCertificateSignRequest *SshCertifcateSignRequest `protobuf:"bytes,10,opt,name=ssh_certificate_sign_request,json=sshCertificateSignRequest,proto3,oneof"` + SshCertificateSignRequest *SshCertificateSignRequest `protobuf:"bytes,10,opt,name=ssh_certificate_sign_request,json=sshCertificateSignRequest,proto3,oneof"` } type ControlStreamRequest_UploadRecording struct { UploadRecording *UploadRecording `protobuf:"bytes,11,opt,name=upload_recording,json=uploadRecording,proto3,oneof"` } -type ControlStreamRequest_CertifcateSignRequest struct { - CertifcateSignRequest *CertifcateSignRequest `protobuf:"bytes,12,opt,name=certifcate_sign_request,json=certifcateSignRequest,proto3,oneof"` +type ControlStreamRequest_CertificateSignRequest struct { + CertificateSignRequest *CertificateSignRequest `protobuf:"bytes,12,opt,name=Certificate_sign_request,json=CertificateSignRequest,proto3,oneof"` } type ControlStreamRequest_SessionEvent struct { SessionEvent *SessionEvent `protobuf:"bytes,13,opt,name=session_event,json=sessionEvent,proto3,oneof"` } +type ControlStreamRequest_DiscoveryDetails struct { + DiscoveryDetails *common.DiscoveryDetailsMessage `protobuf:"bytes,14,opt,name=discovery_details,json=discoveryDetails,proto3,oneof"` +} + func (*ControlStreamRequest_Config) isControlStreamRequest_RequestType() {} func (*ControlStreamRequest_Heartbeat) isControlStreamRequest_RequestType() {} @@ -295,33 +308,38 @@ func (*ControlStreamRequest_SshCertificateSignRequest) isControlStreamRequest_Re func (*ControlStreamRequest_UploadRecording) isControlStreamRequest_RequestType() {} -func (*ControlStreamRequest_CertifcateSignRequest) isControlStreamRequest_RequestType() {} +func (*ControlStreamRequest_CertificateSignRequest) isControlStreamRequest_RequestType() {} func (*ControlStreamRequest_SessionEvent) isControlStreamRequest_RequestType() {} -type ControlStreamReponse struct { +func (*ControlStreamRequest_DiscoveryDetails) isControlStreamRequest_RequestType() {} + +type ControlStreamResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to RequestType: // - // *ControlStreamReponse_Init - // *ControlStreamReponse_ConnectorConfig - // *ControlStreamReponse_UpdateConfig - // *ControlStreamReponse_Heartbeat - // *ControlStreamReponse_TunnelCertificateSignResponse - // *ControlStreamReponse_Discover - // *ControlStreamReponse_Stop - // *ControlStreamReponse_Disconnect - // *ControlStreamReponse_Authorize - // *ControlStreamReponse_SshCertificateSignResponse - // *ControlStreamReponse_CertifcateSignResponse - RequestType isControlStreamReponse_RequestType `protobuf_oneof:"RequestType"` -} - -func (x *ControlStreamReponse) Reset() { - *x = ControlStreamReponse{} + // *ControlStreamResponse_Init + // *ControlStreamResponse_ConnectorConfig + // *ControlStreamResponse_UpdateConfig + // *ControlStreamResponse_Heartbeat + // *ControlStreamResponse_TunnelCertificateSignResponse + // *ControlStreamResponse_Discover + // *ControlStreamResponse_Stop + // *ControlStreamResponse_Disconnect + // *ControlStreamResponse_Authorize + // *ControlStreamResponse_SshCertificateSignResponse + // *ControlStreamResponse_CertificateSignResponse + // *ControlStreamResponse_NetworkState + // *ControlStreamResponse_PeerOnline + // *ControlStreamResponse_PeerOffline + RequestType isControlStreamResponse_RequestType `protobuf_oneof:"RequestType"` +} + +func (x *ControlStreamResponse) Reset() { + *x = ControlStreamResponse{} if protoimpl.UnsafeEnabled { mi := &file_connector_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -329,13 +347,13 @@ func (x *ControlStreamReponse) Reset() { } } -func (x *ControlStreamReponse) String() string { +func (x *ControlStreamResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControlStreamReponse) ProtoMessage() {} +func (*ControlStreamResponse) ProtoMessage() {} -func (x *ControlStreamReponse) ProtoReflect() protoreflect.Message { +func (x *ControlStreamResponse) ProtoReflect() protoreflect.Message { mi := &file_connector_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -347,164 +365,203 @@ func (x *ControlStreamReponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControlStreamReponse.ProtoReflect.Descriptor instead. -func (*ControlStreamReponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ControlStreamResponse.ProtoReflect.Descriptor instead. +func (*ControlStreamResponse) Descriptor() ([]byte, []int) { return file_connector_proto_rawDescGZIP(), []int{1} } -func (m *ControlStreamReponse) GetRequestType() isControlStreamReponse_RequestType { +func (m *ControlStreamResponse) GetRequestType() isControlStreamResponse_RequestType { if m != nil { return m.RequestType } return nil } -func (x *ControlStreamReponse) GetInit() *Init { - if x, ok := x.GetRequestType().(*ControlStreamReponse_Init); ok { +func (x *ControlStreamResponse) GetInit() *Init { + if x, ok := x.GetRequestType().(*ControlStreamResponse_Init); ok { return x.Init } return nil } -func (x *ControlStreamReponse) GetConnectorConfig() *ConnectorConfig { - if x, ok := x.GetRequestType().(*ControlStreamReponse_ConnectorConfig); ok { +func (x *ControlStreamResponse) GetConnectorConfig() *ConnectorConfig { + if x, ok := x.GetRequestType().(*ControlStreamResponse_ConnectorConfig); ok { return x.ConnectorConfig } return nil } -func (x *ControlStreamReponse) GetUpdateConfig() *UpdateConfig { - if x, ok := x.GetRequestType().(*ControlStreamReponse_UpdateConfig); ok { +func (x *ControlStreamResponse) GetUpdateConfig() *UpdateConfig { + if x, ok := x.GetRequestType().(*ControlStreamResponse_UpdateConfig); ok { return x.UpdateConfig } return nil } -func (x *ControlStreamReponse) GetHeartbeat() *HeartbeatResponse { - if x, ok := x.GetRequestType().(*ControlStreamReponse_Heartbeat); ok { +func (x *ControlStreamResponse) GetHeartbeat() *common.HeartbeatMessage { + if x, ok := x.GetRequestType().(*ControlStreamResponse_Heartbeat); ok { return x.Heartbeat } return nil } -func (x *ControlStreamReponse) GetTunnelCertificateSignResponse() *TunnelCertificateSignResponse { - if x, ok := x.GetRequestType().(*ControlStreamReponse_TunnelCertificateSignResponse); ok { +func (x *ControlStreamResponse) GetTunnelCertificateSignResponse() *TunnelCertificateSignResponse { + if x, ok := x.GetRequestType().(*ControlStreamResponse_TunnelCertificateSignResponse); ok { return x.TunnelCertificateSignResponse } return nil } -func (x *ControlStreamReponse) GetDiscover() *Discover { - if x, ok := x.GetRequestType().(*ControlStreamReponse_Discover); ok { +func (x *ControlStreamResponse) GetDiscover() *Discover { + if x, ok := x.GetRequestType().(*ControlStreamResponse_Discover); ok { return x.Discover } return nil } -func (x *ControlStreamReponse) GetStop() *Stop { - if x, ok := x.GetRequestType().(*ControlStreamReponse_Stop); ok { +func (x *ControlStreamResponse) GetStop() *Stop { + if x, ok := x.GetRequestType().(*ControlStreamResponse_Stop); ok { return x.Stop } return nil } -func (x *ControlStreamReponse) GetDisconnect() *Disconnect { - if x, ok := x.GetRequestType().(*ControlStreamReponse_Disconnect); ok { +func (x *ControlStreamResponse) GetDisconnect() *Disconnect { + if x, ok := x.GetRequestType().(*ControlStreamResponse_Disconnect); ok { return x.Disconnect } return nil } -func (x *ControlStreamReponse) GetAuthorize() *AuthorizeResponse { - if x, ok := x.GetRequestType().(*ControlStreamReponse_Authorize); ok { +func (x *ControlStreamResponse) GetAuthorize() *AuthorizeResponse { + if x, ok := x.GetRequestType().(*ControlStreamResponse_Authorize); ok { return x.Authorize } return nil } -func (x *ControlStreamReponse) GetSshCertificateSignResponse() *SshCertifcateSignResponse { - if x, ok := x.GetRequestType().(*ControlStreamReponse_SshCertificateSignResponse); ok { +func (x *ControlStreamResponse) GetSshCertificateSignResponse() *SshCertificateSignResponse { + if x, ok := x.GetRequestType().(*ControlStreamResponse_SshCertificateSignResponse); ok { return x.SshCertificateSignResponse } return nil } -func (x *ControlStreamReponse) GetCertifcateSignResponse() *CertifcateSignResponse { - if x, ok := x.GetRequestType().(*ControlStreamReponse_CertifcateSignResponse); ok { - return x.CertifcateSignResponse +func (x *ControlStreamResponse) GetCertificateSignResponse() *CertificateSignResponse { + if x, ok := x.GetRequestType().(*ControlStreamResponse_CertificateSignResponse); ok { + return x.CertificateSignResponse + } + return nil +} + +func (x *ControlStreamResponse) GetNetworkState() *common.NetworkStateMessage { + if x, ok := x.GetRequestType().(*ControlStreamResponse_NetworkState); ok { + return x.NetworkState + } + return nil +} + +func (x *ControlStreamResponse) GetPeerOnline() *common.PeerOnlineMessage { + if x, ok := x.GetRequestType().(*ControlStreamResponse_PeerOnline); ok { + return x.PeerOnline + } + return nil +} + +func (x *ControlStreamResponse) GetPeerOffline() *common.PeerOfflineMessage { + if x, ok := x.GetRequestType().(*ControlStreamResponse_PeerOffline); ok { + return x.PeerOffline } return nil } -type isControlStreamReponse_RequestType interface { - isControlStreamReponse_RequestType() +type isControlStreamResponse_RequestType interface { + isControlStreamResponse_RequestType() } -type ControlStreamReponse_Init struct { +type ControlStreamResponse_Init struct { Init *Init `protobuf:"bytes,1,opt,name=init,proto3,oneof"` } -type ControlStreamReponse_ConnectorConfig struct { +type ControlStreamResponse_ConnectorConfig struct { ConnectorConfig *ConnectorConfig `protobuf:"bytes,2,opt,name=connector_config,json=connectorConfig,proto3,oneof"` } -type ControlStreamReponse_UpdateConfig struct { +type ControlStreamResponse_UpdateConfig struct { UpdateConfig *UpdateConfig `protobuf:"bytes,3,opt,name=update_config,json=updateConfig,proto3,oneof"` } -type ControlStreamReponse_Heartbeat struct { - Heartbeat *HeartbeatResponse `protobuf:"bytes,4,opt,name=heartbeat,proto3,oneof"` +type ControlStreamResponse_Heartbeat struct { + Heartbeat *common.HeartbeatMessage `protobuf:"bytes,4,opt,name=heartbeat,proto3,oneof"` } -type ControlStreamReponse_TunnelCertificateSignResponse struct { +type ControlStreamResponse_TunnelCertificateSignResponse struct { TunnelCertificateSignResponse *TunnelCertificateSignResponse `protobuf:"bytes,5,opt,name=tunnel_certificate_sign_response,json=tunnelCertificateSignResponse,proto3,oneof"` } -type ControlStreamReponse_Discover struct { +type ControlStreamResponse_Discover struct { Discover *Discover `protobuf:"bytes,6,opt,name=discover,proto3,oneof"` } -type ControlStreamReponse_Stop struct { +type ControlStreamResponse_Stop struct { Stop *Stop `protobuf:"bytes,7,opt,name=stop,proto3,oneof"` } -type ControlStreamReponse_Disconnect struct { +type ControlStreamResponse_Disconnect struct { Disconnect *Disconnect `protobuf:"bytes,8,opt,name=disconnect,proto3,oneof"` } -type ControlStreamReponse_Authorize struct { +type ControlStreamResponse_Authorize struct { Authorize *AuthorizeResponse `protobuf:"bytes,9,opt,name=authorize,proto3,oneof"` } -type ControlStreamReponse_SshCertificateSignResponse struct { - SshCertificateSignResponse *SshCertifcateSignResponse `protobuf:"bytes,10,opt,name=ssh_certificate_sign_response,json=sshCertificateSignResponse,proto3,oneof"` +type ControlStreamResponse_SshCertificateSignResponse struct { + SshCertificateSignResponse *SshCertificateSignResponse `protobuf:"bytes,10,opt,name=ssh_certificate_sign_response,json=sshCertificateSignResponse,proto3,oneof"` +} + +type ControlStreamResponse_CertificateSignResponse struct { + CertificateSignResponse *CertificateSignResponse `protobuf:"bytes,11,opt,name=Certificate_sign_response,json=CertificateSignResponse,proto3,oneof"` +} + +type ControlStreamResponse_NetworkState struct { + NetworkState *common.NetworkStateMessage `protobuf:"bytes,12,opt,name=network_state,json=networkState,proto3,oneof"` } -type ControlStreamReponse_CertifcateSignResponse struct { - CertifcateSignResponse *CertifcateSignResponse `protobuf:"bytes,11,opt,name=certifcate_sign_response,json=certifcateSignResponse,proto3,oneof"` +type ControlStreamResponse_PeerOnline struct { + PeerOnline *common.PeerOnlineMessage `protobuf:"bytes,13,opt,name=peer_online,json=peerOnline,proto3,oneof"` } -func (*ControlStreamReponse_Init) isControlStreamReponse_RequestType() {} +type ControlStreamResponse_PeerOffline struct { + PeerOffline *common.PeerOfflineMessage `protobuf:"bytes,14,opt,name=peer_offline,json=peerOffline,proto3,oneof"` +} + +func (*ControlStreamResponse_Init) isControlStreamResponse_RequestType() {} + +func (*ControlStreamResponse_ConnectorConfig) isControlStreamResponse_RequestType() {} + +func (*ControlStreamResponse_UpdateConfig) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_ConnectorConfig) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_Heartbeat) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_UpdateConfig) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_TunnelCertificateSignResponse) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_Heartbeat) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_Discover) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_TunnelCertificateSignResponse) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_Stop) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_Discover) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_Disconnect) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_Stop) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_Authorize) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_Disconnect) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_SshCertificateSignResponse) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_Authorize) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_CertificateSignResponse) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_SshCertificateSignResponse) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_NetworkState) isControlStreamResponse_RequestType() {} -func (*ControlStreamReponse_CertifcateSignResponse) isControlStreamReponse_RequestType() {} +func (*ControlStreamResponse_PeerOnline) isControlStreamResponse_RequestType() {} + +func (*ControlStreamResponse_PeerOffline) isControlStreamResponse_RequestType() {} type Organization struct { state protoimpl.MessageState @@ -1052,82 +1109,6 @@ func (x *Config) GetPlugins() bool { return false } -type HeartbeatRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *HeartbeatRequest) Reset() { - *x = HeartbeatRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HeartbeatRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HeartbeatRequest) ProtoMessage() {} - -func (x *HeartbeatRequest) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[10] - 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 HeartbeatRequest.ProtoReflect.Descriptor instead. -func (*HeartbeatRequest) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{10} -} - -type HeartbeatResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *HeartbeatResponse) Reset() { - *x = HeartbeatResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HeartbeatResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HeartbeatResponse) ProtoMessage() {} - -func (x *HeartbeatResponse) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[11] - 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 HeartbeatResponse.ProtoReflect.Descriptor instead. -func (*HeartbeatResponse) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{11} -} - type PluginDiscoveryResults struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1144,7 +1125,7 @@ type PluginDiscoveryResults struct { func (x *PluginDiscoveryResults) Reset() { *x = PluginDiscoveryResults{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[12] + mi := &file_connector_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1138,7 @@ func (x *PluginDiscoveryResults) String() string { func (*PluginDiscoveryResults) ProtoMessage() {} func (x *PluginDiscoveryResults) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[12] + mi := &file_connector_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1151,7 @@ func (x *PluginDiscoveryResults) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginDiscoveryResults.ProtoReflect.Descriptor instead. func (*PluginDiscoveryResults) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{12} + return file_connector_proto_rawDescGZIP(), []int{10} } func (x *PluginDiscoveryResults) GetPluginId() string { @@ -1228,7 +1209,7 @@ type PluginDiscoveryResultsMetadata struct { func (x *PluginDiscoveryResultsMetadata) Reset() { *x = PluginDiscoveryResultsMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[13] + mi := &file_connector_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1241,7 +1222,7 @@ func (x *PluginDiscoveryResultsMetadata) String() string { func (*PluginDiscoveryResultsMetadata) ProtoMessage() {} func (x *PluginDiscoveryResultsMetadata) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[13] + mi := &file_connector_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1254,7 +1235,7 @@ func (x *PluginDiscoveryResultsMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginDiscoveryResultsMetadata.ProtoReflect.Descriptor instead. func (*PluginDiscoveryResultsMetadata) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{13} + return file_connector_proto_rawDescGZIP(), []int{11} } func (x *PluginDiscoveryResultsMetadata) GetDiscoveryId() string { @@ -1290,7 +1271,7 @@ type Tag struct { func (x *Tag) Reset() { *x = Tag{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[14] + mi := &file_connector_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1303,7 +1284,7 @@ func (x *Tag) String() string { func (*Tag) ProtoMessage() {} func (x *Tag) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[14] + mi := &file_connector_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1316,7 +1297,7 @@ func (x *Tag) ProtoReflect() protoreflect.Message { // Deprecated: Use Tag.ProtoReflect.Descriptor instead. func (*Tag) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{14} + return file_connector_proto_rawDescGZIP(), []int{12} } func (x *Tag) GetKey() string { @@ -1347,7 +1328,7 @@ type SocketConfig struct { func (x *SocketConfig) Reset() { *x = SocketConfig{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[15] + mi := &file_connector_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1360,7 +1341,7 @@ func (x *SocketConfig) String() string { func (*SocketConfig) ProtoMessage() {} func (x *SocketConfig) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[15] + mi := &file_connector_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1373,7 +1354,7 @@ func (x *SocketConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SocketConfig.ProtoReflect.Descriptor instead. func (*SocketConfig) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{15} + return file_connector_proto_rawDescGZIP(), []int{13} } func (x *SocketConfig) GetId() string { @@ -1409,15 +1390,16 @@ type ConnectorConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - HeartbeatInterval int32 `protobuf:"varint,2,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` - Organization *Organization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + HeartbeatInterval int32 `protobuf:"varint,2,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` + Organization *Organization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` + PrivateNetworkEnabled bool `protobuf:"varint,4,opt,name=private_network_enabled,json=privateNetworkEnabled,proto3" json:"private_network_enabled,omitempty"` } func (x *ConnectorConfig) Reset() { *x = ConnectorConfig{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[16] + mi := &file_connector_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1430,7 +1412,7 @@ func (x *ConnectorConfig) String() string { func (*ConnectorConfig) ProtoMessage() {} func (x *ConnectorConfig) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[16] + mi := &file_connector_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1443,7 +1425,7 @@ func (x *ConnectorConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectorConfig.ProtoReflect.Descriptor instead. func (*ConnectorConfig) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{16} + return file_connector_proto_rawDescGZIP(), []int{14} } func (x *ConnectorConfig) GetName() string { @@ -1467,6 +1449,13 @@ func (x *ConnectorConfig) GetOrganization() *Organization { return nil } +func (x *ConnectorConfig) GetPrivateNetworkEnabled() bool { + if x != nil { + return x.PrivateNetworkEnabled + } + return false +} + type PluginConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1481,7 +1470,7 @@ type PluginConfig struct { func (x *PluginConfig) Reset() { *x = PluginConfig{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[17] + mi := &file_connector_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1494,7 +1483,7 @@ func (x *PluginConfig) String() string { func (*PluginConfig) ProtoMessage() {} func (x *PluginConfig) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[17] + mi := &file_connector_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1507,7 +1496,7 @@ func (x *PluginConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfig.ProtoReflect.Descriptor instead. func (*PluginConfig) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{17} + return file_connector_proto_rawDescGZIP(), []int{15} } func (x *PluginConfig) GetId() string { @@ -1550,7 +1539,7 @@ type Discover struct { func (x *Discover) Reset() { *x = Discover{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[18] + mi := &file_connector_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1563,7 +1552,7 @@ func (x *Discover) String() string { func (*Discover) ProtoMessage() {} func (x *Discover) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[18] + mi := &file_connector_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1576,7 +1565,7 @@ func (x *Discover) ProtoReflect() protoreflect.Message { // Deprecated: Use Discover.ProtoReflect.Descriptor instead. func (*Discover) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{18} + return file_connector_proto_rawDescGZIP(), []int{16} } func (x *Discover) GetId() string { @@ -1604,7 +1593,7 @@ type Stop struct { func (x *Stop) Reset() { *x = Stop{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[19] + mi := &file_connector_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1617,7 +1606,7 @@ func (x *Stop) String() string { func (*Stop) ProtoMessage() {} func (x *Stop) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[19] + mi := &file_connector_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1630,7 +1619,7 @@ func (x *Stop) ProtoReflect() protoreflect.Message { // Deprecated: Use Stop.ProtoReflect.Descriptor instead. func (*Stop) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{19} + return file_connector_proto_rawDescGZIP(), []int{17} } func (x *Stop) GetReason() string { @@ -1651,7 +1640,7 @@ type Disconnect struct { func (x *Disconnect) Reset() { *x = Disconnect{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[20] + mi := &file_connector_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1664,7 +1653,7 @@ func (x *Disconnect) String() string { func (*Disconnect) ProtoMessage() {} func (x *Disconnect) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[20] + mi := &file_connector_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1677,7 +1666,7 @@ func (x *Disconnect) ProtoReflect() protoreflect.Message { // Deprecated: Use Disconnect.ProtoReflect.Descriptor instead. func (*Disconnect) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{20} + return file_connector_proto_rawDescGZIP(), []int{18} } func (x *Disconnect) GetReason() string { @@ -1703,7 +1692,7 @@ type AuthorizeRequest struct { func (x *AuthorizeRequest) Reset() { *x = AuthorizeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[21] + mi := &file_connector_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1716,7 +1705,7 @@ func (x *AuthorizeRequest) String() string { func (*AuthorizeRequest) ProtoMessage() {} func (x *AuthorizeRequest) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[21] + mi := &file_connector_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1718,7 @@ func (x *AuthorizeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizeRequest.ProtoReflect.Descriptor instead. func (*AuthorizeRequest) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{21} + return file_connector_proto_rawDescGZIP(), []int{19} } func (x *AuthorizeRequest) GetRequestId() string { @@ -1785,7 +1774,7 @@ type ActionList struct { func (x *ActionList) Reset() { *x = ActionList{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[22] + mi := &file_connector_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1798,7 +1787,7 @@ func (x *ActionList) String() string { func (*ActionList) ProtoMessage() {} func (x *ActionList) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[22] + mi := &file_connector_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1811,7 +1800,7 @@ func (x *ActionList) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionList.ProtoReflect.Descriptor instead. func (*ActionList) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{22} + return file_connector_proto_rawDescGZIP(), []int{20} } func (x *ActionList) GetValues() []string { @@ -1832,7 +1821,7 @@ type Permissions struct { func (x *Permissions) Reset() { *x = Permissions{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[23] + mi := &file_connector_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1845,7 +1834,7 @@ func (x *Permissions) String() string { func (*Permissions) ProtoMessage() {} func (x *Permissions) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[23] + mi := &file_connector_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1858,7 +1847,7 @@ func (x *Permissions) ProtoReflect() protoreflect.Message { // Deprecated: Use Permissions.ProtoReflect.Descriptor instead. func (*Permissions) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{23} + return file_connector_proto_rawDescGZIP(), []int{21} } func (x *Permissions) GetPermissions() []*structpb.Struct { @@ -1879,7 +1868,7 @@ type InfoList struct { func (x *InfoList) Reset() { *x = InfoList{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[24] + mi := &file_connector_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1892,7 +1881,7 @@ func (x *InfoList) String() string { func (*InfoList) ProtoMessage() {} func (x *InfoList) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[24] + mi := &file_connector_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1905,7 +1894,7 @@ func (x *InfoList) ProtoReflect() protoreflect.Message { // Deprecated: Use InfoList.ProtoReflect.Descriptor instead. func (*InfoList) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{24} + return file_connector_proto_rawDescGZIP(), []int{22} } func (x *InfoList) GetValues() []string { @@ -1929,7 +1918,7 @@ type AuthorizeResponse struct { func (x *AuthorizeResponse) Reset() { *x = AuthorizeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[25] + mi := &file_connector_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1942,7 +1931,7 @@ func (x *AuthorizeResponse) String() string { func (*AuthorizeResponse) ProtoMessage() {} func (x *AuthorizeResponse) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[25] + mi := &file_connector_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1955,7 +1944,7 @@ func (x *AuthorizeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizeResponse.ProtoReflect.Descriptor instead. func (*AuthorizeResponse) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{25} + return file_connector_proto_rawDescGZIP(), []int{23} } func (x *AuthorizeResponse) GetRequestId() string { @@ -2001,7 +1990,7 @@ type SessionUpdateRequest struct { func (x *SessionUpdateRequest) Reset() { *x = SessionUpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[26] + mi := &file_connector_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2014,7 +2003,7 @@ func (x *SessionUpdateRequest) String() string { func (*SessionUpdateRequest) ProtoMessage() {} func (x *SessionUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[26] + mi := &file_connector_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2027,7 +2016,7 @@ func (x *SessionUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionUpdateRequest.ProtoReflect.Descriptor instead. func (*SessionUpdateRequest) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{26} + return file_connector_proto_rawDescGZIP(), []int{24} } func (x *SessionUpdateRequest) GetSessionKey() string { @@ -2080,7 +2069,7 @@ type SessionEvent struct { func (x *SessionEvent) Reset() { *x = SessionEvent{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[27] + mi := &file_connector_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2093,7 +2082,7 @@ func (x *SessionEvent) String() string { func (*SessionEvent) ProtoMessage() {} func (x *SessionEvent) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[27] + mi := &file_connector_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2106,7 +2095,7 @@ func (x *SessionEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionEvent.ProtoReflect.Descriptor instead. func (*SessionEvent) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{27} + return file_connector_proto_rawDescGZIP(), []int{25} } func (x *SessionEvent) GetSessionKey() string { @@ -2144,7 +2133,7 @@ func (x *SessionEvent) GetMetadata() string { return "" } -type SshCertifcateSignRequest struct { +type SshCertificateSignRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2157,23 +2146,23 @@ type SshCertifcateSignRequest struct { Ticket []byte `protobuf:"bytes,6,opt,name=ticket,proto3" json:"ticket,omitempty"` } -func (x *SshCertifcateSignRequest) Reset() { - *x = SshCertifcateSignRequest{} +func (x *SshCertificateSignRequest) Reset() { + *x = SshCertificateSignRequest{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[28] + mi := &file_connector_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SshCertifcateSignRequest) String() string { +func (x *SshCertificateSignRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SshCertifcateSignRequest) ProtoMessage() {} +func (*SshCertificateSignRequest) ProtoMessage() {} -func (x *SshCertifcateSignRequest) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[28] +func (x *SshCertificateSignRequest) ProtoReflect() protoreflect.Message { + mi := &file_connector_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2184,54 +2173,54 @@ func (x *SshCertifcateSignRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SshCertifcateSignRequest.ProtoReflect.Descriptor instead. -func (*SshCertifcateSignRequest) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{28} +// Deprecated: Use SshCertificateSignRequest.ProtoReflect.Descriptor instead. +func (*SshCertificateSignRequest) Descriptor() ([]byte, []int) { + return file_connector_proto_rawDescGZIP(), []int{26} } -func (x *SshCertifcateSignRequest) GetRequestId() string { +func (x *SshCertificateSignRequest) GetRequestId() string { if x != nil { return x.RequestId } return "" } -func (x *SshCertifcateSignRequest) GetSocketId() string { +func (x *SshCertificateSignRequest) GetSocketId() string { if x != nil { return x.SocketId } return "" } -func (x *SshCertifcateSignRequest) GetSessionKey() string { +func (x *SshCertificateSignRequest) GetSessionKey() string { if x != nil { return x.SessionKey } return "" } -func (x *SshCertifcateSignRequest) GetUserEmail() string { +func (x *SshCertificateSignRequest) GetUserEmail() string { if x != nil { return x.UserEmail } return "" } -func (x *SshCertifcateSignRequest) GetPublicKey() []byte { +func (x *SshCertificateSignRequest) GetPublicKey() []byte { if x != nil { return x.PublicKey } return nil } -func (x *SshCertifcateSignRequest) GetTicket() []byte { +func (x *SshCertificateSignRequest) GetTicket() []byte { if x != nil { return x.Ticket } return nil } -type SshCertifcateSignResponse struct { +type SshCertificateSignResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2240,23 +2229,23 @@ type SshCertifcateSignResponse struct { Certificate []byte `protobuf:"bytes,2,opt,name=certificate,proto3" json:"certificate,omitempty"` } -func (x *SshCertifcateSignResponse) Reset() { - *x = SshCertifcateSignResponse{} +func (x *SshCertificateSignResponse) Reset() { + *x = SshCertificateSignResponse{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[29] + mi := &file_connector_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SshCertifcateSignResponse) String() string { +func (x *SshCertificateSignResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SshCertifcateSignResponse) ProtoMessage() {} +func (*SshCertificateSignResponse) ProtoMessage() {} -func (x *SshCertifcateSignResponse) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[29] +func (x *SshCertificateSignResponse) ProtoReflect() protoreflect.Message { + mi := &file_connector_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2267,19 +2256,19 @@ func (x *SshCertifcateSignResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SshCertifcateSignResponse.ProtoReflect.Descriptor instead. -func (*SshCertifcateSignResponse) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{29} +// Deprecated: Use SshCertificateSignResponse.ProtoReflect.Descriptor instead. +func (*SshCertificateSignResponse) Descriptor() ([]byte, []int) { + return file_connector_proto_rawDescGZIP(), []int{27} } -func (x *SshCertifcateSignResponse) GetRequestId() string { +func (x *SshCertificateSignResponse) GetRequestId() string { if x != nil { return x.RequestId } return "" } -func (x *SshCertifcateSignResponse) GetCertificate() []byte { +func (x *SshCertificateSignResponse) GetCertificate() []byte { if x != nil { return x.Certificate } @@ -2300,7 +2289,7 @@ type UploadRecording struct { func (x *UploadRecording) Reset() { *x = UploadRecording{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[30] + mi := &file_connector_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2313,7 +2302,7 @@ func (x *UploadRecording) String() string { func (*UploadRecording) ProtoMessage() {} func (x *UploadRecording) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[30] + mi := &file_connector_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2326,7 +2315,7 @@ func (x *UploadRecording) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadRecording.ProtoReflect.Descriptor instead. func (*UploadRecording) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{30} + return file_connector_proto_rawDescGZIP(), []int{28} } func (x *UploadRecording) GetSessionKey() string { @@ -2357,7 +2346,7 @@ func (x *UploadRecording) GetRecordingType() string { return "" } -type CertifcateSignRequest struct { +type CertificateSignRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2366,23 +2355,23 @@ type CertifcateSignRequest struct { CertificateSigningRequest []byte `protobuf:"bytes,2,opt,name=certificate_signing_request,json=certificateSigningRequest,proto3" json:"certificate_signing_request,omitempty"` } -func (x *CertifcateSignRequest) Reset() { - *x = CertifcateSignRequest{} +func (x *CertificateSignRequest) Reset() { + *x = CertificateSignRequest{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[31] + mi := &file_connector_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CertifcateSignRequest) String() string { +func (x *CertificateSignRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CertifcateSignRequest) ProtoMessage() {} +func (*CertificateSignRequest) ProtoMessage() {} -func (x *CertifcateSignRequest) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[31] +func (x *CertificateSignRequest) ProtoReflect() protoreflect.Message { + mi := &file_connector_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2393,26 +2382,26 @@ func (x *CertifcateSignRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CertifcateSignRequest.ProtoReflect.Descriptor instead. -func (*CertifcateSignRequest) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{31} +// Deprecated: Use CertificateSignRequest.ProtoReflect.Descriptor instead. +func (*CertificateSignRequest) Descriptor() ([]byte, []int) { + return file_connector_proto_rawDescGZIP(), []int{29} } -func (x *CertifcateSignRequest) GetRequestId() string { +func (x *CertificateSignRequest) GetRequestId() string { if x != nil { return x.RequestId } return "" } -func (x *CertifcateSignRequest) GetCertificateSigningRequest() []byte { +func (x *CertificateSignRequest) GetCertificateSigningRequest() []byte { if x != nil { return x.CertificateSigningRequest } return nil } -type CertifcateSignResponse struct { +type CertificateSignResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2421,23 +2410,23 @@ type CertifcateSignResponse struct { Certificate []byte `protobuf:"bytes,2,opt,name=certificate,proto3" json:"certificate,omitempty"` } -func (x *CertifcateSignResponse) Reset() { - *x = CertifcateSignResponse{} +func (x *CertificateSignResponse) Reset() { + *x = CertificateSignResponse{} if protoimpl.UnsafeEnabled { - mi := &file_connector_proto_msgTypes[32] + mi := &file_connector_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CertifcateSignResponse) String() string { +func (x *CertificateSignResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CertifcateSignResponse) ProtoMessage() {} +func (*CertificateSignResponse) ProtoMessage() {} -func (x *CertifcateSignResponse) ProtoReflect() protoreflect.Message { - mi := &file_connector_proto_msgTypes[32] +func (x *CertificateSignResponse) ProtoReflect() protoreflect.Message { + mi := &file_connector_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2448,19 +2437,19 @@ func (x *CertifcateSignResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CertifcateSignResponse.ProtoReflect.Descriptor instead. -func (*CertifcateSignResponse) Descriptor() ([]byte, []int) { - return file_connector_proto_rawDescGZIP(), []int{32} +// Deprecated: Use CertificateSignResponse.ProtoReflect.Descriptor instead. +func (*CertificateSignResponse) Descriptor() ([]byte, []int) { + return file_connector_proto_rawDescGZIP(), []int{30} } -func (x *CertifcateSignResponse) GetRequestId() string { +func (x *CertificateSignResponse) GetRequestId() string { if x != nil { return x.RequestId } return "" } -func (x *CertifcateSignResponse) GetCertificate() []byte { +func (x *CertificateSignResponse) GetCertificate() []byte { if x != nil { return x.Certificate } @@ -2475,383 +2464,407 @@ var file_connector_proto_rawDesc = []byte{ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x07, 0x0a, - 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x12, 0x5e, 0x0a, 0x18, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x16, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x12, 0x71, 0x0a, 0x1f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x67, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, - 0x67, 0x0a, 0x1c, 0x73, 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x19, 0x73, - 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x48, - 0x00, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x5b, 0x0a, 0x17, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x86, 0x08, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x09, 0x68, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x48, 0x00, 0x52, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, + 0x5e, 0x0a, 0x18, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x16, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x71, 0x0a, 0x1f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x23, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, + 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, + 0x1c, 0x73, 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x19, 0x73, 0x73, + 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, + 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x5e, 0x0a, 0x18, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3f, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x42, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, - 0xae, 0x06, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x69, 0x6e, 0x69, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x69, 0x74, - 0x12, 0x48, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x09, 0x68, - 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, - 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, - 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x74, 0x0a, 0x20, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, - 0x00, 0x52, 0x1d, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x32, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x6f, 0x70, 0x48, 0x00, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x38, 0x0a, 0x0a, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x6a, 0x0a, 0x1d, 0x73, 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5e, 0x0a, 0x18, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x8d, 0x01, 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, - 0x22, 0x79, 0x0a, 0x1c, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x7a, 0x0a, 0x1d, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x16, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x10, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x0d, 0x0a, + 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9d, 0x08, 0x0a, + 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x48, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x09, 0x68, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x74, + 0x0a, 0x20, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1d, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x48, 0x00, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, + 0x12, 0x38, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0a, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x6b, 0x0a, 0x1d, 0x73, 0x73, 0x68, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, + 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x73, + 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x73, 0x68, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x19, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x17, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x65, 0x72, + 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x0d, 0x0a, + 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x8d, 0x01, 0x0a, + 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, + 0x3b, 0x0a, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0c, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x22, 0x79, 0x0a, 0x1c, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x68, 0x6f, 0x73, 0x74, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x68, 0x6f, 0x73, 0x74, 0x6b, 0x65, 0x79, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, - 0x12, 0x46, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x07, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, - 0x22, 0xca, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x12, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, - 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x0c, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, - 0x0a, 0x0d, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, - 0x00, 0x52, 0x0c, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x0c, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd2, 0x01, - 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x40, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x5a, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, - 0x22, 0x12, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x16, 0x50, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, - 0x12, 0x46, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x1e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2d, 0x0a, 0x03, 0x54, - 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x77, 0x0a, 0x0c, 0x53, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x68, - 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x22, 0x39, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x04, - 0x53, 0x74, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x24, 0x0a, 0x0a, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x24, - 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x22, - 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x22, 0xa0, 0x04, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, + 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x7a, 0x0a, 0x1d, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x6f, 0x73, + 0x74, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, + 0x6b, 0x65, 0x79, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x46, 0x0a, 0x10, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x07, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xca, 0x01, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x03, 0x4c, 0x6f, + 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x38, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x40, + 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x5a, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x6f, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x87, 0x02, 0x0a, + 0x16, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x1e, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2d, + 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x77, 0x0a, + 0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xca, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, + 0x0a, 0x12, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x22, 0x77, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x39, 0x0a, 0x08, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x24, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xc9, 0x01, + 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x0a, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, + 0x48, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, + 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x70, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x22, 0x0a, 0x08, 0x69, 0x6e, 0x66, + 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xa0, 0x04, + 0x0a, 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x62, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0b, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x12, 0x50, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x59, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4d, 0x0a, - 0x09, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, - 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x66, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, - 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x0c, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, - 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xcd, 0x01, 0x0a, 0x18, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, - 0x63, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x74, 0x22, 0x5c, 0x0a, 0x19, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, - 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x22, 0x9a, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x76, 0x0a, - 0x15, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x16, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x63, - 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x2a, 0x37, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x12, 0x09, - 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x03, 0x32, 0x6b, 0x0a, 0x10, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, - 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x20, - 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x6e, + 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x59, 0x0a, + 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, + 0x76, 0x31, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4d, 0x0a, 0x09, 0x49, 0x6e, 0x66, 0x6f, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x10, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xce, 0x01, + 0x0a, 0x19, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x5d, + 0x0a, 0x1a, 0x53, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x9a, 0x01, + 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, + 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x77, 0x0a, 0x16, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x5a, 0x0a, 0x17, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2a, + 0x37, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, + 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x03, 0x32, 0x6c, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0d, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x20, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x21, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x7a, 0x65, 0x72, 0x6f, 0x2f, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, @@ -2871,11 +2884,11 @@ func file_connector_proto_rawDescGZIP() []byte { } var file_connector_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_connector_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_connector_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_connector_proto_goTypes = []any{ (Action)(0), // 0: border0.v1.Action (*ControlStreamRequest)(nil), // 1: border0.v1.ControlStreamRequest - (*ControlStreamReponse)(nil), // 2: border0.v1.ControlStreamReponse + (*ControlStreamResponse)(nil), // 2: border0.v1.ControlStreamResponse (*Organization)(nil), // 3: border0.v1.Organization (*TunnelCertificateSignRequest)(nil), // 4: border0.v1.TunnelCertificateSignRequest (*TunnelCertificateSignResponse)(nil), // 5: border0.v1.TunnelCertificateSignResponse @@ -2884,89 +2897,96 @@ var file_connector_proto_goTypes = []any{ (*Log)(nil), // 8: border0.v1.Log (*ConnectorMetadata)(nil), // 9: border0.v1.ConnectorMetadata (*Config)(nil), // 10: border0.v1.Config - (*HeartbeatRequest)(nil), // 11: border0.v1.HeartbeatRequest - (*HeartbeatResponse)(nil), // 12: border0.v1.HeartbeatResponse - (*PluginDiscoveryResults)(nil), // 13: border0.v1.PluginDiscoveryResults - (*PluginDiscoveryResultsMetadata)(nil), // 14: border0.v1.PluginDiscoveryResultsMetadata - (*Tag)(nil), // 15: border0.v1.Tag - (*SocketConfig)(nil), // 16: border0.v1.SocketConfig - (*ConnectorConfig)(nil), // 17: border0.v1.ConnectorConfig - (*PluginConfig)(nil), // 18: border0.v1.PluginConfig - (*Discover)(nil), // 19: border0.v1.Discover - (*Stop)(nil), // 20: border0.v1.Stop - (*Disconnect)(nil), // 21: border0.v1.Disconnect - (*AuthorizeRequest)(nil), // 22: border0.v1.AuthorizeRequest - (*ActionList)(nil), // 23: border0.v1.actionList - (*Permissions)(nil), // 24: border0.v1.Permissions - (*InfoList)(nil), // 25: border0.v1.infoList - (*AuthorizeResponse)(nil), // 26: border0.v1.AuthorizeResponse - (*SessionUpdateRequest)(nil), // 27: border0.v1.SessionUpdateRequest - (*SessionEvent)(nil), // 28: border0.v1.SessionEvent - (*SshCertifcateSignRequest)(nil), // 29: border0.v1.SshCertifcateSignRequest - (*SshCertifcateSignResponse)(nil), // 30: border0.v1.SshCertifcateSignResponse - (*UploadRecording)(nil), // 31: border0.v1.UploadRecording - (*CertifcateSignRequest)(nil), // 32: border0.v1.CertifcateSignRequest - (*CertifcateSignResponse)(nil), // 33: border0.v1.CertifcateSignResponse - nil, // 34: border0.v1.AuthorizeResponse.AllowedActionsEntry - nil, // 35: border0.v1.AuthorizeResponse.InfoEntry - nil, // 36: border0.v1.AuthorizeResponse.PermissionsEntry - (*structpb.Struct)(nil), // 37: google.protobuf.Struct - (*timestamppb.Timestamp)(nil), // 38: google.protobuf.Timestamp + (*PluginDiscoveryResults)(nil), // 11: border0.v1.PluginDiscoveryResults + (*PluginDiscoveryResultsMetadata)(nil), // 12: border0.v1.PluginDiscoveryResultsMetadata + (*Tag)(nil), // 13: border0.v1.Tag + (*SocketConfig)(nil), // 14: border0.v1.SocketConfig + (*ConnectorConfig)(nil), // 15: border0.v1.ConnectorConfig + (*PluginConfig)(nil), // 16: border0.v1.PluginConfig + (*Discover)(nil), // 17: border0.v1.Discover + (*Stop)(nil), // 18: border0.v1.Stop + (*Disconnect)(nil), // 19: border0.v1.Disconnect + (*AuthorizeRequest)(nil), // 20: border0.v1.AuthorizeRequest + (*ActionList)(nil), // 21: border0.v1.actionList + (*Permissions)(nil), // 22: border0.v1.Permissions + (*InfoList)(nil), // 23: border0.v1.infoList + (*AuthorizeResponse)(nil), // 24: border0.v1.AuthorizeResponse + (*SessionUpdateRequest)(nil), // 25: border0.v1.SessionUpdateRequest + (*SessionEvent)(nil), // 26: border0.v1.SessionEvent + (*SshCertificateSignRequest)(nil), // 27: border0.v1.SshCertificateSignRequest + (*SshCertificateSignResponse)(nil), // 28: border0.v1.SshCertificateSignResponse + (*UploadRecording)(nil), // 29: border0.v1.UploadRecording + (*CertificateSignRequest)(nil), // 30: border0.v1.CertificateSignRequest + (*CertificateSignResponse)(nil), // 31: border0.v1.CertificateSignResponse + nil, // 32: border0.v1.AuthorizeResponse.AllowedActionsEntry + nil, // 33: border0.v1.AuthorizeResponse.InfoEntry + nil, // 34: border0.v1.AuthorizeResponse.PermissionsEntry + (*common.HeartbeatMessage)(nil), // 35: border0.common.v1.HeartbeatMessage + (*common.DiscoveryDetailsMessage)(nil), // 36: border0.common.v1.DiscoveryDetailsMessage + (*common.NetworkStateMessage)(nil), // 37: border0.common.v1.NetworkStateMessage + (*common.PeerOnlineMessage)(nil), // 38: border0.common.v1.PeerOnlineMessage + (*common.PeerOfflineMessage)(nil), // 39: border0.common.v1.PeerOfflineMessage + (*structpb.Struct)(nil), // 40: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 41: google.protobuf.Timestamp } var file_connector_proto_depIdxs = []int32{ 10, // 0: border0.v1.ControlStreamRequest.config:type_name -> border0.v1.Config - 11, // 1: border0.v1.ControlStreamRequest.heartbeat:type_name -> border0.v1.HeartbeatRequest - 13, // 2: border0.v1.ControlStreamRequest.plugin_discovery_results:type_name -> border0.v1.PluginDiscoveryResults + 35, // 1: border0.v1.ControlStreamRequest.heartbeat:type_name -> border0.common.v1.HeartbeatMessage + 11, // 2: border0.v1.ControlStreamRequest.plugin_discovery_results:type_name -> border0.v1.PluginDiscoveryResults 4, // 3: border0.v1.ControlStreamRequest.tunnel_certificate_sign_request:type_name -> border0.v1.TunnelCertificateSignRequest 8, // 4: border0.v1.ControlStreamRequest.log:type_name -> border0.v1.Log 9, // 5: border0.v1.ControlStreamRequest.metadata:type_name -> border0.v1.ConnectorMetadata - 22, // 6: border0.v1.ControlStreamRequest.authorize:type_name -> border0.v1.AuthorizeRequest - 27, // 7: border0.v1.ControlStreamRequest.session_update:type_name -> border0.v1.SessionUpdateRequest - 29, // 8: border0.v1.ControlStreamRequest.ssh_certificate_sign_request:type_name -> border0.v1.SshCertifcateSignRequest - 31, // 9: border0.v1.ControlStreamRequest.upload_recording:type_name -> border0.v1.UploadRecording - 32, // 10: border0.v1.ControlStreamRequest.certifcate_sign_request:type_name -> border0.v1.CertifcateSignRequest - 28, // 11: border0.v1.ControlStreamRequest.session_event:type_name -> border0.v1.SessionEvent - 6, // 12: border0.v1.ControlStreamReponse.init:type_name -> border0.v1.Init - 17, // 13: border0.v1.ControlStreamReponse.connector_config:type_name -> border0.v1.ConnectorConfig - 7, // 14: border0.v1.ControlStreamReponse.update_config:type_name -> border0.v1.UpdateConfig - 12, // 15: border0.v1.ControlStreamReponse.heartbeat:type_name -> border0.v1.HeartbeatResponse - 5, // 16: border0.v1.ControlStreamReponse.tunnel_certificate_sign_response:type_name -> border0.v1.TunnelCertificateSignResponse - 19, // 17: border0.v1.ControlStreamReponse.discover:type_name -> border0.v1.Discover - 20, // 18: border0.v1.ControlStreamReponse.stop:type_name -> border0.v1.Stop - 21, // 19: border0.v1.ControlStreamReponse.disconnect:type_name -> border0.v1.Disconnect - 26, // 20: border0.v1.ControlStreamReponse.authorize:type_name -> border0.v1.AuthorizeResponse - 30, // 21: border0.v1.ControlStreamReponse.ssh_certificate_sign_response:type_name -> border0.v1.SshCertifcateSignResponse - 33, // 22: border0.v1.ControlStreamReponse.certifcate_sign_response:type_name -> border0.v1.CertifcateSignResponse - 37, // 23: border0.v1.Organization.certificates:type_name -> google.protobuf.Struct - 17, // 24: border0.v1.Init.connector_config:type_name -> border0.v1.ConnectorConfig - 16, // 25: border0.v1.Init.sockets:type_name -> border0.v1.SocketConfig - 18, // 26: border0.v1.Init.plugins:type_name -> border0.v1.PluginConfig - 0, // 27: border0.v1.UpdateConfig.action:type_name -> border0.v1.Action - 18, // 28: border0.v1.UpdateConfig.plugin_config:type_name -> border0.v1.PluginConfig - 16, // 29: border0.v1.UpdateConfig.socket_config:type_name -> border0.v1.SocketConfig - 38, // 30: border0.v1.Log.timestamp:type_name -> google.protobuf.Timestamp - 37, // 31: border0.v1.ConnectorMetadata.data:type_name -> google.protobuf.Struct - 14, // 32: border0.v1.PluginDiscoveryResults.metadata:type_name -> border0.v1.PluginDiscoveryResultsMetadata - 37, // 33: border0.v1.PluginDiscoveryResults.resources:type_name -> google.protobuf.Struct - 38, // 34: border0.v1.PluginDiscoveryResultsMetadata.started_at:type_name -> google.protobuf.Timestamp - 38, // 35: border0.v1.PluginDiscoveryResultsMetadata.ended_at:type_name -> google.protobuf.Timestamp - 37, // 36: border0.v1.SocketConfig.config:type_name -> google.protobuf.Struct - 3, // 37: border0.v1.ConnectorConfig.organization:type_name -> border0.v1.Organization - 37, // 38: border0.v1.PluginConfig.config:type_name -> google.protobuf.Struct - 37, // 39: border0.v1.Permissions.permissions:type_name -> google.protobuf.Struct - 34, // 40: border0.v1.AuthorizeResponse.allowed_actions:type_name -> border0.v1.AuthorizeResponse.AllowedActionsEntry - 35, // 41: border0.v1.AuthorizeResponse.info:type_name -> border0.v1.AuthorizeResponse.InfoEntry - 36, // 42: border0.v1.AuthorizeResponse.permissions:type_name -> border0.v1.AuthorizeResponse.PermissionsEntry - 23, // 43: border0.v1.AuthorizeResponse.AllowedActionsEntry.value:type_name -> border0.v1.actionList - 25, // 44: border0.v1.AuthorizeResponse.InfoEntry.value:type_name -> border0.v1.infoList - 24, // 45: border0.v1.AuthorizeResponse.PermissionsEntry.value:type_name -> border0.v1.Permissions - 1, // 46: border0.v1.ConnectorService.ControlStream:input_type -> border0.v1.ControlStreamRequest - 2, // 47: border0.v1.ConnectorService.ControlStream:output_type -> border0.v1.ControlStreamReponse - 47, // [47:48] is the sub-list for method output_type - 46, // [46:47] is the sub-list for method input_type - 46, // [46:46] is the sub-list for extension type_name - 46, // [46:46] is the sub-list for extension extendee - 0, // [0:46] is the sub-list for field type_name + 20, // 6: border0.v1.ControlStreamRequest.authorize:type_name -> border0.v1.AuthorizeRequest + 25, // 7: border0.v1.ControlStreamRequest.session_update:type_name -> border0.v1.SessionUpdateRequest + 27, // 8: border0.v1.ControlStreamRequest.ssh_certificate_sign_request:type_name -> border0.v1.SshCertificateSignRequest + 29, // 9: border0.v1.ControlStreamRequest.upload_recording:type_name -> border0.v1.UploadRecording + 30, // 10: border0.v1.ControlStreamRequest.Certificate_sign_request:type_name -> border0.v1.CertificateSignRequest + 26, // 11: border0.v1.ControlStreamRequest.session_event:type_name -> border0.v1.SessionEvent + 36, // 12: border0.v1.ControlStreamRequest.discovery_details:type_name -> border0.common.v1.DiscoveryDetailsMessage + 6, // 13: border0.v1.ControlStreamResponse.init:type_name -> border0.v1.Init + 15, // 14: border0.v1.ControlStreamResponse.connector_config:type_name -> border0.v1.ConnectorConfig + 7, // 15: border0.v1.ControlStreamResponse.update_config:type_name -> border0.v1.UpdateConfig + 35, // 16: border0.v1.ControlStreamResponse.heartbeat:type_name -> border0.common.v1.HeartbeatMessage + 5, // 17: border0.v1.ControlStreamResponse.tunnel_certificate_sign_response:type_name -> border0.v1.TunnelCertificateSignResponse + 17, // 18: border0.v1.ControlStreamResponse.discover:type_name -> border0.v1.Discover + 18, // 19: border0.v1.ControlStreamResponse.stop:type_name -> border0.v1.Stop + 19, // 20: border0.v1.ControlStreamResponse.disconnect:type_name -> border0.v1.Disconnect + 24, // 21: border0.v1.ControlStreamResponse.authorize:type_name -> border0.v1.AuthorizeResponse + 28, // 22: border0.v1.ControlStreamResponse.ssh_certificate_sign_response:type_name -> border0.v1.SshCertificateSignResponse + 31, // 23: border0.v1.ControlStreamResponse.Certificate_sign_response:type_name -> border0.v1.CertificateSignResponse + 37, // 24: border0.v1.ControlStreamResponse.network_state:type_name -> border0.common.v1.NetworkStateMessage + 38, // 25: border0.v1.ControlStreamResponse.peer_online:type_name -> border0.common.v1.PeerOnlineMessage + 39, // 26: border0.v1.ControlStreamResponse.peer_offline:type_name -> border0.common.v1.PeerOfflineMessage + 40, // 27: border0.v1.Organization.certificates:type_name -> google.protobuf.Struct + 15, // 28: border0.v1.Init.connector_config:type_name -> border0.v1.ConnectorConfig + 14, // 29: border0.v1.Init.sockets:type_name -> border0.v1.SocketConfig + 16, // 30: border0.v1.Init.plugins:type_name -> border0.v1.PluginConfig + 0, // 31: border0.v1.UpdateConfig.action:type_name -> border0.v1.Action + 16, // 32: border0.v1.UpdateConfig.plugin_config:type_name -> border0.v1.PluginConfig + 14, // 33: border0.v1.UpdateConfig.socket_config:type_name -> border0.v1.SocketConfig + 41, // 34: border0.v1.Log.timestamp:type_name -> google.protobuf.Timestamp + 40, // 35: border0.v1.ConnectorMetadata.data:type_name -> google.protobuf.Struct + 12, // 36: border0.v1.PluginDiscoveryResults.metadata:type_name -> border0.v1.PluginDiscoveryResultsMetadata + 40, // 37: border0.v1.PluginDiscoveryResults.resources:type_name -> google.protobuf.Struct + 41, // 38: border0.v1.PluginDiscoveryResultsMetadata.started_at:type_name -> google.protobuf.Timestamp + 41, // 39: border0.v1.PluginDiscoveryResultsMetadata.ended_at:type_name -> google.protobuf.Timestamp + 40, // 40: border0.v1.SocketConfig.config:type_name -> google.protobuf.Struct + 3, // 41: border0.v1.ConnectorConfig.organization:type_name -> border0.v1.Organization + 40, // 42: border0.v1.PluginConfig.config:type_name -> google.protobuf.Struct + 40, // 43: border0.v1.Permissions.permissions:type_name -> google.protobuf.Struct + 32, // 44: border0.v1.AuthorizeResponse.allowed_actions:type_name -> border0.v1.AuthorizeResponse.AllowedActionsEntry + 33, // 45: border0.v1.AuthorizeResponse.info:type_name -> border0.v1.AuthorizeResponse.InfoEntry + 34, // 46: border0.v1.AuthorizeResponse.permissions:type_name -> border0.v1.AuthorizeResponse.PermissionsEntry + 21, // 47: border0.v1.AuthorizeResponse.AllowedActionsEntry.value:type_name -> border0.v1.actionList + 23, // 48: border0.v1.AuthorizeResponse.InfoEntry.value:type_name -> border0.v1.infoList + 22, // 49: border0.v1.AuthorizeResponse.PermissionsEntry.value:type_name -> border0.v1.Permissions + 1, // 50: border0.v1.ConnectorService.ControlStream:input_type -> border0.v1.ControlStreamRequest + 2, // 51: border0.v1.ConnectorService.ControlStream:output_type -> border0.v1.ControlStreamResponse + 51, // [51:52] is the sub-list for method output_type + 50, // [50:51] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_connector_proto_init() } @@ -2988,7 +3008,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ControlStreamReponse); i { + switch v := v.(*ControlStreamResponse); i { case 0: return &v.state case 1: @@ -3096,7 +3116,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*HeartbeatRequest); i { + switch v := v.(*PluginDiscoveryResults); i { case 0: return &v.state case 1: @@ -3108,7 +3128,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*HeartbeatResponse); i { + switch v := v.(*PluginDiscoveryResultsMetadata); i { case 0: return &v.state case 1: @@ -3120,7 +3140,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*PluginDiscoveryResults); i { + switch v := v.(*Tag); i { case 0: return &v.state case 1: @@ -3132,7 +3152,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*PluginDiscoveryResultsMetadata); i { + switch v := v.(*SocketConfig); i { case 0: return &v.state case 1: @@ -3144,7 +3164,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*Tag); i { + switch v := v.(*ConnectorConfig); i { case 0: return &v.state case 1: @@ -3156,7 +3176,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*SocketConfig); i { + switch v := v.(*PluginConfig); i { case 0: return &v.state case 1: @@ -3168,7 +3188,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ConnectorConfig); i { + switch v := v.(*Discover); i { case 0: return &v.state case 1: @@ -3180,7 +3200,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*PluginConfig); i { + switch v := v.(*Stop); i { case 0: return &v.state case 1: @@ -3192,7 +3212,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*Discover); i { + switch v := v.(*Disconnect); i { case 0: return &v.state case 1: @@ -3204,7 +3224,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*Stop); i { + switch v := v.(*AuthorizeRequest); i { case 0: return &v.state case 1: @@ -3216,7 +3236,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*Disconnect); i { + switch v := v.(*ActionList); i { case 0: return &v.state case 1: @@ -3228,7 +3248,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeRequest); i { + switch v := v.(*Permissions); i { case 0: return &v.state case 1: @@ -3240,7 +3260,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*ActionList); i { + switch v := v.(*InfoList); i { case 0: return &v.state case 1: @@ -3252,7 +3272,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*Permissions); i { + switch v := v.(*AuthorizeResponse); i { case 0: return &v.state case 1: @@ -3264,7 +3284,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*InfoList); i { + switch v := v.(*SessionUpdateRequest); i { case 0: return &v.state case 1: @@ -3276,7 +3296,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizeResponse); i { + switch v := v.(*SessionEvent); i { case 0: return &v.state case 1: @@ -3288,7 +3308,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*SessionUpdateRequest); i { + switch v := v.(*SshCertificateSignRequest); i { case 0: return &v.state case 1: @@ -3300,7 +3320,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*SessionEvent); i { + switch v := v.(*SshCertificateSignResponse); i { case 0: return &v.state case 1: @@ -3312,7 +3332,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*SshCertifcateSignRequest); i { + switch v := v.(*UploadRecording); i { case 0: return &v.state case 1: @@ -3324,7 +3344,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*SshCertifcateSignResponse); i { + switch v := v.(*CertificateSignRequest); i { case 0: return &v.state case 1: @@ -3336,31 +3356,7 @@ func file_connector_proto_init() { } } file_connector_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*UploadRecording); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_connector_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*CertifcateSignRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_connector_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*CertifcateSignResponse); i { + switch v := v.(*CertificateSignResponse); i { case 0: return &v.state case 1: @@ -3383,21 +3379,25 @@ func file_connector_proto_init() { (*ControlStreamRequest_SessionUpdate)(nil), (*ControlStreamRequest_SshCertificateSignRequest)(nil), (*ControlStreamRequest_UploadRecording)(nil), - (*ControlStreamRequest_CertifcateSignRequest)(nil), + (*ControlStreamRequest_CertificateSignRequest)(nil), (*ControlStreamRequest_SessionEvent)(nil), + (*ControlStreamRequest_DiscoveryDetails)(nil), } file_connector_proto_msgTypes[1].OneofWrappers = []any{ - (*ControlStreamReponse_Init)(nil), - (*ControlStreamReponse_ConnectorConfig)(nil), - (*ControlStreamReponse_UpdateConfig)(nil), - (*ControlStreamReponse_Heartbeat)(nil), - (*ControlStreamReponse_TunnelCertificateSignResponse)(nil), - (*ControlStreamReponse_Discover)(nil), - (*ControlStreamReponse_Stop)(nil), - (*ControlStreamReponse_Disconnect)(nil), - (*ControlStreamReponse_Authorize)(nil), - (*ControlStreamReponse_SshCertificateSignResponse)(nil), - (*ControlStreamReponse_CertifcateSignResponse)(nil), + (*ControlStreamResponse_Init)(nil), + (*ControlStreamResponse_ConnectorConfig)(nil), + (*ControlStreamResponse_UpdateConfig)(nil), + (*ControlStreamResponse_Heartbeat)(nil), + (*ControlStreamResponse_TunnelCertificateSignResponse)(nil), + (*ControlStreamResponse_Discover)(nil), + (*ControlStreamResponse_Stop)(nil), + (*ControlStreamResponse_Disconnect)(nil), + (*ControlStreamResponse_Authorize)(nil), + (*ControlStreamResponse_SshCertificateSignResponse)(nil), + (*ControlStreamResponse_CertificateSignResponse)(nil), + (*ControlStreamResponse_NetworkState)(nil), + (*ControlStreamResponse_PeerOnline)(nil), + (*ControlStreamResponse_PeerOffline)(nil), } file_connector_proto_msgTypes[6].OneofWrappers = []any{ (*UpdateConfig_PluginConfig)(nil), @@ -3409,7 +3409,7 @@ func file_connector_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_connector_proto_rawDesc, NumEnums: 1, - NumMessages: 36, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/connector/connector.proto b/connector/connector.proto index c65d402..9ab216d 100644 --- a/connector/connector.proto +++ b/connector/connector.proto @@ -9,44 +9,49 @@ package border0.v1; import "google/protobuf/timestamp.proto"; import "google/protobuf/struct.proto"; +import "common/messages.proto"; service ConnectorService { - rpc ControlStream(stream ControlStreamRequest) returns (stream ControlStreamReponse); + rpc ControlStream(stream ControlStreamRequest) returns (stream ControlStreamResponse); } message ControlStreamRequest { oneof RequestType { Config config = 1; - HeartbeatRequest heartbeat = 2; + border0.common.v1.HeartbeatMessage heartbeat = 2; PluginDiscoveryResults plugin_discovery_results = 3; TunnelCertificateSignRequest tunnel_certificate_sign_request = 5; Log log = 6; ConnectorMetadata metadata = 7; AuthorizeRequest authorize = 8; SessionUpdateRequest session_update = 9; - SshCertifcateSignRequest ssh_certificate_sign_request = 10; + SshCertificateSignRequest ssh_certificate_sign_request = 10; UploadRecording upload_recording = 11; - CertifcateSignRequest certifcate_sign_request = 12; + CertificateSignRequest Certificate_sign_request = 12; SessionEvent session_event = 13; + border0.common.v1.DiscoveryDetailsMessage discovery_details = 14; } } -message ControlStreamReponse { +message ControlStreamResponse { oneof RequestType { Init init = 1; ConnectorConfig connector_config = 2; UpdateConfig update_config = 3; - HeartbeatResponse heartbeat = 4; + border0.common.v1.HeartbeatMessage heartbeat = 4; TunnelCertificateSignResponse tunnel_certificate_sign_response = 5; Discover discover = 6; Stop stop = 7; Disconnect disconnect = 8; AuthorizeResponse authorize = 9; - SshCertifcateSignResponse ssh_certificate_sign_response = 10; - CertifcateSignResponse certifcate_sign_response = 11; + SshCertificateSignResponse ssh_certificate_sign_response = 10; + CertificateSignResponse Certificate_sign_response = 11; + border0.common.v1.NetworkStateMessage network_state = 12; + border0.common.v1.PeerOnlineMessage peer_online = 13; + border0.common.v1.PeerOfflineMessage peer_offline = 14; } } - + message Organization { string id = 1; string name = 2; @@ -106,9 +111,6 @@ message Config { bool plugins = 3; } -message HeartbeatRequest {} -message HeartbeatResponse {} - message PluginDiscoveryResults { string plugin_id = 1; string request_id = 2; @@ -140,6 +142,7 @@ message ConnectorConfig { string name = 1; int32 heartbeat_interval = 2; Organization organization = 3; + bool private_network_enabled = 4; } message PluginConfig { @@ -206,7 +209,7 @@ message SessionEvent { string metadata = 5; } -message SshCertifcateSignRequest { +message SshCertificateSignRequest { string request_id = 1; string socket_id = 2; string session_key = 3; @@ -215,7 +218,7 @@ message SshCertifcateSignRequest { bytes ticket = 6; } -message SshCertifcateSignResponse { +message SshCertificateSignResponse { string request_id = 1; bytes certificate = 2; } @@ -227,12 +230,12 @@ message UploadRecording { string recording_type = 4; // type of the recording e.g. asciinema, log, etc... } -message CertifcateSignRequest { +message CertificateSignRequest { string request_id = 1; bytes certificate_signing_request = 2; } -message CertifcateSignResponse { +message CertificateSignResponse { string request_id = 1; bytes certificate = 2; -} +} \ No newline at end of file diff --git a/connector/connector_grpc.pb.go b/connector/connector_grpc.pb.go index 3e38c6f..9bfd508 100644 --- a/connector/connector_grpc.pb.go +++ b/connector/connector_grpc.pb.go @@ -30,7 +30,7 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ConnectorServiceClient interface { - ControlStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ControlStreamRequest, ControlStreamReponse], error) + ControlStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ControlStreamRequest, ControlStreamResponse], error) } type connectorServiceClient struct { @@ -41,24 +41,24 @@ func NewConnectorServiceClient(cc grpc.ClientConnInterface) ConnectorServiceClie return &connectorServiceClient{cc} } -func (c *connectorServiceClient) ControlStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ControlStreamRequest, ControlStreamReponse], error) { +func (c *connectorServiceClient) ControlStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ControlStreamRequest, ControlStreamResponse], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &ConnectorService_ServiceDesc.Streams[0], ConnectorService_ControlStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &grpc.GenericClientStream[ControlStreamRequest, ControlStreamReponse]{ClientStream: stream} + x := &grpc.GenericClientStream[ControlStreamRequest, ControlStreamResponse]{ClientStream: stream} return x, nil } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type ConnectorService_ControlStreamClient = grpc.BidiStreamingClient[ControlStreamRequest, ControlStreamReponse] +type ConnectorService_ControlStreamClient = grpc.BidiStreamingClient[ControlStreamRequest, ControlStreamResponse] // ConnectorServiceServer is the server API for ConnectorService service. // All implementations must embed UnimplementedConnectorServiceServer // for forward compatibility. type ConnectorServiceServer interface { - ControlStream(grpc.BidiStreamingServer[ControlStreamRequest, ControlStreamReponse]) error + ControlStream(grpc.BidiStreamingServer[ControlStreamRequest, ControlStreamResponse]) error mustEmbedUnimplementedConnectorServiceServer() } @@ -69,7 +69,7 @@ type ConnectorServiceServer interface { // pointer dereference when methods are called. type UnimplementedConnectorServiceServer struct{} -func (UnimplementedConnectorServiceServer) ControlStream(grpc.BidiStreamingServer[ControlStreamRequest, ControlStreamReponse]) error { +func (UnimplementedConnectorServiceServer) ControlStream(grpc.BidiStreamingServer[ControlStreamRequest, ControlStreamResponse]) error { return status.Errorf(codes.Unimplemented, "method ControlStream not implemented") } func (UnimplementedConnectorServiceServer) mustEmbedUnimplementedConnectorServiceServer() {} @@ -94,11 +94,11 @@ func RegisterConnectorServiceServer(s grpc.ServiceRegistrar, srv ConnectorServic } func _ConnectorService_ControlStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ConnectorServiceServer).ControlStream(&grpc.GenericServerStream[ControlStreamRequest, ControlStreamReponse]{ServerStream: stream}) + return srv.(ConnectorServiceServer).ControlStream(&grpc.GenericServerStream[ControlStreamRequest, ControlStreamResponse]{ServerStream: stream}) } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type ConnectorService_ControlStreamServer = grpc.BidiStreamingServer[ControlStreamRequest, ControlStreamReponse] +type ConnectorService_ControlStreamServer = grpc.BidiStreamingServer[ControlStreamRequest, ControlStreamResponse] // ConnectorService_ServiceDesc is the grpc.ServiceDesc for ConnectorService service. // It's only intended for direct use with grpc.RegisterService, diff --git a/device/device.pb.go b/device/device.pb.go index c94244e..35a2b97 100644 --- a/device/device.pb.go +++ b/device/device.pb.go @@ -11,6 +11,7 @@ package device import ( + common "github.com/borderzero/border0-proto/common" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -78,9 +79,9 @@ type DeviceToServerMessage struct { // Types that are assignable to Message: // - // *DeviceToServerMessage_AuthChallengeSolutionMessage - // *DeviceToServerMessage_DiscoveryDetailsMessage - // *DeviceToServerMessage_HeartbeatMessage + // *DeviceToServerMessage_AuthChallengeSolution + // *DeviceToServerMessage_DiscoveryDetails + // *DeviceToServerMessage_Heartbeat Message isDeviceToServerMessage_Message `protobuf_oneof:"Message"` } @@ -123,23 +124,23 @@ func (m *DeviceToServerMessage) GetMessage() isDeviceToServerMessage_Message { return nil } -func (x *DeviceToServerMessage) GetAuthChallengeSolutionMessage() *AuthChallengeSolutionMessage { - if x, ok := x.GetMessage().(*DeviceToServerMessage_AuthChallengeSolutionMessage); ok { - return x.AuthChallengeSolutionMessage +func (x *DeviceToServerMessage) GetAuthChallengeSolution() *AuthChallengeSolutionMessage { + if x, ok := x.GetMessage().(*DeviceToServerMessage_AuthChallengeSolution); ok { + return x.AuthChallengeSolution } return nil } -func (x *DeviceToServerMessage) GetDiscoveryDetailsMessage() *DiscoveryDetailsMessage { - if x, ok := x.GetMessage().(*DeviceToServerMessage_DiscoveryDetailsMessage); ok { - return x.DiscoveryDetailsMessage +func (x *DeviceToServerMessage) GetDiscoveryDetails() *common.DiscoveryDetailsMessage { + if x, ok := x.GetMessage().(*DeviceToServerMessage_DiscoveryDetails); ok { + return x.DiscoveryDetails } return nil } -func (x *DeviceToServerMessage) GetHeartbeatMessage() *HeartbeatMessage { - if x, ok := x.GetMessage().(*DeviceToServerMessage_HeartbeatMessage); ok { - return x.HeartbeatMessage +func (x *DeviceToServerMessage) GetHeartbeat() *common.HeartbeatMessage { + if x, ok := x.GetMessage().(*DeviceToServerMessage_Heartbeat); ok { + return x.Heartbeat } return nil } @@ -148,23 +149,23 @@ type isDeviceToServerMessage_Message interface { isDeviceToServerMessage_Message() } -type DeviceToServerMessage_AuthChallengeSolutionMessage struct { - AuthChallengeSolutionMessage *AuthChallengeSolutionMessage `protobuf:"bytes,1,opt,name=authChallengeSolutionMessage,proto3,oneof"` +type DeviceToServerMessage_AuthChallengeSolution struct { + AuthChallengeSolution *AuthChallengeSolutionMessage `protobuf:"bytes,1,opt,name=auth_challenge_solution,json=authChallengeSolution,proto3,oneof"` } -type DeviceToServerMessage_DiscoveryDetailsMessage struct { - DiscoveryDetailsMessage *DiscoveryDetailsMessage `protobuf:"bytes,2,opt,name=discoveryDetailsMessage,proto3,oneof"` +type DeviceToServerMessage_DiscoveryDetails struct { + DiscoveryDetails *common.DiscoveryDetailsMessage `protobuf:"bytes,2,opt,name=discovery_details,json=discoveryDetails,proto3,oneof"` } -type DeviceToServerMessage_HeartbeatMessage struct { - HeartbeatMessage *HeartbeatMessage `protobuf:"bytes,3,opt,name=heartbeatMessage,proto3,oneof"` +type DeviceToServerMessage_Heartbeat struct { + Heartbeat *common.HeartbeatMessage `protobuf:"bytes,3,opt,name=heartbeat,proto3,oneof"` } -func (*DeviceToServerMessage_AuthChallengeSolutionMessage) isDeviceToServerMessage_Message() {} +func (*DeviceToServerMessage_AuthChallengeSolution) isDeviceToServerMessage_Message() {} -func (*DeviceToServerMessage_DiscoveryDetailsMessage) isDeviceToServerMessage_Message() {} +func (*DeviceToServerMessage_DiscoveryDetails) isDeviceToServerMessage_Message() {} -func (*DeviceToServerMessage_HeartbeatMessage) isDeviceToServerMessage_Message() {} +func (*DeviceToServerMessage_Heartbeat) isDeviceToServerMessage_Message() {} // messages from the server (api) to devices type ServerToDeviceMessage struct { @@ -174,12 +175,12 @@ type ServerToDeviceMessage struct { // Types that are assignable to Message: // - // *ServerToDeviceMessage_AuthChallengeMessage - // *ServerToDeviceMessage_HeartbeatMessage - // *ServerToDeviceMessage_NetworkStateMessage - // *ServerToDeviceMessage_PeerOnlineMessage - // *ServerToDeviceMessage_PeerOfflineMessage - // *ServerToDeviceMessage_DisconnectMessage + // *ServerToDeviceMessage_AuthChallenge + // *ServerToDeviceMessage_Heartbeat + // *ServerToDeviceMessage_NetworkState + // *ServerToDeviceMessage_PeerOnline + // *ServerToDeviceMessage_PeerOffline + // *ServerToDeviceMessage_Disconnect Message isServerToDeviceMessage_Message `protobuf_oneof:"Message"` } @@ -222,44 +223,44 @@ func (m *ServerToDeviceMessage) GetMessage() isServerToDeviceMessage_Message { return nil } -func (x *ServerToDeviceMessage) GetAuthChallengeMessage() *AuthChallengeMessage { - if x, ok := x.GetMessage().(*ServerToDeviceMessage_AuthChallengeMessage); ok { - return x.AuthChallengeMessage +func (x *ServerToDeviceMessage) GetAuthChallenge() *AuthChallengeMessage { + if x, ok := x.GetMessage().(*ServerToDeviceMessage_AuthChallenge); ok { + return x.AuthChallenge } return nil } -func (x *ServerToDeviceMessage) GetHeartbeatMessage() *HeartbeatMessage { - if x, ok := x.GetMessage().(*ServerToDeviceMessage_HeartbeatMessage); ok { - return x.HeartbeatMessage +func (x *ServerToDeviceMessage) GetHeartbeat() *common.HeartbeatMessage { + if x, ok := x.GetMessage().(*ServerToDeviceMessage_Heartbeat); ok { + return x.Heartbeat } return nil } -func (x *ServerToDeviceMessage) GetNetworkStateMessage() *NetworkStateMessage { - if x, ok := x.GetMessage().(*ServerToDeviceMessage_NetworkStateMessage); ok { - return x.NetworkStateMessage +func (x *ServerToDeviceMessage) GetNetworkState() *common.NetworkStateMessage { + if x, ok := x.GetMessage().(*ServerToDeviceMessage_NetworkState); ok { + return x.NetworkState } return nil } -func (x *ServerToDeviceMessage) GetPeerOnlineMessage() *PeerOnlineMessage { - if x, ok := x.GetMessage().(*ServerToDeviceMessage_PeerOnlineMessage); ok { - return x.PeerOnlineMessage +func (x *ServerToDeviceMessage) GetPeerOnline() *common.PeerOnlineMessage { + if x, ok := x.GetMessage().(*ServerToDeviceMessage_PeerOnline); ok { + return x.PeerOnline } return nil } -func (x *ServerToDeviceMessage) GetPeerOfflineMessage() *PeerOfflineMessage { - if x, ok := x.GetMessage().(*ServerToDeviceMessage_PeerOfflineMessage); ok { - return x.PeerOfflineMessage +func (x *ServerToDeviceMessage) GetPeerOffline() *common.PeerOfflineMessage { + if x, ok := x.GetMessage().(*ServerToDeviceMessage_PeerOffline); ok { + return x.PeerOffline } return nil } -func (x *ServerToDeviceMessage) GetDisconnectMessage() *DisconnectMessage { - if x, ok := x.GetMessage().(*ServerToDeviceMessage_DisconnectMessage); ok { - return x.DisconnectMessage +func (x *ServerToDeviceMessage) GetDisconnect() *common.DisconnectMessage { + if x, ok := x.GetMessage().(*ServerToDeviceMessage_Disconnect); ok { + return x.Disconnect } return nil } @@ -268,41 +269,41 @@ type isServerToDeviceMessage_Message interface { isServerToDeviceMessage_Message() } -type ServerToDeviceMessage_AuthChallengeMessage struct { - AuthChallengeMessage *AuthChallengeMessage `protobuf:"bytes,1,opt,name=authChallengeMessage,proto3,oneof"` +type ServerToDeviceMessage_AuthChallenge struct { + AuthChallenge *AuthChallengeMessage `protobuf:"bytes,1,opt,name=auth_challenge,json=authChallenge,proto3,oneof"` } -type ServerToDeviceMessage_HeartbeatMessage struct { - HeartbeatMessage *HeartbeatMessage `protobuf:"bytes,2,opt,name=heartbeatMessage,proto3,oneof"` +type ServerToDeviceMessage_Heartbeat struct { + Heartbeat *common.HeartbeatMessage `protobuf:"bytes,2,opt,name=heartbeat,proto3,oneof"` } -type ServerToDeviceMessage_NetworkStateMessage struct { - NetworkStateMessage *NetworkStateMessage `protobuf:"bytes,3,opt,name=networkStateMessage,proto3,oneof"` +type ServerToDeviceMessage_NetworkState struct { + NetworkState *common.NetworkStateMessage `protobuf:"bytes,3,opt,name=network_state,json=networkState,proto3,oneof"` } -type ServerToDeviceMessage_PeerOnlineMessage struct { - PeerOnlineMessage *PeerOnlineMessage `protobuf:"bytes,4,opt,name=peerOnlineMessage,proto3,oneof"` +type ServerToDeviceMessage_PeerOnline struct { + PeerOnline *common.PeerOnlineMessage `protobuf:"bytes,4,opt,name=peer_online,json=peerOnline,proto3,oneof"` } -type ServerToDeviceMessage_PeerOfflineMessage struct { - PeerOfflineMessage *PeerOfflineMessage `protobuf:"bytes,5,opt,name=peerOfflineMessage,proto3,oneof"` +type ServerToDeviceMessage_PeerOffline struct { + PeerOffline *common.PeerOfflineMessage `protobuf:"bytes,5,opt,name=peer_offline,json=peerOffline,proto3,oneof"` } -type ServerToDeviceMessage_DisconnectMessage struct { - DisconnectMessage *DisconnectMessage `protobuf:"bytes,6,opt,name=disconnectMessage,proto3,oneof"` +type ServerToDeviceMessage_Disconnect struct { + Disconnect *common.DisconnectMessage `protobuf:"bytes,6,opt,name=disconnect,proto3,oneof"` } -func (*ServerToDeviceMessage_AuthChallengeMessage) isServerToDeviceMessage_Message() {} +func (*ServerToDeviceMessage_AuthChallenge) isServerToDeviceMessage_Message() {} -func (*ServerToDeviceMessage_HeartbeatMessage) isServerToDeviceMessage_Message() {} +func (*ServerToDeviceMessage_Heartbeat) isServerToDeviceMessage_Message() {} -func (*ServerToDeviceMessage_NetworkStateMessage) isServerToDeviceMessage_Message() {} +func (*ServerToDeviceMessage_NetworkState) isServerToDeviceMessage_Message() {} -func (*ServerToDeviceMessage_PeerOnlineMessage) isServerToDeviceMessage_Message() {} +func (*ServerToDeviceMessage_PeerOnline) isServerToDeviceMessage_Message() {} -func (*ServerToDeviceMessage_PeerOfflineMessage) isServerToDeviceMessage_Message() {} +func (*ServerToDeviceMessage_PeerOffline) isServerToDeviceMessage_Message() {} -func (*ServerToDeviceMessage_DisconnectMessage) isServerToDeviceMessage_Message() {} +func (*ServerToDeviceMessage_Disconnect) isServerToDeviceMessage_Message() {} type AuthChallengeMessage struct { state protoimpl.MessageState @@ -422,399 +423,6 @@ func (x *AuthChallengeSolutionMessage) GetSolvedNonce() []byte { return nil } -type DiscoveryDetailsMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Discoverable bool `protobuf:"varint,1,opt,name=discoverable,proto3" json:"discoverable,omitempty"` // whether the peer should be returned along with the networks its in - EndpointPublicUdp4 string `protobuf:"bytes,2,opt,name=endpoint_public_udp4,json=endpointPublicUdp4,proto3" json:"endpoint_public_udp4,omitempty"` // the endpoint (IPv4 + port) to send packets to for the peer - EndpointPublicUdp6 string `protobuf:"bytes,3,opt,name=endpoint_public_udp6,json=endpointPublicUdp6,proto3" json:"endpoint_public_udp6,omitempty"` // the endpoint (IPv6 + port) to send packets to for the peer -} - -func (x *DiscoveryDetailsMessage) Reset() { - *x = DiscoveryDetailsMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DiscoveryDetailsMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DiscoveryDetailsMessage) ProtoMessage() {} - -func (x *DiscoveryDetailsMessage) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[4] - 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 DiscoveryDetailsMessage.ProtoReflect.Descriptor instead. -func (*DiscoveryDetailsMessage) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{4} -} - -func (x *DiscoveryDetailsMessage) GetDiscoverable() bool { - if x != nil { - return x.Discoverable - } - return false -} - -func (x *DiscoveryDetailsMessage) GetEndpointPublicUdp4() string { - if x != nil { - return x.EndpointPublicUdp4 - } - return "" -} - -func (x *DiscoveryDetailsMessage) GetEndpointPublicUdp6() string { - if x != nil { - return x.EndpointPublicUdp6 - } - return "" -} - -type HeartbeatMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *HeartbeatMessage) Reset() { - *x = HeartbeatMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HeartbeatMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HeartbeatMessage) ProtoMessage() {} - -func (x *HeartbeatMessage) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[5] - 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 HeartbeatMessage.ProtoReflect.Descriptor instead. -func (*HeartbeatMessage) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{5} -} - -type PeerOnlineMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetworkID string `protobuf:"bytes,1,opt,name=networkID,proto3" json:"networkID,omitempty"` - Peer *WireGuardPeer `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"` -} - -func (x *PeerOnlineMessage) Reset() { - *x = PeerOnlineMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PeerOnlineMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PeerOnlineMessage) ProtoMessage() {} - -func (x *PeerOnlineMessage) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[6] - 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 PeerOnlineMessage.ProtoReflect.Descriptor instead. -func (*PeerOnlineMessage) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{6} -} - -func (x *PeerOnlineMessage) GetNetworkID() string { - if x != nil { - return x.NetworkID - } - return "" -} - -func (x *PeerOnlineMessage) GetPeer() *WireGuardPeer { - if x != nil { - return x.Peer - } - return nil -} - -type PeerOfflineMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetworkID string `protobuf:"bytes,1,opt,name=networkID,proto3" json:"networkID,omitempty"` - PeerPublicKey string `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey,proto3" json:"peer_public_key,omitempty"` -} - -func (x *PeerOfflineMessage) Reset() { - *x = PeerOfflineMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PeerOfflineMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PeerOfflineMessage) ProtoMessage() {} - -func (x *PeerOfflineMessage) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[7] - 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 PeerOfflineMessage.ProtoReflect.Descriptor instead. -func (*PeerOfflineMessage) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{7} -} - -func (x *PeerOfflineMessage) GetNetworkID() string { - if x != nil { - return x.NetworkID - } - return "" -} - -func (x *PeerOfflineMessage) GetPeerPublicKey() string { - if x != nil { - return x.PeerPublicKey - } - return "" -} - -type NetworkStateMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetworkID string `protobuf:"bytes,1,opt,name=networkID,proto3" json:"networkID,omitempty"` - NetworkCIDRV4 string `protobuf:"bytes,2,opt,name=networkCIDRV4,proto3" json:"networkCIDRV4,omitempty"` - NetworkCIDRV6 string `protobuf:"bytes,3,opt,name=networkCIDRV6,proto3" json:"networkCIDRV6,omitempty"` - SelfIPv4 string `protobuf:"bytes,4,opt,name=selfIPv4,proto3" json:"selfIPv4,omitempty"` - SelfIPv6 string `protobuf:"bytes,5,opt,name=selfIPv6,proto3" json:"selfIPv6,omitempty"` - OnlinePeers []*WireGuardPeer `protobuf:"bytes,6,rep,name=onlinePeers,proto3" json:"onlinePeers,omitempty"` -} - -func (x *NetworkStateMessage) Reset() { - *x = NetworkStateMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NetworkStateMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkStateMessage) ProtoMessage() {} - -func (x *NetworkStateMessage) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[8] - 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 NetworkStateMessage.ProtoReflect.Descriptor instead. -func (*NetworkStateMessage) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{8} -} - -func (x *NetworkStateMessage) GetNetworkID() string { - if x != nil { - return x.NetworkID - } - return "" -} - -func (x *NetworkStateMessage) GetNetworkCIDRV4() string { - if x != nil { - return x.NetworkCIDRV4 - } - return "" -} - -func (x *NetworkStateMessage) GetNetworkCIDRV6() string { - if x != nil { - return x.NetworkCIDRV6 - } - return "" -} - -func (x *NetworkStateMessage) GetSelfIPv4() string { - if x != nil { - return x.SelfIPv4 - } - return "" -} - -func (x *NetworkStateMessage) GetSelfIPv6() string { - if x != nil { - return x.SelfIPv6 - } - return "" -} - -func (x *NetworkStateMessage) GetOnlinePeers() []*WireGuardPeer { - if x != nil { - return x.OnlinePeers - } - return nil -} - -type WireGuardPeer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // the public key of the peer, used for identification and encryption - IPv4 string `protobuf:"bytes,2,opt,name=IPv4,proto3" json:"IPv4,omitempty"` // the peer's (private) IPv4 address in the wireguard network - IPv6 string `protobuf:"bytes,3,opt,name=IPv6,proto3" json:"IPv6,omitempty"` // the peer's (private) IPv6 address in the wireguard network - AllowedIps []string `protobuf:"bytes,4,rep,name=allowed_ips,json=allowedIps,proto3" json:"allowed_ips,omitempty"` // list of routes (CIDRs) to be routed through this peer (most peers will just have their own IP/32) - PersistentKeepaliveIntervalSeconds uint32 `protobuf:"varint,5,opt,name=persistent_keepalive_interval_seconds,json=persistentKeepaliveIntervalSeconds,proto3" json:"persistent_keepalive_interval_seconds,omitempty"` // the interval for sending keepalive packets (0 means disabled) - EndpointPublicUdp4 string `protobuf:"bytes,6,opt,name=endpoint_public_udp4,json=endpointPublicUdp4,proto3" json:"endpoint_public_udp4,omitempty"` // endpoint for udp peer-to-peer communication over ipv4 (public IPv4 + port as seen from the Internet) - EndpointPublicUdp6 string `protobuf:"bytes,7,opt,name=endpoint_public_udp6,json=endpointPublicUdp6,proto3" json:"endpoint_public_udp6,omitempty"` // endpoint for udp peer-to-peer communication over ipv6 (public IPv6 + port as seen from the Internet) -} - -func (x *WireGuardPeer) Reset() { - *x = WireGuardPeer{} - if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WireGuardPeer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WireGuardPeer) ProtoMessage() {} - -func (x *WireGuardPeer) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[9] - 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 WireGuardPeer.ProtoReflect.Descriptor instead. -func (*WireGuardPeer) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{9} -} - -func (x *WireGuardPeer) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -func (x *WireGuardPeer) GetIPv4() string { - if x != nil { - return x.IPv4 - } - return "" -} - -func (x *WireGuardPeer) GetIPv6() string { - if x != nil { - return x.IPv6 - } - return "" -} - -func (x *WireGuardPeer) GetAllowedIps() []string { - if x != nil { - return x.AllowedIps - } - return nil -} - -func (x *WireGuardPeer) GetPersistentKeepaliveIntervalSeconds() uint32 { - if x != nil { - return x.PersistentKeepaliveIntervalSeconds - } - return 0 -} - -func (x *WireGuardPeer) GetEndpointPublicUdp4() string { - if x != nil { - return x.EndpointPublicUdp4 - } - return "" -} - -func (x *WireGuardPeer) GetEndpointPublicUdp6() string { - if x != nil { - return x.EndpointPublicUdp6 - } - return "" -} - type DisconnectMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -826,7 +434,7 @@ type DisconnectMessage struct { func (x *DisconnectMessage) Reset() { *x = DisconnectMessage{} if protoimpl.UnsafeEnabled { - mi := &file_device_proto_msgTypes[10] + mi := &file_device_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -839,7 +447,7 @@ func (x *DisconnectMessage) String() string { func (*DisconnectMessage) ProtoMessage() {} func (x *DisconnectMessage) ProtoReflect() protoreflect.Message { - mi := &file_device_proto_msgTypes[10] + mi := &file_device_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -852,7 +460,7 @@ func (x *DisconnectMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DisconnectMessage.ProtoReflect.Descriptor instead. func (*DisconnectMessage) Descriptor() ([]byte, []int) { - return file_device_proto_rawDescGZIP(), []int{10} + return file_device_proto_rawDescGZIP(), []int{4} } func (x *DisconnectMessage) GetReason() DisconnectionReason { @@ -867,63 +475,57 @@ var File_device_proto protoreflect.FileDescriptor var file_device_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x22, 0xd4, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x75, 0x0a, 0x1c, 0x61, - 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, - 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x61, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, - 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, - 0x00, 0x52, 0x17, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x68, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x10, 0x68, 0x65, 0x61, - 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, - 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb5, 0x04, 0x0a, 0x15, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x54, 0x6f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, - 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x14, 0x61, 0x75, 0x74, - 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x51, 0x0a, 0x10, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x31, 0x1a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, + 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, + 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, + 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, + 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x10, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x48, 0x00, 0x52, 0x10, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x13, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x54, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x48, 0x00, 0x52, 0x11, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x12, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x66, - 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x6c, 0x69, - 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x70, 0x65, 0x65, - 0x72, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x54, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x48, 0x00, 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xe5, 0x03, 0x0a, 0x15, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x54, 0x6f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, + 0x65, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, + 0x65, 0x6e, 0x67, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x4d, 0x0a, 0x0d, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x65, 0x72, + 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x65, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x46, 0x0a, + 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, @@ -938,86 +540,27 @@ var file_device_proto_rawDesc = []byte{ 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x75, 0x64, 0x70, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x55, 0x64, 0x70, 0x34, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x75, 0x64, 0x70, 0x36, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x55, 0x64, 0x70, 0x36, 0x22, 0x12, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x67, 0x0a, 0x11, 0x50, - 0x65, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x34, - 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x57, 0x69, 0x72, 0x65, 0x47, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, - 0x70, 0x65, 0x65, 0x72, 0x22, 0x5a, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x6c, - 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, - 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x43, 0x49, 0x44, 0x52, 0x56, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x49, 0x44, 0x52, 0x56, 0x34, 0x12, 0x24, 0x0a, 0x0d, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x49, 0x44, 0x52, 0x56, 0x36, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x49, 0x44, 0x52, - 0x56, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x66, 0x49, 0x50, 0x76, 0x34, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x66, 0x49, 0x50, 0x76, 0x34, 0x12, 0x1a, - 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x66, 0x49, 0x50, 0x76, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x65, 0x6c, 0x66, 0x49, 0x50, 0x76, 0x36, 0x12, 0x42, 0x0a, 0x0b, 0x6f, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x47, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x22, 0xae, - 0x02, 0x0a, 0x0d, 0x57, 0x69, 0x72, 0x65, 0x47, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x49, 0x50, 0x76, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, - 0x50, 0x76, 0x34, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x50, 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x49, 0x50, 0x76, 0x36, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x65, 0x64, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x25, 0x70, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x22, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x75, - 0x64, 0x70, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x64, 0x70, 0x34, 0x12, 0x30, 0x0a, - 0x14, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x5f, 0x75, 0x64, 0x70, 0x36, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x64, 0x70, 0x36, 0x22, - 0x53, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x37, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x32, 0x82, 0x01, - 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x28, 0x2e, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, - 0x6f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x28, 0x01, - 0x30, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x7a, 0x65, 0x72, 0x6f, 0x2f, 0x62, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x30, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x63, 0x65, 0x22, 0x53, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x37, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, + 0x01, 0x32, 0x82, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, + 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x28, + 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x54, 0x6f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x7a, 0x65, 0x72, 0x6f, 0x2f, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x30, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1033,41 +576,39 @@ func file_device_proto_rawDescGZIP() []byte { } var file_device_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_device_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_device_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_device_proto_goTypes = []any{ - (DisconnectionReason)(0), // 0: border0.device.v1.DisconnectionReason - (*DeviceToServerMessage)(nil), // 1: border0.device.v1.DeviceToServerMessage - (*ServerToDeviceMessage)(nil), // 2: border0.device.v1.ServerToDeviceMessage - (*AuthChallengeMessage)(nil), // 3: border0.device.v1.AuthChallengeMessage - (*AuthChallengeSolutionMessage)(nil), // 4: border0.device.v1.AuthChallengeSolutionMessage - (*DiscoveryDetailsMessage)(nil), // 5: border0.device.v1.DiscoveryDetailsMessage - (*HeartbeatMessage)(nil), // 6: border0.device.v1.HeartbeatMessage - (*PeerOnlineMessage)(nil), // 7: border0.device.v1.PeerOnlineMessage - (*PeerOfflineMessage)(nil), // 8: border0.device.v1.PeerOfflineMessage - (*NetworkStateMessage)(nil), // 9: border0.device.v1.NetworkStateMessage - (*WireGuardPeer)(nil), // 10: border0.device.v1.WireGuardPeer - (*DisconnectMessage)(nil), // 11: border0.device.v1.DisconnectMessage + (DisconnectionReason)(0), // 0: border0.device.v1.DisconnectionReason + (*DeviceToServerMessage)(nil), // 1: border0.device.v1.DeviceToServerMessage + (*ServerToDeviceMessage)(nil), // 2: border0.device.v1.ServerToDeviceMessage + (*AuthChallengeMessage)(nil), // 3: border0.device.v1.AuthChallengeMessage + (*AuthChallengeSolutionMessage)(nil), // 4: border0.device.v1.AuthChallengeSolutionMessage + (*DisconnectMessage)(nil), // 5: border0.device.v1.DisconnectMessage + (*common.DiscoveryDetailsMessage)(nil), // 6: border0.common.v1.DiscoveryDetailsMessage + (*common.HeartbeatMessage)(nil), // 7: border0.common.v1.HeartbeatMessage + (*common.NetworkStateMessage)(nil), // 8: border0.common.v1.NetworkStateMessage + (*common.PeerOnlineMessage)(nil), // 9: border0.common.v1.PeerOnlineMessage + (*common.PeerOfflineMessage)(nil), // 10: border0.common.v1.PeerOfflineMessage + (*common.DisconnectMessage)(nil), // 11: border0.common.v1.DisconnectMessage } var file_device_proto_depIdxs = []int32{ - 4, // 0: border0.device.v1.DeviceToServerMessage.authChallengeSolutionMessage:type_name -> border0.device.v1.AuthChallengeSolutionMessage - 5, // 1: border0.device.v1.DeviceToServerMessage.discoveryDetailsMessage:type_name -> border0.device.v1.DiscoveryDetailsMessage - 6, // 2: border0.device.v1.DeviceToServerMessage.heartbeatMessage:type_name -> border0.device.v1.HeartbeatMessage - 3, // 3: border0.device.v1.ServerToDeviceMessage.authChallengeMessage:type_name -> border0.device.v1.AuthChallengeMessage - 6, // 4: border0.device.v1.ServerToDeviceMessage.heartbeatMessage:type_name -> border0.device.v1.HeartbeatMessage - 9, // 5: border0.device.v1.ServerToDeviceMessage.networkStateMessage:type_name -> border0.device.v1.NetworkStateMessage - 7, // 6: border0.device.v1.ServerToDeviceMessage.peerOnlineMessage:type_name -> border0.device.v1.PeerOnlineMessage - 8, // 7: border0.device.v1.ServerToDeviceMessage.peerOfflineMessage:type_name -> border0.device.v1.PeerOfflineMessage - 11, // 8: border0.device.v1.ServerToDeviceMessage.disconnectMessage:type_name -> border0.device.v1.DisconnectMessage - 10, // 9: border0.device.v1.PeerOnlineMessage.peer:type_name -> border0.device.v1.WireGuardPeer - 10, // 10: border0.device.v1.NetworkStateMessage.onlinePeers:type_name -> border0.device.v1.WireGuardPeer - 0, // 11: border0.device.v1.DisconnectMessage.reason:type_name -> border0.device.v1.DisconnectionReason - 1, // 12: border0.device.v1.DeviceManagementService.ControlStream:input_type -> border0.device.v1.DeviceToServerMessage - 2, // 13: border0.device.v1.DeviceManagementService.ControlStream:output_type -> border0.device.v1.ServerToDeviceMessage - 13, // [13:14] is the sub-list for method output_type - 12, // [12:13] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 4, // 0: border0.device.v1.DeviceToServerMessage.auth_challenge_solution:type_name -> border0.device.v1.AuthChallengeSolutionMessage + 6, // 1: border0.device.v1.DeviceToServerMessage.discovery_details:type_name -> border0.common.v1.DiscoveryDetailsMessage + 7, // 2: border0.device.v1.DeviceToServerMessage.heartbeat:type_name -> border0.common.v1.HeartbeatMessage + 3, // 3: border0.device.v1.ServerToDeviceMessage.auth_challenge:type_name -> border0.device.v1.AuthChallengeMessage + 7, // 4: border0.device.v1.ServerToDeviceMessage.heartbeat:type_name -> border0.common.v1.HeartbeatMessage + 8, // 5: border0.device.v1.ServerToDeviceMessage.network_state:type_name -> border0.common.v1.NetworkStateMessage + 9, // 6: border0.device.v1.ServerToDeviceMessage.peer_online:type_name -> border0.common.v1.PeerOnlineMessage + 10, // 7: border0.device.v1.ServerToDeviceMessage.peer_offline:type_name -> border0.common.v1.PeerOfflineMessage + 11, // 8: border0.device.v1.ServerToDeviceMessage.disconnect:type_name -> border0.common.v1.DisconnectMessage + 0, // 9: border0.device.v1.DisconnectMessage.reason:type_name -> border0.device.v1.DisconnectionReason + 1, // 10: border0.device.v1.DeviceManagementService.ControlStream:input_type -> border0.device.v1.DeviceToServerMessage + 2, // 11: border0.device.v1.DeviceManagementService.ControlStream:output_type -> border0.device.v1.ServerToDeviceMessage + 11, // [11:12] is the sub-list for method output_type + 10, // [10:11] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_device_proto_init() } @@ -1125,78 +666,6 @@ func file_device_proto_init() { } } file_device_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DiscoveryDetailsMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_device_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*HeartbeatMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_device_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*PeerOnlineMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_device_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*PeerOfflineMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_device_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*NetworkStateMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_device_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*WireGuardPeer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_device_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*DisconnectMessage); i { case 0: return &v.state @@ -1210,17 +679,17 @@ func file_device_proto_init() { } } file_device_proto_msgTypes[0].OneofWrappers = []any{ - (*DeviceToServerMessage_AuthChallengeSolutionMessage)(nil), - (*DeviceToServerMessage_DiscoveryDetailsMessage)(nil), - (*DeviceToServerMessage_HeartbeatMessage)(nil), + (*DeviceToServerMessage_AuthChallengeSolution)(nil), + (*DeviceToServerMessage_DiscoveryDetails)(nil), + (*DeviceToServerMessage_Heartbeat)(nil), } file_device_proto_msgTypes[1].OneofWrappers = []any{ - (*ServerToDeviceMessage_AuthChallengeMessage)(nil), - (*ServerToDeviceMessage_HeartbeatMessage)(nil), - (*ServerToDeviceMessage_NetworkStateMessage)(nil), - (*ServerToDeviceMessage_PeerOnlineMessage)(nil), - (*ServerToDeviceMessage_PeerOfflineMessage)(nil), - (*ServerToDeviceMessage_DisconnectMessage)(nil), + (*ServerToDeviceMessage_AuthChallenge)(nil), + (*ServerToDeviceMessage_Heartbeat)(nil), + (*ServerToDeviceMessage_NetworkState)(nil), + (*ServerToDeviceMessage_PeerOnline)(nil), + (*ServerToDeviceMessage_PeerOffline)(nil), + (*ServerToDeviceMessage_Disconnect)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -1228,7 +697,7 @@ func file_device_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_device_proto_rawDesc, NumEnums: 1, - NumMessages: 11, + NumMessages: 5, NumExtensions: 0, NumServices: 1, }, diff --git a/device/device.proto b/device/device.proto index 94f2504..7b011d5 100644 --- a/device/device.proto +++ b/device/device.proto @@ -7,6 +7,8 @@ option go_package = "github.com/borderzero/border0-proto/device"; // sets the protobuf package name (i.e. definitions namespace) package border0.device.v1; +import "common/messages.proto"; + // the stream (rpc) service for the Border0 api to manage devices service DeviceManagementService { rpc ControlStream(stream DeviceToServerMessage) returns (stream ServerToDeviceMessage); @@ -15,21 +17,21 @@ service DeviceManagementService { // messages from devices to the server (api) message DeviceToServerMessage { oneof Message { - AuthChallengeSolutionMessage authChallengeSolutionMessage = 1; - DiscoveryDetailsMessage discoveryDetailsMessage = 2; - HeartbeatMessage heartbeatMessage = 3; + AuthChallengeSolutionMessage auth_challenge_solution = 1; + border0.common.v1.DiscoveryDetailsMessage discovery_details = 2; + border0.common.v1.HeartbeatMessage heartbeat = 3; } } // messages from the server (api) to devices message ServerToDeviceMessage { oneof Message { - AuthChallengeMessage authChallengeMessage = 1; - HeartbeatMessage heartbeatMessage = 2; - NetworkStateMessage networkStateMessage = 3; - PeerOnlineMessage peerOnlineMessage = 4; - PeerOfflineMessage peerOfflineMessage = 5; - DisconnectMessage disconnectMessage = 6; + AuthChallengeMessage auth_challenge = 1; + border0.common.v1.HeartbeatMessage heartbeat = 2; + border0.common.v1.NetworkStateMessage network_state = 3; + border0.common.v1.PeerOnlineMessage peer_online = 4; + border0.common.v1.PeerOfflineMessage peer_offline = 5; + border0.common.v1.DisconnectMessage disconnect = 6; } } @@ -44,43 +46,6 @@ message AuthChallengeSolutionMessage { bytes solvedNonce = 2; } -message DiscoveryDetailsMessage { - bool discoverable = 1; // whether the peer should be returned along with the networks its in - string endpoint_public_udp4 = 2; // the endpoint (IPv4 + port) to send packets to for the peer - string endpoint_public_udp6 = 3; // the endpoint (IPv6 + port) to send packets to for the peer -} - -message HeartbeatMessage {} - -message PeerOnlineMessage { - string networkID = 1; - WireGuardPeer peer = 2; -} - -message PeerOfflineMessage { - string networkID = 1; - string peer_public_key = 2; -} - -message NetworkStateMessage { - string networkID = 1; - string networkCIDRV4 = 2; - string networkCIDRV6 = 3; - string selfIPv4 = 4; - string selfIPv6 = 5; - repeated WireGuardPeer onlinePeers = 6; -} - -message WireGuardPeer { - string public_key = 1; // the public key of the peer, used for identification and encryption - string IPv4 = 2; // the peer's (private) IPv4 address in the wireguard network - string IPv6 = 3; // the peer's (private) IPv6 address in the wireguard network - repeated string allowed_ips = 4; // list of routes (CIDRs) to be routed through this peer (most peers will just have their own IP/32) - uint32 persistent_keepalive_interval_seconds = 5; // the interval for sending keepalive packets (0 means disabled) - string endpoint_public_udp4 = 6; // endpoint for udp peer-to-peer communication over ipv4 (public IPv4 + port as seen from the Internet) - string endpoint_public_udp6 = 7; // endpoint for udp peer-to-peer communication over ipv6 (public IPv6 + port as seen from the Internet) -} - enum DisconnectionReason { UNKNOWN = 0; SERVER_SHUTDOWN = 1; diff --git a/generate.sh b/generate.sh index f566888..22897f5 100755 --- a/generate.sh +++ b/generate.sh @@ -1,3 +1,3 @@ #!/bin/sh -protoc -I/app/proto --go_out=paths=source_relative:/app/proto --go-grpc_out=paths=source_relative:/app/proto /app/proto/*.proto +protoc -I/app/proto --proto_path=/app/shared --go_out=paths=source_relative:/app/proto --go-grpc_out=paths=source_relative:/app/proto /app/proto/*.proto