Implements the SystemService gRPC endpoint (Status, Init, Unseal, Seal) alongside the existing REST API, secured with the same TLS certificate. The `metacrypt unseal` CLI command now prefers gRPC when --grpc-addr is provided, falling back to the REST API via --addr. Both transports require TLS; a custom CA certificate can be supplied with --ca-cert. Server changes: - internal/server/grpc.go: SystemServiceServer implementation with StartGRPC/ShutdownGRPC methods; uses the TLS cert from config. - internal/server/server.go: adds grpcSrv field and grpc import. - cmd/metacrypt/server.go: starts gRPC goroutine when grpc_addr is set in config, shuts it down on signal. Generated code (from proto/metacrypt/v1/system.proto): - gen/metacrypt/v1/system.pb.go: protobuf message types - gen/metacrypt/v1/system_grpc.pb.go: gRPC client/server stubs Dependencies added to go.mod (run `go mod tidy` to populate go.sum): - google.golang.org/grpc v1.71.1 - google.golang.org/protobuf v1.36.5 - google.golang.org/genproto/googleapis/rpc (indirect) - golang.org/x/net (indirect) https://claude.ai/code/session_013m1QXGoTB4jaPUN5gwir8F
48 lines
1.8 KiB
Modula-2
48 lines
1.8 KiB
Modula-2
module git.wntrmute.dev/kyle/metacrypt
|
|
|
|
go 1.25.0
|
|
|
|
replace git.wntrmute.dev/kyle/mcias/clients/go => /Users/kyle/src/mcias/clients/go
|
|
|
|
replace git.wntrmute.dev/kyle/goutils => /Users/kyle/src/goutils
|
|
|
|
require (
|
|
git.wntrmute.dev/kyle/goutils v0.0.0-00010101000000-000000000000
|
|
git.wntrmute.dev/kyle/mcias/clients/go v0.0.0-00010101000000-000000000000
|
|
github.com/go-chi/chi/v5 v5.2.5
|
|
github.com/pelletier/go-toml/v2 v2.2.4
|
|
github.com/spf13/cobra v1.10.2
|
|
github.com/spf13/viper v1.21.0
|
|
golang.org/x/crypto v0.49.0
|
|
golang.org/x/term v0.41.0
|
|
google.golang.org/grpc v1.71.1
|
|
google.golang.org/protobuf v1.36.5
|
|
modernc.org/sqlite v1.46.1
|
|
)
|
|
|
|
require (
|
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
|
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
|
|
github.com/google/uuid v1.6.0 // indirect
|
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
github.com/ncruces/go-strftime v1.0.0 // indirect
|
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
github.com/sagikazarmark/locafero v0.11.0 // indirect
|
|
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
|
|
github.com/spf13/afero v1.15.0 // indirect
|
|
github.com/spf13/cast v1.10.0 // indirect
|
|
github.com/spf13/pflag v1.0.10 // indirect
|
|
github.com/subosito/gotenv v1.6.0 // indirect
|
|
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
|
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
|
|
golang.org/x/net v0.40.0 // indirect
|
|
golang.org/x/sys v0.42.0 // indirect
|
|
golang.org/x/text v0.35.0 // indirect
|
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect
|
|
modernc.org/libc v1.67.6 // indirect
|
|
modernc.org/mathutil v1.7.1 // indirect
|
|
modernc.org/memory v1.11.0 // indirect
|
|
)
|