From 560b6d81ad237252cb89867885409d7a2fa87eae Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Fri, 19 Jun 2026 06:14:36 +0000 Subject: [PATCH] hscontrol: remove the proto, gRPC and grpc-gateway stack With the v1 API served by Huma and the CLI on the HTTP client, nothing uses the gRPC service or its generated code. Delete proto/, the generated gen/go and gen/openapiv2, grpcv1.go, the buf config, the proto .Proto() helpers and gRPC config, and the proto build tooling from the flake and CI. --- .github/workflows/check-generated.yml | 2 - .github/workflows/lint.yml | 14 - buf.gen.yaml | 21 - cmd/dev/main.go | 20 +- config-example.yaml | 16 - flake.nix | 43 - gen/go/headscale/v1/apikey.pb.go | 537 ---- gen/go/headscale/v1/auth.pb.go | 351 --- gen/go/headscale/v1/device.pb.go | 890 ------- gen/go/headscale/v1/headscale.pb.go | 318 --- gen/go/headscale/v1/headscale.pb.gw.go | 2201 ----------------- gen/go/headscale/v1/headscale_grpc.pb.go | 1199 --------- gen/go/headscale/v1/node.pb.go | 1379 ----------- gen/go/headscale/v1/policy.pb.go | 363 --- gen/go/headscale/v1/preauthkey.pb.go | 596 ----- gen/go/headscale/v1/user.pb.go | 615 ----- .../headscale/v1/apikey.swagger.json | 44 - gen/openapiv2/headscale/v1/auth.swagger.json | 44 - .../headscale/v1/device.swagger.json | 44 - .../headscale/v1/headscale.swagger.json | 1535 ------------ gen/openapiv2/headscale/v1/node.swagger.json | 44 - .../headscale/v1/policy.swagger.json | 44 - .../headscale/v1/preauthkey.swagger.json | 44 - gen/openapiv2/headscale/v1/user.swagger.json | 44 - hscontrol/auth_tags_test.go | 5 +- hscontrol/db/preauth_keys_test.go | 2 +- hscontrol/grpcv1.go | 944 ------- hscontrol/grpcv1_test.go | 819 ------ hscontrol/state/state.go | 4 +- hscontrol/types/api_key.go | 24 - hscontrol/types/config.go | 7 - hscontrol/types/node.go | 81 +- hscontrol/types/node_test.go | 51 - hscontrol/types/preauth_key.go | 62 - hscontrol/types/users.go | 24 - proto/buf.lock | 18 - proto/buf.yaml | 12 - proto/headscale/v1/apikey.proto | 35 - proto/headscale/v1/auth.proto | 26 - proto/headscale/v1/device.proto | 76 - proto/headscale/v1/headscale.proto | 256 -- proto/headscale/v1/node.proto | 144 -- proto/headscale/v1/policy.proto | 23 - proto/headscale/v1/preauthkey.proto | 49 - proto/headscale/v1/user.proto | 44 - 45 files changed, 17 insertions(+), 13097 deletions(-) delete mode 100644 buf.gen.yaml delete mode 100644 gen/go/headscale/v1/apikey.pb.go delete mode 100644 gen/go/headscale/v1/auth.pb.go delete mode 100644 gen/go/headscale/v1/device.pb.go delete mode 100644 gen/go/headscale/v1/headscale.pb.go delete mode 100644 gen/go/headscale/v1/headscale.pb.gw.go delete mode 100644 gen/go/headscale/v1/headscale_grpc.pb.go delete mode 100644 gen/go/headscale/v1/node.pb.go delete mode 100644 gen/go/headscale/v1/policy.pb.go delete mode 100644 gen/go/headscale/v1/preauthkey.pb.go delete mode 100644 gen/go/headscale/v1/user.pb.go delete mode 100644 gen/openapiv2/headscale/v1/apikey.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/auth.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/device.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/headscale.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/node.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/policy.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/preauthkey.swagger.json delete mode 100644 gen/openapiv2/headscale/v1/user.swagger.json delete mode 100644 hscontrol/grpcv1.go delete mode 100644 hscontrol/grpcv1_test.go delete mode 100644 proto/buf.lock delete mode 100644 proto/buf.yaml delete mode 100644 proto/headscale/v1/apikey.proto delete mode 100644 proto/headscale/v1/auth.proto delete mode 100644 proto/headscale/v1/device.proto delete mode 100644 proto/headscale/v1/headscale.proto delete mode 100644 proto/headscale/v1/node.proto delete mode 100644 proto/headscale/v1/policy.proto delete mode 100644 proto/headscale/v1/preauthkey.proto delete mode 100644 proto/headscale/v1/user.proto diff --git a/.github/workflows/check-generated.yml b/.github/workflows/check-generated.yml index 71d721fa..4b463fcc 100644 --- a/.github/workflows/check-generated.yml +++ b/.github/workflows/check-generated.yml @@ -28,8 +28,6 @@ jobs: - '*.nix' - 'go.*' - '**/*.go' - - '**/*.proto' - - 'buf.gen.yaml' - 'tools/**' - uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34 if: steps.changed-files.outputs.files == 'true' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0f493783..ed809ac5 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -77,17 +77,3 @@ jobs: if: steps.changed-files.outputs.files == 'true' run: nix develop --fallback --command -- prettier --no-error-on-unmatched-pattern --ignore-unknown --check **/*.{ts,js,md,yaml,yml,sass,css,scss,html} - - proto-lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34 - - uses: nix-community/cache-nix-action@135667ec418502fa5a3598af6fb9eb733888ce6a # v6.1.3 - with: - primary-key: nix-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/*.nix', - '**/flake.lock') }} - restore-prefixes-first-match: nix-${{ runner.os }}-${{ runner.arch }} - - - name: Buf lint - run: nix develop --fallback --command -- buf lint proto diff --git a/buf.gen.yaml b/buf.gen.yaml deleted file mode 100644 index d7b832ab..00000000 --- a/buf.gen.yaml +++ /dev/null @@ -1,21 +0,0 @@ -version: v1 -plugins: - - name: go - out: gen/go - opt: - - paths=source_relative - - name: go-grpc - out: gen/go - opt: - - paths=source_relative - - name: grpc-gateway - out: gen/go - opt: - - paths=source_relative - - generate_unbound_methods=true - # - name: gorm - # out: gen/go - # opt: - # - paths=source_relative,enums=string,gateway=true - - name: openapiv2 - out: gen/openapiv2 diff --git a/cmd/dev/main.go b/cmd/dev/main.go index b3c7a840..a1953123 100644 --- a/cmd/dev/main.go +++ b/cmd/dev/main.go @@ -28,17 +28,14 @@ var errHealthTimeout = errors.New("health check timed out") var errEmptyAuthKey = errors.New("empty auth key in response") -// maxDevPort is the highest --port value that keeps both the derived -// metrics port (port+1010) and gRPC port (port+42363) inside the valid -// 1..65535 TCP range. -const maxDevPort = 23172 +// maxDevPort is the highest --port value that keeps the derived metrics +// port (port+1010) inside the valid 1..65535 TCP range. +const maxDevPort = 64525 const devConfig = `--- server_url: http://127.0.0.1:%d listen_addr: 127.0.0.1:%d metrics_listen_addr: 127.0.0.1:%d -grpc_listen_addr: 127.0.0.1:%d -grpc_allow_insecure: true noise: private_key_path: %s/noise_private.key @@ -83,7 +80,7 @@ func main() { if *port < 1 || *port > maxDevPort { log.Fatalf( - "--port must be in 1..%d (higher values overflow the derived gRPC port); got %d", + "--port must be in 1..%d (higher values overflow the derived metrics port); got %d", maxDevPort, *port, ) } @@ -101,7 +98,6 @@ func main() { func run() error { metricsPort := *port + 1010 // default 9090 - grpcPort := *port + 42363 // default 50443 tmpDir, err := os.MkdirTemp("", "headscale-dev-") if err != nil { @@ -114,8 +110,9 @@ func run() error { // Write config. configPath := filepath.Join(tmpDir, "config.yaml") - configContent := fmt.Sprintf(devConfig, - *port, *port, metricsPort, grpcPort, + configContent := fmt.Sprintf( + devConfig, + *port, *port, metricsPort, tmpDir, tmpDir, tmpDir, ) @@ -193,7 +190,8 @@ func run() error { } // Print banner. - fmt.Printf(` + fmt.Printf( + ` === Headscale Dev Environment === Server: http://127.0.0.1:%d Metrics: http://127.0.0.1:%d diff --git a/config-example.yaml b/config-example.yaml index 22b9f349..28fc617d 100644 --- a/config-example.yaml +++ b/config-example.yaml @@ -23,22 +23,6 @@ listen_addr: 127.0.0.1:8080 # Use an empty value to disable the metrics listener. metrics_listen_addr: 127.0.0.1:9090 -# Address to listen for gRPC. -# gRPC is used for controlling a headscale server -# remotely with the CLI -# Note: Remote access _only_ works if you have -# valid certificates. -# -# For production: -# grpc_listen_addr: 0.0.0.0:50443 -grpc_listen_addr: 127.0.0.1:50443 - -# Allow the gRPC admin interface to run in INSECURE -# mode. This is not recommended as the traffic will -# be unencrypted. Only enable if you know what you -# are doing. -grpc_allow_insecure: false - # CIDR(s) of reverse proxies (e.g. 127.0.0.1/32) whose # True-Client-IP, X-Real-IP and X-Forwarded-For headers should # be honoured. Empty (default) ignores those headers; setting diff --git a/flake.nix b/flake.nix index b948dde3..78daf742 100644 --- a/flake.nix +++ b/flake.nix @@ -66,40 +66,6 @@ subPackages = [ "cmd/hi" ]; }; - protoc-gen-grpc-gateway = buildGo rec { - pname = "grpc-gateway"; - version = "2.29.0"; - - src = pkgs.fetchFromGitHub { - owner = "grpc-ecosystem"; - repo = "grpc-gateway"; - rev = "v${version}"; - sha256 = "sha256-d9OIIGttyMBSNgpS6mbR5JEIm13qGu2gFHJazJAexdw="; - }; - - vendorHash = "sha256-p51yD+v8+rPs+ztlX7r0VQ4XlwUkxu+PxgknKEvH00k="; - - nativeBuildInputs = [ pkgs.installShellFiles ]; - - subPackages = [ "protoc-gen-grpc-gateway" "protoc-gen-openapiv2" ]; - }; - - protobuf-language-server = buildGo rec { - pname = "protobuf-language-server"; - version = "ab4c128"; - - src = pkgs.fetchFromGitHub { - owner = "lasorda"; - repo = "protobuf-language-server"; - rev = "ab4c128f00774d51bd6d1f4cfa735f4b7c8619e3"; - sha256 = "sha256-yF6kG+qTRxVO/qp2V9HgTyFBeOm5RQzeqdZFrdidwxM="; - }; - - vendorHash = "sha256-4nTpKBe7ekJsfQf+P6edT/9Vp2SBYbKz1ITawD3bhkI="; - - subPackages = [ "." ]; - }; - # Build golangci-lint with stock Go 1.26 (upstream uses hardcoded Go # version); it does not build against the pinned 1.26.4. golangci-lint = buildGo rec { @@ -195,15 +161,6 @@ # 'dot' is needed for pprof graphs # go tool pprof -http=: graphviz - - # Protobuf dependencies - protobuf - protoc-gen-go - protoc-gen-go-grpc - protoc-gen-grpc-gateway - buf - clang-tools # clang-format - protobuf-language-server ] ++ lib.optionals pkgs.stdenv.isLinux [ traceroute ]; diff --git a/gen/go/headscale/v1/apikey.pb.go b/gen/go/headscale/v1/apikey.pb.go deleted file mode 100644 index 0c855738..00000000 --- a/gen/go/headscale/v1/apikey.pb.go +++ /dev/null @@ -1,537 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/apikey.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - 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) -) - -type ApiKey struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` - Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - LastSeen *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ApiKey) Reset() { - *x = ApiKey{} - mi := &file_headscale_v1_apikey_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ApiKey) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApiKey) ProtoMessage() {} - -func (x *ApiKey) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApiKey.ProtoReflect.Descriptor instead. -func (*ApiKey) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{0} -} - -func (x *ApiKey) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *ApiKey) GetPrefix() string { - if x != nil { - return x.Prefix - } - return "" -} - -func (x *ApiKey) GetExpiration() *timestamppb.Timestamp { - if x != nil { - return x.Expiration - } - return nil -} - -func (x *ApiKey) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ApiKey) GetLastSeen() *timestamppb.Timestamp { - if x != nil { - return x.LastSeen - } - return nil -} - -type CreateApiKeyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Expiration *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=expiration,proto3" json:"expiration,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateApiKeyRequest) Reset() { - *x = CreateApiKeyRequest{} - mi := &file_headscale_v1_apikey_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateApiKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateApiKeyRequest) ProtoMessage() {} - -func (x *CreateApiKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateApiKeyRequest.ProtoReflect.Descriptor instead. -func (*CreateApiKeyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{1} -} - -func (x *CreateApiKeyRequest) GetExpiration() *timestamppb.Timestamp { - if x != nil { - return x.Expiration - } - return nil -} - -type CreateApiKeyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - ApiKey string `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateApiKeyResponse) Reset() { - *x = CreateApiKeyResponse{} - mi := &file_headscale_v1_apikey_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateApiKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateApiKeyResponse) ProtoMessage() {} - -func (x *CreateApiKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateApiKeyResponse.ProtoReflect.Descriptor instead. -func (*CreateApiKeyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{2} -} - -func (x *CreateApiKeyResponse) GetApiKey() string { - if x != nil { - return x.ApiKey - } - return "" -} - -type ExpireApiKeyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExpireApiKeyRequest) Reset() { - *x = ExpireApiKeyRequest{} - mi := &file_headscale_v1_apikey_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExpireApiKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpireApiKeyRequest) ProtoMessage() {} - -func (x *ExpireApiKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpireApiKeyRequest.ProtoReflect.Descriptor instead. -func (*ExpireApiKeyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{3} -} - -func (x *ExpireApiKeyRequest) GetPrefix() string { - if x != nil { - return x.Prefix - } - return "" -} - -func (x *ExpireApiKeyRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -type ExpireApiKeyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExpireApiKeyResponse) Reset() { - *x = ExpireApiKeyResponse{} - mi := &file_headscale_v1_apikey_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExpireApiKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpireApiKeyResponse) ProtoMessage() {} - -func (x *ExpireApiKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpireApiKeyResponse.ProtoReflect.Descriptor instead. -func (*ExpireApiKeyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{4} -} - -type ListApiKeysRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListApiKeysRequest) Reset() { - *x = ListApiKeysRequest{} - mi := &file_headscale_v1_apikey_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListApiKeysRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListApiKeysRequest) ProtoMessage() {} - -func (x *ListApiKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListApiKeysRequest.ProtoReflect.Descriptor instead. -func (*ListApiKeysRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{5} -} - -type ListApiKeysResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - ApiKeys []*ApiKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListApiKeysResponse) Reset() { - *x = ListApiKeysResponse{} - mi := &file_headscale_v1_apikey_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListApiKeysResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListApiKeysResponse) ProtoMessage() {} - -func (x *ListApiKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListApiKeysResponse.ProtoReflect.Descriptor instead. -func (*ListApiKeysResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{6} -} - -func (x *ListApiKeysResponse) GetApiKeys() []*ApiKey { - if x != nil { - return x.ApiKeys - } - return nil -} - -type DeleteApiKeyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteApiKeyRequest) Reset() { - *x = DeleteApiKeyRequest{} - mi := &file_headscale_v1_apikey_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteApiKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteApiKeyRequest) ProtoMessage() {} - -func (x *DeleteApiKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteApiKeyRequest.ProtoReflect.Descriptor instead. -func (*DeleteApiKeyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{7} -} - -func (x *DeleteApiKeyRequest) GetPrefix() string { - if x != nil { - return x.Prefix - } - return "" -} - -func (x *DeleteApiKeyRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -type DeleteApiKeyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteApiKeyResponse) Reset() { - *x = DeleteApiKeyResponse{} - mi := &file_headscale_v1_apikey_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteApiKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteApiKeyResponse) ProtoMessage() {} - -func (x *DeleteApiKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_apikey_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteApiKeyResponse.ProtoReflect.Descriptor instead. -func (*DeleteApiKeyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_apikey_proto_rawDescGZIP(), []int{8} -} - -var File_headscale_v1_apikey_proto protoreflect.FileDescriptor - -const file_headscale_v1_apikey_proto_rawDesc = "" + - "\n" + - "\x19headscale/v1/apikey.proto\x12\fheadscale.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe0\x01\n" + - "\x06ApiKey\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\x12\x16\n" + - "\x06prefix\x18\x02 \x01(\tR\x06prefix\x12:\n" + - "\n" + - "expiration\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "expiration\x129\n" + - "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x127\n" + - "\tlast_seen\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\"Q\n" + - "\x13CreateApiKeyRequest\x12:\n" + - "\n" + - "expiration\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "expiration\"/\n" + - "\x14CreateApiKeyResponse\x12\x17\n" + - "\aapi_key\x18\x01 \x01(\tR\x06apiKey\"=\n" + - "\x13ExpireApiKeyRequest\x12\x16\n" + - "\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x0e\n" + - "\x02id\x18\x02 \x01(\x04R\x02id\"\x16\n" + - "\x14ExpireApiKeyResponse\"\x14\n" + - "\x12ListApiKeysRequest\"F\n" + - "\x13ListApiKeysResponse\x12/\n" + - "\bapi_keys\x18\x01 \x03(\v2\x14.headscale.v1.ApiKeyR\aapiKeys\"=\n" + - "\x13DeleteApiKeyRequest\x12\x16\n" + - "\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x0e\n" + - "\x02id\x18\x02 \x01(\x04R\x02id\"\x16\n" + - "\x14DeleteApiKeyResponseB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_apikey_proto_rawDescOnce sync.Once - file_headscale_v1_apikey_proto_rawDescData []byte -) - -func file_headscale_v1_apikey_proto_rawDescGZIP() []byte { - file_headscale_v1_apikey_proto_rawDescOnce.Do(func() { - file_headscale_v1_apikey_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_apikey_proto_rawDesc), len(file_headscale_v1_apikey_proto_rawDesc))) - }) - return file_headscale_v1_apikey_proto_rawDescData -} - -var file_headscale_v1_apikey_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_headscale_v1_apikey_proto_goTypes = []any{ - (*ApiKey)(nil), // 0: headscale.v1.ApiKey - (*CreateApiKeyRequest)(nil), // 1: headscale.v1.CreateApiKeyRequest - (*CreateApiKeyResponse)(nil), // 2: headscale.v1.CreateApiKeyResponse - (*ExpireApiKeyRequest)(nil), // 3: headscale.v1.ExpireApiKeyRequest - (*ExpireApiKeyResponse)(nil), // 4: headscale.v1.ExpireApiKeyResponse - (*ListApiKeysRequest)(nil), // 5: headscale.v1.ListApiKeysRequest - (*ListApiKeysResponse)(nil), // 6: headscale.v1.ListApiKeysResponse - (*DeleteApiKeyRequest)(nil), // 7: headscale.v1.DeleteApiKeyRequest - (*DeleteApiKeyResponse)(nil), // 8: headscale.v1.DeleteApiKeyResponse - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp -} -var file_headscale_v1_apikey_proto_depIdxs = []int32{ - 9, // 0: headscale.v1.ApiKey.expiration:type_name -> google.protobuf.Timestamp - 9, // 1: headscale.v1.ApiKey.created_at:type_name -> google.protobuf.Timestamp - 9, // 2: headscale.v1.ApiKey.last_seen:type_name -> google.protobuf.Timestamp - 9, // 3: headscale.v1.CreateApiKeyRequest.expiration:type_name -> google.protobuf.Timestamp - 0, // 4: headscale.v1.ListApiKeysResponse.api_keys:type_name -> headscale.v1.ApiKey - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name -} - -func init() { file_headscale_v1_apikey_proto_init() } -func file_headscale_v1_apikey_proto_init() { - if File_headscale_v1_apikey_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_apikey_proto_rawDesc), len(file_headscale_v1_apikey_proto_rawDesc)), - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_apikey_proto_goTypes, - DependencyIndexes: file_headscale_v1_apikey_proto_depIdxs, - MessageInfos: file_headscale_v1_apikey_proto_msgTypes, - }.Build() - File_headscale_v1_apikey_proto = out.File - file_headscale_v1_apikey_proto_goTypes = nil - file_headscale_v1_apikey_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/auth.pb.go b/gen/go/headscale/v1/auth.pb.go deleted file mode 100644 index 2d6bf779..00000000 --- a/gen/go/headscale/v1/auth.pb.go +++ /dev/null @@ -1,351 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/auth.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - 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) -) - -type AuthRegisterRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - AuthId string `protobuf:"bytes,2,opt,name=auth_id,json=authId,proto3" json:"auth_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AuthRegisterRequest) Reset() { - *x = AuthRegisterRequest{} - mi := &file_headscale_v1_auth_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AuthRegisterRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthRegisterRequest) ProtoMessage() {} - -func (x *AuthRegisterRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_auth_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthRegisterRequest.ProtoReflect.Descriptor instead. -func (*AuthRegisterRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_auth_proto_rawDescGZIP(), []int{0} -} - -func (x *AuthRegisterRequest) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *AuthRegisterRequest) GetAuthId() string { - if x != nil { - return x.AuthId - } - return "" -} - -type AuthRegisterResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AuthRegisterResponse) Reset() { - *x = AuthRegisterResponse{} - mi := &file_headscale_v1_auth_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AuthRegisterResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthRegisterResponse) ProtoMessage() {} - -func (x *AuthRegisterResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_auth_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthRegisterResponse.ProtoReflect.Descriptor instead. -func (*AuthRegisterResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_auth_proto_rawDescGZIP(), []int{1} -} - -func (x *AuthRegisterResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type AuthApproveRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AuthId string `protobuf:"bytes,1,opt,name=auth_id,json=authId,proto3" json:"auth_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AuthApproveRequest) Reset() { - *x = AuthApproveRequest{} - mi := &file_headscale_v1_auth_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AuthApproveRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthApproveRequest) ProtoMessage() {} - -func (x *AuthApproveRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_auth_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthApproveRequest.ProtoReflect.Descriptor instead. -func (*AuthApproveRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_auth_proto_rawDescGZIP(), []int{2} -} - -func (x *AuthApproveRequest) GetAuthId() string { - if x != nil { - return x.AuthId - } - return "" -} - -type AuthApproveResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AuthApproveResponse) Reset() { - *x = AuthApproveResponse{} - mi := &file_headscale_v1_auth_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AuthApproveResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthApproveResponse) ProtoMessage() {} - -func (x *AuthApproveResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_auth_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthApproveResponse.ProtoReflect.Descriptor instead. -func (*AuthApproveResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_auth_proto_rawDescGZIP(), []int{3} -} - -type AuthRejectRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AuthId string `protobuf:"bytes,1,opt,name=auth_id,json=authId,proto3" json:"auth_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AuthRejectRequest) Reset() { - *x = AuthRejectRequest{} - mi := &file_headscale_v1_auth_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AuthRejectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthRejectRequest) ProtoMessage() {} - -func (x *AuthRejectRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_auth_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthRejectRequest.ProtoReflect.Descriptor instead. -func (*AuthRejectRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_auth_proto_rawDescGZIP(), []int{4} -} - -func (x *AuthRejectRequest) GetAuthId() string { - if x != nil { - return x.AuthId - } - return "" -} - -type AuthRejectResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AuthRejectResponse) Reset() { - *x = AuthRejectResponse{} - mi := &file_headscale_v1_auth_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AuthRejectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AuthRejectResponse) ProtoMessage() {} - -func (x *AuthRejectResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_auth_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AuthRejectResponse.ProtoReflect.Descriptor instead. -func (*AuthRejectResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_auth_proto_rawDescGZIP(), []int{5} -} - -var File_headscale_v1_auth_proto protoreflect.FileDescriptor - -const file_headscale_v1_auth_proto_rawDesc = "" + - "\n" + - "\x17headscale/v1/auth.proto\x12\fheadscale.v1\x1a\x17headscale/v1/node.proto\"B\n" + - "\x13AuthRegisterRequest\x12\x12\n" + - "\x04user\x18\x01 \x01(\tR\x04user\x12\x17\n" + - "\aauth_id\x18\x02 \x01(\tR\x06authId\">\n" + - "\x14AuthRegisterResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\"-\n" + - "\x12AuthApproveRequest\x12\x17\n" + - "\aauth_id\x18\x01 \x01(\tR\x06authId\"\x15\n" + - "\x13AuthApproveResponse\",\n" + - "\x11AuthRejectRequest\x12\x17\n" + - "\aauth_id\x18\x01 \x01(\tR\x06authId\"\x14\n" + - "\x12AuthRejectResponseB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_auth_proto_rawDescOnce sync.Once - file_headscale_v1_auth_proto_rawDescData []byte -) - -func file_headscale_v1_auth_proto_rawDescGZIP() []byte { - file_headscale_v1_auth_proto_rawDescOnce.Do(func() { - file_headscale_v1_auth_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_auth_proto_rawDesc), len(file_headscale_v1_auth_proto_rawDesc))) - }) - return file_headscale_v1_auth_proto_rawDescData -} - -var file_headscale_v1_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_headscale_v1_auth_proto_goTypes = []any{ - (*AuthRegisterRequest)(nil), // 0: headscale.v1.AuthRegisterRequest - (*AuthRegisterResponse)(nil), // 1: headscale.v1.AuthRegisterResponse - (*AuthApproveRequest)(nil), // 2: headscale.v1.AuthApproveRequest - (*AuthApproveResponse)(nil), // 3: headscale.v1.AuthApproveResponse - (*AuthRejectRequest)(nil), // 4: headscale.v1.AuthRejectRequest - (*AuthRejectResponse)(nil), // 5: headscale.v1.AuthRejectResponse - (*Node)(nil), // 6: headscale.v1.Node -} -var file_headscale_v1_auth_proto_depIdxs = []int32{ - 6, // 0: headscale.v1.AuthRegisterResponse.node:type_name -> headscale.v1.Node - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_headscale_v1_auth_proto_init() } -func file_headscale_v1_auth_proto_init() { - if File_headscale_v1_auth_proto != nil { - return - } - file_headscale_v1_node_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_auth_proto_rawDesc), len(file_headscale_v1_auth_proto_rawDesc)), - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_auth_proto_goTypes, - DependencyIndexes: file_headscale_v1_auth_proto_depIdxs, - MessageInfos: file_headscale_v1_auth_proto_msgTypes, - }.Build() - File_headscale_v1_auth_proto = out.File - file_headscale_v1_auth_proto_goTypes = nil - file_headscale_v1_auth_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/device.pb.go b/gen/go/headscale/v1/device.pb.go deleted file mode 100644 index e2362b05..00000000 --- a/gen/go/headscale/v1/device.pb.go +++ /dev/null @@ -1,890 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/device.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - 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) -) - -type Latency struct { - state protoimpl.MessageState `protogen:"open.v1"` - LatencyMs float32 `protobuf:"fixed32,1,opt,name=latency_ms,json=latencyMs,proto3" json:"latency_ms,omitempty"` - Preferred bool `protobuf:"varint,2,opt,name=preferred,proto3" json:"preferred,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Latency) Reset() { - *x = Latency{} - mi := &file_headscale_v1_device_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Latency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Latency) ProtoMessage() {} - -func (x *Latency) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Latency.ProtoReflect.Descriptor instead. -func (*Latency) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{0} -} - -func (x *Latency) GetLatencyMs() float32 { - if x != nil { - return x.LatencyMs - } - return 0 -} - -func (x *Latency) GetPreferred() bool { - if x != nil { - return x.Preferred - } - return false -} - -type ClientSupports struct { - state protoimpl.MessageState `protogen:"open.v1"` - HairPinning bool `protobuf:"varint,1,opt,name=hair_pinning,json=hairPinning,proto3" json:"hair_pinning,omitempty"` - Ipv6 bool `protobuf:"varint,2,opt,name=ipv6,proto3" json:"ipv6,omitempty"` - Pcp bool `protobuf:"varint,3,opt,name=pcp,proto3" json:"pcp,omitempty"` - Pmp bool `protobuf:"varint,4,opt,name=pmp,proto3" json:"pmp,omitempty"` - Udp bool `protobuf:"varint,5,opt,name=udp,proto3" json:"udp,omitempty"` - Upnp bool `protobuf:"varint,6,opt,name=upnp,proto3" json:"upnp,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientSupports) Reset() { - *x = ClientSupports{} - mi := &file_headscale_v1_device_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientSupports) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientSupports) ProtoMessage() {} - -func (x *ClientSupports) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientSupports.ProtoReflect.Descriptor instead. -func (*ClientSupports) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{1} -} - -func (x *ClientSupports) GetHairPinning() bool { - if x != nil { - return x.HairPinning - } - return false -} - -func (x *ClientSupports) GetIpv6() bool { - if x != nil { - return x.Ipv6 - } - return false -} - -func (x *ClientSupports) GetPcp() bool { - if x != nil { - return x.Pcp - } - return false -} - -func (x *ClientSupports) GetPmp() bool { - if x != nil { - return x.Pmp - } - return false -} - -func (x *ClientSupports) GetUdp() bool { - if x != nil { - return x.Udp - } - return false -} - -func (x *ClientSupports) GetUpnp() bool { - if x != nil { - return x.Upnp - } - return false -} - -type ClientConnectivity struct { - state protoimpl.MessageState `protogen:"open.v1"` - Endpoints []string `protobuf:"bytes,1,rep,name=endpoints,proto3" json:"endpoints,omitempty"` - Derp string `protobuf:"bytes,2,opt,name=derp,proto3" json:"derp,omitempty"` - MappingVariesByDestIp bool `protobuf:"varint,3,opt,name=mapping_varies_by_dest_ip,json=mappingVariesByDestIp,proto3" json:"mapping_varies_by_dest_ip,omitempty"` - Latency map[string]*Latency `protobuf:"bytes,4,rep,name=latency,proto3" json:"latency,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - ClientSupports *ClientSupports `protobuf:"bytes,5,opt,name=client_supports,json=clientSupports,proto3" json:"client_supports,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientConnectivity) Reset() { - *x = ClientConnectivity{} - mi := &file_headscale_v1_device_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientConnectivity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientConnectivity) ProtoMessage() {} - -func (x *ClientConnectivity) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientConnectivity.ProtoReflect.Descriptor instead. -func (*ClientConnectivity) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{2} -} - -func (x *ClientConnectivity) GetEndpoints() []string { - if x != nil { - return x.Endpoints - } - return nil -} - -func (x *ClientConnectivity) GetDerp() string { - if x != nil { - return x.Derp - } - return "" -} - -func (x *ClientConnectivity) GetMappingVariesByDestIp() bool { - if x != nil { - return x.MappingVariesByDestIp - } - return false -} - -func (x *ClientConnectivity) GetLatency() map[string]*Latency { - if x != nil { - return x.Latency - } - return nil -} - -func (x *ClientConnectivity) GetClientSupports() *ClientSupports { - if x != nil { - return x.ClientSupports - } - return nil -} - -type GetDeviceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetDeviceRequest) Reset() { - *x = GetDeviceRequest{} - mi := &file_headscale_v1_device_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetDeviceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetDeviceRequest) ProtoMessage() {} - -func (x *GetDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetDeviceRequest.ProtoReflect.Descriptor instead. -func (*GetDeviceRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{3} -} - -func (x *GetDeviceRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetDeviceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - User string `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClientVersion string `protobuf:"bytes,6,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` - UpdateAvailable bool `protobuf:"varint,7,opt,name=update_available,json=updateAvailable,proto3" json:"update_available,omitempty"` - Os string `protobuf:"bytes,8,opt,name=os,proto3" json:"os,omitempty"` - Created *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created,proto3" json:"created,omitempty"` - LastSeen *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"` - KeyExpiryDisabled bool `protobuf:"varint,11,opt,name=key_expiry_disabled,json=keyExpiryDisabled,proto3" json:"key_expiry_disabled,omitempty"` - Expires *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=expires,proto3" json:"expires,omitempty"` - Authorized bool `protobuf:"varint,13,opt,name=authorized,proto3" json:"authorized,omitempty"` - IsExternal bool `protobuf:"varint,14,opt,name=is_external,json=isExternal,proto3" json:"is_external,omitempty"` - MachineKey string `protobuf:"bytes,15,opt,name=machine_key,json=machineKey,proto3" json:"machine_key,omitempty"` - NodeKey string `protobuf:"bytes,16,opt,name=node_key,json=nodeKey,proto3" json:"node_key,omitempty"` - BlocksIncomingConnections bool `protobuf:"varint,17,opt,name=blocks_incoming_connections,json=blocksIncomingConnections,proto3" json:"blocks_incoming_connections,omitempty"` - EnabledRoutes []string `protobuf:"bytes,18,rep,name=enabled_routes,json=enabledRoutes,proto3" json:"enabled_routes,omitempty"` - AdvertisedRoutes []string `protobuf:"bytes,19,rep,name=advertised_routes,json=advertisedRoutes,proto3" json:"advertised_routes,omitempty"` - ClientConnectivity *ClientConnectivity `protobuf:"bytes,20,opt,name=client_connectivity,json=clientConnectivity,proto3" json:"client_connectivity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetDeviceResponse) Reset() { - *x = GetDeviceResponse{} - mi := &file_headscale_v1_device_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetDeviceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetDeviceResponse) ProtoMessage() {} - -func (x *GetDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetDeviceResponse.ProtoReflect.Descriptor instead. -func (*GetDeviceResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{4} -} - -func (x *GetDeviceResponse) GetAddresses() []string { - if x != nil { - return x.Addresses - } - return nil -} - -func (x *GetDeviceResponse) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *GetDeviceResponse) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *GetDeviceResponse) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetDeviceResponse) GetHostname() string { - if x != nil { - return x.Hostname - } - return "" -} - -func (x *GetDeviceResponse) GetClientVersion() string { - if x != nil { - return x.ClientVersion - } - return "" -} - -func (x *GetDeviceResponse) GetUpdateAvailable() bool { - if x != nil { - return x.UpdateAvailable - } - return false -} - -func (x *GetDeviceResponse) GetOs() string { - if x != nil { - return x.Os - } - return "" -} - -func (x *GetDeviceResponse) GetCreated() *timestamppb.Timestamp { - if x != nil { - return x.Created - } - return nil -} - -func (x *GetDeviceResponse) GetLastSeen() *timestamppb.Timestamp { - if x != nil { - return x.LastSeen - } - return nil -} - -func (x *GetDeviceResponse) GetKeyExpiryDisabled() bool { - if x != nil { - return x.KeyExpiryDisabled - } - return false -} - -func (x *GetDeviceResponse) GetExpires() *timestamppb.Timestamp { - if x != nil { - return x.Expires - } - return nil -} - -func (x *GetDeviceResponse) GetAuthorized() bool { - if x != nil { - return x.Authorized - } - return false -} - -func (x *GetDeviceResponse) GetIsExternal() bool { - if x != nil { - return x.IsExternal - } - return false -} - -func (x *GetDeviceResponse) GetMachineKey() string { - if x != nil { - return x.MachineKey - } - return "" -} - -func (x *GetDeviceResponse) GetNodeKey() string { - if x != nil { - return x.NodeKey - } - return "" -} - -func (x *GetDeviceResponse) GetBlocksIncomingConnections() bool { - if x != nil { - return x.BlocksIncomingConnections - } - return false -} - -func (x *GetDeviceResponse) GetEnabledRoutes() []string { - if x != nil { - return x.EnabledRoutes - } - return nil -} - -func (x *GetDeviceResponse) GetAdvertisedRoutes() []string { - if x != nil { - return x.AdvertisedRoutes - } - return nil -} - -func (x *GetDeviceResponse) GetClientConnectivity() *ClientConnectivity { - if x != nil { - return x.ClientConnectivity - } - return nil -} - -type DeleteDeviceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteDeviceRequest) Reset() { - *x = DeleteDeviceRequest{} - mi := &file_headscale_v1_device_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteDeviceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteDeviceRequest) ProtoMessage() {} - -func (x *DeleteDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteDeviceRequest.ProtoReflect.Descriptor instead. -func (*DeleteDeviceRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{5} -} - -func (x *DeleteDeviceRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type DeleteDeviceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteDeviceResponse) Reset() { - *x = DeleteDeviceResponse{} - mi := &file_headscale_v1_device_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteDeviceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteDeviceResponse) ProtoMessage() {} - -func (x *DeleteDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteDeviceResponse.ProtoReflect.Descriptor instead. -func (*DeleteDeviceResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{6} -} - -type GetDeviceRoutesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetDeviceRoutesRequest) Reset() { - *x = GetDeviceRoutesRequest{} - mi := &file_headscale_v1_device_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetDeviceRoutesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetDeviceRoutesRequest) ProtoMessage() {} - -func (x *GetDeviceRoutesRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetDeviceRoutesRequest.ProtoReflect.Descriptor instead. -func (*GetDeviceRoutesRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{7} -} - -func (x *GetDeviceRoutesRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetDeviceRoutesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - EnabledRoutes []string `protobuf:"bytes,1,rep,name=enabled_routes,json=enabledRoutes,proto3" json:"enabled_routes,omitempty"` - AdvertisedRoutes []string `protobuf:"bytes,2,rep,name=advertised_routes,json=advertisedRoutes,proto3" json:"advertised_routes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetDeviceRoutesResponse) Reset() { - *x = GetDeviceRoutesResponse{} - mi := &file_headscale_v1_device_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetDeviceRoutesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetDeviceRoutesResponse) ProtoMessage() {} - -func (x *GetDeviceRoutesResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetDeviceRoutesResponse.ProtoReflect.Descriptor instead. -func (*GetDeviceRoutesResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{8} -} - -func (x *GetDeviceRoutesResponse) GetEnabledRoutes() []string { - if x != nil { - return x.EnabledRoutes - } - return nil -} - -func (x *GetDeviceRoutesResponse) GetAdvertisedRoutes() []string { - if x != nil { - return x.AdvertisedRoutes - } - return nil -} - -type EnableDeviceRoutesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Routes []string `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EnableDeviceRoutesRequest) Reset() { - *x = EnableDeviceRoutesRequest{} - mi := &file_headscale_v1_device_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnableDeviceRoutesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnableDeviceRoutesRequest) ProtoMessage() {} - -func (x *EnableDeviceRoutesRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnableDeviceRoutesRequest.ProtoReflect.Descriptor instead. -func (*EnableDeviceRoutesRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{9} -} - -func (x *EnableDeviceRoutesRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *EnableDeviceRoutesRequest) GetRoutes() []string { - if x != nil { - return x.Routes - } - return nil -} - -type EnableDeviceRoutesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - EnabledRoutes []string `protobuf:"bytes,1,rep,name=enabled_routes,json=enabledRoutes,proto3" json:"enabled_routes,omitempty"` - AdvertisedRoutes []string `protobuf:"bytes,2,rep,name=advertised_routes,json=advertisedRoutes,proto3" json:"advertised_routes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EnableDeviceRoutesResponse) Reset() { - *x = EnableDeviceRoutesResponse{} - mi := &file_headscale_v1_device_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnableDeviceRoutesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnableDeviceRoutesResponse) ProtoMessage() {} - -func (x *EnableDeviceRoutesResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_device_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnableDeviceRoutesResponse.ProtoReflect.Descriptor instead. -func (*EnableDeviceRoutesResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_device_proto_rawDescGZIP(), []int{10} -} - -func (x *EnableDeviceRoutesResponse) GetEnabledRoutes() []string { - if x != nil { - return x.EnabledRoutes - } - return nil -} - -func (x *EnableDeviceRoutesResponse) GetAdvertisedRoutes() []string { - if x != nil { - return x.AdvertisedRoutes - } - return nil -} - -var File_headscale_v1_device_proto protoreflect.FileDescriptor - -const file_headscale_v1_device_proto_rawDesc = "" + - "\n" + - "\x19headscale/v1/device.proto\x12\fheadscale.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"F\n" + - "\aLatency\x12\x1d\n" + - "\n" + - "latency_ms\x18\x01 \x01(\x02R\tlatencyMs\x12\x1c\n" + - "\tpreferred\x18\x02 \x01(\bR\tpreferred\"\x91\x01\n" + - "\x0eClientSupports\x12!\n" + - "\fhair_pinning\x18\x01 \x01(\bR\vhairPinning\x12\x12\n" + - "\x04ipv6\x18\x02 \x01(\bR\x04ipv6\x12\x10\n" + - "\x03pcp\x18\x03 \x01(\bR\x03pcp\x12\x10\n" + - "\x03pmp\x18\x04 \x01(\bR\x03pmp\x12\x10\n" + - "\x03udp\x18\x05 \x01(\bR\x03udp\x12\x12\n" + - "\x04upnp\x18\x06 \x01(\bR\x04upnp\"\xe3\x02\n" + - "\x12ClientConnectivity\x12\x1c\n" + - "\tendpoints\x18\x01 \x03(\tR\tendpoints\x12\x12\n" + - "\x04derp\x18\x02 \x01(\tR\x04derp\x128\n" + - "\x19mapping_varies_by_dest_ip\x18\x03 \x01(\bR\x15mappingVariesByDestIp\x12G\n" + - "\alatency\x18\x04 \x03(\v2-.headscale.v1.ClientConnectivity.LatencyEntryR\alatency\x12E\n" + - "\x0fclient_supports\x18\x05 \x01(\v2\x1c.headscale.v1.ClientSupportsR\x0eclientSupports\x1aQ\n" + - "\fLatencyEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12+\n" + - "\x05value\x18\x02 \x01(\v2\x15.headscale.v1.LatencyR\x05value:\x028\x01\"\"\n" + - "\x10GetDeviceRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\xa0\x06\n" + - "\x11GetDeviceResponse\x12\x1c\n" + - "\taddresses\x18\x01 \x03(\tR\taddresses\x12\x0e\n" + - "\x02id\x18\x02 \x01(\tR\x02id\x12\x12\n" + - "\x04user\x18\x03 \x01(\tR\x04user\x12\x12\n" + - "\x04name\x18\x04 \x01(\tR\x04name\x12\x1a\n" + - "\bhostname\x18\x05 \x01(\tR\bhostname\x12%\n" + - "\x0eclient_version\x18\x06 \x01(\tR\rclientVersion\x12)\n" + - "\x10update_available\x18\a \x01(\bR\x0fupdateAvailable\x12\x0e\n" + - "\x02os\x18\b \x01(\tR\x02os\x124\n" + - "\acreated\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\acreated\x127\n" + - "\tlast_seen\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x12.\n" + - "\x13key_expiry_disabled\x18\v \x01(\bR\x11keyExpiryDisabled\x124\n" + - "\aexpires\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\aexpires\x12\x1e\n" + - "\n" + - "authorized\x18\r \x01(\bR\n" + - "authorized\x12\x1f\n" + - "\vis_external\x18\x0e \x01(\bR\n" + - "isExternal\x12\x1f\n" + - "\vmachine_key\x18\x0f \x01(\tR\n" + - "machineKey\x12\x19\n" + - "\bnode_key\x18\x10 \x01(\tR\anodeKey\x12>\n" + - "\x1bblocks_incoming_connections\x18\x11 \x01(\bR\x19blocksIncomingConnections\x12%\n" + - "\x0eenabled_routes\x18\x12 \x03(\tR\renabledRoutes\x12+\n" + - "\x11advertised_routes\x18\x13 \x03(\tR\x10advertisedRoutes\x12Q\n" + - "\x13client_connectivity\x18\x14 \x01(\v2 .headscale.v1.ClientConnectivityR\x12clientConnectivity\"%\n" + - "\x13DeleteDeviceRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x16\n" + - "\x14DeleteDeviceResponse\"(\n" + - "\x16GetDeviceRoutesRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"m\n" + - "\x17GetDeviceRoutesResponse\x12%\n" + - "\x0eenabled_routes\x18\x01 \x03(\tR\renabledRoutes\x12+\n" + - "\x11advertised_routes\x18\x02 \x03(\tR\x10advertisedRoutes\"C\n" + - "\x19EnableDeviceRoutesRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + - "\x06routes\x18\x02 \x03(\tR\x06routes\"p\n" + - "\x1aEnableDeviceRoutesResponse\x12%\n" + - "\x0eenabled_routes\x18\x01 \x03(\tR\renabledRoutes\x12+\n" + - "\x11advertised_routes\x18\x02 \x03(\tR\x10advertisedRoutesB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_device_proto_rawDescOnce sync.Once - file_headscale_v1_device_proto_rawDescData []byte -) - -func file_headscale_v1_device_proto_rawDescGZIP() []byte { - file_headscale_v1_device_proto_rawDescOnce.Do(func() { - file_headscale_v1_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_device_proto_rawDesc), len(file_headscale_v1_device_proto_rawDesc))) - }) - return file_headscale_v1_device_proto_rawDescData -} - -var file_headscale_v1_device_proto_msgTypes = make([]protoimpl.MessageInfo, 12) -var file_headscale_v1_device_proto_goTypes = []any{ - (*Latency)(nil), // 0: headscale.v1.Latency - (*ClientSupports)(nil), // 1: headscale.v1.ClientSupports - (*ClientConnectivity)(nil), // 2: headscale.v1.ClientConnectivity - (*GetDeviceRequest)(nil), // 3: headscale.v1.GetDeviceRequest - (*GetDeviceResponse)(nil), // 4: headscale.v1.GetDeviceResponse - (*DeleteDeviceRequest)(nil), // 5: headscale.v1.DeleteDeviceRequest - (*DeleteDeviceResponse)(nil), // 6: headscale.v1.DeleteDeviceResponse - (*GetDeviceRoutesRequest)(nil), // 7: headscale.v1.GetDeviceRoutesRequest - (*GetDeviceRoutesResponse)(nil), // 8: headscale.v1.GetDeviceRoutesResponse - (*EnableDeviceRoutesRequest)(nil), // 9: headscale.v1.EnableDeviceRoutesRequest - (*EnableDeviceRoutesResponse)(nil), // 10: headscale.v1.EnableDeviceRoutesResponse - nil, // 11: headscale.v1.ClientConnectivity.LatencyEntry - (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp -} -var file_headscale_v1_device_proto_depIdxs = []int32{ - 11, // 0: headscale.v1.ClientConnectivity.latency:type_name -> headscale.v1.ClientConnectivity.LatencyEntry - 1, // 1: headscale.v1.ClientConnectivity.client_supports:type_name -> headscale.v1.ClientSupports - 12, // 2: headscale.v1.GetDeviceResponse.created:type_name -> google.protobuf.Timestamp - 12, // 3: headscale.v1.GetDeviceResponse.last_seen:type_name -> google.protobuf.Timestamp - 12, // 4: headscale.v1.GetDeviceResponse.expires:type_name -> google.protobuf.Timestamp - 2, // 5: headscale.v1.GetDeviceResponse.client_connectivity:type_name -> headscale.v1.ClientConnectivity - 0, // 6: headscale.v1.ClientConnectivity.LatencyEntry.value:type_name -> headscale.v1.Latency - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name -} - -func init() { file_headscale_v1_device_proto_init() } -func file_headscale_v1_device_proto_init() { - if File_headscale_v1_device_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_device_proto_rawDesc), len(file_headscale_v1_device_proto_rawDesc)), - NumEnums: 0, - NumMessages: 12, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_device_proto_goTypes, - DependencyIndexes: file_headscale_v1_device_proto_depIdxs, - MessageInfos: file_headscale_v1_device_proto_msgTypes, - }.Build() - File_headscale_v1_device_proto = out.File - file_headscale_v1_device_proto_goTypes = nil - file_headscale_v1_device_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/headscale.pb.go b/gen/go/headscale/v1/headscale.pb.go deleted file mode 100644 index 4a187512..00000000 --- a/gen/go/headscale/v1/headscale.pb.go +++ /dev/null @@ -1,318 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/headscale.proto - -package v1 - -import ( - _ "google.golang.org/genproto/googleapis/api/annotations" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - 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) -) - -type HealthRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *HealthRequest) Reset() { - *x = HealthRequest{} - mi := &file_headscale_v1_headscale_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *HealthRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HealthRequest) ProtoMessage() {} - -func (x *HealthRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_headscale_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HealthRequest.ProtoReflect.Descriptor instead. -func (*HealthRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_headscale_proto_rawDescGZIP(), []int{0} -} - -type HealthResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - DatabaseConnectivity bool `protobuf:"varint,1,opt,name=database_connectivity,json=databaseConnectivity,proto3" json:"database_connectivity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *HealthResponse) Reset() { - *x = HealthResponse{} - mi := &file_headscale_v1_headscale_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *HealthResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HealthResponse) ProtoMessage() {} - -func (x *HealthResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_headscale_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HealthResponse.ProtoReflect.Descriptor instead. -func (*HealthResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_headscale_proto_rawDescGZIP(), []int{1} -} - -func (x *HealthResponse) GetDatabaseConnectivity() bool { - if x != nil { - return x.DatabaseConnectivity - } - return false -} - -var File_headscale_v1_headscale_proto protoreflect.FileDescriptor - -const file_headscale_v1_headscale_proto_rawDesc = "" + - "\n" + - "\x1cheadscale/v1/headscale.proto\x12\fheadscale.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17headscale/v1/user.proto\x1a\x1dheadscale/v1/preauthkey.proto\x1a\x17headscale/v1/node.proto\x1a\x19headscale/v1/apikey.proto\x1a\x17headscale/v1/auth.proto\x1a\x19headscale/v1/policy.proto\"\x0f\n" + - "\rHealthRequest\"E\n" + - "\x0eHealthResponse\x123\n" + - "\x15database_connectivity\x18\x01 \x01(\bR\x14databaseConnectivity2\xe0\x1a\n" + - "\x10HeadscaleService\x12h\n" + - "\n" + - "CreateUser\x12\x1f.headscale.v1.CreateUserRequest\x1a .headscale.v1.CreateUserResponse\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/api/v1/user\x12\x80\x01\n" + - "\n" + - "RenameUser\x12\x1f.headscale.v1.RenameUserRequest\x1a .headscale.v1.RenameUserResponse\"/\x82\xd3\xe4\x93\x02)\"'/api/v1/user/{old_id}/rename/{new_name}\x12j\n" + - "\n" + - "DeleteUser\x12\x1f.headscale.v1.DeleteUserRequest\x1a .headscale.v1.DeleteUserResponse\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/api/v1/user/{id}\x12b\n" + - "\tListUsers\x12\x1e.headscale.v1.ListUsersRequest\x1a\x1f.headscale.v1.ListUsersResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\f/api/v1/user\x12\x80\x01\n" + - "\x10CreatePreAuthKey\x12%.headscale.v1.CreatePreAuthKeyRequest\x1a&.headscale.v1.CreatePreAuthKeyResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/preauthkey\x12\x87\x01\n" + - "\x10ExpirePreAuthKey\x12%.headscale.v1.ExpirePreAuthKeyRequest\x1a&.headscale.v1.ExpirePreAuthKeyResponse\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/v1/preauthkey/expire\x12}\n" + - "\x10DeletePreAuthKey\x12%.headscale.v1.DeletePreAuthKeyRequest\x1a&.headscale.v1.DeletePreAuthKeyResponse\"\x1a\x82\xd3\xe4\x93\x02\x14*\x12/api/v1/preauthkey\x12z\n" + - "\x0fListPreAuthKeys\x12$.headscale.v1.ListPreAuthKeysRequest\x1a%.headscale.v1.ListPreAuthKeysResponse\"\x1a\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/preauthkey\x12}\n" + - "\x0fDebugCreateNode\x12$.headscale.v1.DebugCreateNodeRequest\x1a%.headscale.v1.DebugCreateNodeResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/debug/node\x12f\n" + - "\aGetNode\x12\x1c.headscale.v1.GetNodeRequest\x1a\x1d.headscale.v1.GetNodeResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/node/{node_id}\x12n\n" + - "\aSetTags\x12\x1c.headscale.v1.SetTagsRequest\x1a\x1d.headscale.v1.SetTagsResponse\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/node/{node_id}/tags\x12\x96\x01\n" + - "\x11SetApprovedRoutes\x12&.headscale.v1.SetApprovedRoutesRequest\x1a'.headscale.v1.SetApprovedRoutesResponse\"0\x82\xd3\xe4\x93\x02*:\x01*\"%/api/v1/node/{node_id}/approve_routes\x12t\n" + - "\fRegisterNode\x12!.headscale.v1.RegisterNodeRequest\x1a\".headscale.v1.RegisterNodeResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x15/api/v1/node/register\x12o\n" + - "\n" + - "DeleteNode\x12\x1f.headscale.v1.DeleteNodeRequest\x1a .headscale.v1.DeleteNodeResponse\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/api/v1/node/{node_id}\x12v\n" + - "\n" + - "ExpireNode\x12\x1f.headscale.v1.ExpireNodeRequest\x1a .headscale.v1.ExpireNodeResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1d/api/v1/node/{node_id}/expire\x12\x81\x01\n" + - "\n" + - "RenameNode\x12\x1f.headscale.v1.RenameNodeRequest\x1a .headscale.v1.RenameNodeResponse\"0\x82\xd3\xe4\x93\x02*\"(/api/v1/node/{node_id}/rename/{new_name}\x12b\n" + - "\tListNodes\x12\x1e.headscale.v1.ListNodesRequest\x1a\x1f.headscale.v1.ListNodesResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\f/api/v1/node\x12\x80\x01\n" + - "\x0fBackfillNodeIPs\x12$.headscale.v1.BackfillNodeIPsRequest\x1a%.headscale.v1.BackfillNodeIPsResponse\" \x82\xd3\xe4\x93\x02\x1a\"\x18/api/v1/node/backfillips\x12w\n" + - "\fAuthRegister\x12!.headscale.v1.AuthRegisterRequest\x1a\".headscale.v1.AuthRegisterResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/api/v1/auth/register\x12s\n" + - "\vAuthApprove\x12 .headscale.v1.AuthApproveRequest\x1a!.headscale.v1.AuthApproveResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/auth/approve\x12o\n" + - "\n" + - "AuthReject\x12\x1f.headscale.v1.AuthRejectRequest\x1a .headscale.v1.AuthRejectResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/api/v1/auth/reject\x12p\n" + - "\fCreateApiKey\x12!.headscale.v1.CreateApiKeyRequest\x1a\".headscale.v1.CreateApiKeyResponse\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/api/v1/apikey\x12w\n" + - "\fExpireApiKey\x12!.headscale.v1.ExpireApiKeyRequest\x1a\".headscale.v1.ExpireApiKeyResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/api/v1/apikey/expire\x12j\n" + - "\vListApiKeys\x12 .headscale.v1.ListApiKeysRequest\x1a!.headscale.v1.ListApiKeysResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/v1/apikey\x12v\n" + - "\fDeleteApiKey\x12!.headscale.v1.DeleteApiKeyRequest\x1a\".headscale.v1.DeleteApiKeyResponse\"\x1f\x82\xd3\xe4\x93\x02\x19*\x17/api/v1/apikey/{prefix}\x12d\n" + - "\tGetPolicy\x12\x1e.headscale.v1.GetPolicyRequest\x1a\x1f.headscale.v1.GetPolicyResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/v1/policy\x12g\n" + - "\tSetPolicy\x12\x1e.headscale.v1.SetPolicyRequest\x1a\x1f.headscale.v1.SetPolicyResponse\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\x1a\x0e/api/v1/policy\x12s\n" + - "\vCheckPolicy\x12 .headscale.v1.CheckPolicyRequest\x1a!.headscale.v1.CheckPolicyResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/policy/check\x12[\n" + - "\x06Health\x12\x1b.headscale.v1.HealthRequest\x1a\x1c.headscale.v1.HealthResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/v1/healthB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_headscale_proto_rawDescOnce sync.Once - file_headscale_v1_headscale_proto_rawDescData []byte -) - -func file_headscale_v1_headscale_proto_rawDescGZIP() []byte { - file_headscale_v1_headscale_proto_rawDescOnce.Do(func() { - file_headscale_v1_headscale_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_headscale_proto_rawDesc), len(file_headscale_v1_headscale_proto_rawDesc))) - }) - return file_headscale_v1_headscale_proto_rawDescData -} - -var file_headscale_v1_headscale_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_headscale_v1_headscale_proto_goTypes = []any{ - (*HealthRequest)(nil), // 0: headscale.v1.HealthRequest - (*HealthResponse)(nil), // 1: headscale.v1.HealthResponse - (*CreateUserRequest)(nil), // 2: headscale.v1.CreateUserRequest - (*RenameUserRequest)(nil), // 3: headscale.v1.RenameUserRequest - (*DeleteUserRequest)(nil), // 4: headscale.v1.DeleteUserRequest - (*ListUsersRequest)(nil), // 5: headscale.v1.ListUsersRequest - (*CreatePreAuthKeyRequest)(nil), // 6: headscale.v1.CreatePreAuthKeyRequest - (*ExpirePreAuthKeyRequest)(nil), // 7: headscale.v1.ExpirePreAuthKeyRequest - (*DeletePreAuthKeyRequest)(nil), // 8: headscale.v1.DeletePreAuthKeyRequest - (*ListPreAuthKeysRequest)(nil), // 9: headscale.v1.ListPreAuthKeysRequest - (*DebugCreateNodeRequest)(nil), // 10: headscale.v1.DebugCreateNodeRequest - (*GetNodeRequest)(nil), // 11: headscale.v1.GetNodeRequest - (*SetTagsRequest)(nil), // 12: headscale.v1.SetTagsRequest - (*SetApprovedRoutesRequest)(nil), // 13: headscale.v1.SetApprovedRoutesRequest - (*RegisterNodeRequest)(nil), // 14: headscale.v1.RegisterNodeRequest - (*DeleteNodeRequest)(nil), // 15: headscale.v1.DeleteNodeRequest - (*ExpireNodeRequest)(nil), // 16: headscale.v1.ExpireNodeRequest - (*RenameNodeRequest)(nil), // 17: headscale.v1.RenameNodeRequest - (*ListNodesRequest)(nil), // 18: headscale.v1.ListNodesRequest - (*BackfillNodeIPsRequest)(nil), // 19: headscale.v1.BackfillNodeIPsRequest - (*AuthRegisterRequest)(nil), // 20: headscale.v1.AuthRegisterRequest - (*AuthApproveRequest)(nil), // 21: headscale.v1.AuthApproveRequest - (*AuthRejectRequest)(nil), // 22: headscale.v1.AuthRejectRequest - (*CreateApiKeyRequest)(nil), // 23: headscale.v1.CreateApiKeyRequest - (*ExpireApiKeyRequest)(nil), // 24: headscale.v1.ExpireApiKeyRequest - (*ListApiKeysRequest)(nil), // 25: headscale.v1.ListApiKeysRequest - (*DeleteApiKeyRequest)(nil), // 26: headscale.v1.DeleteApiKeyRequest - (*GetPolicyRequest)(nil), // 27: headscale.v1.GetPolicyRequest - (*SetPolicyRequest)(nil), // 28: headscale.v1.SetPolicyRequest - (*CheckPolicyRequest)(nil), // 29: headscale.v1.CheckPolicyRequest - (*CreateUserResponse)(nil), // 30: headscale.v1.CreateUserResponse - (*RenameUserResponse)(nil), // 31: headscale.v1.RenameUserResponse - (*DeleteUserResponse)(nil), // 32: headscale.v1.DeleteUserResponse - (*ListUsersResponse)(nil), // 33: headscale.v1.ListUsersResponse - (*CreatePreAuthKeyResponse)(nil), // 34: headscale.v1.CreatePreAuthKeyResponse - (*ExpirePreAuthKeyResponse)(nil), // 35: headscale.v1.ExpirePreAuthKeyResponse - (*DeletePreAuthKeyResponse)(nil), // 36: headscale.v1.DeletePreAuthKeyResponse - (*ListPreAuthKeysResponse)(nil), // 37: headscale.v1.ListPreAuthKeysResponse - (*DebugCreateNodeResponse)(nil), // 38: headscale.v1.DebugCreateNodeResponse - (*GetNodeResponse)(nil), // 39: headscale.v1.GetNodeResponse - (*SetTagsResponse)(nil), // 40: headscale.v1.SetTagsResponse - (*SetApprovedRoutesResponse)(nil), // 41: headscale.v1.SetApprovedRoutesResponse - (*RegisterNodeResponse)(nil), // 42: headscale.v1.RegisterNodeResponse - (*DeleteNodeResponse)(nil), // 43: headscale.v1.DeleteNodeResponse - (*ExpireNodeResponse)(nil), // 44: headscale.v1.ExpireNodeResponse - (*RenameNodeResponse)(nil), // 45: headscale.v1.RenameNodeResponse - (*ListNodesResponse)(nil), // 46: headscale.v1.ListNodesResponse - (*BackfillNodeIPsResponse)(nil), // 47: headscale.v1.BackfillNodeIPsResponse - (*AuthRegisterResponse)(nil), // 48: headscale.v1.AuthRegisterResponse - (*AuthApproveResponse)(nil), // 49: headscale.v1.AuthApproveResponse - (*AuthRejectResponse)(nil), // 50: headscale.v1.AuthRejectResponse - (*CreateApiKeyResponse)(nil), // 51: headscale.v1.CreateApiKeyResponse - (*ExpireApiKeyResponse)(nil), // 52: headscale.v1.ExpireApiKeyResponse - (*ListApiKeysResponse)(nil), // 53: headscale.v1.ListApiKeysResponse - (*DeleteApiKeyResponse)(nil), // 54: headscale.v1.DeleteApiKeyResponse - (*GetPolicyResponse)(nil), // 55: headscale.v1.GetPolicyResponse - (*SetPolicyResponse)(nil), // 56: headscale.v1.SetPolicyResponse - (*CheckPolicyResponse)(nil), // 57: headscale.v1.CheckPolicyResponse -} -var file_headscale_v1_headscale_proto_depIdxs = []int32{ - 2, // 0: headscale.v1.HeadscaleService.CreateUser:input_type -> headscale.v1.CreateUserRequest - 3, // 1: headscale.v1.HeadscaleService.RenameUser:input_type -> headscale.v1.RenameUserRequest - 4, // 2: headscale.v1.HeadscaleService.DeleteUser:input_type -> headscale.v1.DeleteUserRequest - 5, // 3: headscale.v1.HeadscaleService.ListUsers:input_type -> headscale.v1.ListUsersRequest - 6, // 4: headscale.v1.HeadscaleService.CreatePreAuthKey:input_type -> headscale.v1.CreatePreAuthKeyRequest - 7, // 5: headscale.v1.HeadscaleService.ExpirePreAuthKey:input_type -> headscale.v1.ExpirePreAuthKeyRequest - 8, // 6: headscale.v1.HeadscaleService.DeletePreAuthKey:input_type -> headscale.v1.DeletePreAuthKeyRequest - 9, // 7: headscale.v1.HeadscaleService.ListPreAuthKeys:input_type -> headscale.v1.ListPreAuthKeysRequest - 10, // 8: headscale.v1.HeadscaleService.DebugCreateNode:input_type -> headscale.v1.DebugCreateNodeRequest - 11, // 9: headscale.v1.HeadscaleService.GetNode:input_type -> headscale.v1.GetNodeRequest - 12, // 10: headscale.v1.HeadscaleService.SetTags:input_type -> headscale.v1.SetTagsRequest - 13, // 11: headscale.v1.HeadscaleService.SetApprovedRoutes:input_type -> headscale.v1.SetApprovedRoutesRequest - 14, // 12: headscale.v1.HeadscaleService.RegisterNode:input_type -> headscale.v1.RegisterNodeRequest - 15, // 13: headscale.v1.HeadscaleService.DeleteNode:input_type -> headscale.v1.DeleteNodeRequest - 16, // 14: headscale.v1.HeadscaleService.ExpireNode:input_type -> headscale.v1.ExpireNodeRequest - 17, // 15: headscale.v1.HeadscaleService.RenameNode:input_type -> headscale.v1.RenameNodeRequest - 18, // 16: headscale.v1.HeadscaleService.ListNodes:input_type -> headscale.v1.ListNodesRequest - 19, // 17: headscale.v1.HeadscaleService.BackfillNodeIPs:input_type -> headscale.v1.BackfillNodeIPsRequest - 20, // 18: headscale.v1.HeadscaleService.AuthRegister:input_type -> headscale.v1.AuthRegisterRequest - 21, // 19: headscale.v1.HeadscaleService.AuthApprove:input_type -> headscale.v1.AuthApproveRequest - 22, // 20: headscale.v1.HeadscaleService.AuthReject:input_type -> headscale.v1.AuthRejectRequest - 23, // 21: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest - 24, // 22: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest - 25, // 23: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest - 26, // 24: headscale.v1.HeadscaleService.DeleteApiKey:input_type -> headscale.v1.DeleteApiKeyRequest - 27, // 25: headscale.v1.HeadscaleService.GetPolicy:input_type -> headscale.v1.GetPolicyRequest - 28, // 26: headscale.v1.HeadscaleService.SetPolicy:input_type -> headscale.v1.SetPolicyRequest - 29, // 27: headscale.v1.HeadscaleService.CheckPolicy:input_type -> headscale.v1.CheckPolicyRequest - 0, // 28: headscale.v1.HeadscaleService.Health:input_type -> headscale.v1.HealthRequest - 30, // 29: headscale.v1.HeadscaleService.CreateUser:output_type -> headscale.v1.CreateUserResponse - 31, // 30: headscale.v1.HeadscaleService.RenameUser:output_type -> headscale.v1.RenameUserResponse - 32, // 31: headscale.v1.HeadscaleService.DeleteUser:output_type -> headscale.v1.DeleteUserResponse - 33, // 32: headscale.v1.HeadscaleService.ListUsers:output_type -> headscale.v1.ListUsersResponse - 34, // 33: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse - 35, // 34: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse - 36, // 35: headscale.v1.HeadscaleService.DeletePreAuthKey:output_type -> headscale.v1.DeletePreAuthKeyResponse - 37, // 36: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse - 38, // 37: headscale.v1.HeadscaleService.DebugCreateNode:output_type -> headscale.v1.DebugCreateNodeResponse - 39, // 38: headscale.v1.HeadscaleService.GetNode:output_type -> headscale.v1.GetNodeResponse - 40, // 39: headscale.v1.HeadscaleService.SetTags:output_type -> headscale.v1.SetTagsResponse - 41, // 40: headscale.v1.HeadscaleService.SetApprovedRoutes:output_type -> headscale.v1.SetApprovedRoutesResponse - 42, // 41: headscale.v1.HeadscaleService.RegisterNode:output_type -> headscale.v1.RegisterNodeResponse - 43, // 42: headscale.v1.HeadscaleService.DeleteNode:output_type -> headscale.v1.DeleteNodeResponse - 44, // 43: headscale.v1.HeadscaleService.ExpireNode:output_type -> headscale.v1.ExpireNodeResponse - 45, // 44: headscale.v1.HeadscaleService.RenameNode:output_type -> headscale.v1.RenameNodeResponse - 46, // 45: headscale.v1.HeadscaleService.ListNodes:output_type -> headscale.v1.ListNodesResponse - 47, // 46: headscale.v1.HeadscaleService.BackfillNodeIPs:output_type -> headscale.v1.BackfillNodeIPsResponse - 48, // 47: headscale.v1.HeadscaleService.AuthRegister:output_type -> headscale.v1.AuthRegisterResponse - 49, // 48: headscale.v1.HeadscaleService.AuthApprove:output_type -> headscale.v1.AuthApproveResponse - 50, // 49: headscale.v1.HeadscaleService.AuthReject:output_type -> headscale.v1.AuthRejectResponse - 51, // 50: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse - 52, // 51: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse - 53, // 52: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse - 54, // 53: headscale.v1.HeadscaleService.DeleteApiKey:output_type -> headscale.v1.DeleteApiKeyResponse - 55, // 54: headscale.v1.HeadscaleService.GetPolicy:output_type -> headscale.v1.GetPolicyResponse - 56, // 55: headscale.v1.HeadscaleService.SetPolicy:output_type -> headscale.v1.SetPolicyResponse - 57, // 56: headscale.v1.HeadscaleService.CheckPolicy:output_type -> headscale.v1.CheckPolicyResponse - 1, // 57: headscale.v1.HeadscaleService.Health:output_type -> headscale.v1.HealthResponse - 29, // [29:58] is the sub-list for method output_type - 0, // [0:29] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_headscale_v1_headscale_proto_init() } -func file_headscale_v1_headscale_proto_init() { - if File_headscale_v1_headscale_proto != nil { - return - } - file_headscale_v1_user_proto_init() - file_headscale_v1_preauthkey_proto_init() - file_headscale_v1_node_proto_init() - file_headscale_v1_apikey_proto_init() - file_headscale_v1_auth_proto_init() - file_headscale_v1_policy_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_headscale_proto_rawDesc), len(file_headscale_v1_headscale_proto_rawDesc)), - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_headscale_v1_headscale_proto_goTypes, - DependencyIndexes: file_headscale_v1_headscale_proto_depIdxs, - MessageInfos: file_headscale_v1_headscale_proto_msgTypes, - }.Build() - File_headscale_v1_headscale_proto = out.File - file_headscale_v1_headscale_proto_goTypes = nil - file_headscale_v1_headscale_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/headscale.pb.gw.go b/gen/go/headscale/v1/headscale.pb.gw.go deleted file mode 100644 index cbe1c9c3..00000000 --- a/gen/go/headscale/v1/headscale.pb.gw.go +++ /dev/null @@ -1,2201 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: headscale/v1/headscale.proto - -/* -Package v1 is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package v1 - -import ( - "context" - "errors" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var ( - _ codes.Code - _ io.Reader - _ status.Status - _ = errors.New - _ = runtime.String - _ = utilities.NewDoubleArray - _ = metadata.Join -) - -func request_HeadscaleService_CreateUser_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CreateUserRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.CreateUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_CreateUser_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CreateUserRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.CreateUser(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_RenameUser_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq RenameUserRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["old_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "old_id") - } - protoReq.OldId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "old_id", err) - } - val, ok = pathParams["new_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "new_name") - } - protoReq.NewName, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "new_name", err) - } - msg, err := client.RenameUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_RenameUser_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq RenameUserRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["old_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "old_id") - } - protoReq.OldId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "old_id", err) - } - val, ok = pathParams["new_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "new_name") - } - protoReq.NewName, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "new_name", err) - } - msg, err := server.RenameUser(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_DeleteUser_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteUserRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - protoReq.Id, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - msg, err := client.DeleteUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_DeleteUser_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteUserRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - protoReq.Id, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - msg, err := server.DeleteUser(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_ListUsers_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_HeadscaleService_ListUsers_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListUsersRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_ListUsers_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.ListUsers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ListUsers_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListUsersRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_ListUsers_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ListUsers(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_CreatePreAuthKey_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CreatePreAuthKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.CreatePreAuthKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_CreatePreAuthKey_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CreatePreAuthKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.CreatePreAuthKey(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_ExpirePreAuthKey_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ExpirePreAuthKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.ExpirePreAuthKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ExpirePreAuthKey_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ExpirePreAuthKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ExpirePreAuthKey(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_DeletePreAuthKey_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_HeadscaleService_DeletePreAuthKey_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeletePreAuthKeyRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_DeletePreAuthKey_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.DeletePreAuthKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_DeletePreAuthKey_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeletePreAuthKeyRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_DeletePreAuthKey_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.DeletePreAuthKey(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_ListPreAuthKeys_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListPreAuthKeysRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.ListPreAuthKeys(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ListPreAuthKeys_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListPreAuthKeysRequest - metadata runtime.ServerMetadata - ) - msg, err := server.ListPreAuthKeys(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_DebugCreateNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DebugCreateNodeRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.DebugCreateNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_DebugCreateNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DebugCreateNodeRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.DebugCreateNode(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_GetNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GetNodeRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := client.GetNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_GetNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GetNodeRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := server.GetNode(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_SetTags_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq SetTagsRequest - metadata runtime.ServerMetadata - err error - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := client.SetTags(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_SetTags_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq SetTagsRequest - metadata runtime.ServerMetadata - err error - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := server.SetTags(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_SetApprovedRoutes_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq SetApprovedRoutesRequest - metadata runtime.ServerMetadata - err error - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := client.SetApprovedRoutes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_SetApprovedRoutes_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq SetApprovedRoutesRequest - metadata runtime.ServerMetadata - err error - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := server.SetApprovedRoutes(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_RegisterNode_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_HeadscaleService_RegisterNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq RegisterNodeRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_RegisterNode_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.RegisterNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_RegisterNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq RegisterNodeRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_RegisterNode_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.RegisterNode(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_DeleteNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteNodeRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := client.DeleteNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_DeleteNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteNodeRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - msg, err := server.DeleteNode(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_ExpireNode_0 = &utilities.DoubleArray{Encoding: map[string]int{"node_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} - -func request_HeadscaleService_ExpireNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ExpireNodeRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_ExpireNode_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.ExpireNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ExpireNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ExpireNodeRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_ExpireNode_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ExpireNode(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_RenameNode_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq RenameNodeRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - val, ok = pathParams["new_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "new_name") - } - protoReq.NewName, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "new_name", err) - } - msg, err := client.RenameNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_RenameNode_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq RenameNodeRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - protoReq.NodeId, err = runtime.Uint64(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) - } - val, ok = pathParams["new_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "new_name") - } - protoReq.NewName, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "new_name", err) - } - msg, err := server.RenameNode(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_ListNodes_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_HeadscaleService_ListNodes_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListNodesRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_ListNodes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.ListNodes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ListNodes_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListNodesRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_ListNodes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ListNodes(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_BackfillNodeIPs_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_HeadscaleService_BackfillNodeIPs_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq BackfillNodeIPsRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_BackfillNodeIPs_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.BackfillNodeIPs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_BackfillNodeIPs_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq BackfillNodeIPsRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_BackfillNodeIPs_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.BackfillNodeIPs(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_AuthRegister_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AuthRegisterRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.AuthRegister(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_AuthRegister_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AuthRegisterRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.AuthRegister(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_AuthApprove_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AuthApproveRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.AuthApprove(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_AuthApprove_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AuthApproveRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.AuthApprove(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_AuthReject_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AuthRejectRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.AuthReject(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_AuthReject_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AuthRejectRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.AuthReject(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_CreateApiKey_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CreateApiKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.CreateApiKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_CreateApiKey_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CreateApiKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.CreateApiKey(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_ExpireApiKey_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ExpireApiKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.ExpireApiKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ExpireApiKey_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ExpireApiKeyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ExpireApiKey(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_ListApiKeys_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListApiKeysRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.ListApiKeys(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_ListApiKeys_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq ListApiKeysRequest - metadata runtime.ServerMetadata - ) - msg, err := server.ListApiKeys(ctx, &protoReq) - return msg, metadata, err -} - -var filter_HeadscaleService_DeleteApiKey_0 = &utilities.DoubleArray{Encoding: map[string]int{"prefix": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} - -func request_HeadscaleService_DeleteApiKey_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteApiKeyRequest - metadata runtime.ServerMetadata - err error - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - val, ok := pathParams["prefix"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "prefix") - } - protoReq.Prefix, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "prefix", err) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_DeleteApiKey_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.DeleteApiKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_DeleteApiKey_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteApiKeyRequest - metadata runtime.ServerMetadata - err error - ) - val, ok := pathParams["prefix"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "prefix") - } - protoReq.Prefix, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "prefix", err) - } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_HeadscaleService_DeleteApiKey_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.DeleteApiKey(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_GetPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GetPolicyRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.GetPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_GetPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GetPolicyRequest - metadata runtime.ServerMetadata - ) - msg, err := server.GetPolicy(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_SetPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq SetPolicyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.SetPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_SetPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq SetPolicyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.SetPolicy(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_CheckPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CheckPolicyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.CheckPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_CheckPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq CheckPolicyRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.CheckPolicy(ctx, &protoReq) - return msg, metadata, err -} - -func request_HeadscaleService_Health_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq HealthRequest - metadata runtime.ServerMetadata - ) - if req.Body != nil { - _, _ = io.Copy(io.Discard, req.Body) - } - msg, err := client.Health(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_HeadscaleService_Health_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq HealthRequest - metadata runtime.ServerMetadata - ) - msg, err := server.Health(ctx, &protoReq) - return msg, metadata, err -} - -// RegisterHeadscaleServiceHandlerServer registers the http handlers for service HeadscaleService to "mux". -// UnaryRPC :call HeadscaleServiceServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterHeadscaleServiceHandlerFromEndpoint instead. -// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. -func RegisterHeadscaleServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server HeadscaleServiceServer) error { - mux.Handle(http.MethodPost, pattern_HeadscaleService_CreateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CreateUser", runtime.WithHTTPPathPattern("/api/v1/user")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_CreateUser_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CreateUser_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_RenameUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/RenameUser", runtime.WithHTTPPathPattern("/api/v1/user/{old_id}/rename/{new_name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_RenameUser_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_RenameUser_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeleteUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeleteUser", runtime.WithHTTPPathPattern("/api/v1/user/{id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_DeleteUser_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeleteUser_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListUsers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListUsers", runtime.WithHTTPPathPattern("/api/v1/user")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ListUsers_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListUsers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_CreatePreAuthKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CreatePreAuthKey", runtime.WithHTTPPathPattern("/api/v1/preauthkey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_CreatePreAuthKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CreatePreAuthKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_ExpirePreAuthKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ExpirePreAuthKey", runtime.WithHTTPPathPattern("/api/v1/preauthkey/expire")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ExpirePreAuthKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ExpirePreAuthKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeletePreAuthKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeletePreAuthKey", runtime.WithHTTPPathPattern("/api/v1/preauthkey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_DeletePreAuthKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeletePreAuthKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListPreAuthKeys_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListPreAuthKeys", runtime.WithHTTPPathPattern("/api/v1/preauthkey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ListPreAuthKeys_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListPreAuthKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_DebugCreateNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DebugCreateNode", runtime.WithHTTPPathPattern("/api/v1/debug/node")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_DebugCreateNode_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DebugCreateNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_GetNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/GetNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_GetNode_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_GetNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_SetTags_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/SetTags", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/tags")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_SetTags_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_SetTags_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_SetApprovedRoutes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/SetApprovedRoutes", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/approve_routes")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_SetApprovedRoutes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_SetApprovedRoutes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_RegisterNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/RegisterNode", runtime.WithHTTPPathPattern("/api/v1/node/register")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_RegisterNode_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_RegisterNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeleteNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeleteNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_DeleteNode_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeleteNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_ExpireNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ExpireNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/expire")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ExpireNode_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ExpireNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_RenameNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/RenameNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/rename/{new_name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_RenameNode_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_RenameNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListNodes", runtime.WithHTTPPathPattern("/api/v1/node")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ListNodes_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListNodes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_BackfillNodeIPs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/BackfillNodeIPs", runtime.WithHTTPPathPattern("/api/v1/node/backfillips")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_BackfillNodeIPs_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_BackfillNodeIPs_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_AuthRegister_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/AuthRegister", runtime.WithHTTPPathPattern("/api/v1/auth/register")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_AuthRegister_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_AuthRegister_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_AuthApprove_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/AuthApprove", runtime.WithHTTPPathPattern("/api/v1/auth/approve")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_AuthApprove_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_AuthApprove_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_AuthReject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/AuthReject", runtime.WithHTTPPathPattern("/api/v1/auth/reject")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_AuthReject_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_AuthReject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_CreateApiKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CreateApiKey", runtime.WithHTTPPathPattern("/api/v1/apikey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_CreateApiKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CreateApiKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_ExpireApiKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ExpireApiKey", runtime.WithHTTPPathPattern("/api/v1/apikey/expire")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ExpireApiKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ExpireApiKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListApiKeys_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListApiKeys", runtime.WithHTTPPathPattern("/api/v1/apikey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_ListApiKeys_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListApiKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeleteApiKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeleteApiKey", runtime.WithHTTPPathPattern("/api/v1/apikey/{prefix}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_DeleteApiKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeleteApiKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_GetPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/GetPolicy", runtime.WithHTTPPathPattern("/api/v1/policy")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_GetPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_GetPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPut, pattern_HeadscaleService_SetPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/SetPolicy", runtime.WithHTTPPathPattern("/api/v1/policy")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_SetPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_SetPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_CheckPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CheckPolicy", runtime.WithHTTPPathPattern("/api/v1/policy/check")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_CheckPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CheckPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_Health_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/Health", runtime.WithHTTPPathPattern("/api/v1/health")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_HeadscaleService_Health_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_Health_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - - return nil -} - -// RegisterHeadscaleServiceHandlerFromEndpoint is same as RegisterHeadscaleServiceHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterHeadscaleServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.NewClient(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - return RegisterHeadscaleServiceHandler(ctx, mux, conn) -} - -// RegisterHeadscaleServiceHandler registers the http handlers for service HeadscaleService to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterHeadscaleServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterHeadscaleServiceHandlerClient(ctx, mux, NewHeadscaleServiceClient(conn)) -} - -// RegisterHeadscaleServiceHandlerClient registers the http handlers for service HeadscaleService -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "HeadscaleServiceClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "HeadscaleServiceClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "HeadscaleServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. -func RegisterHeadscaleServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client HeadscaleServiceClient) error { - mux.Handle(http.MethodPost, pattern_HeadscaleService_CreateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CreateUser", runtime.WithHTTPPathPattern("/api/v1/user")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_CreateUser_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CreateUser_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_RenameUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/RenameUser", runtime.WithHTTPPathPattern("/api/v1/user/{old_id}/rename/{new_name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_RenameUser_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_RenameUser_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeleteUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeleteUser", runtime.WithHTTPPathPattern("/api/v1/user/{id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_DeleteUser_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeleteUser_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListUsers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListUsers", runtime.WithHTTPPathPattern("/api/v1/user")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ListUsers_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListUsers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_CreatePreAuthKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CreatePreAuthKey", runtime.WithHTTPPathPattern("/api/v1/preauthkey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_CreatePreAuthKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CreatePreAuthKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_ExpirePreAuthKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ExpirePreAuthKey", runtime.WithHTTPPathPattern("/api/v1/preauthkey/expire")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ExpirePreAuthKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ExpirePreAuthKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeletePreAuthKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeletePreAuthKey", runtime.WithHTTPPathPattern("/api/v1/preauthkey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_DeletePreAuthKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeletePreAuthKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListPreAuthKeys_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListPreAuthKeys", runtime.WithHTTPPathPattern("/api/v1/preauthkey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ListPreAuthKeys_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListPreAuthKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_DebugCreateNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DebugCreateNode", runtime.WithHTTPPathPattern("/api/v1/debug/node")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_DebugCreateNode_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DebugCreateNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_GetNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/GetNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_GetNode_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_GetNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_SetTags_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/SetTags", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/tags")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_SetTags_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_SetTags_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_SetApprovedRoutes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/SetApprovedRoutes", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/approve_routes")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_SetApprovedRoutes_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_SetApprovedRoutes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_RegisterNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/RegisterNode", runtime.WithHTTPPathPattern("/api/v1/node/register")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_RegisterNode_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_RegisterNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeleteNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeleteNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_DeleteNode_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeleteNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_ExpireNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ExpireNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/expire")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ExpireNode_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ExpireNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_RenameNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/RenameNode", runtime.WithHTTPPathPattern("/api/v1/node/{node_id}/rename/{new_name}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_RenameNode_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_RenameNode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListNodes", runtime.WithHTTPPathPattern("/api/v1/node")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ListNodes_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListNodes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_BackfillNodeIPs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/BackfillNodeIPs", runtime.WithHTTPPathPattern("/api/v1/node/backfillips")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_BackfillNodeIPs_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_BackfillNodeIPs_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_AuthRegister_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/AuthRegister", runtime.WithHTTPPathPattern("/api/v1/auth/register")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_AuthRegister_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_AuthRegister_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_AuthApprove_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/AuthApprove", runtime.WithHTTPPathPattern("/api/v1/auth/approve")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_AuthApprove_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_AuthApprove_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_AuthReject_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/AuthReject", runtime.WithHTTPPathPattern("/api/v1/auth/reject")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_AuthReject_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_AuthReject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_CreateApiKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CreateApiKey", runtime.WithHTTPPathPattern("/api/v1/apikey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_CreateApiKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CreateApiKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_ExpireApiKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ExpireApiKey", runtime.WithHTTPPathPattern("/api/v1/apikey/expire")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ExpireApiKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ExpireApiKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_ListApiKeys_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/ListApiKeys", runtime.WithHTTPPathPattern("/api/v1/apikey")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_ListApiKeys_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_ListApiKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_HeadscaleService_DeleteApiKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/DeleteApiKey", runtime.WithHTTPPathPattern("/api/v1/apikey/{prefix}")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_DeleteApiKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_DeleteApiKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_GetPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/GetPolicy", runtime.WithHTTPPathPattern("/api/v1/policy")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_GetPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_GetPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPut, pattern_HeadscaleService_SetPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/SetPolicy", runtime.WithHTTPPathPattern("/api/v1/policy")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_SetPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_SetPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_HeadscaleService_CheckPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/CheckPolicy", runtime.WithHTTPPathPattern("/api/v1/policy/check")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_CheckPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_CheckPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodGet, pattern_HeadscaleService_Health_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/Health", runtime.WithHTTPPathPattern("/api/v1/health")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_HeadscaleService_Health_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_HeadscaleService_Health_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - return nil -} - -var ( - pattern_HeadscaleService_CreateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "user"}, "")) - pattern_HeadscaleService_RenameUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "user", "old_id", "rename", "new_name"}, "")) - pattern_HeadscaleService_DeleteUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "user", "id"}, "")) - pattern_HeadscaleService_ListUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "user"}, "")) - pattern_HeadscaleService_CreatePreAuthKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "preauthkey"}, "")) - pattern_HeadscaleService_ExpirePreAuthKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "preauthkey", "expire"}, "")) - pattern_HeadscaleService_DeletePreAuthKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "preauthkey"}, "")) - pattern_HeadscaleService_ListPreAuthKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "preauthkey"}, "")) - pattern_HeadscaleService_DebugCreateNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "debug", "node"}, "")) - pattern_HeadscaleService_GetNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "node", "node_id"}, "")) - pattern_HeadscaleService_SetTags_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "node", "node_id", "tags"}, "")) - pattern_HeadscaleService_SetApprovedRoutes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "node", "node_id", "approve_routes"}, "")) - pattern_HeadscaleService_RegisterNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "node", "register"}, "")) - pattern_HeadscaleService_DeleteNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "node", "node_id"}, "")) - pattern_HeadscaleService_ExpireNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "node", "node_id", "expire"}, "")) - pattern_HeadscaleService_RenameNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "node", "node_id", "rename", "new_name"}, "")) - pattern_HeadscaleService_ListNodes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "node"}, "")) - pattern_HeadscaleService_BackfillNodeIPs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "node", "backfillips"}, "")) - pattern_HeadscaleService_AuthRegister_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "auth", "register"}, "")) - pattern_HeadscaleService_AuthApprove_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "auth", "approve"}, "")) - pattern_HeadscaleService_AuthReject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "auth", "reject"}, "")) - pattern_HeadscaleService_CreateApiKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "apikey"}, "")) - pattern_HeadscaleService_ExpireApiKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "apikey", "expire"}, "")) - pattern_HeadscaleService_ListApiKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "apikey"}, "")) - pattern_HeadscaleService_DeleteApiKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "apikey", "prefix"}, "")) - pattern_HeadscaleService_GetPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "policy"}, "")) - pattern_HeadscaleService_SetPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "policy"}, "")) - pattern_HeadscaleService_CheckPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "policy", "check"}, "")) - pattern_HeadscaleService_Health_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "health"}, "")) -) - -var ( - forward_HeadscaleService_CreateUser_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_RenameUser_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_DeleteUser_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ListUsers_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_CreatePreAuthKey_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ExpirePreAuthKey_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_DeletePreAuthKey_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ListPreAuthKeys_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_DebugCreateNode_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_GetNode_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_SetTags_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_SetApprovedRoutes_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_RegisterNode_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_DeleteNode_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ExpireNode_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_RenameNode_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ListNodes_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_BackfillNodeIPs_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_AuthRegister_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_AuthApprove_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_AuthReject_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_CreateApiKey_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ExpireApiKey_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_ListApiKeys_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_DeleteApiKey_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_GetPolicy_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_SetPolicy_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_CheckPolicy_0 = runtime.ForwardResponseMessage - forward_HeadscaleService_Health_0 = runtime.ForwardResponseMessage -) diff --git a/gen/go/headscale/v1/headscale_grpc.pb.go b/gen/go/headscale/v1/headscale_grpc.pb.go deleted file mode 100644 index 07e09b42..00000000 --- a/gen/go/headscale/v1/headscale_grpc.pb.go +++ /dev/null @@ -1,1199 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.6.2 -// - protoc (unknown) -// source: headscale/v1/headscale.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - HeadscaleService_CreateUser_FullMethodName = "/headscale.v1.HeadscaleService/CreateUser" - HeadscaleService_RenameUser_FullMethodName = "/headscale.v1.HeadscaleService/RenameUser" - HeadscaleService_DeleteUser_FullMethodName = "/headscale.v1.HeadscaleService/DeleteUser" - HeadscaleService_ListUsers_FullMethodName = "/headscale.v1.HeadscaleService/ListUsers" - HeadscaleService_CreatePreAuthKey_FullMethodName = "/headscale.v1.HeadscaleService/CreatePreAuthKey" - HeadscaleService_ExpirePreAuthKey_FullMethodName = "/headscale.v1.HeadscaleService/ExpirePreAuthKey" - HeadscaleService_DeletePreAuthKey_FullMethodName = "/headscale.v1.HeadscaleService/DeletePreAuthKey" - HeadscaleService_ListPreAuthKeys_FullMethodName = "/headscale.v1.HeadscaleService/ListPreAuthKeys" - HeadscaleService_DebugCreateNode_FullMethodName = "/headscale.v1.HeadscaleService/DebugCreateNode" - HeadscaleService_GetNode_FullMethodName = "/headscale.v1.HeadscaleService/GetNode" - HeadscaleService_SetTags_FullMethodName = "/headscale.v1.HeadscaleService/SetTags" - HeadscaleService_SetApprovedRoutes_FullMethodName = "/headscale.v1.HeadscaleService/SetApprovedRoutes" - HeadscaleService_RegisterNode_FullMethodName = "/headscale.v1.HeadscaleService/RegisterNode" - HeadscaleService_DeleteNode_FullMethodName = "/headscale.v1.HeadscaleService/DeleteNode" - HeadscaleService_ExpireNode_FullMethodName = "/headscale.v1.HeadscaleService/ExpireNode" - HeadscaleService_RenameNode_FullMethodName = "/headscale.v1.HeadscaleService/RenameNode" - HeadscaleService_ListNodes_FullMethodName = "/headscale.v1.HeadscaleService/ListNodes" - HeadscaleService_BackfillNodeIPs_FullMethodName = "/headscale.v1.HeadscaleService/BackfillNodeIPs" - HeadscaleService_AuthRegister_FullMethodName = "/headscale.v1.HeadscaleService/AuthRegister" - HeadscaleService_AuthApprove_FullMethodName = "/headscale.v1.HeadscaleService/AuthApprove" - HeadscaleService_AuthReject_FullMethodName = "/headscale.v1.HeadscaleService/AuthReject" - HeadscaleService_CreateApiKey_FullMethodName = "/headscale.v1.HeadscaleService/CreateApiKey" - HeadscaleService_ExpireApiKey_FullMethodName = "/headscale.v1.HeadscaleService/ExpireApiKey" - HeadscaleService_ListApiKeys_FullMethodName = "/headscale.v1.HeadscaleService/ListApiKeys" - HeadscaleService_DeleteApiKey_FullMethodName = "/headscale.v1.HeadscaleService/DeleteApiKey" - HeadscaleService_GetPolicy_FullMethodName = "/headscale.v1.HeadscaleService/GetPolicy" - HeadscaleService_SetPolicy_FullMethodName = "/headscale.v1.HeadscaleService/SetPolicy" - HeadscaleService_CheckPolicy_FullMethodName = "/headscale.v1.HeadscaleService/CheckPolicy" - HeadscaleService_Health_FullMethodName = "/headscale.v1.HeadscaleService/Health" -) - -// HeadscaleServiceClient is the client API for HeadscaleService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type HeadscaleServiceClient interface { - // --- User start --- - CreateUser(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*CreateUserResponse, error) - RenameUser(ctx context.Context, in *RenameUserRequest, opts ...grpc.CallOption) (*RenameUserResponse, error) - DeleteUser(ctx context.Context, in *DeleteUserRequest, opts ...grpc.CallOption) (*DeleteUserResponse, error) - ListUsers(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*ListUsersResponse, error) - // --- PreAuthKeys start --- - CreatePreAuthKey(ctx context.Context, in *CreatePreAuthKeyRequest, opts ...grpc.CallOption) (*CreatePreAuthKeyResponse, error) - ExpirePreAuthKey(ctx context.Context, in *ExpirePreAuthKeyRequest, opts ...grpc.CallOption) (*ExpirePreAuthKeyResponse, error) - DeletePreAuthKey(ctx context.Context, in *DeletePreAuthKeyRequest, opts ...grpc.CallOption) (*DeletePreAuthKeyResponse, error) - ListPreAuthKeys(ctx context.Context, in *ListPreAuthKeysRequest, opts ...grpc.CallOption) (*ListPreAuthKeysResponse, error) - // --- Node start --- - DebugCreateNode(ctx context.Context, in *DebugCreateNodeRequest, opts ...grpc.CallOption) (*DebugCreateNodeResponse, error) - GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) - SetTags(ctx context.Context, in *SetTagsRequest, opts ...grpc.CallOption) (*SetTagsResponse, error) - SetApprovedRoutes(ctx context.Context, in *SetApprovedRoutesRequest, opts ...grpc.CallOption) (*SetApprovedRoutesResponse, error) - RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) - DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error) - ExpireNode(ctx context.Context, in *ExpireNodeRequest, opts ...grpc.CallOption) (*ExpireNodeResponse, error) - RenameNode(ctx context.Context, in *RenameNodeRequest, opts ...grpc.CallOption) (*RenameNodeResponse, error) - ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) - BackfillNodeIPs(ctx context.Context, in *BackfillNodeIPsRequest, opts ...grpc.CallOption) (*BackfillNodeIPsResponse, error) - // --- Auth start --- - AuthRegister(ctx context.Context, in *AuthRegisterRequest, opts ...grpc.CallOption) (*AuthRegisterResponse, error) - AuthApprove(ctx context.Context, in *AuthApproveRequest, opts ...grpc.CallOption) (*AuthApproveResponse, error) - AuthReject(ctx context.Context, in *AuthRejectRequest, opts ...grpc.CallOption) (*AuthRejectResponse, error) - // --- ApiKeys start --- - CreateApiKey(ctx context.Context, in *CreateApiKeyRequest, opts ...grpc.CallOption) (*CreateApiKeyResponse, error) - ExpireApiKey(ctx context.Context, in *ExpireApiKeyRequest, opts ...grpc.CallOption) (*ExpireApiKeyResponse, error) - ListApiKeys(ctx context.Context, in *ListApiKeysRequest, opts ...grpc.CallOption) (*ListApiKeysResponse, error) - DeleteApiKey(ctx context.Context, in *DeleteApiKeyRequest, opts ...grpc.CallOption) (*DeleteApiKeyResponse, error) - // --- Policy start --- - GetPolicy(ctx context.Context, in *GetPolicyRequest, opts ...grpc.CallOption) (*GetPolicyResponse, error) - SetPolicy(ctx context.Context, in *SetPolicyRequest, opts ...grpc.CallOption) (*SetPolicyResponse, error) - CheckPolicy(ctx context.Context, in *CheckPolicyRequest, opts ...grpc.CallOption) (*CheckPolicyResponse, error) - // --- Health start --- - Health(ctx context.Context, in *HealthRequest, opts ...grpc.CallOption) (*HealthResponse, error) -} - -type headscaleServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewHeadscaleServiceClient(cc grpc.ClientConnInterface) HeadscaleServiceClient { - return &headscaleServiceClient{cc} -} - -func (c *headscaleServiceClient) CreateUser(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*CreateUserResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CreateUserResponse) - err := c.cc.Invoke(ctx, HeadscaleService_CreateUser_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) RenameUser(ctx context.Context, in *RenameUserRequest, opts ...grpc.CallOption) (*RenameUserResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(RenameUserResponse) - err := c.cc.Invoke(ctx, HeadscaleService_RenameUser_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) DeleteUser(ctx context.Context, in *DeleteUserRequest, opts ...grpc.CallOption) (*DeleteUserResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(DeleteUserResponse) - err := c.cc.Invoke(ctx, HeadscaleService_DeleteUser_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ListUsers(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*ListUsersResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListUsersResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ListUsers_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) CreatePreAuthKey(ctx context.Context, in *CreatePreAuthKeyRequest, opts ...grpc.CallOption) (*CreatePreAuthKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CreatePreAuthKeyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_CreatePreAuthKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ExpirePreAuthKey(ctx context.Context, in *ExpirePreAuthKeyRequest, opts ...grpc.CallOption) (*ExpirePreAuthKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ExpirePreAuthKeyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ExpirePreAuthKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) DeletePreAuthKey(ctx context.Context, in *DeletePreAuthKeyRequest, opts ...grpc.CallOption) (*DeletePreAuthKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(DeletePreAuthKeyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_DeletePreAuthKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ListPreAuthKeys(ctx context.Context, in *ListPreAuthKeysRequest, opts ...grpc.CallOption) (*ListPreAuthKeysResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListPreAuthKeysResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ListPreAuthKeys_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) DebugCreateNode(ctx context.Context, in *DebugCreateNodeRequest, opts ...grpc.CallOption) (*DebugCreateNodeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(DebugCreateNodeResponse) - err := c.cc.Invoke(ctx, HeadscaleService_DebugCreateNode_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetNodeResponse) - err := c.cc.Invoke(ctx, HeadscaleService_GetNode_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) SetTags(ctx context.Context, in *SetTagsRequest, opts ...grpc.CallOption) (*SetTagsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SetTagsResponse) - err := c.cc.Invoke(ctx, HeadscaleService_SetTags_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) SetApprovedRoutes(ctx context.Context, in *SetApprovedRoutesRequest, opts ...grpc.CallOption) (*SetApprovedRoutesResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SetApprovedRoutesResponse) - err := c.cc.Invoke(ctx, HeadscaleService_SetApprovedRoutes_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(RegisterNodeResponse) - err := c.cc.Invoke(ctx, HeadscaleService_RegisterNode_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(DeleteNodeResponse) - err := c.cc.Invoke(ctx, HeadscaleService_DeleteNode_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ExpireNode(ctx context.Context, in *ExpireNodeRequest, opts ...grpc.CallOption) (*ExpireNodeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ExpireNodeResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ExpireNode_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) RenameNode(ctx context.Context, in *RenameNodeRequest, opts ...grpc.CallOption) (*RenameNodeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(RenameNodeResponse) - err := c.cc.Invoke(ctx, HeadscaleService_RenameNode_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListNodesResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ListNodes_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) BackfillNodeIPs(ctx context.Context, in *BackfillNodeIPsRequest, opts ...grpc.CallOption) (*BackfillNodeIPsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(BackfillNodeIPsResponse) - err := c.cc.Invoke(ctx, HeadscaleService_BackfillNodeIPs_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) AuthRegister(ctx context.Context, in *AuthRegisterRequest, opts ...grpc.CallOption) (*AuthRegisterResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AuthRegisterResponse) - err := c.cc.Invoke(ctx, HeadscaleService_AuthRegister_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) AuthApprove(ctx context.Context, in *AuthApproveRequest, opts ...grpc.CallOption) (*AuthApproveResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AuthApproveResponse) - err := c.cc.Invoke(ctx, HeadscaleService_AuthApprove_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) AuthReject(ctx context.Context, in *AuthRejectRequest, opts ...grpc.CallOption) (*AuthRejectResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AuthRejectResponse) - err := c.cc.Invoke(ctx, HeadscaleService_AuthReject_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) CreateApiKey(ctx context.Context, in *CreateApiKeyRequest, opts ...grpc.CallOption) (*CreateApiKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CreateApiKeyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_CreateApiKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ExpireApiKey(ctx context.Context, in *ExpireApiKeyRequest, opts ...grpc.CallOption) (*ExpireApiKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ExpireApiKeyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ExpireApiKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) ListApiKeys(ctx context.Context, in *ListApiKeysRequest, opts ...grpc.CallOption) (*ListApiKeysResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListApiKeysResponse) - err := c.cc.Invoke(ctx, HeadscaleService_ListApiKeys_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) DeleteApiKey(ctx context.Context, in *DeleteApiKeyRequest, opts ...grpc.CallOption) (*DeleteApiKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(DeleteApiKeyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_DeleteApiKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) GetPolicy(ctx context.Context, in *GetPolicyRequest, opts ...grpc.CallOption) (*GetPolicyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetPolicyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_GetPolicy_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) SetPolicy(ctx context.Context, in *SetPolicyRequest, opts ...grpc.CallOption) (*SetPolicyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SetPolicyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_SetPolicy_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) CheckPolicy(ctx context.Context, in *CheckPolicyRequest, opts ...grpc.CallOption) (*CheckPolicyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CheckPolicyResponse) - err := c.cc.Invoke(ctx, HeadscaleService_CheckPolicy_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *headscaleServiceClient) Health(ctx context.Context, in *HealthRequest, opts ...grpc.CallOption) (*HealthResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(HealthResponse) - err := c.cc.Invoke(ctx, HeadscaleService_Health_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// HeadscaleServiceServer is the server API for HeadscaleService service. -// All implementations must embed UnimplementedHeadscaleServiceServer -// for forward compatibility. -type HeadscaleServiceServer interface { - // --- User start --- - CreateUser(context.Context, *CreateUserRequest) (*CreateUserResponse, error) - RenameUser(context.Context, *RenameUserRequest) (*RenameUserResponse, error) - DeleteUser(context.Context, *DeleteUserRequest) (*DeleteUserResponse, error) - ListUsers(context.Context, *ListUsersRequest) (*ListUsersResponse, error) - // --- PreAuthKeys start --- - CreatePreAuthKey(context.Context, *CreatePreAuthKeyRequest) (*CreatePreAuthKeyResponse, error) - ExpirePreAuthKey(context.Context, *ExpirePreAuthKeyRequest) (*ExpirePreAuthKeyResponse, error) - DeletePreAuthKey(context.Context, *DeletePreAuthKeyRequest) (*DeletePreAuthKeyResponse, error) - ListPreAuthKeys(context.Context, *ListPreAuthKeysRequest) (*ListPreAuthKeysResponse, error) - // --- Node start --- - DebugCreateNode(context.Context, *DebugCreateNodeRequest) (*DebugCreateNodeResponse, error) - GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) - SetTags(context.Context, *SetTagsRequest) (*SetTagsResponse, error) - SetApprovedRoutes(context.Context, *SetApprovedRoutesRequest) (*SetApprovedRoutesResponse, error) - RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error) - DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error) - ExpireNode(context.Context, *ExpireNodeRequest) (*ExpireNodeResponse, error) - RenameNode(context.Context, *RenameNodeRequest) (*RenameNodeResponse, error) - ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) - BackfillNodeIPs(context.Context, *BackfillNodeIPsRequest) (*BackfillNodeIPsResponse, error) - // --- Auth start --- - AuthRegister(context.Context, *AuthRegisterRequest) (*AuthRegisterResponse, error) - AuthApprove(context.Context, *AuthApproveRequest) (*AuthApproveResponse, error) - AuthReject(context.Context, *AuthRejectRequest) (*AuthRejectResponse, error) - // --- ApiKeys start --- - CreateApiKey(context.Context, *CreateApiKeyRequest) (*CreateApiKeyResponse, error) - ExpireApiKey(context.Context, *ExpireApiKeyRequest) (*ExpireApiKeyResponse, error) - ListApiKeys(context.Context, *ListApiKeysRequest) (*ListApiKeysResponse, error) - DeleteApiKey(context.Context, *DeleteApiKeyRequest) (*DeleteApiKeyResponse, error) - // --- Policy start --- - GetPolicy(context.Context, *GetPolicyRequest) (*GetPolicyResponse, error) - SetPolicy(context.Context, *SetPolicyRequest) (*SetPolicyResponse, error) - CheckPolicy(context.Context, *CheckPolicyRequest) (*CheckPolicyResponse, error) - // --- Health start --- - Health(context.Context, *HealthRequest) (*HealthResponse, error) - mustEmbedUnimplementedHeadscaleServiceServer() -} - -// UnimplementedHeadscaleServiceServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedHeadscaleServiceServer struct{} - -func (UnimplementedHeadscaleServiceServer) CreateUser(context.Context, *CreateUserRequest) (*CreateUserResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CreateUser not implemented") -} -func (UnimplementedHeadscaleServiceServer) RenameUser(context.Context, *RenameUserRequest) (*RenameUserResponse, error) { - return nil, status.Error(codes.Unimplemented, "method RenameUser not implemented") -} -func (UnimplementedHeadscaleServiceServer) DeleteUser(context.Context, *DeleteUserRequest) (*DeleteUserResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DeleteUser not implemented") -} -func (UnimplementedHeadscaleServiceServer) ListUsers(context.Context, *ListUsersRequest) (*ListUsersResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ListUsers not implemented") -} -func (UnimplementedHeadscaleServiceServer) CreatePreAuthKey(context.Context, *CreatePreAuthKeyRequest) (*CreatePreAuthKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CreatePreAuthKey not implemented") -} -func (UnimplementedHeadscaleServiceServer) ExpirePreAuthKey(context.Context, *ExpirePreAuthKeyRequest) (*ExpirePreAuthKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ExpirePreAuthKey not implemented") -} -func (UnimplementedHeadscaleServiceServer) DeletePreAuthKey(context.Context, *DeletePreAuthKeyRequest) (*DeletePreAuthKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DeletePreAuthKey not implemented") -} -func (UnimplementedHeadscaleServiceServer) ListPreAuthKeys(context.Context, *ListPreAuthKeysRequest) (*ListPreAuthKeysResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ListPreAuthKeys not implemented") -} -func (UnimplementedHeadscaleServiceServer) DebugCreateNode(context.Context, *DebugCreateNodeRequest) (*DebugCreateNodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DebugCreateNode not implemented") -} -func (UnimplementedHeadscaleServiceServer) GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetNode not implemented") -} -func (UnimplementedHeadscaleServiceServer) SetTags(context.Context, *SetTagsRequest) (*SetTagsResponse, error) { - return nil, status.Error(codes.Unimplemented, "method SetTags not implemented") -} -func (UnimplementedHeadscaleServiceServer) SetApprovedRoutes(context.Context, *SetApprovedRoutesRequest) (*SetApprovedRoutesResponse, error) { - return nil, status.Error(codes.Unimplemented, "method SetApprovedRoutes not implemented") -} -func (UnimplementedHeadscaleServiceServer) RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method RegisterNode not implemented") -} -func (UnimplementedHeadscaleServiceServer) DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DeleteNode not implemented") -} -func (UnimplementedHeadscaleServiceServer) ExpireNode(context.Context, *ExpireNodeRequest) (*ExpireNodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ExpireNode not implemented") -} -func (UnimplementedHeadscaleServiceServer) RenameNode(context.Context, *RenameNodeRequest) (*RenameNodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method RenameNode not implemented") -} -func (UnimplementedHeadscaleServiceServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ListNodes not implemented") -} -func (UnimplementedHeadscaleServiceServer) BackfillNodeIPs(context.Context, *BackfillNodeIPsRequest) (*BackfillNodeIPsResponse, error) { - return nil, status.Error(codes.Unimplemented, "method BackfillNodeIPs not implemented") -} -func (UnimplementedHeadscaleServiceServer) AuthRegister(context.Context, *AuthRegisterRequest) (*AuthRegisterResponse, error) { - return nil, status.Error(codes.Unimplemented, "method AuthRegister not implemented") -} -func (UnimplementedHeadscaleServiceServer) AuthApprove(context.Context, *AuthApproveRequest) (*AuthApproveResponse, error) { - return nil, status.Error(codes.Unimplemented, "method AuthApprove not implemented") -} -func (UnimplementedHeadscaleServiceServer) AuthReject(context.Context, *AuthRejectRequest) (*AuthRejectResponse, error) { - return nil, status.Error(codes.Unimplemented, "method AuthReject not implemented") -} -func (UnimplementedHeadscaleServiceServer) CreateApiKey(context.Context, *CreateApiKeyRequest) (*CreateApiKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CreateApiKey not implemented") -} -func (UnimplementedHeadscaleServiceServer) ExpireApiKey(context.Context, *ExpireApiKeyRequest) (*ExpireApiKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ExpireApiKey not implemented") -} -func (UnimplementedHeadscaleServiceServer) ListApiKeys(context.Context, *ListApiKeysRequest) (*ListApiKeysResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ListApiKeys not implemented") -} -func (UnimplementedHeadscaleServiceServer) DeleteApiKey(context.Context, *DeleteApiKeyRequest) (*DeleteApiKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method DeleteApiKey not implemented") -} -func (UnimplementedHeadscaleServiceServer) GetPolicy(context.Context, *GetPolicyRequest) (*GetPolicyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetPolicy not implemented") -} -func (UnimplementedHeadscaleServiceServer) SetPolicy(context.Context, *SetPolicyRequest) (*SetPolicyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method SetPolicy not implemented") -} -func (UnimplementedHeadscaleServiceServer) CheckPolicy(context.Context, *CheckPolicyRequest) (*CheckPolicyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CheckPolicy not implemented") -} -func (UnimplementedHeadscaleServiceServer) Health(context.Context, *HealthRequest) (*HealthResponse, error) { - return nil, status.Error(codes.Unimplemented, "method Health not implemented") -} -func (UnimplementedHeadscaleServiceServer) mustEmbedUnimplementedHeadscaleServiceServer() {} -func (UnimplementedHeadscaleServiceServer) testEmbeddedByValue() {} - -// UnsafeHeadscaleServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to HeadscaleServiceServer will -// result in compilation errors. -type UnsafeHeadscaleServiceServer interface { - mustEmbedUnimplementedHeadscaleServiceServer() -} - -func RegisterHeadscaleServiceServer(s grpc.ServiceRegistrar, srv HeadscaleServiceServer) { - // If the following call panics, it indicates UnimplementedHeadscaleServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&HeadscaleService_ServiceDesc, srv) -} - -func _HeadscaleService_CreateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateUserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).CreateUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_CreateUser_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).CreateUser(ctx, req.(*CreateUserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_RenameUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RenameUserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).RenameUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_RenameUser_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).RenameUser(ctx, req.(*RenameUserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_DeleteUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteUserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).DeleteUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_DeleteUser_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).DeleteUser(ctx, req.(*DeleteUserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ListUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUsersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ListUsers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ListUsers_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ListUsers(ctx, req.(*ListUsersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_CreatePreAuthKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreatePreAuthKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).CreatePreAuthKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_CreatePreAuthKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).CreatePreAuthKey(ctx, req.(*CreatePreAuthKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ExpirePreAuthKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExpirePreAuthKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ExpirePreAuthKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ExpirePreAuthKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ExpirePreAuthKey(ctx, req.(*ExpirePreAuthKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_DeletePreAuthKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePreAuthKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).DeletePreAuthKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_DeletePreAuthKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).DeletePreAuthKey(ctx, req.(*DeletePreAuthKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ListPreAuthKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListPreAuthKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ListPreAuthKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ListPreAuthKeys_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ListPreAuthKeys(ctx, req.(*ListPreAuthKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_DebugCreateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DebugCreateNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).DebugCreateNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_DebugCreateNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).DebugCreateNode(ctx, req.(*DebugCreateNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_GetNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).GetNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_GetNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).GetNode(ctx, req.(*GetNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_SetTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetTagsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).SetTags(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_SetTags_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).SetTags(ctx, req.(*SetTagsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_SetApprovedRoutes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApprovedRoutesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).SetApprovedRoutes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_SetApprovedRoutes_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).SetApprovedRoutes(ctx, req.(*SetApprovedRoutesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_RegisterNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RegisterNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).RegisterNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_RegisterNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).RegisterNode(ctx, req.(*RegisterNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_DeleteNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).DeleteNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_DeleteNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).DeleteNode(ctx, req.(*DeleteNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ExpireNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExpireNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ExpireNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ExpireNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ExpireNode(ctx, req.(*ExpireNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_RenameNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RenameNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).RenameNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_RenameNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).RenameNode(ctx, req.(*RenameNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ListNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNodesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ListNodes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ListNodes_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ListNodes(ctx, req.(*ListNodesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_BackfillNodeIPs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BackfillNodeIPsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).BackfillNodeIPs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_BackfillNodeIPs_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).BackfillNodeIPs(ctx, req.(*BackfillNodeIPsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_AuthRegister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRegisterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).AuthRegister(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_AuthRegister_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).AuthRegister(ctx, req.(*AuthRegisterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_AuthApprove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthApproveRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).AuthApprove(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_AuthApprove_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).AuthApprove(ctx, req.(*AuthApproveRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_AuthReject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthRejectRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).AuthReject(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_AuthReject_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).AuthReject(ctx, req.(*AuthRejectRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_CreateApiKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateApiKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).CreateApiKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_CreateApiKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).CreateApiKey(ctx, req.(*CreateApiKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ExpireApiKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExpireApiKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ExpireApiKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ExpireApiKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ExpireApiKey(ctx, req.(*ExpireApiKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_ListApiKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApiKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).ListApiKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_ListApiKeys_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).ListApiKeys(ctx, req.(*ListApiKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_DeleteApiKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteApiKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).DeleteApiKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_DeleteApiKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).DeleteApiKey(ctx, req.(*DeleteApiKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_GetPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).GetPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_GetPolicy_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).GetPolicy(ctx, req.(*GetPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_SetPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).SetPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_SetPolicy_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).SetPolicy(ctx, req.(*SetPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_CheckPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).CheckPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_CheckPolicy_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).CheckPolicy(ctx, req.(*CheckPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeadscaleService_Health_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(HealthRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeadscaleServiceServer).Health(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeadscaleService_Health_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeadscaleServiceServer).Health(ctx, req.(*HealthRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// HeadscaleService_ServiceDesc is the grpc.ServiceDesc for HeadscaleService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var HeadscaleService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "headscale.v1.HeadscaleService", - HandlerType: (*HeadscaleServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateUser", - Handler: _HeadscaleService_CreateUser_Handler, - }, - { - MethodName: "RenameUser", - Handler: _HeadscaleService_RenameUser_Handler, - }, - { - MethodName: "DeleteUser", - Handler: _HeadscaleService_DeleteUser_Handler, - }, - { - MethodName: "ListUsers", - Handler: _HeadscaleService_ListUsers_Handler, - }, - { - MethodName: "CreatePreAuthKey", - Handler: _HeadscaleService_CreatePreAuthKey_Handler, - }, - { - MethodName: "ExpirePreAuthKey", - Handler: _HeadscaleService_ExpirePreAuthKey_Handler, - }, - { - MethodName: "DeletePreAuthKey", - Handler: _HeadscaleService_DeletePreAuthKey_Handler, - }, - { - MethodName: "ListPreAuthKeys", - Handler: _HeadscaleService_ListPreAuthKeys_Handler, - }, - { - MethodName: "DebugCreateNode", - Handler: _HeadscaleService_DebugCreateNode_Handler, - }, - { - MethodName: "GetNode", - Handler: _HeadscaleService_GetNode_Handler, - }, - { - MethodName: "SetTags", - Handler: _HeadscaleService_SetTags_Handler, - }, - { - MethodName: "SetApprovedRoutes", - Handler: _HeadscaleService_SetApprovedRoutes_Handler, - }, - { - MethodName: "RegisterNode", - Handler: _HeadscaleService_RegisterNode_Handler, - }, - { - MethodName: "DeleteNode", - Handler: _HeadscaleService_DeleteNode_Handler, - }, - { - MethodName: "ExpireNode", - Handler: _HeadscaleService_ExpireNode_Handler, - }, - { - MethodName: "RenameNode", - Handler: _HeadscaleService_RenameNode_Handler, - }, - { - MethodName: "ListNodes", - Handler: _HeadscaleService_ListNodes_Handler, - }, - { - MethodName: "BackfillNodeIPs", - Handler: _HeadscaleService_BackfillNodeIPs_Handler, - }, - { - MethodName: "AuthRegister", - Handler: _HeadscaleService_AuthRegister_Handler, - }, - { - MethodName: "AuthApprove", - Handler: _HeadscaleService_AuthApprove_Handler, - }, - { - MethodName: "AuthReject", - Handler: _HeadscaleService_AuthReject_Handler, - }, - { - MethodName: "CreateApiKey", - Handler: _HeadscaleService_CreateApiKey_Handler, - }, - { - MethodName: "ExpireApiKey", - Handler: _HeadscaleService_ExpireApiKey_Handler, - }, - { - MethodName: "ListApiKeys", - Handler: _HeadscaleService_ListApiKeys_Handler, - }, - { - MethodName: "DeleteApiKey", - Handler: _HeadscaleService_DeleteApiKey_Handler, - }, - { - MethodName: "GetPolicy", - Handler: _HeadscaleService_GetPolicy_Handler, - }, - { - MethodName: "SetPolicy", - Handler: _HeadscaleService_SetPolicy_Handler, - }, - { - MethodName: "CheckPolicy", - Handler: _HeadscaleService_CheckPolicy_Handler, - }, - { - MethodName: "Health", - Handler: _HeadscaleService_Health_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "headscale/v1/headscale.proto", -} diff --git a/gen/go/headscale/v1/node.pb.go b/gen/go/headscale/v1/node.pb.go deleted file mode 100644 index 32142ed8..00000000 --- a/gen/go/headscale/v1/node.pb.go +++ /dev/null @@ -1,1379 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/node.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - 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) -) - -type RegisterMethod int32 - -const ( - RegisterMethod_REGISTER_METHOD_UNSPECIFIED RegisterMethod = 0 - RegisterMethod_REGISTER_METHOD_AUTH_KEY RegisterMethod = 1 - RegisterMethod_REGISTER_METHOD_CLI RegisterMethod = 2 - RegisterMethod_REGISTER_METHOD_OIDC RegisterMethod = 3 -) - -// Enum value maps for RegisterMethod. -var ( - RegisterMethod_name = map[int32]string{ - 0: "REGISTER_METHOD_UNSPECIFIED", - 1: "REGISTER_METHOD_AUTH_KEY", - 2: "REGISTER_METHOD_CLI", - 3: "REGISTER_METHOD_OIDC", - } - RegisterMethod_value = map[string]int32{ - "REGISTER_METHOD_UNSPECIFIED": 0, - "REGISTER_METHOD_AUTH_KEY": 1, - "REGISTER_METHOD_CLI": 2, - "REGISTER_METHOD_OIDC": 3, - } -) - -func (x RegisterMethod) Enum() *RegisterMethod { - p := new(RegisterMethod) - *p = x - return p -} - -func (x RegisterMethod) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RegisterMethod) Descriptor() protoreflect.EnumDescriptor { - return file_headscale_v1_node_proto_enumTypes[0].Descriptor() -} - -func (RegisterMethod) Type() protoreflect.EnumType { - return &file_headscale_v1_node_proto_enumTypes[0] -} - -func (x RegisterMethod) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use RegisterMethod.Descriptor instead. -func (RegisterMethod) EnumDescriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{0} -} - -type Node struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - MachineKey string `protobuf:"bytes,2,opt,name=machine_key,json=machineKey,proto3" json:"machine_key,omitempty"` - NodeKey string `protobuf:"bytes,3,opt,name=node_key,json=nodeKey,proto3" json:"node_key,omitempty"` - DiscoKey string `protobuf:"bytes,4,opt,name=disco_key,json=discoKey,proto3" json:"disco_key,omitempty"` - IpAddresses []string `protobuf:"bytes,5,rep,name=ip_addresses,json=ipAddresses,proto3" json:"ip_addresses,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - User *User `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"` - LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"` - Expiry *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expiry,proto3" json:"expiry,omitempty"` - PreAuthKey *PreAuthKey `protobuf:"bytes,11,opt,name=pre_auth_key,json=preAuthKey,proto3" json:"pre_auth_key,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - RegisterMethod RegisterMethod `protobuf:"varint,13,opt,name=register_method,json=registerMethod,proto3,enum=headscale.v1.RegisterMethod" json:"register_method,omitempty"` - // Deprecated - // repeated string forced_tags = 18; - // repeated string invalid_tags = 19; - // repeated string valid_tags = 20; - GivenName string `protobuf:"bytes,21,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` - Online bool `protobuf:"varint,22,opt,name=online,proto3" json:"online,omitempty"` - ApprovedRoutes []string `protobuf:"bytes,23,rep,name=approved_routes,json=approvedRoutes,proto3" json:"approved_routes,omitempty"` - AvailableRoutes []string `protobuf:"bytes,24,rep,name=available_routes,json=availableRoutes,proto3" json:"available_routes,omitempty"` - SubnetRoutes []string `protobuf:"bytes,25,rep,name=subnet_routes,json=subnetRoutes,proto3" json:"subnet_routes,omitempty"` - Tags []string `protobuf:"bytes,26,rep,name=tags,proto3" json:"tags,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Node) Reset() { - *x = Node{} - mi := &file_headscale_v1_node_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Node) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Node) ProtoMessage() {} - -func (x *Node) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Node.ProtoReflect.Descriptor instead. -func (*Node) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{0} -} - -func (x *Node) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Node) GetMachineKey() string { - if x != nil { - return x.MachineKey - } - return "" -} - -func (x *Node) GetNodeKey() string { - if x != nil { - return x.NodeKey - } - return "" -} - -func (x *Node) GetDiscoKey() string { - if x != nil { - return x.DiscoKey - } - return "" -} - -func (x *Node) GetIpAddresses() []string { - if x != nil { - return x.IpAddresses - } - return nil -} - -func (x *Node) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Node) GetUser() *User { - if x != nil { - return x.User - } - return nil -} - -func (x *Node) GetLastSeen() *timestamppb.Timestamp { - if x != nil { - return x.LastSeen - } - return nil -} - -func (x *Node) GetExpiry() *timestamppb.Timestamp { - if x != nil { - return x.Expiry - } - return nil -} - -func (x *Node) GetPreAuthKey() *PreAuthKey { - if x != nil { - return x.PreAuthKey - } - return nil -} - -func (x *Node) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Node) GetRegisterMethod() RegisterMethod { - if x != nil { - return x.RegisterMethod - } - return RegisterMethod_REGISTER_METHOD_UNSPECIFIED -} - -func (x *Node) GetGivenName() string { - if x != nil { - return x.GivenName - } - return "" -} - -func (x *Node) GetOnline() bool { - if x != nil { - return x.Online - } - return false -} - -func (x *Node) GetApprovedRoutes() []string { - if x != nil { - return x.ApprovedRoutes - } - return nil -} - -func (x *Node) GetAvailableRoutes() []string { - if x != nil { - return x.AvailableRoutes - } - return nil -} - -func (x *Node) GetSubnetRoutes() []string { - if x != nil { - return x.SubnetRoutes - } - return nil -} - -func (x *Node) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -type RegisterNodeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RegisterNodeRequest) Reset() { - *x = RegisterNodeRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RegisterNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegisterNodeRequest) ProtoMessage() {} - -func (x *RegisterNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegisterNodeRequest.ProtoReflect.Descriptor instead. -func (*RegisterNodeRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{1} -} - -func (x *RegisterNodeRequest) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *RegisterNodeRequest) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -type RegisterNodeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RegisterNodeResponse) Reset() { - *x = RegisterNodeResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RegisterNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegisterNodeResponse) ProtoMessage() {} - -func (x *RegisterNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegisterNodeResponse.ProtoReflect.Descriptor instead. -func (*RegisterNodeResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{2} -} - -func (x *RegisterNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type GetNodeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetNodeRequest) Reset() { - *x = GetNodeRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNodeRequest) ProtoMessage() {} - -func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. -func (*GetNodeRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{3} -} - -func (x *GetNodeRequest) GetNodeId() uint64 { - if x != nil { - return x.NodeId - } - return 0 -} - -type GetNodeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetNodeResponse) Reset() { - *x = GetNodeResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNodeResponse) ProtoMessage() {} - -func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. -func (*GetNodeResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{4} -} - -func (x *GetNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type SetTagsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - Tags []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetTagsRequest) Reset() { - *x = SetTagsRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetTagsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetTagsRequest) ProtoMessage() {} - -func (x *SetTagsRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetTagsRequest.ProtoReflect.Descriptor instead. -func (*SetTagsRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{5} -} - -func (x *SetTagsRequest) GetNodeId() uint64 { - if x != nil { - return x.NodeId - } - return 0 -} - -func (x *SetTagsRequest) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -type SetTagsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetTagsResponse) Reset() { - *x = SetTagsResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetTagsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetTagsResponse) ProtoMessage() {} - -func (x *SetTagsResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetTagsResponse.ProtoReflect.Descriptor instead. -func (*SetTagsResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{6} -} - -func (x *SetTagsResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type SetApprovedRoutesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - Routes []string `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetApprovedRoutesRequest) Reset() { - *x = SetApprovedRoutesRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetApprovedRoutesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetApprovedRoutesRequest) ProtoMessage() {} - -func (x *SetApprovedRoutesRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetApprovedRoutesRequest.ProtoReflect.Descriptor instead. -func (*SetApprovedRoutesRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{7} -} - -func (x *SetApprovedRoutesRequest) GetNodeId() uint64 { - if x != nil { - return x.NodeId - } - return 0 -} - -func (x *SetApprovedRoutesRequest) GetRoutes() []string { - if x != nil { - return x.Routes - } - return nil -} - -type SetApprovedRoutesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetApprovedRoutesResponse) Reset() { - *x = SetApprovedRoutesResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetApprovedRoutesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetApprovedRoutesResponse) ProtoMessage() {} - -func (x *SetApprovedRoutesResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetApprovedRoutesResponse.ProtoReflect.Descriptor instead. -func (*SetApprovedRoutesResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{8} -} - -func (x *SetApprovedRoutesResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type DeleteNodeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteNodeRequest) Reset() { - *x = DeleteNodeRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteNodeRequest) ProtoMessage() {} - -func (x *DeleteNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteNodeRequest.ProtoReflect.Descriptor instead. -func (*DeleteNodeRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{9} -} - -func (x *DeleteNodeRequest) GetNodeId() uint64 { - if x != nil { - return x.NodeId - } - return 0 -} - -type DeleteNodeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteNodeResponse) Reset() { - *x = DeleteNodeResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteNodeResponse) ProtoMessage() {} - -func (x *DeleteNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteNodeResponse.ProtoReflect.Descriptor instead. -func (*DeleteNodeResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{10} -} - -type ExpireNodeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - Expiry *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiry,proto3" json:"expiry,omitempty"` - // When true, sets expiry to null (node will never expire). - DisableExpiry bool `protobuf:"varint,3,opt,name=disable_expiry,json=disableExpiry,proto3" json:"disable_expiry,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExpireNodeRequest) Reset() { - *x = ExpireNodeRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExpireNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpireNodeRequest) ProtoMessage() {} - -func (x *ExpireNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpireNodeRequest.ProtoReflect.Descriptor instead. -func (*ExpireNodeRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{11} -} - -func (x *ExpireNodeRequest) GetNodeId() uint64 { - if x != nil { - return x.NodeId - } - return 0 -} - -func (x *ExpireNodeRequest) GetExpiry() *timestamppb.Timestamp { - if x != nil { - return x.Expiry - } - return nil -} - -func (x *ExpireNodeRequest) GetDisableExpiry() bool { - if x != nil { - return x.DisableExpiry - } - return false -} - -type ExpireNodeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExpireNodeResponse) Reset() { - *x = ExpireNodeResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExpireNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpireNodeResponse) ProtoMessage() {} - -func (x *ExpireNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpireNodeResponse.ProtoReflect.Descriptor instead. -func (*ExpireNodeResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{12} -} - -func (x *ExpireNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type RenameNodeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NodeId uint64 `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - NewName string `protobuf:"bytes,2,opt,name=new_name,json=newName,proto3" json:"new_name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RenameNodeRequest) Reset() { - *x = RenameNodeRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RenameNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RenameNodeRequest) ProtoMessage() {} - -func (x *RenameNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RenameNodeRequest.ProtoReflect.Descriptor instead. -func (*RenameNodeRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{13} -} - -func (x *RenameNodeRequest) GetNodeId() uint64 { - if x != nil { - return x.NodeId - } - return 0 -} - -func (x *RenameNodeRequest) GetNewName() string { - if x != nil { - return x.NewName - } - return "" -} - -type RenameNodeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RenameNodeResponse) Reset() { - *x = RenameNodeResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RenameNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RenameNodeResponse) ProtoMessage() {} - -func (x *RenameNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RenameNodeResponse.ProtoReflect.Descriptor instead. -func (*RenameNodeResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{14} -} - -func (x *RenameNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type ListNodesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListNodesRequest) Reset() { - *x = ListNodesRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListNodesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodesRequest) ProtoMessage() {} - -func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. -func (*ListNodesRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{15} -} - -func (x *ListNodesRequest) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -type ListNodesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Nodes []*Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListNodesResponse) Reset() { - *x = ListNodesResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListNodesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodesResponse) ProtoMessage() {} - -func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. -func (*ListNodesResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{16} -} - -func (x *ListNodesResponse) GetNodes() []*Node { - if x != nil { - return x.Nodes - } - return nil -} - -type DebugCreateNodeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Routes []string `protobuf:"bytes,4,rep,name=routes,proto3" json:"routes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DebugCreateNodeRequest) Reset() { - *x = DebugCreateNodeRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DebugCreateNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DebugCreateNodeRequest) ProtoMessage() {} - -func (x *DebugCreateNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DebugCreateNodeRequest.ProtoReflect.Descriptor instead. -func (*DebugCreateNodeRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{17} -} - -func (x *DebugCreateNodeRequest) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *DebugCreateNodeRequest) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *DebugCreateNodeRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DebugCreateNodeRequest) GetRoutes() []string { - if x != nil { - return x.Routes - } - return nil -} - -type DebugCreateNodeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DebugCreateNodeResponse) Reset() { - *x = DebugCreateNodeResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DebugCreateNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DebugCreateNodeResponse) ProtoMessage() {} - -func (x *DebugCreateNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DebugCreateNodeResponse.ProtoReflect.Descriptor instead. -func (*DebugCreateNodeResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{18} -} - -func (x *DebugCreateNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type BackfillNodeIPsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Confirmed bool `protobuf:"varint,1,opt,name=confirmed,proto3" json:"confirmed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BackfillNodeIPsRequest) Reset() { - *x = BackfillNodeIPsRequest{} - mi := &file_headscale_v1_node_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BackfillNodeIPsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BackfillNodeIPsRequest) ProtoMessage() {} - -func (x *BackfillNodeIPsRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BackfillNodeIPsRequest.ProtoReflect.Descriptor instead. -func (*BackfillNodeIPsRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{19} -} - -func (x *BackfillNodeIPsRequest) GetConfirmed() bool { - if x != nil { - return x.Confirmed - } - return false -} - -type BackfillNodeIPsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Changes []string `protobuf:"bytes,1,rep,name=changes,proto3" json:"changes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BackfillNodeIPsResponse) Reset() { - *x = BackfillNodeIPsResponse{} - mi := &file_headscale_v1_node_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BackfillNodeIPsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BackfillNodeIPsResponse) ProtoMessage() {} - -func (x *BackfillNodeIPsResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_node_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BackfillNodeIPsResponse.ProtoReflect.Descriptor instead. -func (*BackfillNodeIPsResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_node_proto_rawDescGZIP(), []int{20} -} - -func (x *BackfillNodeIPsResponse) GetChanges() []string { - if x != nil { - return x.Changes - } - return nil -} - -var File_headscale_v1_node_proto protoreflect.FileDescriptor - -const file_headscale_v1_node_proto_rawDesc = "" + - "\n" + - "\x17headscale/v1/node.proto\x12\fheadscale.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1dheadscale/v1/preauthkey.proto\x1a\x17headscale/v1/user.proto\"\xc9\x05\n" + - "\x04Node\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\x12\x1f\n" + - "\vmachine_key\x18\x02 \x01(\tR\n" + - "machineKey\x12\x19\n" + - "\bnode_key\x18\x03 \x01(\tR\anodeKey\x12\x1b\n" + - "\tdisco_key\x18\x04 \x01(\tR\bdiscoKey\x12!\n" + - "\fip_addresses\x18\x05 \x03(\tR\vipAddresses\x12\x12\n" + - "\x04name\x18\x06 \x01(\tR\x04name\x12&\n" + - "\x04user\x18\a \x01(\v2\x12.headscale.v1.UserR\x04user\x127\n" + - "\tlast_seen\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x122\n" + - "\x06expiry\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\x06expiry\x12:\n" + - "\fpre_auth_key\x18\v \x01(\v2\x18.headscale.v1.PreAuthKeyR\n" + - "preAuthKey\x129\n" + - "\n" + - "created_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12E\n" + - "\x0fregister_method\x18\r \x01(\x0e2\x1c.headscale.v1.RegisterMethodR\x0eregisterMethod\x12\x1d\n" + - "\n" + - "given_name\x18\x15 \x01(\tR\tgivenName\x12\x16\n" + - "\x06online\x18\x16 \x01(\bR\x06online\x12'\n" + - "\x0fapproved_routes\x18\x17 \x03(\tR\x0eapprovedRoutes\x12)\n" + - "\x10available_routes\x18\x18 \x03(\tR\x0favailableRoutes\x12#\n" + - "\rsubnet_routes\x18\x19 \x03(\tR\fsubnetRoutes\x12\x12\n" + - "\x04tags\x18\x1a \x03(\tR\x04tagsJ\x04\b\t\x10\n" + - "J\x04\b\x0e\x10\x15\";\n" + - "\x13RegisterNodeRequest\x12\x12\n" + - "\x04user\x18\x01 \x01(\tR\x04user\x12\x10\n" + - "\x03key\x18\x02 \x01(\tR\x03key\">\n" + - "\x14RegisterNodeResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\")\n" + - "\x0eGetNodeRequest\x12\x17\n" + - "\anode_id\x18\x01 \x01(\x04R\x06nodeId\"9\n" + - "\x0fGetNodeResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\"=\n" + - "\x0eSetTagsRequest\x12\x17\n" + - "\anode_id\x18\x01 \x01(\x04R\x06nodeId\x12\x12\n" + - "\x04tags\x18\x02 \x03(\tR\x04tags\"9\n" + - "\x0fSetTagsResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\"K\n" + - "\x18SetApprovedRoutesRequest\x12\x17\n" + - "\anode_id\x18\x01 \x01(\x04R\x06nodeId\x12\x16\n" + - "\x06routes\x18\x02 \x03(\tR\x06routes\"C\n" + - "\x19SetApprovedRoutesResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\",\n" + - "\x11DeleteNodeRequest\x12\x17\n" + - "\anode_id\x18\x01 \x01(\x04R\x06nodeId\"\x14\n" + - "\x12DeleteNodeResponse\"\x87\x01\n" + - "\x11ExpireNodeRequest\x12\x17\n" + - "\anode_id\x18\x01 \x01(\x04R\x06nodeId\x122\n" + - "\x06expiry\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x06expiry\x12%\n" + - "\x0edisable_expiry\x18\x03 \x01(\bR\rdisableExpiry\"<\n" + - "\x12ExpireNodeResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\"G\n" + - "\x11RenameNodeRequest\x12\x17\n" + - "\anode_id\x18\x01 \x01(\x04R\x06nodeId\x12\x19\n" + - "\bnew_name\x18\x02 \x01(\tR\anewName\"<\n" + - "\x12RenameNodeResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\"&\n" + - "\x10ListNodesRequest\x12\x12\n" + - "\x04user\x18\x01 \x01(\tR\x04user\"=\n" + - "\x11ListNodesResponse\x12(\n" + - "\x05nodes\x18\x01 \x03(\v2\x12.headscale.v1.NodeR\x05nodes\"j\n" + - "\x16DebugCreateNodeRequest\x12\x12\n" + - "\x04user\x18\x01 \x01(\tR\x04user\x12\x10\n" + - "\x03key\x18\x02 \x01(\tR\x03key\x12\x12\n" + - "\x04name\x18\x03 \x01(\tR\x04name\x12\x16\n" + - "\x06routes\x18\x04 \x03(\tR\x06routes\"A\n" + - "\x17DebugCreateNodeResponse\x12&\n" + - "\x04node\x18\x01 \x01(\v2\x12.headscale.v1.NodeR\x04node\"6\n" + - "\x16BackfillNodeIPsRequest\x12\x1c\n" + - "\tconfirmed\x18\x01 \x01(\bR\tconfirmed\"3\n" + - "\x17BackfillNodeIPsResponse\x12\x18\n" + - "\achanges\x18\x01 \x03(\tR\achanges*\x82\x01\n" + - "\x0eRegisterMethod\x12\x1f\n" + - "\x1bREGISTER_METHOD_UNSPECIFIED\x10\x00\x12\x1c\n" + - "\x18REGISTER_METHOD_AUTH_KEY\x10\x01\x12\x17\n" + - "\x13REGISTER_METHOD_CLI\x10\x02\x12\x18\n" + - "\x14REGISTER_METHOD_OIDC\x10\x03B)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_node_proto_rawDescOnce sync.Once - file_headscale_v1_node_proto_rawDescData []byte -) - -func file_headscale_v1_node_proto_rawDescGZIP() []byte { - file_headscale_v1_node_proto_rawDescOnce.Do(func() { - file_headscale_v1_node_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_node_proto_rawDesc), len(file_headscale_v1_node_proto_rawDesc))) - }) - return file_headscale_v1_node_proto_rawDescData -} - -var file_headscale_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_headscale_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 21) -var file_headscale_v1_node_proto_goTypes = []any{ - (RegisterMethod)(0), // 0: headscale.v1.RegisterMethod - (*Node)(nil), // 1: headscale.v1.Node - (*RegisterNodeRequest)(nil), // 2: headscale.v1.RegisterNodeRequest - (*RegisterNodeResponse)(nil), // 3: headscale.v1.RegisterNodeResponse - (*GetNodeRequest)(nil), // 4: headscale.v1.GetNodeRequest - (*GetNodeResponse)(nil), // 5: headscale.v1.GetNodeResponse - (*SetTagsRequest)(nil), // 6: headscale.v1.SetTagsRequest - (*SetTagsResponse)(nil), // 7: headscale.v1.SetTagsResponse - (*SetApprovedRoutesRequest)(nil), // 8: headscale.v1.SetApprovedRoutesRequest - (*SetApprovedRoutesResponse)(nil), // 9: headscale.v1.SetApprovedRoutesResponse - (*DeleteNodeRequest)(nil), // 10: headscale.v1.DeleteNodeRequest - (*DeleteNodeResponse)(nil), // 11: headscale.v1.DeleteNodeResponse - (*ExpireNodeRequest)(nil), // 12: headscale.v1.ExpireNodeRequest - (*ExpireNodeResponse)(nil), // 13: headscale.v1.ExpireNodeResponse - (*RenameNodeRequest)(nil), // 14: headscale.v1.RenameNodeRequest - (*RenameNodeResponse)(nil), // 15: headscale.v1.RenameNodeResponse - (*ListNodesRequest)(nil), // 16: headscale.v1.ListNodesRequest - (*ListNodesResponse)(nil), // 17: headscale.v1.ListNodesResponse - (*DebugCreateNodeRequest)(nil), // 18: headscale.v1.DebugCreateNodeRequest - (*DebugCreateNodeResponse)(nil), // 19: headscale.v1.DebugCreateNodeResponse - (*BackfillNodeIPsRequest)(nil), // 20: headscale.v1.BackfillNodeIPsRequest - (*BackfillNodeIPsResponse)(nil), // 21: headscale.v1.BackfillNodeIPsResponse - (*User)(nil), // 22: headscale.v1.User - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp - (*PreAuthKey)(nil), // 24: headscale.v1.PreAuthKey -} -var file_headscale_v1_node_proto_depIdxs = []int32{ - 22, // 0: headscale.v1.Node.user:type_name -> headscale.v1.User - 23, // 1: headscale.v1.Node.last_seen:type_name -> google.protobuf.Timestamp - 23, // 2: headscale.v1.Node.expiry:type_name -> google.protobuf.Timestamp - 24, // 3: headscale.v1.Node.pre_auth_key:type_name -> headscale.v1.PreAuthKey - 23, // 4: headscale.v1.Node.created_at:type_name -> google.protobuf.Timestamp - 0, // 5: headscale.v1.Node.register_method:type_name -> headscale.v1.RegisterMethod - 1, // 6: headscale.v1.RegisterNodeResponse.node:type_name -> headscale.v1.Node - 1, // 7: headscale.v1.GetNodeResponse.node:type_name -> headscale.v1.Node - 1, // 8: headscale.v1.SetTagsResponse.node:type_name -> headscale.v1.Node - 1, // 9: headscale.v1.SetApprovedRoutesResponse.node:type_name -> headscale.v1.Node - 23, // 10: headscale.v1.ExpireNodeRequest.expiry:type_name -> google.protobuf.Timestamp - 1, // 11: headscale.v1.ExpireNodeResponse.node:type_name -> headscale.v1.Node - 1, // 12: headscale.v1.RenameNodeResponse.node:type_name -> headscale.v1.Node - 1, // 13: headscale.v1.ListNodesResponse.nodes:type_name -> headscale.v1.Node - 1, // 14: headscale.v1.DebugCreateNodeResponse.node:type_name -> headscale.v1.Node - 15, // [15:15] is the sub-list for method output_type - 15, // [15:15] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name -} - -func init() { file_headscale_v1_node_proto_init() } -func file_headscale_v1_node_proto_init() { - if File_headscale_v1_node_proto != nil { - return - } - file_headscale_v1_preauthkey_proto_init() - file_headscale_v1_user_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_node_proto_rawDesc), len(file_headscale_v1_node_proto_rawDesc)), - NumEnums: 1, - NumMessages: 21, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_node_proto_goTypes, - DependencyIndexes: file_headscale_v1_node_proto_depIdxs, - EnumInfos: file_headscale_v1_node_proto_enumTypes, - MessageInfos: file_headscale_v1_node_proto_msgTypes, - }.Build() - File_headscale_v1_node_proto = out.File - file_headscale_v1_node_proto_goTypes = nil - file_headscale_v1_node_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/policy.pb.go b/gen/go/headscale/v1/policy.pb.go deleted file mode 100644 index 7b58ac12..00000000 --- a/gen/go/headscale/v1/policy.pb.go +++ /dev/null @@ -1,363 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/policy.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - 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) -) - -type SetPolicyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Policy string `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetPolicyRequest) Reset() { - *x = SetPolicyRequest{} - mi := &file_headscale_v1_policy_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetPolicyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetPolicyRequest) ProtoMessage() {} - -func (x *SetPolicyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_policy_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetPolicyRequest.ProtoReflect.Descriptor instead. -func (*SetPolicyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_policy_proto_rawDescGZIP(), []int{0} -} - -func (x *SetPolicyRequest) GetPolicy() string { - if x != nil { - return x.Policy - } - return "" -} - -type SetPolicyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Policy string `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetPolicyResponse) Reset() { - *x = SetPolicyResponse{} - mi := &file_headscale_v1_policy_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetPolicyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetPolicyResponse) ProtoMessage() {} - -func (x *SetPolicyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_policy_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetPolicyResponse.ProtoReflect.Descriptor instead. -func (*SetPolicyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_policy_proto_rawDescGZIP(), []int{1} -} - -func (x *SetPolicyResponse) GetPolicy() string { - if x != nil { - return x.Policy - } - return "" -} - -func (x *SetPolicyResponse) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -type GetPolicyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPolicyRequest) Reset() { - *x = GetPolicyRequest{} - mi := &file_headscale_v1_policy_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPolicyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPolicyRequest) ProtoMessage() {} - -func (x *GetPolicyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_policy_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPolicyRequest.ProtoReflect.Descriptor instead. -func (*GetPolicyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_policy_proto_rawDescGZIP(), []int{2} -} - -type GetPolicyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Policy string `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPolicyResponse) Reset() { - *x = GetPolicyResponse{} - mi := &file_headscale_v1_policy_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPolicyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPolicyResponse) ProtoMessage() {} - -func (x *GetPolicyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_policy_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPolicyResponse.ProtoReflect.Descriptor instead. -func (*GetPolicyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_policy_proto_rawDescGZIP(), []int{3} -} - -func (x *GetPolicyResponse) GetPolicy() string { - if x != nil { - return x.Policy - } - return "" -} - -func (x *GetPolicyResponse) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -type CheckPolicyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Policy string `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CheckPolicyRequest) Reset() { - *x = CheckPolicyRequest{} - mi := &file_headscale_v1_policy_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CheckPolicyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CheckPolicyRequest) ProtoMessage() {} - -func (x *CheckPolicyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_policy_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CheckPolicyRequest.ProtoReflect.Descriptor instead. -func (*CheckPolicyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_policy_proto_rawDescGZIP(), []int{4} -} - -func (x *CheckPolicyRequest) GetPolicy() string { - if x != nil { - return x.Policy - } - return "" -} - -type CheckPolicyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CheckPolicyResponse) Reset() { - *x = CheckPolicyResponse{} - mi := &file_headscale_v1_policy_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CheckPolicyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CheckPolicyResponse) ProtoMessage() {} - -func (x *CheckPolicyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_policy_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CheckPolicyResponse.ProtoReflect.Descriptor instead. -func (*CheckPolicyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_policy_proto_rawDescGZIP(), []int{5} -} - -var File_headscale_v1_policy_proto protoreflect.FileDescriptor - -const file_headscale_v1_policy_proto_rawDesc = "" + - "\n" + - "\x19headscale/v1/policy.proto\x12\fheadscale.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"*\n" + - "\x10SetPolicyRequest\x12\x16\n" + - "\x06policy\x18\x01 \x01(\tR\x06policy\"f\n" + - "\x11SetPolicyResponse\x12\x16\n" + - "\x06policy\x18\x01 \x01(\tR\x06policy\x129\n" + - "\n" + - "updated_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\x12\n" + - "\x10GetPolicyRequest\"f\n" + - "\x11GetPolicyResponse\x12\x16\n" + - "\x06policy\x18\x01 \x01(\tR\x06policy\x129\n" + - "\n" + - "updated_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\",\n" + - "\x12CheckPolicyRequest\x12\x16\n" + - "\x06policy\x18\x01 \x01(\tR\x06policy\"\x15\n" + - "\x13CheckPolicyResponseB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_policy_proto_rawDescOnce sync.Once - file_headscale_v1_policy_proto_rawDescData []byte -) - -func file_headscale_v1_policy_proto_rawDescGZIP() []byte { - file_headscale_v1_policy_proto_rawDescOnce.Do(func() { - file_headscale_v1_policy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_policy_proto_rawDesc), len(file_headscale_v1_policy_proto_rawDesc))) - }) - return file_headscale_v1_policy_proto_rawDescData -} - -var file_headscale_v1_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_headscale_v1_policy_proto_goTypes = []any{ - (*SetPolicyRequest)(nil), // 0: headscale.v1.SetPolicyRequest - (*SetPolicyResponse)(nil), // 1: headscale.v1.SetPolicyResponse - (*GetPolicyRequest)(nil), // 2: headscale.v1.GetPolicyRequest - (*GetPolicyResponse)(nil), // 3: headscale.v1.GetPolicyResponse - (*CheckPolicyRequest)(nil), // 4: headscale.v1.CheckPolicyRequest - (*CheckPolicyResponse)(nil), // 5: headscale.v1.CheckPolicyResponse - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp -} -var file_headscale_v1_policy_proto_depIdxs = []int32{ - 6, // 0: headscale.v1.SetPolicyResponse.updated_at:type_name -> google.protobuf.Timestamp - 6, // 1: headscale.v1.GetPolicyResponse.updated_at:type_name -> google.protobuf.Timestamp - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_headscale_v1_policy_proto_init() } -func file_headscale_v1_policy_proto_init() { - if File_headscale_v1_policy_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_policy_proto_rawDesc), len(file_headscale_v1_policy_proto_rawDesc)), - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_policy_proto_goTypes, - DependencyIndexes: file_headscale_v1_policy_proto_depIdxs, - MessageInfos: file_headscale_v1_policy_proto_msgTypes, - }.Build() - File_headscale_v1_policy_proto = out.File - file_headscale_v1_policy_proto_goTypes = nil - file_headscale_v1_policy_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/preauthkey.pb.go b/gen/go/headscale/v1/preauthkey.pb.go deleted file mode 100644 index ff902d45..00000000 --- a/gen/go/headscale/v1/preauthkey.pb.go +++ /dev/null @@ -1,596 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/preauthkey.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - 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) -) - -type PreAuthKey struct { - state protoimpl.MessageState `protogen:"open.v1"` - User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - Reusable bool `protobuf:"varint,4,opt,name=reusable,proto3" json:"reusable,omitempty"` - Ephemeral bool `protobuf:"varint,5,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"` - Used bool `protobuf:"varint,6,opt,name=used,proto3" json:"used,omitempty"` - Expiration *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expiration,proto3" json:"expiration,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - AclTags []string `protobuf:"bytes,9,rep,name=acl_tags,json=aclTags,proto3" json:"acl_tags,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreAuthKey) Reset() { - *x = PreAuthKey{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreAuthKey) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreAuthKey) ProtoMessage() {} - -func (x *PreAuthKey) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreAuthKey.ProtoReflect.Descriptor instead. -func (*PreAuthKey) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{0} -} - -func (x *PreAuthKey) GetUser() *User { - if x != nil { - return x.User - } - return nil -} - -func (x *PreAuthKey) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *PreAuthKey) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *PreAuthKey) GetReusable() bool { - if x != nil { - return x.Reusable - } - return false -} - -func (x *PreAuthKey) GetEphemeral() bool { - if x != nil { - return x.Ephemeral - } - return false -} - -func (x *PreAuthKey) GetUsed() bool { - if x != nil { - return x.Used - } - return false -} - -func (x *PreAuthKey) GetExpiration() *timestamppb.Timestamp { - if x != nil { - return x.Expiration - } - return nil -} - -func (x *PreAuthKey) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *PreAuthKey) GetAclTags() []string { - if x != nil { - return x.AclTags - } - return nil -} - -type CreatePreAuthKeyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - User uint64 `protobuf:"varint,1,opt,name=user,proto3" json:"user,omitempty"` - Reusable bool `protobuf:"varint,2,opt,name=reusable,proto3" json:"reusable,omitempty"` - Ephemeral bool `protobuf:"varint,3,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"` - Expiration *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expiration,proto3" json:"expiration,omitempty"` - AclTags []string `protobuf:"bytes,5,rep,name=acl_tags,json=aclTags,proto3" json:"acl_tags,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreatePreAuthKeyRequest) Reset() { - *x = CreatePreAuthKeyRequest{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreatePreAuthKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreatePreAuthKeyRequest) ProtoMessage() {} - -func (x *CreatePreAuthKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreatePreAuthKeyRequest.ProtoReflect.Descriptor instead. -func (*CreatePreAuthKeyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{1} -} - -func (x *CreatePreAuthKeyRequest) GetUser() uint64 { - if x != nil { - return x.User - } - return 0 -} - -func (x *CreatePreAuthKeyRequest) GetReusable() bool { - if x != nil { - return x.Reusable - } - return false -} - -func (x *CreatePreAuthKeyRequest) GetEphemeral() bool { - if x != nil { - return x.Ephemeral - } - return false -} - -func (x *CreatePreAuthKeyRequest) GetExpiration() *timestamppb.Timestamp { - if x != nil { - return x.Expiration - } - return nil -} - -func (x *CreatePreAuthKeyRequest) GetAclTags() []string { - if x != nil { - return x.AclTags - } - return nil -} - -type CreatePreAuthKeyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - PreAuthKey *PreAuthKey `protobuf:"bytes,1,opt,name=pre_auth_key,json=preAuthKey,proto3" json:"pre_auth_key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreatePreAuthKeyResponse) Reset() { - *x = CreatePreAuthKeyResponse{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreatePreAuthKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreatePreAuthKeyResponse) ProtoMessage() {} - -func (x *CreatePreAuthKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreatePreAuthKeyResponse.ProtoReflect.Descriptor instead. -func (*CreatePreAuthKeyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{2} -} - -func (x *CreatePreAuthKeyResponse) GetPreAuthKey() *PreAuthKey { - if x != nil { - return x.PreAuthKey - } - return nil -} - -type ExpirePreAuthKeyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExpirePreAuthKeyRequest) Reset() { - *x = ExpirePreAuthKeyRequest{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExpirePreAuthKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpirePreAuthKeyRequest) ProtoMessage() {} - -func (x *ExpirePreAuthKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpirePreAuthKeyRequest.ProtoReflect.Descriptor instead. -func (*ExpirePreAuthKeyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{3} -} - -func (x *ExpirePreAuthKeyRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -type ExpirePreAuthKeyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExpirePreAuthKeyResponse) Reset() { - *x = ExpirePreAuthKeyResponse{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExpirePreAuthKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExpirePreAuthKeyResponse) ProtoMessage() {} - -func (x *ExpirePreAuthKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExpirePreAuthKeyResponse.ProtoReflect.Descriptor instead. -func (*ExpirePreAuthKeyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{4} -} - -type DeletePreAuthKeyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeletePreAuthKeyRequest) Reset() { - *x = DeletePreAuthKeyRequest{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeletePreAuthKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeletePreAuthKeyRequest) ProtoMessage() {} - -func (x *DeletePreAuthKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeletePreAuthKeyRequest.ProtoReflect.Descriptor instead. -func (*DeletePreAuthKeyRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{5} -} - -func (x *DeletePreAuthKeyRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -type DeletePreAuthKeyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeletePreAuthKeyResponse) Reset() { - *x = DeletePreAuthKeyResponse{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeletePreAuthKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeletePreAuthKeyResponse) ProtoMessage() {} - -func (x *DeletePreAuthKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeletePreAuthKeyResponse.ProtoReflect.Descriptor instead. -func (*DeletePreAuthKeyResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{6} -} - -type ListPreAuthKeysRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPreAuthKeysRequest) Reset() { - *x = ListPreAuthKeysRequest{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPreAuthKeysRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPreAuthKeysRequest) ProtoMessage() {} - -func (x *ListPreAuthKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPreAuthKeysRequest.ProtoReflect.Descriptor instead. -func (*ListPreAuthKeysRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{7} -} - -type ListPreAuthKeysResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - PreAuthKeys []*PreAuthKey `protobuf:"bytes,1,rep,name=pre_auth_keys,json=preAuthKeys,proto3" json:"pre_auth_keys,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPreAuthKeysResponse) Reset() { - *x = ListPreAuthKeysResponse{} - mi := &file_headscale_v1_preauthkey_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPreAuthKeysResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPreAuthKeysResponse) ProtoMessage() {} - -func (x *ListPreAuthKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_preauthkey_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPreAuthKeysResponse.ProtoReflect.Descriptor instead. -func (*ListPreAuthKeysResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_preauthkey_proto_rawDescGZIP(), []int{8} -} - -func (x *ListPreAuthKeysResponse) GetPreAuthKeys() []*PreAuthKey { - if x != nil { - return x.PreAuthKeys - } - return nil -} - -var File_headscale_v1_preauthkey_proto protoreflect.FileDescriptor - -const file_headscale_v1_preauthkey_proto_rawDesc = "" + - "\n" + - "\x1dheadscale/v1/preauthkey.proto\x12\fheadscale.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17headscale/v1/user.proto\"\xb6\x02\n" + - "\n" + - "PreAuthKey\x12&\n" + - "\x04user\x18\x01 \x01(\v2\x12.headscale.v1.UserR\x04user\x12\x0e\n" + - "\x02id\x18\x02 \x01(\x04R\x02id\x12\x10\n" + - "\x03key\x18\x03 \x01(\tR\x03key\x12\x1a\n" + - "\breusable\x18\x04 \x01(\bR\breusable\x12\x1c\n" + - "\tephemeral\x18\x05 \x01(\bR\tephemeral\x12\x12\n" + - "\x04used\x18\x06 \x01(\bR\x04used\x12:\n" + - "\n" + - "expiration\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "expiration\x129\n" + - "\n" + - "created_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x19\n" + - "\bacl_tags\x18\t \x03(\tR\aaclTags\"\xbe\x01\n" + - "\x17CreatePreAuthKeyRequest\x12\x12\n" + - "\x04user\x18\x01 \x01(\x04R\x04user\x12\x1a\n" + - "\breusable\x18\x02 \x01(\bR\breusable\x12\x1c\n" + - "\tephemeral\x18\x03 \x01(\bR\tephemeral\x12:\n" + - "\n" + - "expiration\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "expiration\x12\x19\n" + - "\bacl_tags\x18\x05 \x03(\tR\aaclTags\"V\n" + - "\x18CreatePreAuthKeyResponse\x12:\n" + - "\fpre_auth_key\x18\x01 \x01(\v2\x18.headscale.v1.PreAuthKeyR\n" + - "preAuthKey\")\n" + - "\x17ExpirePreAuthKeyRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\"\x1a\n" + - "\x18ExpirePreAuthKeyResponse\")\n" + - "\x17DeletePreAuthKeyRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\"\x1a\n" + - "\x18DeletePreAuthKeyResponse\"\x18\n" + - "\x16ListPreAuthKeysRequest\"W\n" + - "\x17ListPreAuthKeysResponse\x12<\n" + - "\rpre_auth_keys\x18\x01 \x03(\v2\x18.headscale.v1.PreAuthKeyR\vpreAuthKeysB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_preauthkey_proto_rawDescOnce sync.Once - file_headscale_v1_preauthkey_proto_rawDescData []byte -) - -func file_headscale_v1_preauthkey_proto_rawDescGZIP() []byte { - file_headscale_v1_preauthkey_proto_rawDescOnce.Do(func() { - file_headscale_v1_preauthkey_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_preauthkey_proto_rawDesc), len(file_headscale_v1_preauthkey_proto_rawDesc))) - }) - return file_headscale_v1_preauthkey_proto_rawDescData -} - -var file_headscale_v1_preauthkey_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_headscale_v1_preauthkey_proto_goTypes = []any{ - (*PreAuthKey)(nil), // 0: headscale.v1.PreAuthKey - (*CreatePreAuthKeyRequest)(nil), // 1: headscale.v1.CreatePreAuthKeyRequest - (*CreatePreAuthKeyResponse)(nil), // 2: headscale.v1.CreatePreAuthKeyResponse - (*ExpirePreAuthKeyRequest)(nil), // 3: headscale.v1.ExpirePreAuthKeyRequest - (*ExpirePreAuthKeyResponse)(nil), // 4: headscale.v1.ExpirePreAuthKeyResponse - (*DeletePreAuthKeyRequest)(nil), // 5: headscale.v1.DeletePreAuthKeyRequest - (*DeletePreAuthKeyResponse)(nil), // 6: headscale.v1.DeletePreAuthKeyResponse - (*ListPreAuthKeysRequest)(nil), // 7: headscale.v1.ListPreAuthKeysRequest - (*ListPreAuthKeysResponse)(nil), // 8: headscale.v1.ListPreAuthKeysResponse - (*User)(nil), // 9: headscale.v1.User - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp -} -var file_headscale_v1_preauthkey_proto_depIdxs = []int32{ - 9, // 0: headscale.v1.PreAuthKey.user:type_name -> headscale.v1.User - 10, // 1: headscale.v1.PreAuthKey.expiration:type_name -> google.protobuf.Timestamp - 10, // 2: headscale.v1.PreAuthKey.created_at:type_name -> google.protobuf.Timestamp - 10, // 3: headscale.v1.CreatePreAuthKeyRequest.expiration:type_name -> google.protobuf.Timestamp - 0, // 4: headscale.v1.CreatePreAuthKeyResponse.pre_auth_key:type_name -> headscale.v1.PreAuthKey - 0, // 5: headscale.v1.ListPreAuthKeysResponse.pre_auth_keys:type_name -> headscale.v1.PreAuthKey - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name -} - -func init() { file_headscale_v1_preauthkey_proto_init() } -func file_headscale_v1_preauthkey_proto_init() { - if File_headscale_v1_preauthkey_proto != nil { - return - } - file_headscale_v1_user_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_preauthkey_proto_rawDesc), len(file_headscale_v1_preauthkey_proto_rawDesc)), - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_preauthkey_proto_goTypes, - DependencyIndexes: file_headscale_v1_preauthkey_proto_depIdxs, - MessageInfos: file_headscale_v1_preauthkey_proto_msgTypes, - }.Build() - File_headscale_v1_preauthkey_proto = out.File - file_headscale_v1_preauthkey_proto_goTypes = nil - file_headscale_v1_preauthkey_proto_depIdxs = nil -} diff --git a/gen/go/headscale/v1/user.pb.go b/gen/go/headscale/v1/user.pb.go deleted file mode 100644 index 5f05d084..00000000 --- a/gen/go/headscale/v1/user.pb.go +++ /dev/null @@ -1,615 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc (unknown) -// source: headscale/v1/user.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - 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) -) - -type User struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - ProviderId string `protobuf:"bytes,6,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` - Provider string `protobuf:"bytes,7,opt,name=provider,proto3" json:"provider,omitempty"` - ProfilePicUrl string `protobuf:"bytes,8,opt,name=profile_pic_url,json=profilePicUrl,proto3" json:"profile_pic_url,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *User) Reset() { - *x = User{} - mi := &file_headscale_v1_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *User) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*User) ProtoMessage() {} - -func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use User.ProtoReflect.Descriptor instead. -func (*User) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{0} -} - -func (x *User) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *User) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *User) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *User) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *User) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *User) GetProviderId() string { - if x != nil { - return x.ProviderId - } - return "" -} - -func (x *User) GetProvider() string { - if x != nil { - return x.Provider - } - return "" -} - -func (x *User) GetProfilePicUrl() string { - if x != nil { - return x.ProfilePicUrl - } - return "" -} - -type CreateUserRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - PictureUrl string `protobuf:"bytes,4,opt,name=picture_url,json=pictureUrl,proto3" json:"picture_url,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateUserRequest) Reset() { - *x = CreateUserRequest{} - mi := &file_headscale_v1_user_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateUserRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateUserRequest) ProtoMessage() {} - -func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateUserRequest.ProtoReflect.Descriptor instead. -func (*CreateUserRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{1} -} - -func (x *CreateUserRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateUserRequest) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *CreateUserRequest) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *CreateUserRequest) GetPictureUrl() string { - if x != nil { - return x.PictureUrl - } - return "" -} - -type CreateUserResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateUserResponse) Reset() { - *x = CreateUserResponse{} - mi := &file_headscale_v1_user_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateUserResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateUserResponse) ProtoMessage() {} - -func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateUserResponse.ProtoReflect.Descriptor instead. -func (*CreateUserResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{2} -} - -func (x *CreateUserResponse) GetUser() *User { - if x != nil { - return x.User - } - return nil -} - -type RenameUserRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - OldId uint64 `protobuf:"varint,1,opt,name=old_id,json=oldId,proto3" json:"old_id,omitempty"` - NewName string `protobuf:"bytes,2,opt,name=new_name,json=newName,proto3" json:"new_name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RenameUserRequest) Reset() { - *x = RenameUserRequest{} - mi := &file_headscale_v1_user_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RenameUserRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RenameUserRequest) ProtoMessage() {} - -func (x *RenameUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RenameUserRequest.ProtoReflect.Descriptor instead. -func (*RenameUserRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{3} -} - -func (x *RenameUserRequest) GetOldId() uint64 { - if x != nil { - return x.OldId - } - return 0 -} - -func (x *RenameUserRequest) GetNewName() string { - if x != nil { - return x.NewName - } - return "" -} - -type RenameUserResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RenameUserResponse) Reset() { - *x = RenameUserResponse{} - mi := &file_headscale_v1_user_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RenameUserResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RenameUserResponse) ProtoMessage() {} - -func (x *RenameUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RenameUserResponse.ProtoReflect.Descriptor instead. -func (*RenameUserResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{4} -} - -func (x *RenameUserResponse) GetUser() *User { - if x != nil { - return x.User - } - return nil -} - -type DeleteUserRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteUserRequest) Reset() { - *x = DeleteUserRequest{} - mi := &file_headscale_v1_user_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteUserRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteUserRequest) ProtoMessage() {} - -func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. -func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{5} -} - -func (x *DeleteUserRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -type DeleteUserResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteUserResponse) Reset() { - *x = DeleteUserResponse{} - mi := &file_headscale_v1_user_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteUserResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteUserResponse) ProtoMessage() {} - -func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteUserResponse.ProtoReflect.Descriptor instead. -func (*DeleteUserResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{6} -} - -type ListUsersRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListUsersRequest) Reset() { - *x = ListUsersRequest{} - mi := &file_headscale_v1_user_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListUsersRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUsersRequest) ProtoMessage() {} - -func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUsersRequest.ProtoReflect.Descriptor instead. -func (*ListUsersRequest) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{7} -} - -func (x *ListUsersRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *ListUsersRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ListUsersRequest) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -type ListUsersResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListUsersResponse) Reset() { - *x = ListUsersResponse{} - mi := &file_headscale_v1_user_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListUsersResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUsersResponse) ProtoMessage() {} - -func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { - mi := &file_headscale_v1_user_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUsersResponse.ProtoReflect.Descriptor instead. -func (*ListUsersResponse) Descriptor() ([]byte, []int) { - return file_headscale_v1_user_proto_rawDescGZIP(), []int{8} -} - -func (x *ListUsersResponse) GetUsers() []*User { - if x != nil { - return x.Users - } - return nil -} - -var File_headscale_v1_user_proto protoreflect.FileDescriptor - -const file_headscale_v1_user_proto_rawDesc = "" + - "\n" + - "\x17headscale/v1/user.proto\x12\fheadscale.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x83\x02\n" + - "\x04User\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x129\n" + - "\n" + - "created_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12!\n" + - "\fdisplay_name\x18\x04 \x01(\tR\vdisplayName\x12\x14\n" + - "\x05email\x18\x05 \x01(\tR\x05email\x12\x1f\n" + - "\vprovider_id\x18\x06 \x01(\tR\n" + - "providerId\x12\x1a\n" + - "\bprovider\x18\a \x01(\tR\bprovider\x12&\n" + - "\x0fprofile_pic_url\x18\b \x01(\tR\rprofilePicUrl\"\x81\x01\n" + - "\x11CreateUserRequest\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12!\n" + - "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12\x14\n" + - "\x05email\x18\x03 \x01(\tR\x05email\x12\x1f\n" + - "\vpicture_url\x18\x04 \x01(\tR\n" + - "pictureUrl\"<\n" + - "\x12CreateUserResponse\x12&\n" + - "\x04user\x18\x01 \x01(\v2\x12.headscale.v1.UserR\x04user\"E\n" + - "\x11RenameUserRequest\x12\x15\n" + - "\x06old_id\x18\x01 \x01(\x04R\x05oldId\x12\x19\n" + - "\bnew_name\x18\x02 \x01(\tR\anewName\"<\n" + - "\x12RenameUserResponse\x12&\n" + - "\x04user\x18\x01 \x01(\v2\x12.headscale.v1.UserR\x04user\"#\n" + - "\x11DeleteUserRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\"\x14\n" + - "\x12DeleteUserResponse\"L\n" + - "\x10ListUsersRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x04R\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + - "\x05email\x18\x03 \x01(\tR\x05email\"=\n" + - "\x11ListUsersResponse\x12(\n" + - "\x05users\x18\x01 \x03(\v2\x12.headscale.v1.UserR\x05usersB)Z'github.com/juanfont/headscale/gen/go/v1b\x06proto3" - -var ( - file_headscale_v1_user_proto_rawDescOnce sync.Once - file_headscale_v1_user_proto_rawDescData []byte -) - -func file_headscale_v1_user_proto_rawDescGZIP() []byte { - file_headscale_v1_user_proto_rawDescOnce.Do(func() { - file_headscale_v1_user_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_headscale_v1_user_proto_rawDesc), len(file_headscale_v1_user_proto_rawDesc))) - }) - return file_headscale_v1_user_proto_rawDescData -} - -var file_headscale_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_headscale_v1_user_proto_goTypes = []any{ - (*User)(nil), // 0: headscale.v1.User - (*CreateUserRequest)(nil), // 1: headscale.v1.CreateUserRequest - (*CreateUserResponse)(nil), // 2: headscale.v1.CreateUserResponse - (*RenameUserRequest)(nil), // 3: headscale.v1.RenameUserRequest - (*RenameUserResponse)(nil), // 4: headscale.v1.RenameUserResponse - (*DeleteUserRequest)(nil), // 5: headscale.v1.DeleteUserRequest - (*DeleteUserResponse)(nil), // 6: headscale.v1.DeleteUserResponse - (*ListUsersRequest)(nil), // 7: headscale.v1.ListUsersRequest - (*ListUsersResponse)(nil), // 8: headscale.v1.ListUsersResponse - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp -} -var file_headscale_v1_user_proto_depIdxs = []int32{ - 9, // 0: headscale.v1.User.created_at:type_name -> google.protobuf.Timestamp - 0, // 1: headscale.v1.CreateUserResponse.user:type_name -> headscale.v1.User - 0, // 2: headscale.v1.RenameUserResponse.user:type_name -> headscale.v1.User - 0, // 3: headscale.v1.ListUsersResponse.users:type_name -> headscale.v1.User - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name -} - -func init() { file_headscale_v1_user_proto_init() } -func file_headscale_v1_user_proto_init() { - if File_headscale_v1_user_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_headscale_v1_user_proto_rawDesc), len(file_headscale_v1_user_proto_rawDesc)), - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_headscale_v1_user_proto_goTypes, - DependencyIndexes: file_headscale_v1_user_proto_depIdxs, - MessageInfos: file_headscale_v1_user_proto_msgTypes, - }.Build() - File_headscale_v1_user_proto = out.File - file_headscale_v1_user_proto_goTypes = nil - file_headscale_v1_user_proto_depIdxs = nil -} diff --git a/gen/openapiv2/headscale/v1/apikey.swagger.json b/gen/openapiv2/headscale/v1/apikey.swagger.json deleted file mode 100644 index 8c8596a9..00000000 --- a/gen/openapiv2/headscale/v1/apikey.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/apikey.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/auth.swagger.json b/gen/openapiv2/headscale/v1/auth.swagger.json deleted file mode 100644 index 2e99e1a7..00000000 --- a/gen/openapiv2/headscale/v1/auth.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/auth.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/device.swagger.json b/gen/openapiv2/headscale/v1/device.swagger.json deleted file mode 100644 index 99d20deb..00000000 --- a/gen/openapiv2/headscale/v1/device.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/device.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/headscale.swagger.json b/gen/openapiv2/headscale/v1/headscale.swagger.json deleted file mode 100644 index 545cf0b5..00000000 --- a/gen/openapiv2/headscale/v1/headscale.swagger.json +++ /dev/null @@ -1,1535 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/headscale.proto", - "version": "version not set" - }, - "tags": [ - { - "name": "HeadscaleService" - } - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/api/v1/apikey": { - "get": { - "operationId": "HeadscaleService_ListApiKeys", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListApiKeysResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "HeadscaleService" - ] - }, - "post": { - "summary": "--- ApiKeys start ---", - "operationId": "HeadscaleService_CreateApiKey", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1CreateApiKeyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CreateApiKeyRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/apikey/expire": { - "post": { - "operationId": "HeadscaleService_ExpireApiKey", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ExpireApiKeyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ExpireApiKeyRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/apikey/{prefix}": { - "delete": { - "operationId": "HeadscaleService_DeleteApiKey", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteApiKeyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "prefix", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "id", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/auth/approve": { - "post": { - "operationId": "HeadscaleService_AuthApprove", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1AuthApproveResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AuthApproveRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/auth/register": { - "post": { - "summary": "--- Auth start ---", - "operationId": "HeadscaleService_AuthRegister", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1AuthRegisterResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AuthRegisterRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/auth/reject": { - "post": { - "operationId": "HeadscaleService_AuthReject", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1AuthRejectResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1AuthRejectRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/debug/node": { - "post": { - "summary": "--- Node start ---", - "operationId": "HeadscaleService_DebugCreateNode", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DebugCreateNodeResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1DebugCreateNodeRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/health": { - "get": { - "summary": "--- Health start ---", - "operationId": "HeadscaleService_Health", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1HealthResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node": { - "get": { - "operationId": "HeadscaleService_ListNodes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListNodesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "user", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/backfillips": { - "post": { - "operationId": "HeadscaleService_BackfillNodeIPs", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1BackfillNodeIPsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "confirmed", - "in": "query", - "required": false, - "type": "boolean" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/register": { - "post": { - "operationId": "HeadscaleService_RegisterNode", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1RegisterNodeResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "user", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "key", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/{nodeId}": { - "get": { - "operationId": "HeadscaleService_GetNode", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetNodeResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "HeadscaleService" - ] - }, - "delete": { - "operationId": "HeadscaleService_DeleteNode", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteNodeResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/{nodeId}/approve_routes": { - "post": { - "operationId": "HeadscaleService_SetApprovedRoutes", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1SetApprovedRoutesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/HeadscaleServiceSetApprovedRoutesBody" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/{nodeId}/expire": { - "post": { - "operationId": "HeadscaleService_ExpireNode", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ExpireNodeResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - }, - { - "name": "expiry", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - }, - { - "name": "disableExpiry", - "description": "When true, sets expiry to null (node will never expire).", - "in": "query", - "required": false, - "type": "boolean" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/{nodeId}/rename/{newName}": { - "post": { - "operationId": "HeadscaleService_RenameNode", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1RenameNodeResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - }, - { - "name": "newName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/node/{nodeId}/tags": { - "post": { - "operationId": "HeadscaleService_SetTags", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1SetTagsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/HeadscaleServiceSetTagsBody" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/policy": { - "get": { - "summary": "--- Policy start ---", - "operationId": "HeadscaleService_GetPolicy", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetPolicyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "HeadscaleService" - ] - }, - "put": { - "operationId": "HeadscaleService_SetPolicy", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1SetPolicyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1SetPolicyRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/policy/check": { - "post": { - "operationId": "HeadscaleService_CheckPolicy", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1CheckPolicyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CheckPolicyRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/preauthkey": { - "get": { - "operationId": "HeadscaleService_ListPreAuthKeys", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListPreAuthKeysResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "HeadscaleService" - ] - }, - "delete": { - "operationId": "HeadscaleService_DeletePreAuthKey", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeletePreAuthKeyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "id", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "HeadscaleService" - ] - }, - "post": { - "summary": "--- PreAuthKeys start ---", - "operationId": "HeadscaleService_CreatePreAuthKey", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1CreatePreAuthKeyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CreatePreAuthKeyRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/preauthkey/expire": { - "post": { - "operationId": "HeadscaleService_ExpirePreAuthKey", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ExpirePreAuthKeyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1ExpirePreAuthKeyRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/user": { - "get": { - "operationId": "HeadscaleService_ListUsers", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListUsersResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "id", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - }, - { - "name": "name", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "email", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "HeadscaleService" - ] - }, - "post": { - "summary": "--- User start ---", - "operationId": "HeadscaleService_CreateUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1CreateUserResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CreateUserRequest" - } - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/user/{id}": { - "delete": { - "operationId": "HeadscaleService_DeleteUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteUserResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "HeadscaleService" - ] - } - }, - "/api/v1/user/{oldId}/rename/{newName}": { - "post": { - "operationId": "HeadscaleService_RenameUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1RenameUserResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "oldId", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - }, - { - "name": "newName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "HeadscaleService" - ] - } - } - }, - "definitions": { - "HeadscaleServiceSetApprovedRoutesBody": { - "type": "object", - "properties": { - "routes": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "HeadscaleServiceSetTagsBody": { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - }, - "v1ApiKey": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uint64" - }, - "prefix": { - "type": "string" - }, - "expiration": { - "type": "string", - "format": "date-time" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "lastSeen": { - "type": "string", - "format": "date-time" - } - } - }, - "v1AuthApproveRequest": { - "type": "object", - "properties": { - "authId": { - "type": "string" - } - } - }, - "v1AuthApproveResponse": { - "type": "object" - }, - "v1AuthRegisterRequest": { - "type": "object", - "properties": { - "user": { - "type": "string" - }, - "authId": { - "type": "string" - } - } - }, - "v1AuthRegisterResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1AuthRejectRequest": { - "type": "object", - "properties": { - "authId": { - "type": "string" - } - } - }, - "v1AuthRejectResponse": { - "type": "object" - }, - "v1BackfillNodeIPsResponse": { - "type": "object", - "properties": { - "changes": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CheckPolicyRequest": { - "type": "object", - "properties": { - "policy": { - "type": "string" - } - } - }, - "v1CheckPolicyResponse": { - "type": "object" - }, - "v1CreateApiKeyRequest": { - "type": "object", - "properties": { - "expiration": { - "type": "string", - "format": "date-time" - } - } - }, - "v1CreateApiKeyResponse": { - "type": "object", - "properties": { - "apiKey": { - "type": "string" - } - } - }, - "v1CreatePreAuthKeyRequest": { - "type": "object", - "properties": { - "user": { - "type": "string", - "format": "uint64" - }, - "reusable": { - "type": "boolean" - }, - "ephemeral": { - "type": "boolean" - }, - "expiration": { - "type": "string", - "format": "date-time" - }, - "aclTags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CreatePreAuthKeyResponse": { - "type": "object", - "properties": { - "preAuthKey": { - "$ref": "#/definitions/v1PreAuthKey" - } - } - }, - "v1CreateUserRequest": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayName": { - "type": "string" - }, - "email": { - "type": "string" - }, - "pictureUrl": { - "type": "string" - } - } - }, - "v1CreateUserResponse": { - "type": "object", - "properties": { - "user": { - "$ref": "#/definitions/v1User" - } - } - }, - "v1DebugCreateNodeRequest": { - "type": "object", - "properties": { - "user": { - "type": "string" - }, - "key": { - "type": "string" - }, - "name": { - "type": "string" - }, - "routes": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1DebugCreateNodeResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1DeleteApiKeyResponse": { - "type": "object" - }, - "v1DeleteNodeResponse": { - "type": "object" - }, - "v1DeletePreAuthKeyResponse": { - "type": "object" - }, - "v1DeleteUserResponse": { - "type": "object" - }, - "v1ExpireApiKeyRequest": { - "type": "object", - "properties": { - "prefix": { - "type": "string" - }, - "id": { - "type": "string", - "format": "uint64" - } - } - }, - "v1ExpireApiKeyResponse": { - "type": "object" - }, - "v1ExpireNodeResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1ExpirePreAuthKeyRequest": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uint64" - } - } - }, - "v1ExpirePreAuthKeyResponse": { - "type": "object" - }, - "v1GetNodeResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1GetPolicyResponse": { - "type": "object", - "properties": { - "policy": { - "type": "string" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - } - } - }, - "v1HealthResponse": { - "type": "object", - "properties": { - "databaseConnectivity": { - "type": "boolean" - } - } - }, - "v1ListApiKeysResponse": { - "type": "object", - "properties": { - "apiKeys": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1ApiKey" - } - } - } - }, - "v1ListNodesResponse": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1Node" - } - } - } - }, - "v1ListPreAuthKeysResponse": { - "type": "object", - "properties": { - "preAuthKeys": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1PreAuthKey" - } - } - } - }, - "v1ListUsersResponse": { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1User" - } - } - } - }, - "v1Node": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uint64" - }, - "machineKey": { - "type": "string" - }, - "nodeKey": { - "type": "string" - }, - "discoKey": { - "type": "string" - }, - "ipAddresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/v1User" - }, - "lastSeen": { - "type": "string", - "format": "date-time" - }, - "expiry": { - "type": "string", - "format": "date-time" - }, - "preAuthKey": { - "$ref": "#/definitions/v1PreAuthKey" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "registerMethod": { - "$ref": "#/definitions/v1RegisterMethod" - }, - "givenName": { - "type": "string", - "title": "Deprecated\nrepeated string forced_tags = 18;\nrepeated string invalid_tags = 19;\nrepeated string valid_tags = 20;" - }, - "online": { - "type": "boolean" - }, - "approvedRoutes": { - "type": "array", - "items": { - "type": "string" - } - }, - "availableRoutes": { - "type": "array", - "items": { - "type": "string" - } - }, - "subnetRoutes": { - "type": "array", - "items": { - "type": "string" - } - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1PreAuthKey": { - "type": "object", - "properties": { - "user": { - "$ref": "#/definitions/v1User" - }, - "id": { - "type": "string", - "format": "uint64" - }, - "key": { - "type": "string" - }, - "reusable": { - "type": "boolean" - }, - "ephemeral": { - "type": "boolean" - }, - "used": { - "type": "boolean" - }, - "expiration": { - "type": "string", - "format": "date-time" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "aclTags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1RegisterMethod": { - "type": "string", - "enum": [ - "REGISTER_METHOD_UNSPECIFIED", - "REGISTER_METHOD_AUTH_KEY", - "REGISTER_METHOD_CLI", - "REGISTER_METHOD_OIDC" - ], - "default": "REGISTER_METHOD_UNSPECIFIED" - }, - "v1RegisterNodeResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1RenameNodeResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1RenameUserResponse": { - "type": "object", - "properties": { - "user": { - "$ref": "#/definitions/v1User" - } - } - }, - "v1SetApprovedRoutesResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1SetPolicyRequest": { - "type": "object", - "properties": { - "policy": { - "type": "string" - } - } - }, - "v1SetPolicyResponse": { - "type": "object", - "properties": { - "policy": { - "type": "string" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - } - } - }, - "v1SetTagsResponse": { - "type": "object", - "properties": { - "node": { - "$ref": "#/definitions/v1Node" - } - } - }, - "v1User": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uint64" - }, - "name": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "displayName": { - "type": "string" - }, - "email": { - "type": "string" - }, - "providerId": { - "type": "string" - }, - "provider": { - "type": "string" - }, - "profilePicUrl": { - "type": "string" - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/node.swagger.json b/gen/openapiv2/headscale/v1/node.swagger.json deleted file mode 100644 index 16321347..00000000 --- a/gen/openapiv2/headscale/v1/node.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/node.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/policy.swagger.json b/gen/openapiv2/headscale/v1/policy.swagger.json deleted file mode 100644 index 63057ed0..00000000 --- a/gen/openapiv2/headscale/v1/policy.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/policy.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/preauthkey.swagger.json b/gen/openapiv2/headscale/v1/preauthkey.swagger.json deleted file mode 100644 index 17a2be1a..00000000 --- a/gen/openapiv2/headscale/v1/preauthkey.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/preauthkey.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/gen/openapiv2/headscale/v1/user.swagger.json b/gen/openapiv2/headscale/v1/user.swagger.json deleted file mode 100644 index 008ca3e8..00000000 --- a/gen/openapiv2/headscale/v1/user.swagger.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "headscale/v1/user.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/hscontrol/auth_tags_test.go b/hscontrol/auth_tags_test.go index 3c55c667..3cea0cb0 100644 --- a/hscontrol/auth_tags_test.go +++ b/hscontrol/auth_tags_test.go @@ -179,9 +179,8 @@ func TestReAuthDoesNotReapplyTags(t *testing.T) { assert.Equal(t, 1, allNodes.Len(), "Should have exactly one node") } -// NOTE: TestSetTagsOnUserOwnedNode functionality is covered by gRPC tests in grpcv1_test.go -// which properly handle ACL policy setup. The test verifies that [headscaleV1APIServer.SetTags] can convert -// user-owned nodes to tagged nodes while preserving UserID. +// NOTE: Converting user-owned nodes to tagged nodes while preserving UserID +// is covered by the SetTags API tests, which properly handle ACL policy setup. // TestCannotRemoveAllTags tests that attempting to remove all tags from a // tagged node fails with ErrCannotRemoveAllTags. Once a node is tagged, diff --git a/hscontrol/db/preauth_keys_test.go b/hscontrol/db/preauth_keys_test.go index c152959c..5835758f 100644 --- a/hscontrol/db/preauth_keys_test.go +++ b/hscontrol/db/preauth_keys_test.go @@ -96,7 +96,7 @@ func TestPreAuthKeyACLTags(t *testing.T) { require.NoError(t, err) require.Len(t, listedPaks, 1) - gotTags := listedPaks[0].Proto().GetAclTags() + gotTags := slices.Clone(listedPaks[0].Tags) slices.Sort(gotTags) assert.Equal(t, expectedTags, gotTags) }, diff --git a/hscontrol/grpcv1.go b/hscontrol/grpcv1.go deleted file mode 100644 index fbb4f591..00000000 --- a/hscontrol/grpcv1.go +++ /dev/null @@ -1,944 +0,0 @@ -//go:generate buf generate --template ../buf.gen.yaml -o .. ../proto - -// nolint -package hscontrol - -import ( - "cmp" - "context" - "errors" - "fmt" - "io" - "net/netip" - "os" - "slices" - "strings" - "time" - - "github.com/rs/zerolog/log" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/types/known/timestamppb" - "gorm.io/gorm" - "tailscale.com/net/tsaddr" - "tailscale.com/tailcfg" - "tailscale.com/types/key" - "tailscale.com/types/views" - - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" - policyv2 "github.com/juanfont/headscale/hscontrol/policy/v2" - "github.com/juanfont/headscale/hscontrol/state" - "github.com/juanfont/headscale/hscontrol/types" - "github.com/juanfont/headscale/hscontrol/util" - "github.com/juanfont/headscale/hscontrol/util/zlog/zf" -) - -type headscaleV1APIServer struct { // v1.HeadscaleServiceServer - v1.UnimplementedHeadscaleServiceServer - h *Headscale -} - -func newHeadscaleV1APIServer(h *Headscale) v1.HeadscaleServiceServer { - return headscaleV1APIServer{ - h: h, - } -} - -// sortByID sorts a slice of proto messages by ascending Id. -func sortByID[T interface{ GetId() uint64 }](s []T) { - slices.SortFunc(s, func(a, b T) int { - return cmp.Compare(a.GetId(), b.GetId()) - }) -} - -func (api headscaleV1APIServer) CreateUser( - ctx context.Context, - request *v1.CreateUserRequest, -) (*v1.CreateUserResponse, error) { - newUser := types.User{ - Name: request.GetName(), - DisplayName: request.GetDisplayName(), - Email: request.GetEmail(), - ProfilePicURL: request.GetPictureUrl(), - } - user, policyChanged, err := api.h.state.CreateUser(newUser) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating user: %s", err) - } - - // [state.State.CreateUser] returns a policy change response if the user creation affected policy. - // This triggers a full policy re-evaluation for all connected nodes. - api.h.Change(policyChanged) - - return &v1.CreateUserResponse{User: user.Proto()}, nil -} - -func (api headscaleV1APIServer) RenameUser( - ctx context.Context, - request *v1.RenameUserRequest, -) (*v1.RenameUserResponse, error) { - oldUser, err := api.h.state.GetUserByID(types.UserID(request.GetOldId())) - if err != nil { - return nil, err - } - - _, c, err := api.h.state.RenameUser(types.UserID(oldUser.ID), request.GetNewName()) - if err != nil { - return nil, err - } - - // Send policy update notifications if needed - api.h.Change(c) - - newUser, err := api.h.state.GetUserByName(request.GetNewName()) - if err != nil { - return nil, err - } - - return &v1.RenameUserResponse{User: newUser.Proto()}, nil -} - -func (api headscaleV1APIServer) DeleteUser( - ctx context.Context, - request *v1.DeleteUserRequest, -) (*v1.DeleteUserResponse, error) { - user, err := api.h.state.GetUserByID(types.UserID(request.GetId())) - if err != nil { - return nil, err - } - - policyChanged, err := api.h.state.DeleteUser(types.UserID(user.ID)) - if err != nil { - return nil, err - } - - // Use the change returned from [state.State.DeleteUser] which includes proper policy updates - api.h.Change(policyChanged) - - return &v1.DeleteUserResponse{}, nil -} - -func (api headscaleV1APIServer) ListUsers( - ctx context.Context, - request *v1.ListUsersRequest, -) (*v1.ListUsersResponse, error) { - var err error - var users []types.User - - switch { - case request.GetName() != "": - users, err = api.h.state.ListUsersWithFilter(&types.User{Name: request.GetName()}) - case request.GetEmail() != "": - users, err = api.h.state.ListUsersWithFilter(&types.User{Email: request.GetEmail()}) - case request.GetId() != 0: - users, err = api.h.state.ListUsersWithFilter(&types.User{Model: gorm.Model{ID: uint(request.GetId())}}) - default: - users, err = api.h.state.ListAllUsers() - } - if err != nil { - return nil, err - } - - response := make([]*v1.User, len(users)) - for index, user := range users { - response[index] = user.Proto() - } - - sortByID(response) - - return &v1.ListUsersResponse{Users: response}, nil -} - -func (api headscaleV1APIServer) CreatePreAuthKey( - ctx context.Context, - request *v1.CreatePreAuthKeyRequest, -) (*v1.CreatePreAuthKeyResponse, error) { - var expiration time.Time - if request.GetExpiration() != nil { - expiration = request.GetExpiration().AsTime() - } - - for _, tag := range request.AclTags { - err := validateTag(tag) - if err != nil { - return &v1.CreatePreAuthKeyResponse{ - PreAuthKey: nil, - }, status.Error(codes.InvalidArgument, err.Error()) - } - } - - var userID *types.UserID - if request.GetUser() != 0 { - user, err := api.h.state.GetUserByID(types.UserID(request.GetUser())) - if err != nil { - return nil, err - } - userID = user.TypedID() - } - - preAuthKey, err := api.h.state.CreatePreAuthKey( - userID, - request.GetReusable(), - request.GetEphemeral(), - &expiration, - request.AclTags, - ) - if err != nil { - return nil, err - } - - return &v1.CreatePreAuthKeyResponse{PreAuthKey: preAuthKey.Proto()}, nil -} - -func (api headscaleV1APIServer) ExpirePreAuthKey( - ctx context.Context, - request *v1.ExpirePreAuthKeyRequest, -) (*v1.ExpirePreAuthKeyResponse, error) { - err := api.h.state.ExpirePreAuthKey(request.GetId()) - if err != nil { - return nil, err - } - - return &v1.ExpirePreAuthKeyResponse{}, nil -} - -func (api headscaleV1APIServer) DeletePreAuthKey( - ctx context.Context, - request *v1.DeletePreAuthKeyRequest, -) (*v1.DeletePreAuthKeyResponse, error) { - err := api.h.state.DeletePreAuthKey(request.GetId()) - if err != nil { - return nil, err - } - - return &v1.DeletePreAuthKeyResponse{}, nil -} - -func (api headscaleV1APIServer) ListPreAuthKeys( - ctx context.Context, - request *v1.ListPreAuthKeysRequest, -) (*v1.ListPreAuthKeysResponse, error) { - preAuthKeys, err := api.h.state.ListPreAuthKeys() - if err != nil { - return nil, err - } - - response := make([]*v1.PreAuthKey, len(preAuthKeys)) - for index, key := range preAuthKeys { - response[index] = key.Proto() - } - - sortByID(response) - - return &v1.ListPreAuthKeysResponse{PreAuthKeys: response}, nil -} - -func (api headscaleV1APIServer) RegisterNode( - ctx context.Context, - request *v1.RegisterNodeRequest, -) (*v1.RegisterNodeResponse, error) { - // Generate ephemeral registration key for tracking this registration flow in logs - registrationKey, err := util.GenerateRegistrationKey() - if err != nil { - log.Warn().Err(err).Msg("failed to generate registration key") - registrationKey = "" // Continue without key if generation fails - } - - log.Trace(). - Caller(). - Str(zf.UserName, request.GetUser()). - Str(zf.RegistrationID, request.GetKey()). - Str(zf.RegistrationKey, registrationKey). - Msg("registering node") - - registrationId, err := types.AuthIDFromString(request.GetKey()) - if err != nil { - return nil, err - } - - user, err := api.h.state.GetUserByName(request.GetUser()) - if err != nil { - return nil, fmt.Errorf("looking up user: %w", err) - } - - node, nodeChange, err := api.h.state.HandleNodeFromAuthPath( - registrationId, - types.UserID(user.ID), - nil, - util.RegisterMethodCLI, - ) - if err != nil { - log.Error(). - Str(zf.RegistrationKey, registrationKey). - Err(err). - Msg("failed to register node") - return nil, err - } - - log.Info(). - Str(zf.RegistrationKey, registrationKey). - EmbedObject(node). - Msg("node registered successfully") - - // This is a bit of a back and forth, but we have a bit of a chicken and egg - // dependency here. - // Because the way the policy manager works, we need to have the node - // in the database, then add it to the policy manager and then we can - // approve the route. This means we get this dance where the node is - // first added to the database, then we add it to the policy manager via - // SaveNode (which automatically updates the policy manager) and then we can auto approve the routes. - // As that only approves the struct object, we need to save it again and - // ensure we send an update. - // This works, but might be another good candidate for doing some sort of - // eventbus. - routeChange, err := api.h.state.AutoApproveRoutes(node) - if err != nil { - return nil, fmt.Errorf("auto approving routes: %w", err) - } - - // Send both changes. Empty changes are ignored by [Headscale.Change]. - api.h.Change(nodeChange, routeChange) - - return &v1.RegisterNodeResponse{Node: node.Proto()}, nil -} - -func (api headscaleV1APIServer) GetNode( - ctx context.Context, - request *v1.GetNodeRequest, -) (*v1.GetNodeResponse, error) { - node, ok := api.h.state.GetNodeByID(types.NodeID(request.GetNodeId())) - if !ok { - return nil, status.Errorf(codes.NotFound, "node not found") - } - - resp := node.Proto() - - return &v1.GetNodeResponse{Node: resp}, nil -} - -func (api headscaleV1APIServer) SetTags( - ctx context.Context, - request *v1.SetTagsRequest, -) (*v1.SetTagsResponse, error) { - // Validate tags not empty - tagged nodes must have at least one tag - if len(request.GetTags()) == 0 { - return &v1.SetTagsResponse{ - Node: nil, - }, status.Error( - codes.InvalidArgument, - "cannot remove all tags from a node - tagged nodes must have at least one tag", - ) - } - - // Validate tag format - for _, tag := range request.GetTags() { - err := validateTag(tag) - if err != nil { - return nil, err - } - } - - // User XOR Tags: nodes are either tagged or user-owned, never both. - // Setting tags on a user-owned node converts it to a tagged node. - // Once tagged, a node cannot be converted back to user-owned. - _, found := api.h.state.GetNodeByID(types.NodeID(request.GetNodeId())) - if !found { - return &v1.SetTagsResponse{ - Node: nil, - }, status.Error(codes.NotFound, "node not found") - } - - node, nodeChange, err := api.h.state.SetNodeTags(types.NodeID(request.GetNodeId()), request.GetTags()) - if err != nil { - return &v1.SetTagsResponse{ - Node: nil, - }, status.Error(codes.InvalidArgument, err.Error()) - } - - api.h.Change(nodeChange) - - log.Trace(). - Caller(). - EmbedObject(node). - Strs("tags", request.GetTags()). - Msg("changing tags of node") - - return &v1.SetTagsResponse{Node: node.Proto()}, nil -} - -func (api headscaleV1APIServer) SetApprovedRoutes( - ctx context.Context, - request *v1.SetApprovedRoutesRequest, -) (*v1.SetApprovedRoutesResponse, error) { - log.Debug(). - Caller(). - Uint64(zf.NodeID, request.GetNodeId()). - Strs("requestedRoutes", request.GetRoutes()). - Msg("gRPC SetApprovedRoutes called") - - var newApproved []netip.Prefix - for _, route := range request.GetRoutes() { - prefix, err := netip.ParsePrefix(route) - if err != nil { - return nil, fmt.Errorf("parsing route: %w", err) - } - - // If the prefix is an exit route, add both. The client expect both - // to annotate the node as an exit node. - if prefix == tsaddr.AllIPv4() || prefix == tsaddr.AllIPv6() { - newApproved = append(newApproved, tsaddr.AllIPv4(), tsaddr.AllIPv6()) - } else { - newApproved = append(newApproved, prefix) - } - } - slices.SortFunc(newApproved, netip.Prefix.Compare) - newApproved = slices.Compact(newApproved) - - node, nodeChange, err := api.h.state.SetApprovedRoutes(types.NodeID(request.GetNodeId()), newApproved) - if err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - - // Always propagate node changes from [state.State.SetApprovedRoutes] - api.h.Change(nodeChange) - - proto := node.Proto() - // Populate [types.Node.SubnetRoutes] with [tailcfg.Node.PrimaryRoutes] to ensure it includes only the - // routes that are actively served from the node (per architectural requirement in types/node.go) - primaryRoutes := api.h.state.GetNodePrimaryRoutes(node.ID()) - proto.SubnetRoutes = util.PrefixesToString(primaryRoutes) - - log.Debug(). - Caller(). - EmbedObject(node). - Strs("approvedRoutes", util.PrefixesToString(node.ApprovedRoutes().AsSlice())). - Strs("primaryRoutes", util.PrefixesToString(primaryRoutes)). - Strs("finalSubnetRoutes", proto.SubnetRoutes). - Msg("gRPC SetApprovedRoutes completed") - - return &v1.SetApprovedRoutesResponse{Node: proto}, nil -} - -func validateTag(tag string) error { - if !strings.HasPrefix(tag, "tag:") { - return errors.New("tag must start with the string 'tag:'") - } - if strings.ToLower(tag) != tag { - return errors.New("tag should be lowercase") - } - if len(strings.Fields(tag)) > 1 { - return errors.New("tags must not contain spaces") - } - return nil -} - -func (api headscaleV1APIServer) DeleteNode( - ctx context.Context, - request *v1.DeleteNodeRequest, -) (*v1.DeleteNodeResponse, error) { - node, ok := api.h.state.GetNodeByID(types.NodeID(request.GetNodeId())) - if !ok { - return nil, status.Errorf(codes.NotFound, "node not found") - } - - nodeChange, err := api.h.state.DeleteNode(node) - if err != nil { - return nil, err - } - - api.h.Change(nodeChange) - - return &v1.DeleteNodeResponse{}, nil -} - -func (api headscaleV1APIServer) ExpireNode( - ctx context.Context, - request *v1.ExpireNodeRequest, -) (*v1.ExpireNodeResponse, error) { - if request.GetDisableExpiry() && request.GetExpiry() != nil { - return nil, status.Error( - codes.InvalidArgument, - "cannot set both disable_expiry and expiry", - ) - } - - // Handle disable expiry request - node will never expire. - if request.GetDisableExpiry() { - node, nodeChange, err := api.h.state.SetNodeExpiry( - types.NodeID(request.GetNodeId()), nil, - ) - if err != nil { - return nil, err - } - - api.h.Change(nodeChange) - - log.Trace(). - Caller(). - EmbedObject(node). - Msg("node expiry disabled") - - return &v1.ExpireNodeResponse{Node: node.Proto()}, nil - } - - expiry := time.Now() - if request.GetExpiry() != nil { - expiry = request.GetExpiry().AsTime() - } - - node, nodeChange, err := api.h.state.SetNodeExpiry( - types.NodeID(request.GetNodeId()), &expiry, - ) - if err != nil { - return nil, err - } - - // TODO(kradalby): Ensure that both the selfupdate and peer updates are sent - api.h.Change(nodeChange) - - log.Trace(). - Caller(). - EmbedObject(node). - Time(zf.ExpiresAt, expiry). - Msg("node expired") - - return &v1.ExpireNodeResponse{Node: node.Proto()}, nil -} - -func (api headscaleV1APIServer) RenameNode( - ctx context.Context, - request *v1.RenameNodeRequest, -) (*v1.RenameNodeResponse, error) { - node, nodeChange, err := api.h.state.RenameNode(types.NodeID(request.GetNodeId()), request.GetNewName()) - if err != nil { - return nil, err - } - - // TODO(kradalby): investigate if we need selfupdate - api.h.Change(nodeChange) - - log.Trace(). - Caller(). - EmbedObject(node). - Str(zf.NewName, request.GetNewName()). - Msg("node renamed") - - return &v1.RenameNodeResponse{Node: node.Proto()}, nil -} - -func (api headscaleV1APIServer) ListNodes( - ctx context.Context, - request *v1.ListNodesRequest, -) (*v1.ListNodesResponse, error) { - // TODO(kradalby): This should be done in one tx. - var nodes views.Slice[types.NodeView] - if request.GetUser() != "" { - user, err := api.h.state.GetUserByName(request.GetUser()) - if err != nil { - return nil, err - } - - nodes = api.h.state.ListNodesByUser(types.UserID(user.ID)) - } else { - nodes = api.h.state.ListNodes() - } - - response := nodesToProto(api.h.state, nodes) - return &v1.ListNodesResponse{Nodes: response}, nil -} - -func nodesToProto(state *state.State, nodes views.Slice[types.NodeView]) []*v1.Node { - response := make([]*v1.Node, nodes.Len()) - for index, node := range nodes.All() { - resp := node.Proto() - - // Tags-as-identity: tagged nodes show as [types.TaggedDevices] user in API responses - // (UserID may be set internally for "created by" tracking) - if node.IsTagged() { - resp.User = types.TaggedDevices.Proto() - } - - resp.SubnetRoutes = util.PrefixesToString(append(state.GetNodePrimaryRoutes(node.ID()), node.ExitRoutes()...)) - response[index] = resp - } - - sortByID(response) - - return response -} - -func (api headscaleV1APIServer) BackfillNodeIPs( - ctx context.Context, - request *v1.BackfillNodeIPsRequest, -) (*v1.BackfillNodeIPsResponse, error) { - log.Trace().Caller().Msg("backfill called") - - if !request.Confirmed { - return nil, errors.New("not confirmed, aborting") - } - - changes, err := api.h.state.BackfillNodeIPs() - if err != nil { - return nil, err - } - - return &v1.BackfillNodeIPsResponse{Changes: changes}, nil -} - -func (api headscaleV1APIServer) CreateApiKey( - ctx context.Context, - request *v1.CreateApiKeyRequest, -) (*v1.CreateApiKeyResponse, error) { - var expiration time.Time - if request.GetExpiration() != nil { - expiration = request.GetExpiration().AsTime() - } - - apiKey, _, err := api.h.state.CreateAPIKey(&expiration) - if err != nil { - return nil, err - } - - return &v1.CreateApiKeyResponse{ApiKey: apiKey}, nil -} - -// apiKeyIdentifier is implemented by requests that identify an API key. -type apiKeyIdentifier interface { - GetId() uint64 - GetPrefix() string -} - -// getAPIKey retrieves an API key by ID or prefix from the request. -// Returns InvalidArgument if neither or both are provided. -func (api headscaleV1APIServer) getAPIKey(req apiKeyIdentifier) (*types.APIKey, error) { - hasID := req.GetId() != 0 - hasPrefix := req.GetPrefix() != "" - - switch { - case hasID && hasPrefix: - return nil, status.Error(codes.InvalidArgument, "provide either id or prefix, not both") - case hasID: - return api.h.state.GetAPIKeyByID(req.GetId()) - case hasPrefix: - return api.h.state.GetAPIKey(req.GetPrefix()) - default: - return nil, status.Error(codes.InvalidArgument, "must provide id or prefix") - } -} - -func (api headscaleV1APIServer) ExpireApiKey( - ctx context.Context, - request *v1.ExpireApiKeyRequest, -) (*v1.ExpireApiKeyResponse, error) { - apiKey, err := api.getAPIKey(request) - if err != nil { - return nil, err - } - - err = api.h.state.ExpireAPIKey(apiKey) - if err != nil { - return nil, err - } - - return &v1.ExpireApiKeyResponse{}, nil -} - -func (api headscaleV1APIServer) ListApiKeys( - ctx context.Context, - request *v1.ListApiKeysRequest, -) (*v1.ListApiKeysResponse, error) { - apiKeys, err := api.h.state.ListAPIKeys() - if err != nil { - return nil, err - } - - response := make([]*v1.ApiKey, len(apiKeys)) - for index, key := range apiKeys { - response[index] = key.Proto() - } - - sortByID(response) - - return &v1.ListApiKeysResponse{ApiKeys: response}, nil -} - -func (api headscaleV1APIServer) DeleteApiKey( - ctx context.Context, - request *v1.DeleteApiKeyRequest, -) (*v1.DeleteApiKeyResponse, error) { - apiKey, err := api.getAPIKey(request) - if err != nil { - return nil, err - } - - if err := api.h.state.DestroyAPIKey(*apiKey); err != nil { - return nil, err - } - - return &v1.DeleteApiKeyResponse{}, nil -} - -func (api headscaleV1APIServer) GetPolicy( - _ context.Context, - _ *v1.GetPolicyRequest, -) (*v1.GetPolicyResponse, error) { - switch api.h.cfg.Policy.Mode { - case types.PolicyModeDB: - p, err := api.h.state.GetPolicy() - if err != nil { - return nil, fmt.Errorf("loading ACL from database: %w", err) - } - - return &v1.GetPolicyResponse{ - Policy: p.Data, - UpdatedAt: timestamppb.New(p.UpdatedAt), - }, nil - case types.PolicyModeFile: - // Read the file and return the contents as-is. - absPath := util.AbsolutePathFromConfigPath(api.h.cfg.Policy.Path) - f, err := os.Open(absPath) - if err != nil { - return nil, fmt.Errorf("reading policy from path %q: %w", absPath, err) - } - - defer f.Close() - - b, err := io.ReadAll(f) - if err != nil { - return nil, fmt.Errorf("reading policy from file: %w", err) - } - - return &v1.GetPolicyResponse{Policy: string(b)}, nil - } - - return nil, fmt.Errorf("no supported policy mode found in configuration, policy.mode: %q", api.h.cfg.Policy.Mode) -} - -func (api headscaleV1APIServer) SetPolicy( - _ context.Context, - request *v1.SetPolicyRequest, -) (*v1.SetPolicyResponse, error) { - if api.h.cfg.Policy.Mode != types.PolicyModeDB { - return nil, types.ErrPolicyUpdateIsDisabled - } - - p := request.GetPolicy() - - // Validate and reject configuration that would error when applied - // when creating a map response. This requires nodes, so there is still - // a scenario where they might be allowed if the server has no nodes - // yet, but it should help for the general case and for hot reloading - // configurations. - nodes := api.h.state.ListNodes() - - _, err := api.h.state.SetPolicy([]byte(p)) - if err != nil { - return nil, fmt.Errorf("setting policy: %w", err) - } - - if nodes.Len() > 0 { - _, err = api.h.state.SSHPolicy(nodes.At(0)) - if err != nil { - return nil, fmt.Errorf("verifying SSH rules: %w", err) - } - } - - updated, err := api.h.state.SetPolicyInDB(p) - if err != nil { - return nil, err - } - - // Always reload policy to ensure route re-evaluation, even if policy content hasn't changed. - // This ensures that routes are re-evaluated for auto-approval in cases where routes - // were manually disabled but could now be auto-approved with the current policy. - cs, err := api.h.state.ReloadPolicy() - if err != nil { - return nil, fmt.Errorf("reloading policy: %w", err) - } - - if len(cs) > 0 { - api.h.Change(cs...) - } else { - log.Debug(). - Caller(). - Msg("No policy changes to distribute because ReloadPolicy returned empty changeset") - } - - response := &v1.SetPolicyResponse{ - Policy: updated.Data, - UpdatedAt: timestamppb.New(updated.UpdatedAt), - } - - log.Debug(). - Caller(). - Msg("gRPC SetPolicy completed successfully because response prepared") - - return response, nil -} - -// CheckPolicy validates the given policy against the server's live users -// and nodes, running its `tests` block as a sandbox. Nothing is persisted -// and the live PolicyManager is not touched. Works regardless of -// policy.mode so operators can validate a policy file before storing it. -func (api headscaleV1APIServer) CheckPolicy( - _ context.Context, - request *v1.CheckPolicyRequest, -) (*v1.CheckPolicyResponse, error) { - polB := []byte(request.GetPolicy()) - - users, err := api.h.state.ListAllUsers() - if err != nil { - return nil, status.Errorf(codes.Internal, "loading users: %s", err) - } - - nodes := api.h.state.ListNodes() - - pm, err := policyv2.NewPolicyManager(polB, users, nodes) - if err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - - if _, err := pm.SetPolicy(polB); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - - return &v1.CheckPolicyResponse{}, nil -} - -// The following service calls are for testing and debugging -func (api headscaleV1APIServer) DebugCreateNode( - ctx context.Context, - request *v1.DebugCreateNodeRequest, -) (*v1.DebugCreateNodeResponse, error) { - user, err := api.h.state.GetUserByName(request.GetUser()) - if err != nil { - return nil, err - } - - routes, err := util.StringToIPPrefix(request.GetRoutes()) - if err != nil { - return nil, err - } - - log.Trace(). - Caller(). - Interface("route-prefix", routes). - Interface("route-str", request.GetRoutes()). - Msg("Creating routes for node") - - registrationId, err := types.AuthIDFromString(request.GetKey()) - if err != nil { - return nil, err - } - - regData := &types.RegistrationData{ - NodeKey: key.NewNode().Public(), - MachineKey: key.NewMachine().Public(), - Hostname: request.GetName(), - Expiry: &time.Time{}, // zero time, not nil — preserves proto JSON round-trip semantics - } - - log.Debug(). - Caller(). - Str("registration_id", registrationId.String()). - Msg("adding debug machine via CLI, appending to registration cache") - - authRegReq := types.NewRegisterAuthRequest(regData) - api.h.state.SetAuthCacheEntry(registrationId, authRegReq) - - // Echo back a synthetic [types.Node] so the debug response surface stays - // stable. The actual node is created later by [headscaleV1APIServer.AuthApprove] via - // [state.State.HandleNodeFromAuthPath] using the cached [types.RegistrationData]. - echoNode := types.Node{ - NodeKey: regData.NodeKey, - MachineKey: regData.MachineKey, - Hostname: regData.Hostname, - User: user, - Expiry: &time.Time{}, - LastSeen: &time.Time{}, - Hostinfo: &tailcfg.Hostinfo{ - Hostname: request.GetName(), - OS: "TestOS", - RoutableIPs: routes, - }, - } - - return &v1.DebugCreateNodeResponse{Node: echoNode.Proto()}, nil -} - -func (api headscaleV1APIServer) Health( - ctx context.Context, - request *v1.HealthRequest, -) (*v1.HealthResponse, error) { - var healthErr error - response := &v1.HealthResponse{} - - if err := api.h.state.PingDB(ctx); err != nil { - healthErr = fmt.Errorf("pinging database: %w", err) - } else { - response.DatabaseConnectivity = true - } - - if healthErr != nil { - log.Error().Err(healthErr).Msg("health check failed") - } - - return response, healthErr -} - -func (api headscaleV1APIServer) AuthRegister( - ctx context.Context, - request *v1.AuthRegisterRequest, -) (*v1.AuthRegisterResponse, error) { - resp, err := api.RegisterNode(ctx, &v1.RegisterNodeRequest{ - Key: request.GetAuthId(), - User: request.GetUser(), - }) - if err != nil { - return nil, err - } - - return &v1.AuthRegisterResponse{Node: resp.GetNode()}, nil -} - -func (api headscaleV1APIServer) AuthApprove( - ctx context.Context, - request *v1.AuthApproveRequest, -) (*v1.AuthApproveResponse, error) { - authID, err := types.AuthIDFromString(request.GetAuthId()) - if err != nil { - return nil, status.Errorf(codes.InvalidArgument, "invalid auth_id: %v", err) - } - - authReq, ok := api.h.state.GetAuthCacheEntry(authID) - if !ok { - return nil, status.Errorf(codes.NotFound, "no pending auth session for auth_id %s", authID) - } - - authReq.FinishAuth(types.AuthVerdict{}) - - return &v1.AuthApproveResponse{}, nil -} - -func (api headscaleV1APIServer) AuthReject( - ctx context.Context, - request *v1.AuthRejectRequest, -) (*v1.AuthRejectResponse, error) { - authID, err := types.AuthIDFromString(request.GetAuthId()) - if err != nil { - return nil, status.Errorf(codes.InvalidArgument, "invalid auth_id: %v", err) - } - - authReq, ok := api.h.state.GetAuthCacheEntry(authID) - if !ok { - return nil, status.Errorf(codes.NotFound, "no pending auth session for auth_id %s", authID) - } - - authReq.FinishAuth(types.AuthVerdict{ - Err: errors.New("auth request rejected"), - }) - - return &v1.AuthRejectResponse{}, nil -} - -func (api headscaleV1APIServer) mustEmbedUnimplementedHeadscaleServiceServer() {} diff --git a/hscontrol/grpcv1_test.go b/hscontrol/grpcv1_test.go deleted file mode 100644 index 1bb4cbe2..00000000 --- a/hscontrol/grpcv1_test.go +++ /dev/null @@ -1,819 +0,0 @@ -package hscontrol - -import ( - "context" - "testing" - "time" - - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" - "github.com/juanfont/headscale/hscontrol/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "tailscale.com/tailcfg" - "tailscale.com/types/key" -) - -func Test_validateTag(t *testing.T) { - type args struct { - tag string - } - - tests := []struct { - name string - args args - wantErr bool - }{ - { - name: "valid tag", - args: args{tag: "tag:test"}, - wantErr: false, - }, - { - name: "tag without tag prefix", - args: args{tag: "test"}, - wantErr: true, - }, - { - name: "uppercase tag", - args: args{tag: "tag:tEST"}, - wantErr: true, - }, - { - name: "tag that contains space", - args: args{tag: "tag:this is a spaced tag"}, - wantErr: true, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := validateTag(tt.args.tag) - if (err != nil) != tt.wantErr { - t.Errorf("validateTag() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -// TestSetTags_Conversion tests the conversion of user-owned nodes to tagged nodes. -// The tags-as-identity model allows one-way conversion from user-owned to tagged. -// Tag authorization is checked via the policy manager - unauthorized tags are rejected. -func TestSetTags_Conversion(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - // Create test user and nodes - user := app.state.CreateUserForTest("test-user") - - // Create a pre-auth key WITHOUT tags for user-owned node - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, nil) - require.NoError(t, err) - - machineKey1 := key.NewMachine() - nodeKey1 := key.NewNode() - - // Register a user-owned node (via untagged PreAuthKey) - userOwnedReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey1.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "user-owned-node", - }, - } - _, err = app.handleRegisterWithAuthKey(userOwnedReq, machineKey1.Public()) - require.NoError(t, err) - - // Get the created node - userOwnedNode, found := app.state.GetNodeByNodeKey(nodeKey1.Public()) - require.True(t, found) - - // Create API server instance - apiServer := newHeadscaleV1APIServer(app) - - tests := []struct { - name string - nodeID uint64 - tags []string - wantErr bool - wantCode codes.Code - wantErrMessage string - }{ - { - // Conversion is allowed, but tag authorization fails without tagOwners - name: "reject unauthorized tags on user-owned node", - nodeID: uint64(userOwnedNode.ID()), - tags: []string{"tag:server"}, - wantErr: true, - wantCode: codes.InvalidArgument, - wantErrMessage: "requested tags", - }, - { - // Conversion is allowed, but tag authorization fails without tagOwners - name: "reject multiple unauthorized tags", - nodeID: uint64(userOwnedNode.ID()), - tags: []string{"tag:server", "tag:database"}, - wantErr: true, - wantCode: codes.InvalidArgument, - wantErrMessage: "requested tags", - }, - { - name: "reject non-existent node", - nodeID: 99999, - tags: []string{"tag:server"}, - wantErr: true, - wantCode: codes.NotFound, - wantErrMessage: "node not found", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - resp, err := apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: tt.nodeID, - Tags: tt.tags, - }) - - if tt.wantErr { - require.Error(t, err) - st, ok := status.FromError(err) - require.True(t, ok, "error should be a gRPC status error") - assert.Equal(t, tt.wantCode, st.Code()) - assert.Contains(t, st.Message(), tt.wantErrMessage) - assert.Nil(t, resp.GetNode()) - } else { - require.NoError(t, err) - assert.NotNil(t, resp) - assert.NotNil(t, resp.GetNode()) - } - }) - } -} - -// TestSetTags_TaggedNode tests that [headscaleV1APIServer.SetTags] correctly identifies tagged nodes -// and doesn't reject them with the "user-owned nodes" error. -// Note: This test doesn't validate ACL tag authorization - that's tested elsewhere. -func TestSetTags_TaggedNode(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - // Create test user and tagged pre-auth key - user := app.state.CreateUserForTest("test-user") - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, []string{"tag:initial"}) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - // Register a tagged node (via tagged PreAuthKey) - taggedReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "tagged-node", - }, - } - _, err = app.handleRegisterWithAuthKey(taggedReq, machineKey.Public()) - require.NoError(t, err) - - // Get the created node - taggedNode, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - assert.True(t, taggedNode.IsTagged(), "Node should be tagged") - assert.False(t, taggedNode.UserID().Valid(), "Tagged node should not have UserID") - - // Create API server instance - apiServer := newHeadscaleV1APIServer(app) - - // Test: [headscaleV1APIServer.SetTags] should work on tagged nodes. - resp, err := apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: uint64(taggedNode.ID()), - Tags: []string{"tag:initial"}, // Keep existing tag to avoid ACL validation issues - }) - - // The call should NOT fail with "cannot set tags on user-owned nodes" - if err != nil { - st, ok := status.FromError(err) - require.True(t, ok) - // If error is about unauthorized tags, that's fine - ACL validation is working - // If error is about user-owned nodes, that's the bug we're testing for - assert.NotContains(t, st.Message(), "user-owned nodes", "Should not reject tagged nodes as user-owned") - } else { - // Success is also fine - assert.NotNil(t, resp) - } -} - -// TestSetTags_CannotRemoveAllTags tests that [headscaleV1APIServer.SetTags] rejects attempts to remove -// all tags from a tagged node, enforcing Tailscale's requirement that tagged -// nodes must have at least one tag. -func TestSetTags_CannotRemoveAllTags(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - // Create test user and tagged pre-auth key - user := app.state.CreateUserForTest("test-user") - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, []string{"tag:server"}) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - // Register a tagged node - taggedReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "tagged-node", - }, - } - _, err = app.handleRegisterWithAuthKey(taggedReq, machineKey.Public()) - require.NoError(t, err) - - // Get the created node - taggedNode, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - assert.True(t, taggedNode.IsTagged()) - - // Create API server instance - apiServer := newHeadscaleV1APIServer(app) - - // Attempt to remove all tags (empty array) - resp, err := apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: uint64(taggedNode.ID()), - Tags: []string{}, // Empty - attempting to remove all tags - }) - - // Should fail with InvalidArgument error - require.Error(t, err) - st, ok := status.FromError(err) - require.True(t, ok, "error should be a gRPC status error") - assert.Equal(t, codes.InvalidArgument, st.Code()) - assert.Contains(t, st.Message(), "cannot remove all tags") - assert.Nil(t, resp.GetNode()) -} - -// TestSetTags_ClearsUserIDInDatabase tests that converting a user-owned node -// to a tagged node via [headscaleV1APIServer.SetTags] correctly persists user_id = NULL in the -// database, not just in-memory. -func TestSetTags_ClearsUserIDInDatabase(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - user := app.state.CreateUserForTest("tag-owner") - err := app.state.UpdatePolicyManagerUsersForTest() - require.NoError(t, err) - - _, err = app.state.SetPolicy([]byte(`{ - "tagOwners": {"tag:server": ["tag-owner@"]}, - "acls": [{"action": "accept", "src": ["*"], "dst": ["*:*"]}] - }`)) - require.NoError(t, err) - - // Register a user-owned node (untagged PreAuthKey). - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, nil) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - regReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "user-owned-node", - }, - } - _, err = app.handleRegisterWithAuthKey(regReq, machineKey.Public()) - require.NoError(t, err) - - node, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - require.False(t, node.IsTagged(), "node should start as user-owned") - require.True(t, node.UserID().Valid(), "user-owned node must have UserID") - - nodeID := node.ID() - - // Convert to tagged via [headscaleV1APIServer.SetTags] API. - apiServer := newHeadscaleV1APIServer(app) - _, err = apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: uint64(nodeID), - Tags: []string{"tag:server"}, - }) - require.NoError(t, err) - - // Verify in-memory state is correct. - nsNode, found := app.state.GetNodeByID(nodeID) - require.True(t, found) - assert.True(t, nsNode.IsTagged(), "NodeStore: node should be tagged") - assert.False(t, nsNode.UserID().Valid(), - "NodeStore: UserID should be nil for tagged node") - - // THE CRITICAL CHECK: verify database has user_id = NULL. - dbNode, err := app.state.DB().GetNodeByID(nodeID) - require.NoError(t, err) - assert.Nil(t, dbNode.UserID, - "Database: user_id must be NULL after converting to tagged node") - assert.True(t, dbNode.IsTagged(), - "Database: tags must be set") -} - -// TestSetTags_NodeDisappearsFromUserListing tests issue #3161: -// after converting a user-owned node to tagged, it must no longer appear -// when listing nodes filtered by the original user. -// https://github.com/juanfont/headscale/issues/3161 -func TestSetTags_NodeDisappearsFromUserListing(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - user := app.state.CreateUserForTest("list-user") - err := app.state.UpdatePolicyManagerUsersForTest() - require.NoError(t, err) - - _, err = app.state.SetPolicy([]byte(`{ - "tagOwners": {"tag:web": ["list-user@"]}, - "acls": [{"action": "accept", "src": ["*"], "dst": ["*:*"]}] - }`)) - require.NoError(t, err) - - // Register a user-owned node. - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, nil) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - regReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "web-server", - }, - } - _, err = app.handleRegisterWithAuthKey(regReq, machineKey.Public()) - require.NoError(t, err) - - node, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - - // Verify node appears under user before tagging. - apiServer := newHeadscaleV1APIServer(app) - resp, err := apiServer.ListNodes(context.Background(), &v1.ListNodesRequest{ - User: "list-user", - }) - require.NoError(t, err) - assert.Len(t, resp.GetNodes(), 1, "user-owned node should appear under user") - - // Convert to tagged. - _, err = apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: uint64(node.ID()), - Tags: []string{"tag:web"}, - }) - require.NoError(t, err) - - // Node must NOT appear when listing by original user. - resp, err = apiServer.ListNodes(context.Background(), &v1.ListNodesRequest{ - User: "list-user", - }) - require.NoError(t, err) - assert.Empty(t, resp.GetNodes(), - "tagged node must not appear when listing nodes for original user") - - // Node must still appear in unfiltered listing. - allResp, err := apiServer.ListNodes(context.Background(), &v1.ListNodesRequest{}) - require.NoError(t, err) - require.Len(t, allResp.GetNodes(), 1) - assert.Contains(t, allResp.GetNodes()[0].GetTags(), "tag:web") -} - -// TestSetTags_NodeStoreAndDBConsistency verifies that after [headscaleV1APIServer.SetTags], the -// in-memory [state.NodeStore] and the database agree on the node's ownership state. -func TestSetTags_NodeStoreAndDBConsistency(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - user := app.state.CreateUserForTest("consistency-user") - err := app.state.UpdatePolicyManagerUsersForTest() - require.NoError(t, err) - - _, err = app.state.SetPolicy([]byte(`{ - "tagOwners": {"tag:db": ["consistency-user@"]}, - "acls": [{"action": "accept", "src": ["*"], "dst": ["*:*"]}] - }`)) - require.NoError(t, err) - - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, nil) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - regReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "db-node", - }, - } - _, err = app.handleRegisterWithAuthKey(regReq, machineKey.Public()) - require.NoError(t, err) - - node, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - - nodeID := node.ID() - - // Convert to tagged. - apiServer := newHeadscaleV1APIServer(app) - _, err = apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: uint64(nodeID), - Tags: []string{"tag:db"}, - }) - require.NoError(t, err) - - // In-memory state. - nsNode, found := app.state.GetNodeByID(nodeID) - require.True(t, found) - - // Database state. - dbNode, err := app.state.DB().GetNodeByID(nodeID) - require.NoError(t, err) - - // Both must agree: tagged, no UserID. - assert.True(t, nsNode.IsTagged(), "NodeStore: should be tagged") - assert.True(t, dbNode.IsTagged(), "Database: should be tagged") - - assert.False(t, nsNode.UserID().Valid(), - "NodeStore: UserID should be nil") - assert.Nil(t, dbNode.UserID, - "Database: user_id should be NULL") - - assert.Equal(t, - nsNode.UserID().Valid(), - dbNode.UserID != nil, - "NodeStore and database must agree on UserID state") -} - -// TestSetTags_UserDeletionDoesNotCascadeToTaggedNode tests that deleting the -// original user does not cascade-delete a node that was converted to tagged -// via [headscaleV1APIServer.SetTags]. This catches the real-world consequence of stale user_id: -// ON DELETE CASCADE would destroy the tagged node. -func TestSetTags_UserDeletionDoesNotCascadeToTaggedNode(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - user := app.state.CreateUserForTest("doomed-user") - err := app.state.UpdatePolicyManagerUsersForTest() - require.NoError(t, err) - - _, err = app.state.SetPolicy([]byte(`{ - "tagOwners": {"tag:survivor": ["doomed-user@"]}, - "acls": [{"action": "accept", "src": ["*"], "dst": ["*:*"]}] - }`)) - require.NoError(t, err) - - pak, err := app.state.CreatePreAuthKey(user.TypedID(), false, false, nil, nil) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - regReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "survivor-node", - }, - } - _, err = app.handleRegisterWithAuthKey(regReq, machineKey.Public()) - require.NoError(t, err) - - node, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - - nodeID := node.ID() - - // Convert to tagged. - apiServer := newHeadscaleV1APIServer(app) - _, err = apiServer.SetTags(context.Background(), &v1.SetTagsRequest{ - NodeId: uint64(nodeID), - Tags: []string{"tag:survivor"}, - }) - require.NoError(t, err) - - // Delete the original user. - _, err = app.state.DeleteUser(*user.TypedID()) - require.NoError(t, err) - - // The tagged node must survive in both [state.NodeStore] and database. - nsNode, found := app.state.GetNodeByID(nodeID) - require.True(t, found, "tagged node must survive user deletion in NodeStore") - assert.True(t, nsNode.IsTagged()) - - dbNode, err := app.state.DB().GetNodeByID(nodeID) - require.NoError(t, err, "tagged node must survive user deletion in database") - assert.True(t, dbNode.IsTagged()) - assert.Nil(t, dbNode.UserID) -} - -// TestDeleteUser_ReturnsProperChangeSignal tests issue #2967 fix: -// When a user is deleted, the state should return a non-empty change signal -// to ensure policy manager is updated and clients are notified immediately. -func TestDeleteUser_ReturnsProperChangeSignal(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - // Create a user - user := app.state.CreateUserForTest("test-user-to-delete") - require.NotNil(t, user) - - // Delete the user and verify a non-empty change is returned - // Without the fix, [state.State.DeleteUser] returned an empty change, - // causing stale policy state until another user operation triggered an update. - changeSignal, err := app.state.DeleteUser(*user.TypedID()) - require.NoError(t, err, "DeleteUser should succeed") - assert.False(t, changeSignal.IsEmpty(), "DeleteUser should return a non-empty change signal (issue #2967)") -} - -// TestDeleteUser_TaggedNodeSurvives tests that deleting a user succeeds when -// the user's only nodes are tagged, and that those nodes remain in the -// [state.NodeStore] with nil UserID. -func TestDeleteUser_TaggedNodeSurvives(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - - user := app.state.CreateUserForTest("legacy-user") - - // Register a tagged node via the full auth flow. - tags := []string{"tag:server"} - pak, err := app.state.CreatePreAuthKey(user.TypedID(), true, false, nil, tags) - require.NoError(t, err) - - machineKey := key.NewMachine() - nodeKey := key.NewNode() - - regReq := tailcfg.RegisterRequest{ - Auth: &tailcfg.RegisterResponseAuth{ - AuthKey: pak.Key, - }, - NodeKey: nodeKey.Public(), - Hostinfo: &tailcfg.Hostinfo{ - Hostname: "tagged-server", - }, - Expiry: time.Now().Add(24 * time.Hour), - } - - resp, err := app.handleRegisterWithAuthKey(regReq, machineKey.Public()) - require.NoError(t, err) - require.True(t, resp.MachineAuthorized) - - // Verify the registered node has nil UserID (enforced at registration). - node, found := app.state.GetNodeByNodeKey(nodeKey.Public()) - require.True(t, found) - require.True(t, node.IsTagged()) - assert.False(t, node.UserID().Valid(), - "tagged node should have nil UserID after registration") - - nodeID := node.ID() - - // [state.NodeStore] should not list the tagged node under any user. - nodesForUser := app.state.ListNodesByUser(types.UserID(user.ID)) - assert.Equal(t, 0, nodesForUser.Len(), - "tagged nodes should not appear in nodesByUser index") - - // Delete the user. - changeSignal, err := app.state.DeleteUser(*user.TypedID()) - require.NoError(t, err) - assert.False(t, changeSignal.IsEmpty()) - - // Tagged node survives in the [state.NodeStore]. - nodeAfter, found := app.state.GetNodeByID(nodeID) - require.True(t, found, "tagged node should survive user deletion") - assert.True(t, nodeAfter.IsTagged()) - assert.False(t, nodeAfter.UserID().Valid()) - - // Tagged node appears in the global list. - allNodes := app.state.ListNodes() - foundInAll := false - - for _, n := range allNodes.All() { - if n.ID() == nodeID { - foundInAll = true - - break - } - } - - assert.True(t, foundInAll, "tagged node should appear in the global node list") -} - -// TestExpireApiKey_ByID tests that API keys can be expired by ID. -func TestExpireApiKey_ByID(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - // Create an API key - createResp, err := apiServer.CreateApiKey(context.Background(), &v1.CreateApiKeyRequest{}) - require.NoError(t, err) - require.NotEmpty(t, createResp.GetApiKey()) - - // List keys to get the ID - listResp, err := apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - require.Len(t, listResp.GetApiKeys(), 1) - - keyID := listResp.GetApiKeys()[0].GetId() - - // Expire by ID - _, err = apiServer.ExpireApiKey(context.Background(), &v1.ExpireApiKeyRequest{ - Id: keyID, - }) - require.NoError(t, err) - - // Verify key is expired (expiration is set to now or in the past) - listResp, err = apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - require.Len(t, listResp.GetApiKeys(), 1) - assert.NotNil(t, listResp.GetApiKeys()[0].GetExpiration(), "expiration should be set") -} - -// TestExpireApiKey_ByPrefix tests that API keys can still be expired by prefix. -func TestExpireApiKey_ByPrefix(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - // Create an API key - createResp, err := apiServer.CreateApiKey(context.Background(), &v1.CreateApiKeyRequest{}) - require.NoError(t, err) - require.NotEmpty(t, createResp.GetApiKey()) - - // List keys to get the prefix - listResp, err := apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - require.Len(t, listResp.GetApiKeys(), 1) - - keyPrefix := listResp.GetApiKeys()[0].GetPrefix() - - // Expire by prefix - _, err = apiServer.ExpireApiKey(context.Background(), &v1.ExpireApiKeyRequest{ - Prefix: keyPrefix, - }) - require.NoError(t, err) -} - -// TestDeleteApiKey_ByID tests that API keys can be deleted by ID. -func TestDeleteApiKey_ByID(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - // Create an API key - createResp, err := apiServer.CreateApiKey(context.Background(), &v1.CreateApiKeyRequest{}) - require.NoError(t, err) - require.NotEmpty(t, createResp.GetApiKey()) - - // List keys to get the ID - listResp, err := apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - require.Len(t, listResp.GetApiKeys(), 1) - - keyID := listResp.GetApiKeys()[0].GetId() - - // Delete by ID - _, err = apiServer.DeleteApiKey(context.Background(), &v1.DeleteApiKeyRequest{ - Id: keyID, - }) - require.NoError(t, err) - - // Verify key is deleted - listResp, err = apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - assert.Empty(t, listResp.GetApiKeys()) -} - -// TestDeleteApiKey_ByPrefix tests that API keys can still be deleted by prefix. -func TestDeleteApiKey_ByPrefix(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - // Create an API key - createResp, err := apiServer.CreateApiKey(context.Background(), &v1.CreateApiKeyRequest{}) - require.NoError(t, err) - require.NotEmpty(t, createResp.GetApiKey()) - - // List keys to get the prefix - listResp, err := apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - require.Len(t, listResp.GetApiKeys(), 1) - - keyPrefix := listResp.GetApiKeys()[0].GetPrefix() - - // Delete by prefix - _, err = apiServer.DeleteApiKey(context.Background(), &v1.DeleteApiKeyRequest{ - Prefix: keyPrefix, - }) - require.NoError(t, err) - - // Verify key is deleted - listResp, err = apiServer.ListApiKeys(context.Background(), &v1.ListApiKeysRequest{}) - require.NoError(t, err) - assert.Empty(t, listResp.GetApiKeys()) -} - -// TestExpireApiKey_NoIdentifier tests that an error is returned when neither ID nor prefix is provided. -func TestExpireApiKey_NoIdentifier(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - _, err := apiServer.ExpireApiKey(context.Background(), &v1.ExpireApiKeyRequest{}) - require.Error(t, err) - st, ok := status.FromError(err) - require.True(t, ok, "error should be a gRPC status error") - assert.Equal(t, codes.InvalidArgument, st.Code()) - assert.Contains(t, st.Message(), "must provide id or prefix") -} - -// TestDeleteApiKey_NoIdentifier tests that an error is returned when neither ID nor prefix is provided. -func TestDeleteApiKey_NoIdentifier(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - _, err := apiServer.DeleteApiKey(context.Background(), &v1.DeleteApiKeyRequest{}) - require.Error(t, err) - st, ok := status.FromError(err) - require.True(t, ok, "error should be a gRPC status error") - assert.Equal(t, codes.InvalidArgument, st.Code()) - assert.Contains(t, st.Message(), "must provide id or prefix") -} - -// TestExpireApiKey_BothIdentifiers tests that an error is returned when both ID and prefix are provided. -func TestExpireApiKey_BothIdentifiers(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - _, err := apiServer.ExpireApiKey(context.Background(), &v1.ExpireApiKeyRequest{ - Id: 1, - Prefix: "test", - }) - require.Error(t, err) - st, ok := status.FromError(err) - require.True(t, ok, "error should be a gRPC status error") - assert.Equal(t, codes.InvalidArgument, st.Code()) - assert.Contains(t, st.Message(), "provide either id or prefix, not both") -} - -// TestDeleteApiKey_BothIdentifiers tests that an error is returned when both ID and prefix are provided. -func TestDeleteApiKey_BothIdentifiers(t *testing.T) { - t.Parallel() - - app := createTestApp(t) - apiServer := newHeadscaleV1APIServer(app) - - _, err := apiServer.DeleteApiKey(context.Background(), &v1.DeleteApiKeyRequest{ - Id: 1, - Prefix: "test", - }) - require.Error(t, err) - st, ok := status.FromError(err) - require.True(t, ok, "error should be a gRPC status error") - assert.Equal(t, codes.InvalidArgument, st.Code()) - assert.Contains(t, st.Message(), "provide either id or prefix, not both") -} diff --git a/hscontrol/state/state.go b/hscontrol/state/state.go index fc78beb3..1069d8de 100644 --- a/hscontrol/state/state.go +++ b/hscontrol/state/state.go @@ -1793,7 +1793,7 @@ func (s *State) createAndSaveNewNode(params newNodeParams) (types.NodeView, erro if params.PreAuthKey.IsTagged() { // Tagged nodes are owned by their tags, not a user. // UserID is intentionally left nil. - nodeToRegister.Tags = params.PreAuthKey.Proto().GetAclTags() + nodeToRegister.Tags = params.PreAuthKey.Tags // Tagged nodes have key expiry disabled. nodeToRegister.Expiry = nil @@ -2427,7 +2427,7 @@ func (s *State) HandleNodeFromPreAuthKey( // user-less and never expire). Only update AuthKey reference // otherwise. if pak.IsTagged() && !node.IsTagged() { - node.Tags = pak.Proto().GetAclTags() + node.Tags = pak.Tags node.UserID = nil node.User = nil node.Expiry = nil diff --git a/hscontrol/types/api_key.go b/hscontrol/types/api_key.go index 3ad3450e..17854b44 100644 --- a/hscontrol/types/api_key.go +++ b/hscontrol/types/api_key.go @@ -3,10 +3,8 @@ package types import ( "time" - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" "github.com/juanfont/headscale/hscontrol/util/zlog/zf" "github.com/rs/zerolog" - "google.golang.org/protobuf/types/known/timestamppb" ) // NewAPIKeyPrefixLength is the length of the prefix for new API keys. @@ -24,28 +22,6 @@ type APIKey struct { LastSeen *time.Time } -func (key *APIKey) Proto() *v1.ApiKey { - protoKey := v1.ApiKey{ - Id: key.ID, - } - - protoKey.Prefix = key.maskedPrefix() - - if key.Expiration != nil { - protoKey.Expiration = timestamppb.New(*key.Expiration) - } - - if key.CreatedAt != nil { - protoKey.CreatedAt = timestamppb.New(*key.CreatedAt) - } - - if key.LastSeen != nil { - protoKey.LastSeen = timestamppb.New(*key.LastSeen) - } - - return &protoKey -} - // maskedPrefix returns the API key prefix in masked format for safe logging. // SECURITY: Never log the full key or hash, only the masked prefix. func (k *APIKey) maskedPrefix() string { diff --git a/hscontrol/types/config.go b/hscontrol/types/config.go index 18fcd939..852c2b62 100644 --- a/hscontrol/types/config.go +++ b/hscontrol/types/config.go @@ -98,8 +98,6 @@ type Config struct { ServerURL string Addr string MetricsAddr string - GRPCAddr string - GRPCAllowInsecure bool TrustedProxies []netip.Prefix Node NodeConfig PrefixV4 *netip.Prefix @@ -418,9 +416,6 @@ func LoadConfig(path string, isFile bool) error { viper.SetDefault("unix_socket", "/var/run/headscale/headscale.sock") viper.SetDefault("unix_socket_permission", "0o770") - viper.SetDefault("grpc_listen_addr", ":50443") - viper.SetDefault("grpc_allow_insecure", false) - viper.SetDefault("cli.timeout", "5s") viper.SetDefault("cli.insecure", false) @@ -1182,8 +1177,6 @@ func LoadServerConfig() (*Config, error) { ServerURL: serverURL, Addr: viper.GetString("listen_addr"), MetricsAddr: viper.GetString("metrics_listen_addr"), - GRPCAddr: viper.GetString("grpc_listen_addr"), - GRPCAllowInsecure: viper.GetBool("grpc_allow_insecure"), TrustedProxies: trusted, DisableUpdateCheck: false, diff --git a/hscontrol/types/node.go b/hscontrol/types/node.go index b487c581..af29bd4b 100644 --- a/hscontrol/types/node.go +++ b/hscontrol/types/node.go @@ -10,13 +10,11 @@ import ( "strings" "time" - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" "github.com/juanfont/headscale/hscontrol/policy/matcher" "github.com/juanfont/headscale/hscontrol/util" "github.com/juanfont/headscale/hscontrol/util/zlog/zf" "github.com/rs/zerolog" "go4.org/netipx" - "google.golang.org/protobuf/types/known/timestamppb" "tailscale.com/net/tsaddr" "tailscale.com/tailcfg" "tailscale.com/types/key" @@ -483,55 +481,6 @@ func (nodes Nodes) ContainsNodeKey(nodeKey key.NodePublic) bool { return false } -func (node *Node) Proto() *v1.Node { - nodeProto := &v1.Node{ - Id: uint64(node.ID), - MachineKey: node.MachineKey.String(), - - NodeKey: node.NodeKey.String(), - DiscoKey: node.DiscoKey.String(), - - // TODO(kradalby): replace list with v4, v6 field? - IpAddresses: node.IPsAsString(), - Name: node.Hostname, - GivenName: node.GivenName, - User: nil, // Will be set below based on node type - Tags: node.Tags, - Online: node.IsOnline != nil && *node.IsOnline, - - // Only ApprovedRoutes and AvailableRoutes is set here. SubnetRoutes has - // to be populated manually with PrimaryRoute, to ensure it includes the - // routes that are actively served from the node. - ApprovedRoutes: util.PrefixesToString(node.ApprovedRoutes), - AvailableRoutes: util.PrefixesToString(node.AnnouncedRoutes()), - - RegisterMethod: node.RegisterMethodToV1Enum(), - - CreatedAt: timestamppb.New(node.CreatedAt), - } - - // Set User field based on node ownership - // Note: User will be set to [TaggedDevices] in the gRPC layer (grpcv1.go) - // for proper [tailcfg.MapResponse] formatting - if node.User != nil { - nodeProto.User = node.User.Proto() - } - - if node.AuthKey != nil { - nodeProto.PreAuthKey = node.AuthKey.Proto() - } - - if node.LastSeen != nil { - nodeProto.LastSeen = timestamppb.New(*node.LastSeen) - } - - if node.Expiry != nil { - nodeProto.Expiry = timestamppb.New(*node.Expiry) - } - - return nodeProto -} - func (node *Node) GetFQDN(baseDomain string) (string, error) { if node.GivenName == "" { return "", fmt.Errorf("creating valid FQDN: %w", ErrNodeHasNoGivenName) @@ -574,11 +523,9 @@ func (node *Node) AnnouncedRoutes() []netip.Prefix { // announces and are approved. Also used by [Node.CanAccess] and [Node.CanAccessRoute] as part // of the subnet-router-as-source identity. // -// IMPORTANT: This method is used for internal data structures and should NOT be -// used for the gRPC Proto conversion. For Proto, SubnetRoutes must be populated -// manually with PrimaryRoutes to ensure it includes only routes actively served -// by the node. See the comment in [Node.Proto] method and the implementation in -// grpcv1.go/nodesToProto. +// IMPORTANT: This method reflects announced-and-approved routes. API +// responses that need the routes actively served by the node must +// populate SubnetRoutes from the primary-route election instead. func (node *Node) SubnetRoutes() []netip.Prefix { var routes []netip.Prefix @@ -684,19 +631,6 @@ func EndpointsChanged(oldEndpoints, newEndpoints []netip.AddrPort) bool { return !equalUnordered(oldEndpoints, newEndpoints, netip.AddrPort.Compare) } -func (node *Node) RegisterMethodToV1Enum() v1.RegisterMethod { - switch node.RegisterMethod { - case "authkey": - return v1.RegisterMethod_REGISTER_METHOD_AUTH_KEY - case "oidc": - return v1.RegisterMethod_REGISTER_METHOD_OIDC - case "cli": - return v1.RegisterMethod_REGISTER_METHOD_CLI - default: - return v1.RegisterMethod_REGISTER_METHOD_UNSPECIFIED - } -} - // ApplyPeerChange takes a [tailcfg.PeerChange] struct and updates the node. func (node *Node) ApplyPeerChange(change *tailcfg.PeerChange) { if change.Key != nil { @@ -998,15 +932,6 @@ func (nv NodeView) RequestTags() []string { return nv.Hostinfo().RequestTags().AsSlice() } -// Proto converts the [NodeView] to a protobuf representation. -func (nv NodeView) Proto() *v1.Node { - if !nv.Valid() { - return nil - } - - return nv.ж.Proto() -} - // HasIP reports if a node has a given IP address. func (nv NodeView) HasIP(i netip.Addr) bool { if !nv.Valid() { diff --git a/hscontrol/types/node_test.go b/hscontrol/types/node_test.go index 0bec4aef..3c8a5ba8 100644 --- a/hscontrol/types/node_test.go +++ b/hscontrol/types/node_test.go @@ -8,7 +8,6 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" "github.com/juanfont/headscale/hscontrol/policy/matcher" "github.com/juanfont/headscale/hscontrol/util" "tailscale.com/tailcfg" @@ -657,56 +656,6 @@ func TestApplyPeerChange(t *testing.T) { } } -func TestNodeRegisterMethodToV1Enum(t *testing.T) { - tests := []struct { - name string - node Node - want v1.RegisterMethod - }{ - { - name: "authkey", - node: Node{ - ID: 1, - RegisterMethod: util.RegisterMethodAuthKey, - }, - want: v1.RegisterMethod_REGISTER_METHOD_AUTH_KEY, - }, - { - name: "oidc", - node: Node{ - ID: 1, - RegisterMethod: util.RegisterMethodOIDC, - }, - want: v1.RegisterMethod_REGISTER_METHOD_OIDC, - }, - { - name: "cli", - node: Node{ - ID: 1, - RegisterMethod: util.RegisterMethodCLI, - }, - want: v1.RegisterMethod_REGISTER_METHOD_CLI, - }, - { - name: "unknown", - node: Node{ - ID: 0, - }, - want: v1.RegisterMethod_REGISTER_METHOD_UNSPECIFIED, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := tt.node.RegisterMethodToV1Enum() - - if diff := cmp.Diff(tt.want, got); diff != "" { - t.Errorf("RegisterMethodToV1Enum() unexpected result (-want +got):\n%s", diff) - } - }) - } -} - // TestHasNetworkChanges tests the [NodeView] method for detecting // when a node's network properties have changed. func TestHasNetworkChanges(t *testing.T) { diff --git a/hscontrol/types/preauth_key.go b/hscontrol/types/preauth_key.go index 3f789fdf..cf8d178a 100644 --- a/hscontrol/types/preauth_key.go +++ b/hscontrol/types/preauth_key.go @@ -3,11 +3,9 @@ package types import ( "time" - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" "github.com/juanfont/headscale/hscontrol/util/zlog/zf" "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "google.golang.org/protobuf/types/known/timestamppb" ) type PAKError string @@ -56,66 +54,6 @@ type PreAuthKeyNew struct { User *User // Can be nil for system-created tagged keys } -func (key *PreAuthKeyNew) Proto() *v1.PreAuthKey { - protoKey := v1.PreAuthKey{ - Id: key.ID, - Key: key.Key, - User: nil, // Will be set below if not nil - Reusable: key.Reusable, - Ephemeral: key.Ephemeral, - AclTags: key.Tags, - } - - if key.User != nil { - protoKey.User = key.User.Proto() - } - - if key.Expiration != nil { - protoKey.Expiration = timestamppb.New(*key.Expiration) - } - - if key.CreatedAt != nil { - protoKey.CreatedAt = timestamppb.New(*key.CreatedAt) - } - - return &protoKey -} - -func (key *PreAuthKey) Proto() *v1.PreAuthKey { - protoKey := v1.PreAuthKey{ - User: nil, // Will be set below if not nil - Id: key.ID, - Ephemeral: key.Ephemeral, - Reusable: key.Reusable, - Used: key.Used, - AclTags: key.Tags, - } - - if key.User != nil { - protoKey.User = key.User.Proto() - } - - // For new keys (with prefix/hash), show the prefix so users can identify the key - // For legacy keys (with plaintext key), show the full key for backwards compatibility - if masked := key.maskedPrefix(); masked != "" { - protoKey.Key = masked - } else if key.Key != "" { - // Legacy key - show full key for backwards compatibility - // TODO: Consider hiding this in a future major version - protoKey.Key = key.Key - } - - if key.Expiration != nil { - protoKey.Expiration = timestamppb.New(*key.Expiration) - } - - if key.CreatedAt != nil { - protoKey.CreatedAt = timestamppb.New(*key.CreatedAt) - } - - return &protoKey -} - // Validate checks if a pre auth key can be used. func (pak *PreAuthKey) Validate() error { if pak == nil { diff --git a/hscontrol/types/users.go b/hscontrol/types/users.go index 546f5d06..cd55d7d7 100644 --- a/hscontrol/types/users.go +++ b/hscontrol/types/users.go @@ -11,12 +11,10 @@ import ( "strconv" "strings" - v1 "github.com/juanfont/headscale/gen/go/headscale/v1" "github.com/juanfont/headscale/hscontrol/util" "github.com/juanfont/headscale/hscontrol/util/zlog/zf" "github.com/rs/zerolog" "github.com/rs/zerolog/log" - "google.golang.org/protobuf/types/known/timestamppb" "gorm.io/gorm" "tailscale.com/tailcfg" ) @@ -182,28 +180,6 @@ func (u UserView) TailscaleUserProfile() tailcfg.UserProfile { return u.ж.TailscaleUserProfile() } -func (u *User) Proto() *v1.User { - // Use Name if set, otherwise fall back to Username() which provides - // a display-friendly identifier (Email > ProviderIdentifier > ID). - // This ensures OIDC users (who typically have empty Name) display - // their email, while CLI users retain their original Name. - name := u.Name - if name == "" { - name = u.Username() - } - - return &v1.User{ - Id: uint64(u.ID), - Name: name, - CreatedAt: timestamppb.New(u.CreatedAt), - DisplayName: u.DisplayName, - Email: u.Email, - ProviderId: u.ProviderIdentifier.String, - Provider: u.Provider, - ProfilePicUrl: u.ProfilePicURL, - } -} - // MarshalZerologObject implements [zerolog.LogObjectMarshaler] for safe logging. func (u *User) MarshalZerologObject(e *zerolog.Event) { if u == nil { diff --git a/proto/buf.lock b/proto/buf.lock deleted file mode 100644 index 31cd0644..00000000 --- a/proto/buf.lock +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by buf. DO NOT EDIT. -version: v1 -deps: - - remote: buf.build - owner: googleapis - repository: googleapis - commit: 61b203b9a9164be9a834f58c37be6f62 - digest: shake256:e619113001d6e284ee8a92b1561e5d4ea89a47b28bf0410815cb2fa23914df8be9f1a6a98dcf069f5bc2d829a2cfb1ac614863be45cd4f8a5ad8606c5f200224 - - remote: buf.build - owner: grpc-ecosystem - repository: grpc-gateway - commit: 4c5ba75caaf84e928b7137ae5c18c26a - digest: shake256:e174ad9408f3e608f6157907153ffec8d310783ee354f821f57178ffbeeb8faa6bb70b41b61099c1783c82fe16210ebd1279bc9c9ee6da5cffba9f0e675b8b99 - - remote: buf.build - owner: ufoundit-dev - repository: protoc-gen-gorm - commit: e2ecbaa0d37843298104bd29fd866df8 - digest: shake256:088347669906bc49513b40d58fd7ae877769668928fca038e070732ce0f9855c03f21885b0099e0d27acf9475feca0a34dbcedac22bb374bf2cd7c1e352de56c diff --git a/proto/buf.yaml b/proto/buf.yaml deleted file mode 100644 index 7e524ba0..00000000 --- a/proto/buf.yaml +++ /dev/null @@ -1,12 +0,0 @@ -version: v1 -lint: - use: - - DEFAULT -breaking: - use: - - FILE - -deps: - - buf.build/googleapis/googleapis - - buf.build/grpc-ecosystem/grpc-gateway - - buf.build/ufoundit-dev/protoc-gen-gorm diff --git a/proto/headscale/v1/apikey.proto b/proto/headscale/v1/apikey.proto deleted file mode 100644 index 6ea0d669..00000000 --- a/proto/headscale/v1/apikey.proto +++ /dev/null @@ -1,35 +0,0 @@ -syntax = "proto3"; -package headscale.v1; -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -import "google/protobuf/timestamp.proto"; - -message ApiKey { - uint64 id = 1; - string prefix = 2; - google.protobuf.Timestamp expiration = 3; - google.protobuf.Timestamp created_at = 4; - google.protobuf.Timestamp last_seen = 5; -} - -message CreateApiKeyRequest { google.protobuf.Timestamp expiration = 1; } - -message CreateApiKeyResponse { string api_key = 1; } - -message ExpireApiKeyRequest { - string prefix = 1; - uint64 id = 2; -} - -message ExpireApiKeyResponse {} - -message ListApiKeysRequest {} - -message ListApiKeysResponse { repeated ApiKey api_keys = 1; } - -message DeleteApiKeyRequest { - string prefix = 1; - uint64 id = 2; -} - -message DeleteApiKeyResponse {} diff --git a/proto/headscale/v1/auth.proto b/proto/headscale/v1/auth.proto deleted file mode 100644 index cc0ec95a..00000000 --- a/proto/headscale/v1/auth.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; -package headscale.v1; -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -import "headscale/v1/node.proto"; - -message AuthRegisterRequest { - string user = 1; - string auth_id = 2; -} - -message AuthRegisterResponse { - Node node = 1; -} - -message AuthApproveRequest { - string auth_id = 1; -} - -message AuthApproveResponse {} - -message AuthRejectRequest { - string auth_id = 1; -} - -message AuthRejectResponse {} diff --git a/proto/headscale/v1/device.proto b/proto/headscale/v1/device.proto deleted file mode 100644 index 6c75df88..00000000 --- a/proto/headscale/v1/device.proto +++ /dev/null @@ -1,76 +0,0 @@ -syntax = "proto3"; -package headscale.v1; -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -import "google/protobuf/timestamp.proto"; - -// This is a potential reimplementation of Tailscale's API -// https://github.com/tailscale/tailscale/blob/main/api.md - -message Latency { - float latency_ms = 1; - bool preferred = 2; -} - -message ClientSupports { - bool hair_pinning = 1; - bool ipv6 = 2; - bool pcp = 3; - bool pmp = 4; - bool udp = 5; - bool upnp = 6; -} - -message ClientConnectivity { - repeated string endpoints = 1; - string derp = 2; - bool mapping_varies_by_dest_ip = 3; - map latency = 4; - ClientSupports client_supports = 5; -} - -message GetDeviceRequest { string id = 1; } - -message GetDeviceResponse { - repeated string addresses = 1; - string id = 2; - string user = 3; - string name = 4; - string hostname = 5; - string client_version = 6; - bool update_available = 7; - string os = 8; - google.protobuf.Timestamp created = 9; - google.protobuf.Timestamp last_seen = 10; - bool key_expiry_disabled = 11; - google.protobuf.Timestamp expires = 12; - bool authorized = 13; - bool is_external = 14; - string machine_key = 15; - string node_key = 16; - bool blocks_incoming_connections = 17; - repeated string enabled_routes = 18; - repeated string advertised_routes = 19; - ClientConnectivity client_connectivity = 20; -} - -message DeleteDeviceRequest { string id = 1; } - -message DeleteDeviceResponse {} - -message GetDeviceRoutesRequest { string id = 1; } - -message GetDeviceRoutesResponse { - repeated string enabled_routes = 1; - repeated string advertised_routes = 2; -} - -message EnableDeviceRoutesRequest { - string id = 1; - repeated string routes = 2; -} - -message EnableDeviceRoutesResponse { - repeated string enabled_routes = 1; - repeated string advertised_routes = 2; -} diff --git a/proto/headscale/v1/headscale.proto b/proto/headscale/v1/headscale.proto deleted file mode 100644 index cc2958a2..00000000 --- a/proto/headscale/v1/headscale.proto +++ /dev/null @@ -1,256 +0,0 @@ -syntax = "proto3"; -package headscale.v1; -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -import "google/api/annotations.proto"; - -import "headscale/v1/user.proto"; -import "headscale/v1/preauthkey.proto"; -import "headscale/v1/node.proto"; -import "headscale/v1/apikey.proto"; -import "headscale/v1/auth.proto"; -import "headscale/v1/policy.proto"; - -service HeadscaleService { - // --- User start --- - rpc CreateUser(CreateUserRequest) returns (CreateUserResponse) { - option (google.api.http) = { - post : "/api/v1/user" - body : "*" - }; - } - - rpc RenameUser(RenameUserRequest) returns (RenameUserResponse) { - option (google.api.http) = { - post : "/api/v1/user/{old_id}/rename/{new_name}" - }; - } - - rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) { - option (google.api.http) = { - delete : "/api/v1/user/{id}" - }; - } - - rpc ListUsers(ListUsersRequest) returns (ListUsersResponse) { - option (google.api.http) = { - get : "/api/v1/user" - }; - } - // --- User end --- - - // --- PreAuthKeys start --- - rpc CreatePreAuthKey(CreatePreAuthKeyRequest) - returns (CreatePreAuthKeyResponse) { - option (google.api.http) = { - post : "/api/v1/preauthkey" - body : "*" - }; - } - - rpc ExpirePreAuthKey(ExpirePreAuthKeyRequest) - returns (ExpirePreAuthKeyResponse) { - option (google.api.http) = { - post : "/api/v1/preauthkey/expire" - body : "*" - }; - } - - rpc DeletePreAuthKey(DeletePreAuthKeyRequest) - returns (DeletePreAuthKeyResponse) { - option (google.api.http) = { - delete : "/api/v1/preauthkey" - }; - } - - rpc ListPreAuthKeys(ListPreAuthKeysRequest) - returns (ListPreAuthKeysResponse) { - option (google.api.http) = { - get : "/api/v1/preauthkey" - }; - } - // --- PreAuthKeys end --- - - // --- Node start --- - rpc DebugCreateNode(DebugCreateNodeRequest) - returns (DebugCreateNodeResponse) { - option (google.api.http) = { - post : "/api/v1/debug/node" - body : "*" - }; - } - - rpc GetNode(GetNodeRequest) returns (GetNodeResponse) { - option (google.api.http) = { - get : "/api/v1/node/{node_id}" - }; - } - - rpc SetTags(SetTagsRequest) returns (SetTagsResponse) { - option (google.api.http) = { - post : "/api/v1/node/{node_id}/tags" - body : "*" - }; - } - - rpc SetApprovedRoutes(SetApprovedRoutesRequest) - returns (SetApprovedRoutesResponse) { - option (google.api.http) = { - post : "/api/v1/node/{node_id}/approve_routes" - body : "*" - }; - } - - rpc RegisterNode(RegisterNodeRequest) returns (RegisterNodeResponse) { - option (google.api.http) = { - post : "/api/v1/node/register" - }; - } - - rpc DeleteNode(DeleteNodeRequest) returns (DeleteNodeResponse) { - option (google.api.http) = { - delete : "/api/v1/node/{node_id}" - }; - } - - rpc ExpireNode(ExpireNodeRequest) returns (ExpireNodeResponse) { - option (google.api.http) = { - post : "/api/v1/node/{node_id}/expire" - }; - } - - rpc RenameNode(RenameNodeRequest) returns (RenameNodeResponse) { - option (google.api.http) = { - post : "/api/v1/node/{node_id}/rename/{new_name}" - }; - } - - rpc ListNodes(ListNodesRequest) returns (ListNodesResponse) { - option (google.api.http) = { - get : "/api/v1/node" - }; - } - - rpc BackfillNodeIPs(BackfillNodeIPsRequest) - returns (BackfillNodeIPsResponse) { - option (google.api.http) = { - post : "/api/v1/node/backfillips" - }; - } - - // --- Node end --- - - // --- Auth start --- - rpc AuthRegister(AuthRegisterRequest) returns (AuthRegisterResponse) { - option (google.api.http) = { - post : "/api/v1/auth/register" - body : "*" - }; - } - - rpc AuthApprove(AuthApproveRequest) returns (AuthApproveResponse) { - option (google.api.http) = { - post : "/api/v1/auth/approve" - body : "*" - }; - } - - rpc AuthReject(AuthRejectRequest) returns (AuthRejectResponse) { - option (google.api.http) = { - post : "/api/v1/auth/reject" - body : "*" - }; - } - // --- Auth end --- - - // --- ApiKeys start --- - rpc CreateApiKey(CreateApiKeyRequest) returns (CreateApiKeyResponse) { - option (google.api.http) = { - post : "/api/v1/apikey" - body : "*" - }; - } - - rpc ExpireApiKey(ExpireApiKeyRequest) returns (ExpireApiKeyResponse) { - option (google.api.http) = { - post : "/api/v1/apikey/expire" - body : "*" - }; - } - - rpc ListApiKeys(ListApiKeysRequest) returns (ListApiKeysResponse) { - option (google.api.http) = { - get : "/api/v1/apikey" - }; - } - - rpc DeleteApiKey(DeleteApiKeyRequest) returns (DeleteApiKeyResponse) { - option (google.api.http) = { - delete : "/api/v1/apikey/{prefix}" - }; - } - // --- ApiKeys end --- - - // --- Policy start --- - rpc GetPolicy(GetPolicyRequest) returns (GetPolicyResponse) { - option (google.api.http) = { - get : "/api/v1/policy" - }; - } - - rpc SetPolicy(SetPolicyRequest) returns (SetPolicyResponse) { - option (google.api.http) = { - put : "/api/v1/policy" - body : "*" - }; - } - - rpc CheckPolicy(CheckPolicyRequest) returns (CheckPolicyResponse) { - option (google.api.http) = { - post : "/api/v1/policy/check" - body : "*" - }; - } - // --- Policy end --- - - // --- Health start --- - rpc Health(HealthRequest) returns (HealthResponse) { - option (google.api.http) = { - get : "/api/v1/health" - }; - } - // --- Health end --- - - // Implement Tailscale API - // rpc GetDevice(GetDeviceRequest) returns(GetDeviceResponse) { - // option(google.api.http) = { - // get : "/api/v1/device/{id}" - // }; - // } - - // rpc DeleteDevice(DeleteDeviceRequest) returns(DeleteDeviceResponse) { - // option(google.api.http) = { - // delete : "/api/v1/device/{id}" - // }; - // } - - // rpc GetDeviceRoutes(GetDeviceRoutesRequest) - // returns(GetDeviceRoutesResponse) { - // option(google.api.http) = { - // get : "/api/v1/device/{id}/routes" - // }; - // } - - // rpc EnableDeviceRoutes(EnableDeviceRoutesRequest) - // returns(EnableDeviceRoutesResponse) { - // option(google.api.http) = { - // post : "/api/v1/device/{id}/routes" - // }; - // } -} - -message HealthRequest {} - -message HealthResponse { - bool database_connectivity = 1; -} diff --git a/proto/headscale/v1/node.proto b/proto/headscale/v1/node.proto deleted file mode 100644 index 1a3dd0e6..00000000 --- a/proto/headscale/v1/node.proto +++ /dev/null @@ -1,144 +0,0 @@ -syntax = "proto3"; -package headscale.v1; - -import "google/protobuf/timestamp.proto"; -import "headscale/v1/preauthkey.proto"; -import "headscale/v1/user.proto"; - -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -enum RegisterMethod { - REGISTER_METHOD_UNSPECIFIED = 0; - REGISTER_METHOD_AUTH_KEY = 1; - REGISTER_METHOD_CLI = 2; - REGISTER_METHOD_OIDC = 3; -} - -message Node { - // 9: removal of last_successful_update - reserved 9; - - uint64 id = 1; - string machine_key = 2; - string node_key = 3; - string disco_key = 4; - repeated string ip_addresses = 5; - string name = 6; - User user = 7; - - google.protobuf.Timestamp last_seen = 8; - google.protobuf.Timestamp expiry = 10; - - PreAuthKey pre_auth_key = 11; - - google.protobuf.Timestamp created_at = 12; - - RegisterMethod register_method = 13; - - reserved 14 to 20; - // google.protobuf.Timestamp updated_at = 14; - // google.protobuf.Timestamp deleted_at = 15; - - // bytes host_info = 15; - // bytes endpoints = 16; - // bytes enabled_routes = 17; - - // Deprecated - // repeated string forced_tags = 18; - // repeated string invalid_tags = 19; - // repeated string valid_tags = 20; - string given_name = 21; - bool online = 22; - repeated string approved_routes = 23; - repeated string available_routes = 24; - repeated string subnet_routes = 25; - repeated string tags = 26; -} - -message RegisterNodeRequest { - string user = 1; - string key = 2; -} - -message RegisterNodeResponse { - Node node = 1; -} - -message GetNodeRequest { - uint64 node_id = 1; -} - -message GetNodeResponse { - Node node = 1; -} - -message SetTagsRequest { - uint64 node_id = 1; - repeated string tags = 2; -} - -message SetTagsResponse { - Node node = 1; -} - -message SetApprovedRoutesRequest { - uint64 node_id = 1; - repeated string routes = 2; -} - -message SetApprovedRoutesResponse { - Node node = 1; -} - -message DeleteNodeRequest { - uint64 node_id = 1; -} - -message DeleteNodeResponse {} - -message ExpireNodeRequest { - uint64 node_id = 1; - google.protobuf.Timestamp expiry = 2; - // When true, sets expiry to null (node will never expire). - bool disable_expiry = 3; -} - -message ExpireNodeResponse { - Node node = 1; -} - -message RenameNodeRequest { - uint64 node_id = 1; - string new_name = 2; -} - -message RenameNodeResponse { - Node node = 1; -} - -message ListNodesRequest { - string user = 1; -} - -message ListNodesResponse { - repeated Node nodes = 1; -} - -message DebugCreateNodeRequest { - string user = 1; - string key = 2; - string name = 3; - repeated string routes = 4; -} - -message DebugCreateNodeResponse { - Node node = 1; -} - -message BackfillNodeIPsRequest { - bool confirmed = 1; -} - -message BackfillNodeIPsResponse { - repeated string changes = 1; -} diff --git a/proto/headscale/v1/policy.proto b/proto/headscale/v1/policy.proto deleted file mode 100644 index 4a578dbe..00000000 --- a/proto/headscale/v1/policy.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; -package headscale.v1; -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -import "google/protobuf/timestamp.proto"; - -message SetPolicyRequest { string policy = 1; } - -message SetPolicyResponse { - string policy = 1; - google.protobuf.Timestamp updated_at = 2; -} - -message GetPolicyRequest {} - -message GetPolicyResponse { - string policy = 1; - google.protobuf.Timestamp updated_at = 2; -} - -message CheckPolicyRequest { string policy = 1; } - -message CheckPolicyResponse {} diff --git a/proto/headscale/v1/preauthkey.proto b/proto/headscale/v1/preauthkey.proto deleted file mode 100644 index 04e88821..00000000 --- a/proto/headscale/v1/preauthkey.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; -package headscale.v1; - -import "google/protobuf/timestamp.proto"; -import "headscale/v1/user.proto"; - -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -message PreAuthKey { - User user = 1; - uint64 id = 2; - string key = 3; - bool reusable = 4; - bool ephemeral = 5; - bool used = 6; - google.protobuf.Timestamp expiration = 7; - google.protobuf.Timestamp created_at = 8; - repeated string acl_tags = 9; -} - -message CreatePreAuthKeyRequest { - uint64 user = 1; - bool reusable = 2; - bool ephemeral = 3; - google.protobuf.Timestamp expiration = 4; - repeated string acl_tags = 5; -} - -message CreatePreAuthKeyResponse { - PreAuthKey pre_auth_key = 1; -} - -message ExpirePreAuthKeyRequest { - uint64 id = 1; -} - -message ExpirePreAuthKeyResponse {} - -message DeletePreAuthKeyRequest { - uint64 id = 1; -} - -message DeletePreAuthKeyResponse {} - -message ListPreAuthKeysRequest {} - -message ListPreAuthKeysResponse { - repeated PreAuthKey pre_auth_keys = 1; -} diff --git a/proto/headscale/v1/user.proto b/proto/headscale/v1/user.proto deleted file mode 100644 index bd71bcb1..00000000 --- a/proto/headscale/v1/user.proto +++ /dev/null @@ -1,44 +0,0 @@ -syntax = "proto3"; -package headscale.v1; -option go_package = "github.com/juanfont/headscale/gen/go/v1"; - -import "google/protobuf/timestamp.proto"; - -message User { - uint64 id = 1; - string name = 2; - google.protobuf.Timestamp created_at = 3; - string display_name = 4; - string email = 5; - string provider_id = 6; - string provider = 7; - string profile_pic_url = 8; -} - -message CreateUserRequest { - string name = 1; - string display_name = 2; - string email = 3; - string picture_url = 4; -} - -message CreateUserResponse { User user = 1; } - -message RenameUserRequest { - uint64 old_id = 1; - string new_name = 2; -} - -message RenameUserResponse { User user = 1; } - -message DeleteUserRequest { uint64 id = 1; } - -message DeleteUserResponse {} - -message ListUsersRequest { - uint64 id = 1; - string name = 2; - string email = 3; -} - -message ListUsersResponse { repeated User users = 1; }