From 49a1a0704983f5b6fce14223a2af4c6cecc7180b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Wei=C3=9Fe?= <66256922+daniel-weisse@users.noreply.github.com> Date: Tue, 12 Apr 2022 14:24:36 +0200 Subject: [PATCH] AB#1902 Ping Coordinator from initramfs for key (#53) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Weiße --- .dockerignore | 1 - coordinator/pubapi/coord.go | 16 + coordinator/pubapi/core.go | 1 + coordinator/pubapi/core_test.go | 6 + coordinator/pubapi/pubproto/pubapi.pb.go | 298 +++++++++++----- coordinator/pubapi/pubproto/pubapi.proto | 8 + coordinator/pubapi/pubproto/pubapi_grpc.pb.go | 36 ++ coordinator/vpnapi/vpnproto/vpnapi.pb.go | 11 +- debugd/service/debugd.pb.go | 319 +++++++++--------- debugd/service/debugd_grpc.pb.go | 2 +- go.mod | 2 + go.sum | 4 +- .../proto => proto}/Dockerfile.gen-proto | 31 +- {coordinator/proto => proto}/README.md | 2 +- state/cmd/main.go | 19 +- state/keyservice/keyservice.go | 139 ++++++++ state/keyservice/keyservice_test.go | 178 ++++++++++ state/mapper/cryptdevice.go | 3 + state/mapper/mapper.go | 10 + state/test/integration_test.go | 8 +- 20 files changed, 827 insertions(+), 267 deletions(-) rename {coordinator/proto => proto}/Dockerfile.gen-proto (61%) rename {coordinator/proto => proto}/README.md (89%) create mode 100644 state/keyservice/keyservice.go create mode 100644 state/keyservice/keyservice_test.go diff --git a/.dockerignore b/.dockerignore index 69a5ec872..2fd7f685b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -17,7 +17,6 @@ admin.conf coordinatorConfig.json coordinator-* -/debugd /images # Dockerfiles diff --git a/coordinator/pubapi/coord.go b/coordinator/pubapi/coord.go index 0d47733df..babb31481 100644 --- a/coordinator/pubapi/coord.go +++ b/coordinator/pubapi/coord.go @@ -2,6 +2,7 @@ package pubapi import ( "context" + "errors" "fmt" "net" "time" @@ -161,6 +162,21 @@ func (a *API) ActivateAdditionalNodes(in *pubproto.ActivateAdditionalNodesReques }) } +// RequestStateDiskKey triggers the Coordinator to return a key derived from the Constellation's master secret to the caller. +func (a *API) RequestStateDiskKey(ctx context.Context, in *pubproto.RequestStateDiskKeyRequest) (*pubproto.RequestStateDiskKeyResponse, error) { + // TODO: Add Coordinator call to restarting node and deliver the key + /* + if err := a.core.RequireState(state.IsNode, state.ActivatingNodes); err != nil { + return nil, err + } + _, err := a.core.GetDataKey(ctx, in.DiskUuid, 32) + if err != nil { + return nil, status.Errorf(codes.Internal, "") + } + */ + return &pubproto.RequestStateDiskKeyResponse{}, errors.New("unimplemented") +} + func (a *API) activateNodes(logToCLI logFunc, nodePublicEndpoints []string, coordPeer peer.Peer) error { // Create initial peer data to be sent to the nodes. Currently, this is just this Coordinator. initialPeers := peer.ToPubProto([]peer.Peer{coordPeer}) diff --git a/coordinator/pubapi/core.go b/coordinator/pubapi/core.go index 5caa5507c..27e3033a0 100644 --- a/coordinator/pubapi/core.go +++ b/coordinator/pubapi/core.go @@ -18,6 +18,7 @@ type Core interface { SwitchToPersistentStore() error GetIDs(masterSecret []byte) (ownerID []byte, clusterID []byte, err error) SetUpKMS(ctx context.Context, storageURI, kmsURI, kekID string, useExisting bool) error + GetDataKey(ctx context.Context, keyID string, length int) ([]byte, error) GetState() state.State RequireState(...state.State) error diff --git a/coordinator/pubapi/core_test.go b/coordinator/pubapi/core_test.go index 3d4cabb69..50f7ca706 100644 --- a/coordinator/pubapi/core_test.go +++ b/coordinator/pubapi/core_test.go @@ -27,6 +27,8 @@ type fakeCore struct { joinArgs []kubeadm.BootstrapTokenDiscovery joinClusterErr error kekID string + dataKey []byte + getDataKeyErr error } func (c *fakeCore) GetVPNPubKey() ([]byte, error) { @@ -110,3 +112,7 @@ func (c *fakeCore) SetUpKMS(ctx context.Context, storageURI, kmsURI, kekID strin c.kekID = kekID return nil } + +func (c *fakeCore) GetDataKey(ctx context.Context, keyID string, length int) ([]byte, error) { + return c.dataKey, c.getDataKeyErr +} diff --git a/coordinator/pubapi/pubproto/pubapi.pb.go b/coordinator/pubapi/pubproto/pubapi.pb.go index f3c9e0c92..cfb513cf3 100644 --- a/coordinator/pubapi/pubproto/pubapi.pb.go +++ b/coordinator/pubapi/pubproto/pubapi.pb.go @@ -660,6 +660,91 @@ func (*TriggerNodeUpdateResponse) Descriptor() ([]byte, []int) { return file_pubapi_proto_rawDescGZIP(), []int{11} } +type RequestStateDiskKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DiskUuid string `protobuf:"bytes,1,opt,name=disk_uuid,json=diskUuid,proto3" json:"disk_uuid,omitempty"` +} + +func (x *RequestStateDiskKeyRequest) Reset() { + *x = RequestStateDiskKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pubapi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestStateDiskKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestStateDiskKeyRequest) ProtoMessage() {} + +func (x *RequestStateDiskKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_pubapi_proto_msgTypes[12] + 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 RequestStateDiskKeyRequest.ProtoReflect.Descriptor instead. +func (*RequestStateDiskKeyRequest) Descriptor() ([]byte, []int) { + return file_pubapi_proto_rawDescGZIP(), []int{12} +} + +func (x *RequestStateDiskKeyRequest) GetDiskUuid() string { + if x != nil { + return x.DiskUuid + } + return "" +} + +type RequestStateDiskKeyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RequestStateDiskKeyResponse) Reset() { + *x = RequestStateDiskKeyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pubapi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestStateDiskKeyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestStateDiskKeyResponse) ProtoMessage() {} + +func (x *RequestStateDiskKeyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pubapi_proto_msgTypes[13] + 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 RequestStateDiskKeyResponse.ProtoReflect.Descriptor instead. +func (*RequestStateDiskKeyResponse) Descriptor() ([]byte, []int) { + return file_pubapi_proto_rawDescGZIP(), []int{13} +} + type AdminConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -675,7 +760,7 @@ type AdminConfig struct { func (x *AdminConfig) Reset() { *x = AdminConfig{} if protoimpl.UnsafeEnabled { - mi := &file_pubapi_proto_msgTypes[12] + mi := &file_pubapi_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -688,7 +773,7 @@ func (x *AdminConfig) String() string { func (*AdminConfig) ProtoMessage() {} func (x *AdminConfig) ProtoReflect() protoreflect.Message { - mi := &file_pubapi_proto_msgTypes[12] + mi := &file_pubapi_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -701,7 +786,7 @@ func (x *AdminConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminConfig.ProtoReflect.Descriptor instead. func (*AdminConfig) Descriptor() ([]byte, []int) { - return file_pubapi_proto_rawDescGZIP(), []int{12} + return file_pubapi_proto_rawDescGZIP(), []int{14} } func (x *AdminConfig) GetAdminVpnIp() string { @@ -750,7 +835,7 @@ type Log struct { func (x *Log) Reset() { *x = Log{} if protoimpl.UnsafeEnabled { - mi := &file_pubapi_proto_msgTypes[13] + mi := &file_pubapi_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -763,7 +848,7 @@ func (x *Log) String() string { func (*Log) ProtoMessage() {} func (x *Log) ProtoReflect() protoreflect.Message { - mi := &file_pubapi_proto_msgTypes[13] + mi := &file_pubapi_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -776,7 +861,7 @@ func (x *Log) ProtoReflect() protoreflect.Message { // Deprecated: Use Log.ProtoReflect.Descriptor instead. func (*Log) Descriptor() ([]byte, []int) { - return file_pubapi_proto_rawDescGZIP(), []int{13} + return file_pubapi_proto_rawDescGZIP(), []int{15} } func (x *Log) GetMessage() string { @@ -800,7 +885,7 @@ type Peer struct { func (x *Peer) Reset() { *x = Peer{} if protoimpl.UnsafeEnabled { - mi := &file_pubapi_proto_msgTypes[14] + mi := &file_pubapi_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -813,7 +898,7 @@ func (x *Peer) String() string { func (*Peer) ProtoMessage() {} func (x *Peer) ProtoReflect() protoreflect.Message { - mi := &file_pubapi_proto_msgTypes[14] + mi := &file_pubapi_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -826,7 +911,7 @@ func (x *Peer) ProtoReflect() protoreflect.Message { // Deprecated: Use Peer.ProtoReflect.Descriptor instead. func (*Peer) Descriptor() ([]byte, []int) { - return file_pubapi_proto_rawDescGZIP(), []int{14} + return file_pubapi_proto_rawDescGZIP(), []int{16} } func (x *Peer) GetPublicEndpoint() string { @@ -930,67 +1015,78 @@ var file_pubapi_proto_rawDesc = []byte{ 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x70, 0x6e, - 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x56, 0x70, 0x6e, 0x49, 0x70, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, - 0x74, 0x6f, 0x72, 0x56, 0x70, 0x6e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, - 0x6b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7a, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x12, - 0x27, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x6e, 0x5f, - 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x6e, 0x49, 0x70, 0x12, - 0x1e, 0x0a, 0x0b, 0x76, 0x70, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x70, 0x6e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x32, 0x8d, 0x04, 0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x3d, 0x0a, 0x08, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x18, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x15, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x24, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, + 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0x1d, + 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, + 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, + 0x0a, 0x0b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, + 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x70, 0x6e, 0x49, 0x70, 0x12, + 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, + 0x70, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x14, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x70, 0x6e, + 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x22, 0x1f, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x7a, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x6e, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x6e, 0x49, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x76, 0x70, 0x6e, + 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, + 0x76, 0x70, 0x6e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x32, 0xed, 0x04, + 0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x3d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x75, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x15, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x41, 0x73, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x24, 0x2e, + 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, + 0x73, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x75, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, 0x43, 0x6f, 0x6f, - 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x17, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, + 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x0e, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, - 0x01, 0x12, 0x46, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x1a, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, - 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x20, - 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, - 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x4e, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x73, 0x79, 0x73, 0x2f, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x63, 0x6f, 0x6f, 0x72, - 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, - 0x74, 0x6f, 0x72, 0x2f, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x75, 0x62, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x41, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, + 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, + 0x17, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x46, 0x0a, 0x0b, 0x4a, + 0x6f, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x75, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, + 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x75, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, + 0x13, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, + 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x75, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, + 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x42, 0x5a, + 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x64, 0x67, 0x65, + 0x6c, 0x65, 0x73, 0x73, 0x73, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x2f, 0x70, 0x75, 0x62, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1005,7 +1101,7 @@ func file_pubapi_proto_rawDescGZIP() []byte { return file_pubapi_proto_rawDescData } -var file_pubapi_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_pubapi_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_pubapi_proto_goTypes = []interface{}{ (*GetStateRequest)(nil), // 0: pubapi.GetStateRequest (*GetStateResponse)(nil), // 1: pubapi.GetStateResponse @@ -1019,29 +1115,33 @@ var file_pubapi_proto_goTypes = []interface{}{ (*JoinClusterResponse)(nil), // 9: pubapi.JoinClusterResponse (*TriggerNodeUpdateRequest)(nil), // 10: pubapi.TriggerNodeUpdateRequest (*TriggerNodeUpdateResponse)(nil), // 11: pubapi.TriggerNodeUpdateResponse - (*AdminConfig)(nil), // 12: pubapi.AdminConfig - (*Log)(nil), // 13: pubapi.Log - (*Peer)(nil), // 14: pubapi.Peer + (*RequestStateDiskKeyRequest)(nil), // 12: pubapi.RequestStateDiskKeyRequest + (*RequestStateDiskKeyResponse)(nil), // 13: pubapi.RequestStateDiskKeyResponse + (*AdminConfig)(nil), // 14: pubapi.AdminConfig + (*Log)(nil), // 15: pubapi.Log + (*Peer)(nil), // 16: pubapi.Peer } var file_pubapi_proto_depIdxs = []int32{ - 12, // 0: pubapi.ActivateAsCoordinatorResponse.admin_config:type_name -> pubapi.AdminConfig - 13, // 1: pubapi.ActivateAsCoordinatorResponse.log:type_name -> pubapi.Log - 14, // 2: pubapi.ActivateAsNodeRequest.peers:type_name -> pubapi.Peer - 13, // 3: pubapi.ActivateAdditionalNodesResponse.log:type_name -> pubapi.Log + 14, // 0: pubapi.ActivateAsCoordinatorResponse.admin_config:type_name -> pubapi.AdminConfig + 15, // 1: pubapi.ActivateAsCoordinatorResponse.log:type_name -> pubapi.Log + 16, // 2: pubapi.ActivateAsNodeRequest.peers:type_name -> pubapi.Peer + 15, // 3: pubapi.ActivateAdditionalNodesResponse.log:type_name -> pubapi.Log 0, // 4: pubapi.API.GetState:input_type -> pubapi.GetStateRequest 2, // 5: pubapi.API.ActivateAsCoordinator:input_type -> pubapi.ActivateAsCoordinatorRequest 4, // 6: pubapi.API.ActivateAsNode:input_type -> pubapi.ActivateAsNodeRequest 6, // 7: pubapi.API.ActivateAdditionalNodes:input_type -> pubapi.ActivateAdditionalNodesRequest 8, // 8: pubapi.API.JoinCluster:input_type -> pubapi.JoinClusterRequest 10, // 9: pubapi.API.TriggerNodeUpdate:input_type -> pubapi.TriggerNodeUpdateRequest - 1, // 10: pubapi.API.GetState:output_type -> pubapi.GetStateResponse - 3, // 11: pubapi.API.ActivateAsCoordinator:output_type -> pubapi.ActivateAsCoordinatorResponse - 5, // 12: pubapi.API.ActivateAsNode:output_type -> pubapi.ActivateAsNodeResponse - 7, // 13: pubapi.API.ActivateAdditionalNodes:output_type -> pubapi.ActivateAdditionalNodesResponse - 9, // 14: pubapi.API.JoinCluster:output_type -> pubapi.JoinClusterResponse - 11, // 15: pubapi.API.TriggerNodeUpdate:output_type -> pubapi.TriggerNodeUpdateResponse - 10, // [10:16] is the sub-list for method output_type - 4, // [4:10] is the sub-list for method input_type + 12, // 10: pubapi.API.RequestStateDiskKey:input_type -> pubapi.RequestStateDiskKeyRequest + 1, // 11: pubapi.API.GetState:output_type -> pubapi.GetStateResponse + 3, // 12: pubapi.API.ActivateAsCoordinator:output_type -> pubapi.ActivateAsCoordinatorResponse + 5, // 13: pubapi.API.ActivateAsNode:output_type -> pubapi.ActivateAsNodeResponse + 7, // 14: pubapi.API.ActivateAdditionalNodes:output_type -> pubapi.ActivateAdditionalNodesResponse + 9, // 15: pubapi.API.JoinCluster:output_type -> pubapi.JoinClusterResponse + 11, // 16: pubapi.API.TriggerNodeUpdate:output_type -> pubapi.TriggerNodeUpdateResponse + 13, // 17: pubapi.API.RequestStateDiskKey:output_type -> pubapi.RequestStateDiskKeyResponse + 11, // [11:18] is the sub-list for method output_type + 4, // [4:11] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name 4, // [4:4] is the sub-list for extension extendee 0, // [0:4] is the sub-list for field type_name @@ -1198,7 +1298,7 @@ func file_pubapi_proto_init() { } } file_pubapi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminConfig); i { + switch v := v.(*RequestStateDiskKeyRequest); i { case 0: return &v.state case 1: @@ -1210,7 +1310,7 @@ func file_pubapi_proto_init() { } } file_pubapi_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Log); i { + switch v := v.(*RequestStateDiskKeyResponse); i { case 0: return &v.state case 1: @@ -1222,6 +1322,30 @@ func file_pubapi_proto_init() { } } file_pubapi_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdminConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pubapi_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Log); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pubapi_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Peer); i { case 0: return &v.state @@ -1244,7 +1368,7 @@ func file_pubapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pubapi_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/coordinator/pubapi/pubproto/pubapi.proto b/coordinator/pubapi/pubproto/pubapi.proto index 79c173138..780aed657 100644 --- a/coordinator/pubapi/pubproto/pubapi.proto +++ b/coordinator/pubapi/pubproto/pubapi.proto @@ -11,6 +11,7 @@ service API { rpc ActivateAdditionalNodes(ActivateAdditionalNodesRequest) returns (stream ActivateAdditionalNodesResponse); rpc JoinCluster(JoinClusterRequest) returns (JoinClusterResponse); rpc TriggerNodeUpdate(TriggerNodeUpdateRequest) returns (TriggerNodeUpdateResponse); + rpc RequestStateDiskKey(RequestStateDiskKeyRequest) returns (RequestStateDiskKeyResponse); } message GetStateRequest { @@ -70,6 +71,13 @@ message TriggerNodeUpdateRequest { message TriggerNodeUpdateResponse { } +message RequestStateDiskKeyRequest { + string disk_uuid = 1; +} + +message RequestStateDiskKeyResponse { +} + message AdminConfig { string admin_vpn_ip = 1; bytes coordinator_vpn_pub_key = 2; diff --git a/coordinator/pubapi/pubproto/pubapi_grpc.pb.go b/coordinator/pubapi/pubproto/pubapi_grpc.pb.go index 4a3c2db31..c304a542c 100644 --- a/coordinator/pubapi/pubproto/pubapi_grpc.pb.go +++ b/coordinator/pubapi/pubproto/pubapi_grpc.pb.go @@ -24,6 +24,7 @@ type APIClient interface { ActivateAdditionalNodes(ctx context.Context, in *ActivateAdditionalNodesRequest, opts ...grpc.CallOption) (API_ActivateAdditionalNodesClient, error) JoinCluster(ctx context.Context, in *JoinClusterRequest, opts ...grpc.CallOption) (*JoinClusterResponse, error) TriggerNodeUpdate(ctx context.Context, in *TriggerNodeUpdateRequest, opts ...grpc.CallOption) (*TriggerNodeUpdateResponse, error) + RequestStateDiskKey(ctx context.Context, in *RequestStateDiskKeyRequest, opts ...grpc.CallOption) (*RequestStateDiskKeyResponse, error) } type aPIClient struct { @@ -134,6 +135,15 @@ func (c *aPIClient) TriggerNodeUpdate(ctx context.Context, in *TriggerNodeUpdate return out, nil } +func (c *aPIClient) RequestStateDiskKey(ctx context.Context, in *RequestStateDiskKeyRequest, opts ...grpc.CallOption) (*RequestStateDiskKeyResponse, error) { + out := new(RequestStateDiskKeyResponse) + err := c.cc.Invoke(ctx, "/pubapi.API/RequestStateDiskKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // APIServer is the server API for API service. // All implementations must embed UnimplementedAPIServer // for forward compatibility @@ -144,6 +154,7 @@ type APIServer interface { ActivateAdditionalNodes(*ActivateAdditionalNodesRequest, API_ActivateAdditionalNodesServer) error JoinCluster(context.Context, *JoinClusterRequest) (*JoinClusterResponse, error) TriggerNodeUpdate(context.Context, *TriggerNodeUpdateRequest) (*TriggerNodeUpdateResponse, error) + RequestStateDiskKey(context.Context, *RequestStateDiskKeyRequest) (*RequestStateDiskKeyResponse, error) mustEmbedUnimplementedAPIServer() } @@ -169,6 +180,9 @@ func (UnimplementedAPIServer) JoinCluster(context.Context, *JoinClusterRequest) func (UnimplementedAPIServer) TriggerNodeUpdate(context.Context, *TriggerNodeUpdateRequest) (*TriggerNodeUpdateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TriggerNodeUpdate not implemented") } +func (UnimplementedAPIServer) RequestStateDiskKey(context.Context, *RequestStateDiskKeyRequest) (*RequestStateDiskKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RequestStateDiskKey not implemented") +} func (UnimplementedAPIServer) mustEmbedUnimplementedAPIServer() {} // UnsafeAPIServer may be embedded to opt out of forward compatibility for this service. @@ -296,6 +310,24 @@ func _API_TriggerNodeUpdate_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _API_RequestStateDiskKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestStateDiskKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).RequestStateDiskKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pubapi.API/RequestStateDiskKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).RequestStateDiskKey(ctx, req.(*RequestStateDiskKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + // API_ServiceDesc is the grpc.ServiceDesc for API service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -319,6 +351,10 @@ var API_ServiceDesc = grpc.ServiceDesc{ MethodName: "TriggerNodeUpdate", Handler: _API_TriggerNodeUpdate_Handler, }, + { + MethodName: "RequestStateDiskKey", + Handler: _API_RequestStateDiskKey_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/coordinator/vpnapi/vpnproto/vpnapi.pb.go b/coordinator/vpnapi/vpnproto/vpnapi.pb.go index 853fd4eb7..206d75733 100644 --- a/coordinator/vpnapi/vpnproto/vpnapi.pb.go +++ b/coordinator/vpnapi/vpnproto/vpnapi.pb.go @@ -451,13 +451,12 @@ var file_vpnapi_proto_rawDesc = []byte{ 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x2e, 0x76, 0x70, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x76, 0x70, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x4e, 0x5a, - 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x64, 0x67, 0x65, + 0x74, 0x61, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x42, 0x5a, + 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x73, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, - 0x72, 0x2f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x76, 0x70, - 0x6e, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x70, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x2f, 0x76, 0x70, 0x6e, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x70, 0x6e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/debugd/service/debugd.pb.go b/debugd/service/debugd.pb.go index 5e4ee2ee9..4051785f3 100644 --- a/debugd/service/debugd.pb.go +++ b/debugd/service/debugd.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.27.1 // protoc v3.17.3 -// source: service/debugd.proto +// source: debugd.proto package service @@ -50,11 +50,11 @@ func (x UploadAuthorizedKeysStatus) String() string { } func (UploadAuthorizedKeysStatus) Descriptor() protoreflect.EnumDescriptor { - return file_service_debugd_proto_enumTypes[0].Descriptor() + return file_debugd_proto_enumTypes[0].Descriptor() } func (UploadAuthorizedKeysStatus) Type() protoreflect.EnumType { - return &file_service_debugd_proto_enumTypes[0] + return &file_debugd_proto_enumTypes[0] } func (x UploadAuthorizedKeysStatus) Number() protoreflect.EnumNumber { @@ -63,7 +63,7 @@ func (x UploadAuthorizedKeysStatus) Number() protoreflect.EnumNumber { // Deprecated: Use UploadAuthorizedKeysStatus.Descriptor instead. func (UploadAuthorizedKeysStatus) EnumDescriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{0} + return file_debugd_proto_rawDescGZIP(), []int{0} } type UploadCoordinatorStatus int32 @@ -99,11 +99,11 @@ func (x UploadCoordinatorStatus) String() string { } func (UploadCoordinatorStatus) Descriptor() protoreflect.EnumDescriptor { - return file_service_debugd_proto_enumTypes[1].Descriptor() + return file_debugd_proto_enumTypes[1].Descriptor() } func (UploadCoordinatorStatus) Type() protoreflect.EnumType { - return &file_service_debugd_proto_enumTypes[1] + return &file_debugd_proto_enumTypes[1] } func (x UploadCoordinatorStatus) Number() protoreflect.EnumNumber { @@ -112,7 +112,7 @@ func (x UploadCoordinatorStatus) Number() protoreflect.EnumNumber { // Deprecated: Use UploadCoordinatorStatus.Descriptor instead. func (UploadCoordinatorStatus) EnumDescriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{1} + return file_debugd_proto_rawDescGZIP(), []int{1} } type UploadSystemdServiceUnitsStatus int32 @@ -145,11 +145,11 @@ func (x UploadSystemdServiceUnitsStatus) String() string { } func (UploadSystemdServiceUnitsStatus) Descriptor() protoreflect.EnumDescriptor { - return file_service_debugd_proto_enumTypes[2].Descriptor() + return file_debugd_proto_enumTypes[2].Descriptor() } func (UploadSystemdServiceUnitsStatus) Type() protoreflect.EnumType { - return &file_service_debugd_proto_enumTypes[2] + return &file_debugd_proto_enumTypes[2] } func (x UploadSystemdServiceUnitsStatus) Number() protoreflect.EnumNumber { @@ -158,7 +158,7 @@ func (x UploadSystemdServiceUnitsStatus) Number() protoreflect.EnumNumber { // Deprecated: Use UploadSystemdServiceUnitsStatus.Descriptor instead. func (UploadSystemdServiceUnitsStatus) EnumDescriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{2} + return file_debugd_proto_rawDescGZIP(), []int{2} } type DownloadCoordinatorRequest struct { @@ -170,7 +170,7 @@ type DownloadCoordinatorRequest struct { func (x *DownloadCoordinatorRequest) Reset() { *x = DownloadCoordinatorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[0] + mi := &file_debugd_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -183,7 +183,7 @@ func (x *DownloadCoordinatorRequest) String() string { func (*DownloadCoordinatorRequest) ProtoMessage() {} func (x *DownloadCoordinatorRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[0] + mi := &file_debugd_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -196,7 +196,7 @@ func (x *DownloadCoordinatorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCoordinatorRequest.ProtoReflect.Descriptor instead. func (*DownloadCoordinatorRequest) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{0} + return file_debugd_proto_rawDescGZIP(), []int{0} } type AuthorizedKey struct { @@ -211,7 +211,7 @@ type AuthorizedKey struct { func (x *AuthorizedKey) Reset() { *x = AuthorizedKey{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[1] + mi := &file_debugd_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -224,7 +224,7 @@ func (x *AuthorizedKey) String() string { func (*AuthorizedKey) ProtoMessage() {} func (x *AuthorizedKey) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[1] + mi := &file_debugd_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -237,7 +237,7 @@ func (x *AuthorizedKey) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizedKey.ProtoReflect.Descriptor instead. func (*AuthorizedKey) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{1} + return file_debugd_proto_rawDescGZIP(), []int{1} } func (x *AuthorizedKey) GetUsername() string { @@ -265,7 +265,7 @@ type UploadAuthorizedKeysRequest struct { func (x *UploadAuthorizedKeysRequest) Reset() { *x = UploadAuthorizedKeysRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[2] + mi := &file_debugd_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -278,7 +278,7 @@ func (x *UploadAuthorizedKeysRequest) String() string { func (*UploadAuthorizedKeysRequest) ProtoMessage() {} func (x *UploadAuthorizedKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[2] + mi := &file_debugd_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -291,7 +291,7 @@ func (x *UploadAuthorizedKeysRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadAuthorizedKeysRequest.ProtoReflect.Descriptor instead. func (*UploadAuthorizedKeysRequest) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{2} + return file_debugd_proto_rawDescGZIP(), []int{2} } func (x *UploadAuthorizedKeysRequest) GetKeys() []*AuthorizedKey { @@ -312,7 +312,7 @@ type UploadAuthorizedKeysResponse struct { func (x *UploadAuthorizedKeysResponse) Reset() { *x = UploadAuthorizedKeysResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[3] + mi := &file_debugd_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -325,7 +325,7 @@ func (x *UploadAuthorizedKeysResponse) String() string { func (*UploadAuthorizedKeysResponse) ProtoMessage() {} func (x *UploadAuthorizedKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[3] + mi := &file_debugd_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -338,7 +338,7 @@ func (x *UploadAuthorizedKeysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadAuthorizedKeysResponse.ProtoReflect.Descriptor instead. func (*UploadAuthorizedKeysResponse) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{3} + return file_debugd_proto_rawDescGZIP(), []int{3} } func (x *UploadAuthorizedKeysResponse) GetStatus() UploadAuthorizedKeysStatus { @@ -359,7 +359,7 @@ type Chunk struct { func (x *Chunk) Reset() { *x = Chunk{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[4] + mi := &file_debugd_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -372,7 +372,7 @@ func (x *Chunk) String() string { func (*Chunk) ProtoMessage() {} func (x *Chunk) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[4] + mi := &file_debugd_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -385,7 +385,7 @@ func (x *Chunk) ProtoReflect() protoreflect.Message { // Deprecated: Use Chunk.ProtoReflect.Descriptor instead. func (*Chunk) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{4} + return file_debugd_proto_rawDescGZIP(), []int{4} } func (x *Chunk) GetContent() []byte { @@ -406,7 +406,7 @@ type UploadCoordinatorResponse struct { func (x *UploadCoordinatorResponse) Reset() { *x = UploadCoordinatorResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[5] + mi := &file_debugd_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -419,7 +419,7 @@ func (x *UploadCoordinatorResponse) String() string { func (*UploadCoordinatorResponse) ProtoMessage() {} func (x *UploadCoordinatorResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[5] + mi := &file_debugd_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -432,7 +432,7 @@ func (x *UploadCoordinatorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadCoordinatorResponse.ProtoReflect.Descriptor instead. func (*UploadCoordinatorResponse) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{5} + return file_debugd_proto_rawDescGZIP(), []int{5} } func (x *UploadCoordinatorResponse) GetStatus() UploadCoordinatorStatus { @@ -454,7 +454,7 @@ type ServiceUnit struct { func (x *ServiceUnit) Reset() { *x = ServiceUnit{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[6] + mi := &file_debugd_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -467,7 +467,7 @@ func (x *ServiceUnit) String() string { func (*ServiceUnit) ProtoMessage() {} func (x *ServiceUnit) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[6] + mi := &file_debugd_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -480,7 +480,7 @@ func (x *ServiceUnit) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceUnit.ProtoReflect.Descriptor instead. func (*ServiceUnit) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{6} + return file_debugd_proto_rawDescGZIP(), []int{6} } func (x *ServiceUnit) GetName() string { @@ -508,7 +508,7 @@ type UploadSystemdServiceUnitsRequest struct { func (x *UploadSystemdServiceUnitsRequest) Reset() { *x = UploadSystemdServiceUnitsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[7] + mi := &file_debugd_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -521,7 +521,7 @@ func (x *UploadSystemdServiceUnitsRequest) String() string { func (*UploadSystemdServiceUnitsRequest) ProtoMessage() {} func (x *UploadSystemdServiceUnitsRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[7] + mi := &file_debugd_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -534,7 +534,7 @@ func (x *UploadSystemdServiceUnitsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadSystemdServiceUnitsRequest.ProtoReflect.Descriptor instead. func (*UploadSystemdServiceUnitsRequest) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{7} + return file_debugd_proto_rawDescGZIP(), []int{7} } func (x *UploadSystemdServiceUnitsRequest) GetUnits() []*ServiceUnit { @@ -555,7 +555,7 @@ type UploadSystemdServiceUnitsResponse struct { func (x *UploadSystemdServiceUnitsResponse) Reset() { *x = UploadSystemdServiceUnitsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_debugd_proto_msgTypes[8] + mi := &file_debugd_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -568,7 +568,7 @@ func (x *UploadSystemdServiceUnitsResponse) String() string { func (*UploadSystemdServiceUnitsResponse) ProtoMessage() {} func (x *UploadSystemdServiceUnitsResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_debugd_proto_msgTypes[8] + mi := &file_debugd_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -581,7 +581,7 @@ func (x *UploadSystemdServiceUnitsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use UploadSystemdServiceUnitsResponse.ProtoReflect.Descriptor instead. func (*UploadSystemdServiceUnitsResponse) Descriptor() ([]byte, []int) { - return file_service_debugd_proto_rawDescGZIP(), []int{8} + return file_debugd_proto_rawDescGZIP(), []int{8} } func (x *UploadSystemdServiceUnitsResponse) GetStatus() UploadSystemdServiceUnitsStatus { @@ -591,118 +591,117 @@ func (x *UploadSystemdServiceUnitsResponse) GetStatus() UploadSystemdServiceUnit return UploadSystemdServiceUnitsStatus_UPLOAD_SYSTEMD_SERVICE_UNITS_SUCCESS } -var File_service_debugd_proto protoreflect.FileDescriptor +var File_debugd_proto protoreflect.FileDescriptor -var file_service_debugd_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x22, 0x1c, - 0x0a, 0x1a, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0d, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x48, 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, - 0x22, 0x5a, 0x0a, 0x1c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x21, 0x0a, 0x05, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, - 0x54, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x64, - 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, - 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3d, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x55, 0x6e, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x05, 0x75, 0x6e, - 0x69, 0x74, 0x73, 0x22, 0x64, 0x0a, 0x21, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, - 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x64, 0x0a, 0x1a, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x1e, 0x55, 0x50, 0x4c, 0x4f, 0x41, - 0x44, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, - 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x55, - 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x45, 0x44, - 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, 0x2a, - 0x84, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x55, - 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x55, - 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x52, - 0x44, 0x49, 0x4e, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x75, 0x0a, 0x1f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, - 0x69, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x24, 0x55, 0x50, 0x4c, - 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, - 0x53, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x59, - 0x53, 0x54, 0x45, 0x4d, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, - 0x49, 0x54, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, 0x32, 0xf9, 0x02, - 0x0a, 0x06, 0x44, 0x65, 0x62, 0x75, 0x67, 0x64, 0x12, 0x63, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, +var file_debugd_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, + 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x48, + 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, + 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x65, + 0x62, 0x75, 0x67, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, + 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x5a, 0x0a, 0x1c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, - 0x12, 0x23, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, - 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, - 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, - 0x6f, 0x72, 0x12, 0x0d, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x43, 0x68, 0x75, 0x6e, - 0x6b, 0x1a, 0x21, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, + 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x21, 0x0a, 0x05, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x54, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x4c, 0x0a, 0x13, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x22, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x43, 0x68, 0x75, - 0x6e, 0x6b, 0x22, 0x00, 0x30, 0x01, 0x12, 0x71, 0x0a, 0x18, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, - 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x55, 0x6e, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, - 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x73, - 0x73, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2d, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3d, 0x0a, + 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x20, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x29, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x55, 0x6e, 0x69, 0x74, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x22, 0x64, 0x0a, 0x21, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, + 0x69, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2a, 0x64, 0x0a, 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x22, 0x0a, 0x1e, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, + 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x55, + 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x46, 0x41, + 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, 0x2a, 0x84, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x43, 0x4f, + 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x43, 0x4f, + 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x50, 0x4c, + 0x4f, 0x41, 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x4f, 0x52, 0x5f, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x75, + 0x0a, 0x1f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x28, 0x0a, 0x24, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x59, 0x53, 0x54, + 0x45, 0x4d, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, + 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x55, + 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x44, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, + 0x55, 0x52, 0x45, 0x10, 0x01, 0x32, 0xf9, 0x02, 0x0a, 0x06, 0x44, 0x65, 0x62, 0x75, 0x67, 0x64, + 0x12, 0x63, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, + 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, + 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0d, 0x2e, 0x64, 0x65, 0x62, + 0x75, 0x67, 0x64, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x21, 0x2e, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, + 0x12, 0x4c, 0x0a, 0x13, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, + 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, + 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x64, 0x65, + 0x62, 0x75, 0x67, 0x64, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x00, 0x30, 0x01, 0x12, 0x71, + 0x0a, 0x18, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x62, + 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x65, 0x64, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x73, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x64, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_service_debugd_proto_rawDescOnce sync.Once - file_service_debugd_proto_rawDescData = file_service_debugd_proto_rawDesc + file_debugd_proto_rawDescOnce sync.Once + file_debugd_proto_rawDescData = file_debugd_proto_rawDesc ) -func file_service_debugd_proto_rawDescGZIP() []byte { - file_service_debugd_proto_rawDescOnce.Do(func() { - file_service_debugd_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_debugd_proto_rawDescData) +func file_debugd_proto_rawDescGZIP() []byte { + file_debugd_proto_rawDescOnce.Do(func() { + file_debugd_proto_rawDescData = protoimpl.X.CompressGZIP(file_debugd_proto_rawDescData) }) - return file_service_debugd_proto_rawDescData + return file_debugd_proto_rawDescData } -var file_service_debugd_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_service_debugd_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_service_debugd_proto_goTypes = []interface{}{ +var file_debugd_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_debugd_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_debugd_proto_goTypes = []interface{}{ (UploadAuthorizedKeysStatus)(0), // 0: debugd.UploadAuthorizedKeysStatus (UploadCoordinatorStatus)(0), // 1: debugd.UploadCoordinatorStatus (UploadSystemdServiceUnitsStatus)(0), // 2: debugd.UploadSystemdServiceUnitsStatus @@ -716,7 +715,7 @@ var file_service_debugd_proto_goTypes = []interface{}{ (*UploadSystemdServiceUnitsRequest)(nil), // 10: debugd.UploadSystemdServiceUnitsRequest (*UploadSystemdServiceUnitsResponse)(nil), // 11: debugd.UploadSystemdServiceUnitsResponse } -var file_service_debugd_proto_depIdxs = []int32{ +var file_debugd_proto_depIdxs = []int32{ 4, // 0: debugd.UploadAuthorizedKeysRequest.keys:type_name -> debugd.AuthorizedKey 0, // 1: debugd.UploadAuthorizedKeysResponse.status:type_name -> debugd.UploadAuthorizedKeysStatus 1, // 2: debugd.UploadCoordinatorResponse.status:type_name -> debugd.UploadCoordinatorStatus @@ -737,13 +736,13 @@ var file_service_debugd_proto_depIdxs = []int32{ 0, // [0:5] is the sub-list for field type_name } -func init() { file_service_debugd_proto_init() } -func file_service_debugd_proto_init() { - if File_service_debugd_proto != nil { +func init() { file_debugd_proto_init() } +func file_debugd_proto_init() { + if File_debugd_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_service_debugd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadCoordinatorRequest); i { case 0: return &v.state @@ -755,7 +754,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuthorizedKey); i { case 0: return &v.state @@ -767,7 +766,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadAuthorizedKeysRequest); i { case 0: return &v.state @@ -779,7 +778,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadAuthorizedKeysResponse); i { case 0: return &v.state @@ -791,7 +790,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Chunk); i { case 0: return &v.state @@ -803,7 +802,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadCoordinatorResponse); i { case 0: return &v.state @@ -815,7 +814,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceUnit); i { case 0: return &v.state @@ -827,7 +826,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadSystemdServiceUnitsRequest); i { case 0: return &v.state @@ -839,7 +838,7 @@ func file_service_debugd_proto_init() { return nil } } - file_service_debugd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_debugd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadSystemdServiceUnitsResponse); i { case 0: return &v.state @@ -856,19 +855,19 @@ func file_service_debugd_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_service_debugd_proto_rawDesc, + RawDescriptor: file_debugd_proto_rawDesc, NumEnums: 3, NumMessages: 9, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_service_debugd_proto_goTypes, - DependencyIndexes: file_service_debugd_proto_depIdxs, - EnumInfos: file_service_debugd_proto_enumTypes, - MessageInfos: file_service_debugd_proto_msgTypes, + GoTypes: file_debugd_proto_goTypes, + DependencyIndexes: file_debugd_proto_depIdxs, + EnumInfos: file_debugd_proto_enumTypes, + MessageInfos: file_debugd_proto_msgTypes, }.Build() - File_service_debugd_proto = out.File - file_service_debugd_proto_rawDesc = nil - file_service_debugd_proto_goTypes = nil - file_service_debugd_proto_depIdxs = nil + File_debugd_proto = out.File + file_debugd_proto_rawDesc = nil + file_debugd_proto_goTypes = nil + file_debugd_proto_depIdxs = nil } diff --git a/debugd/service/debugd_grpc.pb.go b/debugd/service/debugd_grpc.pb.go index 8c7d346e2..56430fc1b 100644 --- a/debugd/service/debugd_grpc.pb.go +++ b/debugd/service/debugd_grpc.pb.go @@ -267,5 +267,5 @@ var Debugd_ServiceDesc = grpc.ServiceDesc{ ServerStreams: true, }, }, - Metadata: "service/debugd.proto", + Metadata: "debugd.proto", } diff --git a/go.mod b/go.mod index 0c9d75594..af3ecab64 100644 --- a/go.mod +++ b/go.mod @@ -212,3 +212,5 @@ require ( sigs.k8s.io/kustomize/kyaml v0.13.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect ) + +replace github.com/martinjungblut/go-cryptsetup => github.com/daniel-weisse/go-cryptsetup v0.0.0-20220408122750-67430e0bf2a1 diff --git a/go.sum b/go.sum index a3328d31b..bd4b70f02 100644 --- a/go.sum +++ b/go.sum @@ -512,6 +512,8 @@ github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1S github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/daniel-weisse/go-cryptsetup v0.0.0-20220408122750-67430e0bf2a1 h1:CAejoYbBO85QYASn/RaPZVml5i8yjiQ56QoWuXGMjVU= +github.com/daniel-weisse/go-cryptsetup v0.0.0-20220408122750-67430e0bf2a1/go.mod h1:gZoZ0+POlM1ge/VUxWpMmZVNPzzMJ7l436CgkQ5+qzU= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -1013,8 +1015,6 @@ github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/martinjungblut/go-cryptsetup v0.0.0-20220317181052-e70d6b615049 h1:RhjbYE5voarNcN87XH0A4RWEPcW5exQ+w4WYPKgqT1I= -github.com/martinjungblut/go-cryptsetup v0.0.0-20220317181052-e70d6b615049/go.mod h1:gZoZ0+POlM1ge/VUxWpMmZVNPzzMJ7l436CgkQ5+qzU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= diff --git a/coordinator/proto/Dockerfile.gen-proto b/proto/Dockerfile.gen-proto similarity index 61% rename from coordinator/proto/Dockerfile.gen-proto rename to proto/Dockerfile.gen-proto index d33014d03..e70f5ae9f 100644 --- a/coordinator/proto/Dockerfile.gen-proto +++ b/proto/Dockerfile.gen-proto @@ -1,6 +1,6 @@ FROM ubuntu@sha256:7cc0576c7c0ec2384de5cbf245f41567e922aab1b075f3e8ad565f508032df17 as build -ARG GO_VER=1.17.4 +ARG GO_VER=1.18 ARG GEN_GO_VER=1.27.1 ARG GEN_GO_GRPC_VER=1.1 ARG PB_VER=3.17.3 @@ -23,13 +23,30 @@ RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v${GEN_GO_VER} && \ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${GEN_GO_GRPC_VER} # Generate code for every existing proto file + +## Coordinator pubapi WORKDIR /pubapi -COPY pubapi/pubproto/*.proto /pubapi -RUN protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto -WORKDIR /vpnapi -COPY vpnapi/vpnproto/*.proto /vpnapi +COPY coordinator/pubapi/pubproto/*.proto /pubapi RUN protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto +## Coordinator vpnapi +WORKDIR /vpnapi +COPY coordinator/vpnapi/vpnproto/*.proto /vpnapi +RUN protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto + +## disk-mapper keyservice api +WORKDIR /disk-mapper +COPY state/keyservice/proto/*.proto /disk-mapper +RUN protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto + +## debugd service +WORKDIR /service +COPY debugd/service/*.proto /service +RUN protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto + + FROM scratch as export -COPY --from=build /pubapi/*.go pubapi/pubproto/ -COPY --from=build /vpnapi/*.go vpnapi/vpnproto/ +COPY --from=build /pubapi/*.go coordinator/pubapi/pubproto/ +COPY --from=build /vpnapi/*.go coordinator/vpnapi/vpnproto/ +COPY --from=build /disk-mapper/*.go state/keyservice/proto/ +COPY --from=build /service/*.go debugd/service/ diff --git a/coordinator/proto/README.md b/proto/README.md similarity index 89% rename from coordinator/proto/README.md rename to proto/README.md index 1d5f55150..cf062c351 100644 --- a/coordinator/proto/README.md +++ b/proto/README.md @@ -2,7 +2,7 @@ To generate Go source files from proto, we use docker. -The following command will generate Go source code files in docker and save the output to the current directory. +The following command will generate Go source code files in docker and save the output to the relevant directory. Run this once every time you make any changes or additions to the `.proto` files. Add the generated `.go` files, and any changes to the `.proto` files, to your branch before creating a PR. diff --git a/state/cmd/main.go b/state/cmd/main.go index 793f9940b..3ee4b995c 100644 --- a/state/cmd/main.go +++ b/state/cmd/main.go @@ -6,7 +6,9 @@ import ( "os" "path/filepath" + "github.com/edgelesssys/constellation/coordinator/config" "github.com/edgelesssys/constellation/internal/utils" + "github.com/edgelesssys/constellation/state/keyservice" "github.com/edgelesssys/constellation/state/mapper" ) @@ -30,11 +32,24 @@ func main() { } defer mapper.Close() + if mapper.IsLUKSDevice() { + uuid := mapper.DiskUUID() + _, err = keyservice.WaitForDecryptionKey(*csp, uuid) + } else { + err = formatDisk(mapper) + } + + if err != nil { + utils.KernelPanic(err) + } +} + +func formatDisk(mapper *mapper.Mapper) error { // generate and save temporary passphrase if err := os.MkdirAll(keyPath, os.ModePerm); err != nil { utils.KernelPanic(err) } - passphrase := make([]byte, 32) + passphrase := make([]byte, config.RNGLengthDefault) if _, err := rand.Read(passphrase); err != nil { utils.KernelPanic(err) } @@ -48,4 +63,6 @@ func main() { if err := mapper.MapDisk("state", string(passphrase)); err != nil { utils.KernelPanic(err) } + + return nil } diff --git a/state/keyservice/keyservice.go b/state/keyservice/keyservice.go new file mode 100644 index 000000000..8241970f9 --- /dev/null +++ b/state/keyservice/keyservice.go @@ -0,0 +1,139 @@ +package keyservice + +import ( + "context" + "errors" + "fmt" + "os" + "strings" + "sync" + "time" + + "github.com/edgelesssys/constellation/coordinator/atls" + azurecloud "github.com/edgelesssys/constellation/coordinator/cloudprovider/azure" + gcpcloud "github.com/edgelesssys/constellation/coordinator/cloudprovider/gcp" + "github.com/edgelesssys/constellation/coordinator/core" + "github.com/edgelesssys/constellation/coordinator/pubapi/pubproto" + "github.com/edgelesssys/constellation/coordinator/role" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" +) + +// keyAPI is the interface called by the Coordinator or an admin during restart of a node. +type keyAPI struct { + metadata core.ProviderMetadata + mux sync.Mutex + key []byte + keyReceived chan bool + timeout time.Duration +} + +func (a *keyAPI) waitForDecryptionKey() { + // go server.Start() + // block until a key is pushed + if <-a.keyReceived { + return + } +} + +func (a *keyAPI) requestKeyFromCoordinator(uuid string, opts ...grpc.DialOption) error { + // we do not perform attestation, since the restarting node does not need to care about notifying the correct Coordinator + // if an incorrect key is pushed by a malicious actor, decrypting the disk will fail, and the node will not start + tlsClientConfig, err := atls.CreateUnverifiedClientTLSConfig() + if err != nil { + return err + } + + for { + select { + // return if a key was received by any means + // a key can be send by + // - a Coordinator, after the request rpc was received + // - by a Constellation admin, at any time this loop is running on a node during boot + case <-a.keyReceived: + return nil + default: + // list available Coordinators + endpoints, _ := core.CoordinatorEndpoints(context.Background(), a.metadata) + // notify the all available Coordinators to send a key to the node + // any errors encountered here will be ignored, and the calls retried after a timeout + for _, endpoint := range endpoints { + ctx, cancel := context.WithTimeout(context.Background(), a.timeout) + conn, err := grpc.DialContext(ctx, endpoint, append(opts, grpc.WithTransportCredentials(credentials.NewTLS(tlsClientConfig)))...) + if err == nil { + client := pubproto.NewAPIClient(conn) + _, _ = client.RequestStateDiskKey(ctx, &pubproto.RequestStateDiskKeyRequest{DiskUuid: uuid}) + conn.Close() + } + + cancel() + } + time.Sleep(a.timeout) + } + } +} + +// WaitForDecryptionKey notifies the Coordinator to send a decryption key and waits until a key is received. +func WaitForDecryptionKey(csp, uuid string) ([]byte, error) { + if uuid == "" { + return nil, errors.New("received no disk UUID") + } + + keyWaiter := &keyAPI{ + keyReceived: make(chan bool, 1), + timeout: 20 * time.Second, // try to request a key every 20 seconds + } + go keyWaiter.waitForDecryptionKey() + + switch strings.ToLower(csp) { + case "azure": + metadata, err := azurecloud.NewMetadata(context.Background()) + if err != nil { + return nil, err + } + keyWaiter.metadata = metadata + case "gcp": + gcpClient, err := gcpcloud.NewClient(context.Background()) + if err != nil { + return nil, err + } + keyWaiter.metadata = gcpcloud.New(gcpClient) + default: + fmt.Fprintf(os.Stderr, "warning: csp %q is not supported, unable to automatically request decryption keys\n", csp) + keyWaiter.metadata = stubMetadata{} + } + + if err := keyWaiter.requestKeyFromCoordinator(uuid); err != nil { + return nil, err + } + + return keyWaiter.key, nil +} + +type stubMetadata struct { + listResponse []core.Instance +} + +func (s stubMetadata) List(ctx context.Context) ([]core.Instance, error) { + return s.listResponse, nil +} + +func (s stubMetadata) Self(ctx context.Context) (core.Instance, error) { + return core.Instance{}, nil +} + +func (s stubMetadata) GetInstance(ctx context.Context, providerID string) (core.Instance, error) { + return core.Instance{}, nil +} + +func (s stubMetadata) SignalRole(ctx context.Context, role role.Role) error { + return nil +} + +func (s stubMetadata) SetVPNIP(ctx context.Context, vpnIP string) error { + return nil +} + +func (s stubMetadata) Supported() bool { + return true +} diff --git a/state/keyservice/keyservice_test.go b/state/keyservice/keyservice_test.go new file mode 100644 index 000000000..068cc9c2f --- /dev/null +++ b/state/keyservice/keyservice_test.go @@ -0,0 +1,178 @@ +package keyservice + +import ( + "context" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "errors" + "net" + "testing" + "time" + + "github.com/edgelesssys/constellation/coordinator/core" + "github.com/edgelesssys/constellation/coordinator/oid" + "github.com/edgelesssys/constellation/coordinator/pubapi/pubproto" + "github.com/edgelesssys/constellation/coordinator/role" + "github.com/edgelesssys/constellation/coordinator/util" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/test/bufconn" +) + +func TestRequestLoop(t *testing.T) { + defaultInstance := core.Instance{ + Name: "test-instance", + ProviderID: "/test/provider", + Role: role.Coordinator, + IPs: []string{"192.0.2.1"}, + } + + testCases := map[string]struct { + server *stubAPIServer + expectedCalls int + listResponse []core.Instance + dontStartServer bool + }{ + "success": { + server: &stubAPIServer{requestStateDiskKeyResp: &pubproto.RequestStateDiskKeyResponse{}}, + listResponse: []core.Instance{defaultInstance}, + }, + "no error if server throws an error": { + server: &stubAPIServer{ + requestStateDiskKeyResp: &pubproto.RequestStateDiskKeyResponse{}, + requestStateDiskKeyErr: errors.New("error"), + }, + listResponse: []core.Instance{defaultInstance}, + }, + "no error if the server can not be reached": { + server: &stubAPIServer{requestStateDiskKeyResp: &pubproto.RequestStateDiskKeyResponse{}}, + listResponse: []core.Instance{defaultInstance}, + dontStartServer: true, + }, + "no error if no endpoint is available": { + server: &stubAPIServer{requestStateDiskKeyResp: &pubproto.RequestStateDiskKeyResponse{}}, + }, + "works for multiple endpoints": { + server: &stubAPIServer{requestStateDiskKeyResp: &pubproto.RequestStateDiskKeyResponse{}}, + listResponse: []core.Instance{ + defaultInstance, + { + Name: "test-instance-2", + ProviderID: "/test/provider", + Role: role.Coordinator, + IPs: []string{"192.0.2.2"}, + }, + }, + }, + } + + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + assert := assert.New(t) + require := require.New(t) + + keyReceived := make(chan bool, 1) + listener := bufconn.Listen(1) + defer listener.Close() + + tlsConfig, err := stubTLSConfig() + require.NoError(err) + s := grpc.NewServer(grpc.Creds(credentials.NewTLS(tlsConfig))) + pubproto.RegisterAPIServer(s, tc.server) + + if !tc.dontStartServer { + go func() { require.NoError(s.Serve(listener)) }() + } + + keyWaiter := &keyAPI{ + metadata: stubMetadata{listResponse: tc.listResponse}, + keyReceived: keyReceived, + timeout: 500 * time.Millisecond, + } + + // notify the API a key was received after 1 second + go func() { + time.Sleep(1 * time.Second) + keyReceived <- true + }() + + err = keyWaiter.requestKeyFromCoordinator( + "1234", + grpc.WithContextDialer(func(ctx context.Context, s string) (net.Conn, error) { + return listener.DialContext(ctx) + }), + ) + assert.NoError(err) + + s.Stop() + }) + } +} + +type stubAPIServer struct { + requestStateDiskKeyResp *pubproto.RequestStateDiskKeyResponse + requestStateDiskKeyErr error + pubproto.UnimplementedAPIServer +} + +func (s *stubAPIServer) GetState(ctx context.Context, in *pubproto.GetStateRequest) (*pubproto.GetStateResponse, error) { + return nil, nil +} + +func (s *stubAPIServer) ActivateAsCoordinator(in *pubproto.ActivateAsCoordinatorRequest, srv pubproto.API_ActivateAsCoordinatorServer) error { + return nil +} + +func (s *stubAPIServer) ActivateAsNode(ctx context.Context, in *pubproto.ActivateAsNodeRequest) (*pubproto.ActivateAsNodeResponse, error) { + return nil, nil +} + +func (s *stubAPIServer) ActivateAdditionalNodes(in *pubproto.ActivateAdditionalNodesRequest, srv pubproto.API_ActivateAdditionalNodesServer) error { + return nil +} + +func (s *stubAPIServer) JoinCluster(ctx context.Context, in *pubproto.JoinClusterRequest) (*pubproto.JoinClusterResponse, error) { + return nil, nil +} + +func (s *stubAPIServer) TriggerNodeUpdate(ctx context.Context, in *pubproto.TriggerNodeUpdateRequest) (*pubproto.TriggerNodeUpdateResponse, error) { + return nil, nil +} + +func (s *stubAPIServer) RequestStateDiskKey(ctx context.Context, in *pubproto.RequestStateDiskKeyRequest) (*pubproto.RequestStateDiskKeyResponse, error) { + return s.requestStateDiskKeyResp, s.requestStateDiskKeyErr +} + +func stubTLSConfig() (*tls.Config, error) { + priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + return nil, err + } + getCertificate := func(chi *tls.ClientHelloInfo) (*tls.Certificate, error) { + serialNumber, err := util.GenerateCertificateSerialNumber() + if err != nil { + return nil, err + } + now := time.Now() + template := &x509.Certificate{ + SerialNumber: serialNumber, + Subject: pkix.Name{CommonName: "Constellation"}, + NotBefore: now.Add(-2 * time.Hour), + NotAfter: now.Add(2 * time.Hour), + ExtraExtensions: []pkix.Extension{{Id: oid.Dummy{}.OID(), Value: []byte{0x1, 0x2, 0x3}}}, + } + cert, err := x509.CreateCertificate(rand.Reader, template, template, &priv.PublicKey, priv) + if err != nil { + return nil, err + } + + return &tls.Certificate{Certificate: [][]byte{cert}, PrivateKey: priv}, nil + } + return &tls.Config{GetCertificate: getCertificate, MinVersion: tls.VersionTLS12}, nil +} diff --git a/state/mapper/cryptdevice.go b/state/mapper/cryptdevice.go index 5cd43d0a9..4566756a2 100644 --- a/state/mapper/cryptdevice.go +++ b/state/mapper/cryptdevice.go @@ -18,6 +18,9 @@ type cryptDevice interface { // Free releases crypt device context and used memory. // C equivalent: crypt_free Free() bool + // GetUUID gets the device's UUID. + // C equivalent: crypt_get_uuid + GetUUID() string // Load loads crypt device parameters from the on-disk header. // Returns nil on success, or an error otherwise. // C equivalent: crypt_load diff --git a/state/mapper/mapper.go b/state/mapper/mapper.go index be3769532..cb84fb5ef 100644 --- a/state/mapper/mapper.go +++ b/state/mapper/mapper.go @@ -36,6 +36,16 @@ func (m *Mapper) Close() error { return errors.New("unable to close crypt device") } +// IsLUKSDevice returns true if the device is formatted as a LUKS device. +func (m *Mapper) IsLUKSDevice() bool { + return m.device.Load(cryptsetup.LUKS2{}) == nil +} + +// GetUUID gets the device's UUID. +func (m *Mapper) DiskUUID() string { + return m.device.GetUUID() +} + // FormatDisk formats the disk and adds passphrase in keyslot 0. func (m *Mapper) FormatDisk(passphrase string) error { luksParams := cryptsetup.LUKS2{ diff --git a/state/test/integration_test.go b/state/test/integration_test.go index 5887c57e1..3b630b693 100644 --- a/state/test/integration_test.go +++ b/state/test/integration_test.go @@ -49,10 +49,16 @@ func TestMapper(t *testing.T) { require.NoError(err, "failed to initialize crypt device") defer func() { require.NoError(mapper.Close(), "failed to close crypt device") }() + assert.False(mapper.IsLUKSDevice()) + + // Format and map disk passphrase := "unit-test" require.NoError(mapper.FormatDisk(passphrase), "failed to format disk") require.NoError(mapper.MapDisk(mappedDevice, passphrase), "failed to map disk") - require.NoError(mapper.UnmapDisk(mappedDevice), "failed to remove disk mapping") + + assert.True(mapper.IsLUKSDevice()) + + // Try to map disk with incorrect passphrase assert.Error(mapper.MapDisk(mappedDevice, "invalid-passphrase"), "was able to map disk with incorrect passphrase") }