Separate web UI into standalone metacrypt-web binary

The vault server holds in-memory unsealed state (KEK, engine keys) that
is lost on restart, requiring a full unseal ceremony. Previously the web
UI ran inside the vault process, so any UI change forced a restart and
re-unseal.

This change extracts the web UI into a separate metacrypt-web binary
that communicates with the vault over an authenticated gRPC connection.
The web server carries no sealed state and can be restarted freely.

- gen/metacrypt/v1/: generated Go bindings from proto/metacrypt/v1/
- internal/grpcserver/: full gRPC server implementation (System, Auth,
  Engine, PKI, Policy, ACME services) with seal/auth/admin interceptors
- internal/webserver/: web server with gRPC vault client; templates
  embedded via web/embed.go (no runtime web/ directory needed)
- cmd/metacrypt-web/: standalone binary entry point
- internal/config: added [web] section (listen_addr, vault_grpc, etc.)
- internal/server/routes.go: removed all web UI routes and handlers
- cmd/metacrypt/server.go: starts gRPC server alongside HTTP server
- Deploy: Dockerfile builds both binaries, docker-compose adds
  metacrypt-web service, new metacrypt-web.service systemd unit,
  Makefile gains proto/metacrypt-web targets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-15 09:07:12 -07:00
parent b8e348db03
commit cc1ac2e255
37 changed files with 5668 additions and 647 deletions

View File

@@ -1,5 +1,8 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto/metacrypt/v1/system.proto
// versions:
// protoc-gen-go v1.36.11
// protoc v3.20.3
// source: metacrypt/v1/system.proto
package metacryptv1
@@ -8,10 +11,13 @@ import (
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
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)
)
@@ -23,14 +29,19 @@ type StatusRequest struct {
func (x *StatusRequest) Reset() {
*x = StatusRequest{}
mi := &file_system_proto_msgTypes[0]
mi := &file_metacrypt_v1_system_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *StatusRequest) String() string { return protoimpl.X.MessageStringOf(x) }
func (*StatusRequest) ProtoMessage() {}
func (x *StatusRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StatusRequest) ProtoMessage() {}
func (x *StatusRequest) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[0]
mi := &file_metacrypt_v1_system_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -41,6 +52,11 @@ func (x *StatusRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use StatusRequest.ProtoReflect.Descriptor instead.
func (*StatusRequest) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{0}
}
type StatusResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
@@ -50,14 +66,19 @@ type StatusResponse struct {
func (x *StatusResponse) Reset() {
*x = StatusResponse{}
mi := &file_system_proto_msgTypes[1]
mi := &file_metacrypt_v1_system_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *StatusResponse) String() string { return protoimpl.X.MessageStringOf(x) }
func (*StatusResponse) ProtoMessage() {}
func (x *StatusResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StatusResponse) ProtoMessage() {}
func (x *StatusResponse) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[1]
mi := &file_metacrypt_v1_system_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -67,6 +88,12 @@ func (x *StatusResponse) ProtoReflect() protoreflect.Message {
}
return mi.MessageOf(x)
}
// Deprecated: Use StatusResponse.ProtoReflect.Descriptor instead.
func (*StatusResponse) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{1}
}
func (x *StatusResponse) GetState() string {
if x != nil {
return x.State
@@ -83,14 +110,19 @@ type InitRequest struct {
func (x *InitRequest) Reset() {
*x = InitRequest{}
mi := &file_system_proto_msgTypes[2]
mi := &file_metacrypt_v1_system_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *InitRequest) String() string { return protoimpl.X.MessageStringOf(x) }
func (*InitRequest) ProtoMessage() {}
func (x *InitRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*InitRequest) ProtoMessage() {}
func (x *InitRequest) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[2]
mi := &file_metacrypt_v1_system_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -100,6 +132,12 @@ func (x *InitRequest) ProtoReflect() protoreflect.Message {
}
return mi.MessageOf(x)
}
// Deprecated: Use InitRequest.ProtoReflect.Descriptor instead.
func (*InitRequest) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{2}
}
func (x *InitRequest) GetPassword() string {
if x != nil {
return x.Password
@@ -116,14 +154,19 @@ type InitResponse struct {
func (x *InitResponse) Reset() {
*x = InitResponse{}
mi := &file_system_proto_msgTypes[3]
mi := &file_metacrypt_v1_system_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *InitResponse) String() string { return protoimpl.X.MessageStringOf(x) }
func (*InitResponse) ProtoMessage() {}
func (x *InitResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*InitResponse) ProtoMessage() {}
func (x *InitResponse) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[3]
mi := &file_metacrypt_v1_system_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -133,6 +176,12 @@ func (x *InitResponse) ProtoReflect() protoreflect.Message {
}
return mi.MessageOf(x)
}
// Deprecated: Use InitResponse.ProtoReflect.Descriptor instead.
func (*InitResponse) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{3}
}
func (x *InitResponse) GetState() string {
if x != nil {
return x.State
@@ -149,14 +198,19 @@ type UnsealRequest struct {
func (x *UnsealRequest) Reset() {
*x = UnsealRequest{}
mi := &file_system_proto_msgTypes[4]
mi := &file_metacrypt_v1_system_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UnsealRequest) String() string { return protoimpl.X.MessageStringOf(x) }
func (*UnsealRequest) ProtoMessage() {}
func (x *UnsealRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UnsealRequest) ProtoMessage() {}
func (x *UnsealRequest) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[4]
mi := &file_metacrypt_v1_system_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -166,6 +220,12 @@ func (x *UnsealRequest) ProtoReflect() protoreflect.Message {
}
return mi.MessageOf(x)
}
// Deprecated: Use UnsealRequest.ProtoReflect.Descriptor instead.
func (*UnsealRequest) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{4}
}
func (x *UnsealRequest) GetPassword() string {
if x != nil {
return x.Password
@@ -182,14 +242,19 @@ type UnsealResponse struct {
func (x *UnsealResponse) Reset() {
*x = UnsealResponse{}
mi := &file_system_proto_msgTypes[5]
mi := &file_metacrypt_v1_system_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UnsealResponse) String() string { return protoimpl.X.MessageStringOf(x) }
func (*UnsealResponse) ProtoMessage() {}
func (x *UnsealResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UnsealResponse) ProtoMessage() {}
func (x *UnsealResponse) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[5]
mi := &file_metacrypt_v1_system_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -199,6 +264,12 @@ func (x *UnsealResponse) ProtoReflect() protoreflect.Message {
}
return mi.MessageOf(x)
}
// Deprecated: Use UnsealResponse.ProtoReflect.Descriptor instead.
func (*UnsealResponse) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{5}
}
func (x *UnsealResponse) GetState() string {
if x != nil {
return x.State
@@ -214,14 +285,19 @@ type SealRequest struct {
func (x *SealRequest) Reset() {
*x = SealRequest{}
mi := &file_system_proto_msgTypes[6]
mi := &file_metacrypt_v1_system_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SealRequest) String() string { return protoimpl.X.MessageStringOf(x) }
func (*SealRequest) ProtoMessage() {}
func (x *SealRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SealRequest) ProtoMessage() {}
func (x *SealRequest) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[6]
mi := &file_metacrypt_v1_system_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -232,6 +308,11 @@ func (x *SealRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use SealRequest.ProtoReflect.Descriptor instead.
func (*SealRequest) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{6}
}
type SealResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
@@ -241,14 +322,19 @@ type SealResponse struct {
func (x *SealResponse) Reset() {
*x = SealResponse{}
mi := &file_system_proto_msgTypes[7]
mi := &file_metacrypt_v1_system_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SealResponse) String() string { return protoimpl.X.MessageStringOf(x) }
func (*SealResponse) ProtoMessage() {}
func (x *SealResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SealResponse) ProtoMessage() {}
func (x *SealResponse) ProtoReflect() protoreflect.Message {
mi := &file_system_proto_msgTypes[7]
mi := &file_metacrypt_v1_system_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -258,6 +344,12 @@ func (x *SealResponse) ProtoReflect() protoreflect.Message {
}
return mi.MessageOf(x)
}
// Deprecated: Use SealResponse.ProtoReflect.Descriptor instead.
func (*SealResponse) Descriptor() ([]byte, []int) {
return file_metacrypt_v1_system_proto_rawDescGZIP(), []int{7}
}
func (x *SealResponse) GetState() string {
if x != nil {
return x.State
@@ -265,77 +357,55 @@ func (x *SealResponse) GetState() string {
return ""
}
// file descriptor compiled from proto/metacrypt/v1/system.proto
var file_system_proto_rawDesc = []byte{
0x0a, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70,
0x74, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x12, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76, 0x31, 0x22,
0x0f, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x22, 0x27, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x28, 0x0a, 0x0b, 0x49, 0x6e, 0x69, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
0x6f, 0x72, 0x64, 0x22, 0x25, 0x0a, 0x0c, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x0d, 0x55, 0x6e, 0x73,
0x65, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x27, 0x0a, 0x0e, 0x55, 0x6e, 0x73, 0x65, 0x61, 0x6c,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x0d,
0x0a, 0x0b, 0x53, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x25, 0x0a,
0x0c, 0x53, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a,
0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x32, 0xc7, 0x01, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
0x1b, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x49, 0x6e,
0x69, 0x74, 0x12, 0x19, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69,
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x6e, 0x73,
0x65, 0x61, 0x6c, 0x12, 0x1b, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1c, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x55, 0x6e, 0x73, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e,
0x0a, 0x04, 0x53, 0x65, 0x61, 0x6c, 0x12, 0x19, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79,
0x70, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x53, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x44, 0x5a,
0x42, 0x67, 0x69, 0x74, 0x2e, 0x77, 0x6e, 0x74, 0x72, 0x6d, 0x75, 0x74, 0x65, 0x2e, 0x64, 0x65,
0x76, 0x2f, 0x6b, 0x79, 0x6c, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74,
0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2f, 0x76,
0x31, 0x3b, 0x6d, 0x65, 0x74, 0x61, 0x63, 0x72, 0x79, 0x70, 0x74, 0x76, 0x31, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var File_metacrypt_v1_system_proto protoreflect.FileDescriptor
const file_metacrypt_v1_system_proto_rawDesc = "" +
"\n" +
"\x19metacrypt/v1/system.proto\x12\fmetacrypt.v1\"\x0f\n" +
"\rStatusRequest\"&\n" +
"\x0eStatusResponse\x12\x14\n" +
"\x05state\x18\x01 \x01(\tR\x05state\")\n" +
"\vInitRequest\x12\x1a\n" +
"\bpassword\x18\x01 \x01(\tR\bpassword\"$\n" +
"\fInitResponse\x12\x14\n" +
"\x05state\x18\x01 \x01(\tR\x05state\"+\n" +
"\rUnsealRequest\x12\x1a\n" +
"\bpassword\x18\x01 \x01(\tR\bpassword\"&\n" +
"\x0eUnsealResponse\x12\x14\n" +
"\x05state\x18\x01 \x01(\tR\x05state\"\r\n" +
"\vSealRequest\"$\n" +
"\fSealResponse\x12\x14\n" +
"\x05state\x18\x01 \x01(\tR\x05state2\x97\x02\n" +
"\rSystemService\x12C\n" +
"\x06Status\x12\x1b.metacrypt.v1.StatusRequest\x1a\x1c.metacrypt.v1.StatusResponse\x12=\n" +
"\x04Init\x12\x19.metacrypt.v1.InitRequest\x1a\x1a.metacrypt.v1.InitResponse\x12C\n" +
"\x06Unseal\x12\x1b.metacrypt.v1.UnsealRequest\x1a\x1c.metacrypt.v1.UnsealResponse\x12=\n" +
"\x04Seal\x12\x19.metacrypt.v1.SealRequest\x1a\x1a.metacrypt.v1.SealResponseB>Z<git.wntrmute.dev/kyle/metacrypt/gen/metacrypt/v1;metacryptv1b\x06proto3"
var (
file_system_proto_rawDescOnce sync.Once
file_system_proto_rawDescData []byte
file_metacrypt_v1_system_proto_rawDescOnce sync.Once
file_metacrypt_v1_system_proto_rawDescData []byte
)
func file_system_proto_rawDescGZIP() []byte {
file_system_proto_rawDescOnce.Do(func() {
file_system_proto_rawDescData = file_system_proto_rawDesc
func file_metacrypt_v1_system_proto_rawDescGZIP() []byte {
file_metacrypt_v1_system_proto_rawDescOnce.Do(func() {
file_metacrypt_v1_system_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metacrypt_v1_system_proto_rawDesc), len(file_metacrypt_v1_system_proto_rawDesc)))
})
return file_system_proto_rawDescData
return file_metacrypt_v1_system_proto_rawDescData
}
var file_system_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_system_proto_goTypes = []any{
(*StatusRequest)(nil), // 0
(*StatusResponse)(nil), // 1
(*InitRequest)(nil), // 2
(*InitResponse)(nil), // 3
(*UnsealRequest)(nil), // 4
(*UnsealResponse)(nil), // 5
(*SealRequest)(nil), // 6
(*SealResponse)(nil), // 7
var file_metacrypt_v1_system_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_metacrypt_v1_system_proto_goTypes = []any{
(*StatusRequest)(nil), // 0: metacrypt.v1.StatusRequest
(*StatusResponse)(nil), // 1: metacrypt.v1.StatusResponse
(*InitRequest)(nil), // 2: metacrypt.v1.InitRequest
(*InitResponse)(nil), // 3: metacrypt.v1.InitResponse
(*UnsealRequest)(nil), // 4: metacrypt.v1.UnsealRequest
(*UnsealResponse)(nil), // 5: metacrypt.v1.UnsealResponse
(*SealRequest)(nil), // 6: metacrypt.v1.SealRequest
(*SealResponse)(nil), // 7: metacrypt.v1.SealResponse
}
var file_system_proto_depIdxs = []int32{
var file_metacrypt_v1_system_proto_depIdxs = []int32{
0, // 0: metacrypt.v1.SystemService.Status:input_type -> metacrypt.v1.StatusRequest
2, // 1: metacrypt.v1.SystemService.Init:input_type -> metacrypt.v1.InitRequest
4, // 2: metacrypt.v1.SystemService.Unseal:input_type -> metacrypt.v1.UnsealRequest
@@ -351,31 +421,26 @@ var file_system_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for field type_name
}
func init() { file_system_proto_init() }
func file_system_proto_init() {
if File_system_proto != nil {
func init() { file_metacrypt_v1_system_proto_init() }
func file_metacrypt_v1_system_proto_init() {
if File_metacrypt_v1_system_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_system_proto_rawDesc,
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metacrypt_v1_system_proto_rawDesc), len(file_metacrypt_v1_system_proto_rawDesc)),
NumEnums: 0,
NumMessages: 8,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_system_proto_goTypes,
DependencyIndexes: file_system_proto_depIdxs,
MessageInfos: file_system_proto_msgTypes,
GoTypes: file_metacrypt_v1_system_proto_goTypes,
DependencyIndexes: file_metacrypt_v1_system_proto_depIdxs,
MessageInfos: file_metacrypt_v1_system_proto_msgTypes,
}.Build()
File_system_proto = out.File
file_system_proto_rawDescData = nil
file_system_proto_goTypes = nil
file_system_proto_depIdxs = nil
File_metacrypt_v1_system_proto = out.File
file_metacrypt_v1_system_proto_goTypes = nil
file_metacrypt_v1_system_proto_depIdxs = nil
}
// File_system_proto is the protoreflect.FileDescriptor for proto/metacrypt/v1/system.proto.
var File_system_proto protoreflect.FileDescriptor