From 2a38f301252c91840de4aa6c691233e45cabaa15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 29 Aug 2026 16:12:23 +0800 Subject: [PATCH] Add Tailscale certificate API commands --- adapter/tailscale.go | 3 + cmd/sing-box/cmd_api_tailscale_certificate.go | 15 + .../cmd_api_tailscale_certificate_export.go | 108 ++ .../cmd_api_tailscale_certificate_list.go | 39 + daemon/started_service.go | 28 + daemon/started_service.pb.go | 925 ++++++++++-------- daemon/started_service.proto | 13 + daemon/started_service_grpc.pb.go | 39 + protocol/tailscale/certificate.go | 22 + protocol/tailscale/status.go | 1 + 10 files changed, 797 insertions(+), 396 deletions(-) create mode 100644 cmd/sing-box/cmd_api_tailscale_certificate.go create mode 100644 cmd/sing-box/cmd_api_tailscale_certificate_export.go create mode 100644 cmd/sing-box/cmd_api_tailscale_certificate_list.go create mode 100644 protocol/tailscale/certificate.go diff --git a/adapter/tailscale.go b/adapter/tailscale.go index a97430ab..7e577473 100644 --- a/adapter/tailscale.go +++ b/adapter/tailscale.go @@ -3,6 +3,7 @@ package adapter import ( "context" "io" + "time" ) type TailscaleEndpoint interface { @@ -10,6 +11,7 @@ type TailscaleEndpoint interface { StartTailscalePing(ctx context.Context, peerIP string, fn func(*TailscalePingResult)) error SetTailscaleExitNode(ctx context.Context, stableID string) error Logout(ctx context.Context) error + GetTailscaleCertificate(ctx context.Context, domain string, minValidity time.Duration) (certificatePEM []byte, privateKeyPEM []byte, err error) SubscribeTaildropInbox(ctx context.Context, fn func(*TaildropInbox)) error MarkTaildropInboxRead() error SendTaildropFile(ctx context.Context, peerStableID string, fileName string, size int64, content io.Reader, progress func(sentBytes int64)) error @@ -61,6 +63,7 @@ type TailscaleEndpointStatus struct { WaitingFileCount int32 ReceivingFileCount int32 UnreadFileCount int32 + CertDomains []string } type TailscaleUserGroup struct { diff --git a/cmd/sing-box/cmd_api_tailscale_certificate.go b/cmd/sing-box/cmd_api_tailscale_certificate.go new file mode 100644 index 00000000..7fda2ae8 --- /dev/null +++ b/cmd/sing-box/cmd_api_tailscale_certificate.go @@ -0,0 +1,15 @@ +package main + +import ( + "github.com/spf13/cobra" +) + +var commandAPITailscaleCertificate = &cobra.Command{ + Use: "certificate", + Short: "Manage Tailscale HTTPS certificates", +} + +func init() { + commandAPITailscaleCertificate.PersistentFlags().StringVar(&commandAPITailscaleFlagEndpoint, "endpoint", "", commandAPITailscaleEndpointUsage) + commandAPITailscale.AddCommand(commandAPITailscaleCertificate) +} diff --git a/cmd/sing-box/cmd_api_tailscale_certificate_export.go b/cmd/sing-box/cmd_api_tailscale_certificate_export.go new file mode 100644 index 00000000..57369b9f --- /dev/null +++ b/cmd/sing-box/cmd_api_tailscale_certificate_export.go @@ -0,0 +1,108 @@ +package main + +import ( + "os" + "slices" + "strings" + "time" + + "github.com/sagernet/sing-box/daemon" + "github.com/sagernet/sing/common" + E "github.com/sagernet/sing/common/exceptions" + + "github.com/spf13/cobra" +) + +var ( + commandAPITailscaleCertificateExportFlagCertificateFile string + commandAPITailscaleCertificateExportFlagKeyFile string + commandAPITailscaleCertificateExportFlagMinValidity time.Duration +) + +var commandAPITailscaleCertificateExport = &cobra.Command{ + Use: "export ", + Short: "Export the HTTPS certificate and private key for a domain", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + return runAPITailscaleCertificateExport(args[0]) + }, +} + +func init() { + commandAPITailscaleCertificateExport.Flags().StringVar(&commandAPITailscaleCertificateExportFlagCertificateFile, "cert-file", "", "Output certificate file (default: .crt, \"-\" for stdout)") + commandAPITailscaleCertificateExport.Flags().StringVar(&commandAPITailscaleCertificateExportFlagKeyFile, "key-file", "", "Output private key file (default: .key, \"-\" for stdout)") + commandAPITailscaleCertificateExport.Flags().DurationVar(&commandAPITailscaleCertificateExportFlagMinValidity, "min-validity", 0, "Renew the certificate if it expires within this duration") + commandAPITailscaleCertificate.AddCommand(commandAPITailscaleCertificateExport) +} + +func runAPITailscaleCertificateExport(domain string) error { + clientConn, client, err := createAPIClient() + if err != nil { + return err + } + defer clientConn.Close() + endpoint, err := fetchTailscaleEndpoint(client) + if err != nil { + return err + } + certDomains := endpoint.GetCertDomains() + if len(certDomains) == 0 { + return E.New("no certificate domains, enable HTTPS in the Tailscale admin console") + } + if !slices.Contains(certDomains, domain) { + return E.New("unknown certificate domain: ", domain, "\nknown domains:\n", formatTailscaleCertificateDomains(certDomains)) + } + certificateFile := commandAPITailscaleCertificateExportFlagCertificateFile + if certificateFile == "" { + certificateFile = domain + ".crt" + } + keyFile := commandAPITailscaleCertificateExportFlagKeyFile + if keyFile == "" { + keyFile = domain + ".key" + } + writeStderrLine("fetching certificate for " + domain) + certificate, err := client.GetTailscaleCertificate(globalCtx, &daemon.TailscaleCertificateRequest{ + EndpointTag: endpoint.GetEndpointTag(), + Domain: domain, + MinValiditySeconds: int64(commandAPITailscaleCertificateExportFlagMinValidity / time.Second), + }) + if err != nil { + return err + } + if certificateFile == "-" && keyFile == "-" { + _, err = os.Stdout.Write(certificate.GetCertificatePEM()) + if err != nil { + return err + } + _, err = os.Stdout.Write(certificate.GetPrivateKeyPEM()) + return err + } + err = writeTailscaleCertificateFile(certificateFile, certificate.GetCertificatePEM(), 0o644) + if err != nil { + return E.Cause(err, "write certificate") + } + err = writeTailscaleCertificateFile(keyFile, certificate.GetPrivateKeyPEM(), 0o600) + if err != nil { + return E.Cause(err, "write private key") + } + return nil +} + +func writeTailscaleCertificateFile(path string, content []byte, mode os.FileMode) error { + if path == "-" { + _, err := os.Stdout.Write(content) + return err + } + err := os.WriteFile(path, content, mode) + if err != nil { + return err + } + writeStderrLine("wrote " + path) + return nil +} + +func formatTailscaleCertificateDomains(domains []string) string { + return strings.Join(common.Map(domains, func(it string) string { + return " " + it + }), "\n") +} diff --git a/cmd/sing-box/cmd_api_tailscale_certificate_list.go b/cmd/sing-box/cmd_api_tailscale_certificate_list.go new file mode 100644 index 00000000..b9e507e7 --- /dev/null +++ b/cmd/sing-box/cmd_api_tailscale_certificate_list.go @@ -0,0 +1,39 @@ +package main + +import ( + "github.com/spf13/cobra" +) + +var commandAPITailscaleCertificateList = &cobra.Command{ + Use: "list", + Short: "List domains that certificates can be issued for", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + return runAPITailscaleCertificateList() + }, +} + +func init() { + commandAPITailscaleCertificate.AddCommand(commandAPITailscaleCertificateList) +} + +func runAPITailscaleCertificateList() error { + clientConn, client, err := createAPIClient() + if err != nil { + return err + } + defer clientConn.Close() + endpoint, err := fetchTailscaleEndpoint(client) + if err != nil { + return err + } + table := tableWriter{ + header: []string{"DOMAIN"}, + emptyMessage: "no certificate domains, enable HTTPS in the Tailscale admin console", + } + for _, domain := range endpoint.GetCertDomains() { + table.addRow(domain) + } + table.flush() + return nil +} diff --git a/daemon/started_service.go b/daemon/started_service.go index 964e83fd..c088bead 100644 --- a/daemon/started_service.go +++ b/daemon/started_service.go @@ -1667,6 +1667,7 @@ func tailscaleEndpointStatusToProto(tag string, s *adapter.TailscaleEndpointStat WaitingFileCount: s.WaitingFileCount, ReceivingFileCount: s.ReceivingFileCount, UnreadFileCount: s.UnreadFileCount, + CertDomains: s.CertDomains, } if s.Self != nil { result.Self = tailscalePeerToProto(s.Self) @@ -1777,6 +1778,33 @@ func (s *StartedService) TailscaleLogout(ctx context.Context, request *Tailscale return &emptypb.Empty{}, nil } +func (s *StartedService) GetTailscaleCertificate(ctx context.Context, request *TailscaleCertificateRequest) (*TailscaleCertificate, error) { + err := s.waitForStarted(ctx) + if err != nil { + return nil, err + } + s.serviceAccess.RLock() + boxService := s.instance + s.serviceAccess.RUnlock() + + endpoint, err := resolveTailscaleEndpoint(boxService, request.EndpointTag) + if err != nil { + return nil, err + } + tsEndpoint, loaded := endpoint.(adapter.TailscaleEndpoint) + if !loaded { + return nil, status.Error(codes.FailedPrecondition, "endpoint does not support tailscale") + } + certificatePEM, privateKeyPEM, err := tsEndpoint.GetTailscaleCertificate(ctx, request.Domain, time.Duration(request.MinValiditySeconds)*time.Second) + if err != nil { + return nil, err + } + return &TailscaleCertificate{ + CertificatePEM: certificatePEM, + PrivateKeyPEM: privateKeyPEM, + }, nil +} + func (s *StartedService) SubscribeOpenConnectStatus( _ *emptypb.Empty, server grpc.ServerStreamingServer[OpenConnectStatusUpdate], diff --git a/daemon/started_service.pb.go b/daemon/started_service.pb.go index 718c9c5e..894063cd 100644 --- a/daemon/started_service.pb.go +++ b/daemon/started_service.pb.go @@ -2234,6 +2234,7 @@ type TailscaleEndpointStatus struct { WaitingFileCount int32 `protobuf:"varint,12,opt,name=waitingFileCount,proto3" json:"waitingFileCount,omitempty"` ReceivingFileCount int32 `protobuf:"varint,13,opt,name=receivingFileCount,proto3" json:"receivingFileCount,omitempty"` UnreadFileCount int32 `protobuf:"varint,14,opt,name=unreadFileCount,proto3" json:"unreadFileCount,omitempty"` + CertDomains []string `protobuf:"bytes,15,rep,name=certDomains,proto3" json:"certDomains,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2366,6 +2367,13 @@ func (x *TailscaleEndpointStatus) GetUnreadFileCount() int32 { return 0 } +func (x *TailscaleEndpointStatus) GetCertDomains() []string { + if x != nil { + return x.CertDomains + } + return nil +} + type TailscaleUserGroup struct { state protoimpl.MessageState `protogen:"open.v1"` UserID int64 `protobuf:"varint,1,opt,name=userID,proto3" json:"userID,omitempty"` @@ -2854,6 +2862,118 @@ func (x *TailscaleLogoutRequest) GetEndpointTag() string { return "" } +type TailscaleCertificateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + EndpointTag string `protobuf:"bytes,1,opt,name=endpointTag,proto3" json:"endpointTag,omitempty"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` + MinValiditySeconds int64 `protobuf:"varint,3,opt,name=minValiditySeconds,proto3" json:"minValiditySeconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TailscaleCertificateRequest) Reset() { + *x = TailscaleCertificateRequest{} + mi := &file_daemon_started_service_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TailscaleCertificateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TailscaleCertificateRequest) ProtoMessage() {} + +func (x *TailscaleCertificateRequest) ProtoReflect() protoreflect.Message { + mi := &file_daemon_started_service_proto_msgTypes[36] + 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 TailscaleCertificateRequest.ProtoReflect.Descriptor instead. +func (*TailscaleCertificateRequest) Descriptor() ([]byte, []int) { + return file_daemon_started_service_proto_rawDescGZIP(), []int{36} +} + +func (x *TailscaleCertificateRequest) GetEndpointTag() string { + if x != nil { + return x.EndpointTag + } + return "" +} + +func (x *TailscaleCertificateRequest) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +func (x *TailscaleCertificateRequest) GetMinValiditySeconds() int64 { + if x != nil { + return x.MinValiditySeconds + } + return 0 +} + +type TailscaleCertificate struct { + state protoimpl.MessageState `protogen:"open.v1"` + CertificatePEM []byte `protobuf:"bytes,1,opt,name=certificatePEM,proto3" json:"certificatePEM,omitempty"` + PrivateKeyPEM []byte `protobuf:"bytes,2,opt,name=privateKeyPEM,proto3" json:"privateKeyPEM,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TailscaleCertificate) Reset() { + *x = TailscaleCertificate{} + mi := &file_daemon_started_service_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TailscaleCertificate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TailscaleCertificate) ProtoMessage() {} + +func (x *TailscaleCertificate) ProtoReflect() protoreflect.Message { + mi := &file_daemon_started_service_proto_msgTypes[37] + 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 TailscaleCertificate.ProtoReflect.Descriptor instead. +func (*TailscaleCertificate) Descriptor() ([]byte, []int) { + return file_daemon_started_service_proto_rawDescGZIP(), []int{37} +} + +func (x *TailscaleCertificate) GetCertificatePEM() []byte { + if x != nil { + return x.CertificatePEM + } + return nil +} + +func (x *TailscaleCertificate) GetPrivateKeyPEM() []byte { + if x != nil { + return x.PrivateKeyPEM + } + return nil +} + type TailscaleSSHClientMessage struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Message: @@ -2868,7 +2988,7 @@ type TailscaleSSHClientMessage struct { func (x *TailscaleSSHClientMessage) Reset() { *x = TailscaleSSHClientMessage{} - mi := &file_daemon_started_service_proto_msgTypes[36] + mi := &file_daemon_started_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2880,7 +3000,7 @@ func (x *TailscaleSSHClientMessage) String() string { func (*TailscaleSSHClientMessage) ProtoMessage() {} func (x *TailscaleSSHClientMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[36] + mi := &file_daemon_started_service_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2893,7 +3013,7 @@ func (x *TailscaleSSHClientMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHClientMessage.ProtoReflect.Descriptor instead. func (*TailscaleSSHClientMessage) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{36} + return file_daemon_started_service_proto_rawDescGZIP(), []int{38} } func (x *TailscaleSSHClientMessage) GetMessage() isTailscaleSSHClientMessage_Message { @@ -2970,7 +3090,7 @@ type TailscaleSSHStart struct { func (x *TailscaleSSHStart) Reset() { *x = TailscaleSSHStart{} - mi := &file_daemon_started_service_proto_msgTypes[37] + mi := &file_daemon_started_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2982,7 +3102,7 @@ func (x *TailscaleSSHStart) String() string { func (*TailscaleSSHStart) ProtoMessage() {} func (x *TailscaleSSHStart) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[37] + mi := &file_daemon_started_service_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2995,7 +3115,7 @@ func (x *TailscaleSSHStart) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHStart.ProtoReflect.Descriptor instead. func (*TailscaleSSHStart) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{37} + return file_daemon_started_service_proto_rawDescGZIP(), []int{39} } func (x *TailscaleSSHStart) GetEndpointTag() string { @@ -3077,7 +3197,7 @@ type TailscaleSSHInput struct { func (x *TailscaleSSHInput) Reset() { *x = TailscaleSSHInput{} - mi := &file_daemon_started_service_proto_msgTypes[38] + mi := &file_daemon_started_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3089,7 +3209,7 @@ func (x *TailscaleSSHInput) String() string { func (*TailscaleSSHInput) ProtoMessage() {} func (x *TailscaleSSHInput) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[38] + mi := &file_daemon_started_service_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3102,7 +3222,7 @@ func (x *TailscaleSSHInput) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHInput.ProtoReflect.Descriptor instead. func (*TailscaleSSHInput) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{38} + return file_daemon_started_service_proto_rawDescGZIP(), []int{40} } func (x *TailscaleSSHInput) GetData() []byte { @@ -3124,7 +3244,7 @@ type TailscaleSSHResize struct { func (x *TailscaleSSHResize) Reset() { *x = TailscaleSSHResize{} - mi := &file_daemon_started_service_proto_msgTypes[39] + mi := &file_daemon_started_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3136,7 +3256,7 @@ func (x *TailscaleSSHResize) String() string { func (*TailscaleSSHResize) ProtoMessage() {} func (x *TailscaleSSHResize) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[39] + mi := &file_daemon_started_service_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3149,7 +3269,7 @@ func (x *TailscaleSSHResize) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHResize.ProtoReflect.Descriptor instead. func (*TailscaleSSHResize) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{39} + return file_daemon_started_service_proto_rawDescGZIP(), []int{41} } func (x *TailscaleSSHResize) GetColumns() int32 { @@ -3196,7 +3316,7 @@ type TailscaleSSHServerMessage struct { func (x *TailscaleSSHServerMessage) Reset() { *x = TailscaleSSHServerMessage{} - mi := &file_daemon_started_service_proto_msgTypes[40] + mi := &file_daemon_started_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3208,7 +3328,7 @@ func (x *TailscaleSSHServerMessage) String() string { func (*TailscaleSSHServerMessage) ProtoMessage() {} func (x *TailscaleSSHServerMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[40] + mi := &file_daemon_started_service_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3221,7 +3341,7 @@ func (x *TailscaleSSHServerMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHServerMessage.ProtoReflect.Descriptor instead. func (*TailscaleSSHServerMessage) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{40} + return file_daemon_started_service_proto_rawDescGZIP(), []int{42} } func (x *TailscaleSSHServerMessage) GetMessage() isTailscaleSSHServerMessage_Message { @@ -3319,7 +3439,7 @@ type TailscaleSSHAuthBanner struct { func (x *TailscaleSSHAuthBanner) Reset() { *x = TailscaleSSHAuthBanner{} - mi := &file_daemon_started_service_proto_msgTypes[41] + mi := &file_daemon_started_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3331,7 +3451,7 @@ func (x *TailscaleSSHAuthBanner) String() string { func (*TailscaleSSHAuthBanner) ProtoMessage() {} func (x *TailscaleSSHAuthBanner) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[41] + mi := &file_daemon_started_service_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3344,7 +3464,7 @@ func (x *TailscaleSSHAuthBanner) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHAuthBanner.ProtoReflect.Descriptor instead. func (*TailscaleSSHAuthBanner) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{41} + return file_daemon_started_service_proto_rawDescGZIP(), []int{43} } func (x *TailscaleSSHAuthBanner) GetMessage() string { @@ -3362,7 +3482,7 @@ type TailscaleSSHReady struct { func (x *TailscaleSSHReady) Reset() { *x = TailscaleSSHReady{} - mi := &file_daemon_started_service_proto_msgTypes[42] + mi := &file_daemon_started_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3374,7 +3494,7 @@ func (x *TailscaleSSHReady) String() string { func (*TailscaleSSHReady) ProtoMessage() {} func (x *TailscaleSSHReady) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[42] + mi := &file_daemon_started_service_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3387,7 +3507,7 @@ func (x *TailscaleSSHReady) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHReady.ProtoReflect.Descriptor instead. func (*TailscaleSSHReady) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{42} + return file_daemon_started_service_proto_rawDescGZIP(), []int{44} } type TailscaleSSHOutput struct { @@ -3399,7 +3519,7 @@ type TailscaleSSHOutput struct { func (x *TailscaleSSHOutput) Reset() { *x = TailscaleSSHOutput{} - mi := &file_daemon_started_service_proto_msgTypes[43] + mi := &file_daemon_started_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3411,7 +3531,7 @@ func (x *TailscaleSSHOutput) String() string { func (*TailscaleSSHOutput) ProtoMessage() {} func (x *TailscaleSSHOutput) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[43] + mi := &file_daemon_started_service_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3424,7 +3544,7 @@ func (x *TailscaleSSHOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHOutput.ProtoReflect.Descriptor instead. func (*TailscaleSSHOutput) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{43} + return file_daemon_started_service_proto_rawDescGZIP(), []int{45} } func (x *TailscaleSSHOutput) GetData() []byte { @@ -3445,7 +3565,7 @@ type TailscaleSSHExit struct { func (x *TailscaleSSHExit) Reset() { *x = TailscaleSSHExit{} - mi := &file_daemon_started_service_proto_msgTypes[44] + mi := &file_daemon_started_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3457,7 +3577,7 @@ func (x *TailscaleSSHExit) String() string { func (*TailscaleSSHExit) ProtoMessage() {} func (x *TailscaleSSHExit) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[44] + mi := &file_daemon_started_service_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3470,7 +3590,7 @@ func (x *TailscaleSSHExit) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHExit.ProtoReflect.Descriptor instead. func (*TailscaleSSHExit) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{44} + return file_daemon_started_service_proto_rawDescGZIP(), []int{46} } func (x *TailscaleSSHExit) GetExitCode() int32 { @@ -3503,7 +3623,7 @@ type TailscaleSSHError struct { func (x *TailscaleSSHError) Reset() { *x = TailscaleSSHError{} - mi := &file_daemon_started_service_proto_msgTypes[45] + mi := &file_daemon_started_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3515,7 +3635,7 @@ func (x *TailscaleSSHError) String() string { func (*TailscaleSSHError) ProtoMessage() {} func (x *TailscaleSSHError) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[45] + mi := &file_daemon_started_service_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3528,7 +3648,7 @@ func (x *TailscaleSSHError) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleSSHError.ProtoReflect.Descriptor instead. func (*TailscaleSSHError) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{45} + return file_daemon_started_service_proto_rawDescGZIP(), []int{47} } func (x *TailscaleSSHError) GetMessage() string { @@ -3547,7 +3667,7 @@ type SubscribeTaildropInboxRequest struct { func (x *SubscribeTaildropInboxRequest) Reset() { *x = SubscribeTaildropInboxRequest{} - mi := &file_daemon_started_service_proto_msgTypes[46] + mi := &file_daemon_started_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3559,7 +3679,7 @@ func (x *SubscribeTaildropInboxRequest) String() string { func (*SubscribeTaildropInboxRequest) ProtoMessage() {} func (x *SubscribeTaildropInboxRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[46] + mi := &file_daemon_started_service_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3572,7 +3692,7 @@ func (x *SubscribeTaildropInboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeTaildropInboxRequest.ProtoReflect.Descriptor instead. func (*SubscribeTaildropInboxRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{46} + return file_daemon_started_service_proto_rawDescGZIP(), []int{48} } func (x *SubscribeTaildropInboxRequest) GetEndpointTag() string { @@ -3591,7 +3711,7 @@ type MarkTaildropInboxReadRequest struct { func (x *MarkTaildropInboxReadRequest) Reset() { *x = MarkTaildropInboxReadRequest{} - mi := &file_daemon_started_service_proto_msgTypes[47] + mi := &file_daemon_started_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3603,7 +3723,7 @@ func (x *MarkTaildropInboxReadRequest) String() string { func (*MarkTaildropInboxReadRequest) ProtoMessage() {} func (x *MarkTaildropInboxReadRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[47] + mi := &file_daemon_started_service_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3616,7 +3736,7 @@ func (x *MarkTaildropInboxReadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MarkTaildropInboxReadRequest.ProtoReflect.Descriptor instead. func (*MarkTaildropInboxReadRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{47} + return file_daemon_started_service_proto_rawDescGZIP(), []int{49} } func (x *MarkTaildropInboxReadRequest) GetEndpointTag() string { @@ -3637,7 +3757,7 @@ type TaildropInbox struct { func (x *TaildropInbox) Reset() { *x = TaildropInbox{} - mi := &file_daemon_started_service_proto_msgTypes[48] + mi := &file_daemon_started_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3649,7 +3769,7 @@ func (x *TaildropInbox) String() string { func (*TaildropInbox) ProtoMessage() {} func (x *TaildropInbox) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[48] + mi := &file_daemon_started_service_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3662,7 +3782,7 @@ func (x *TaildropInbox) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropInbox.ProtoReflect.Descriptor instead. func (*TaildropInbox) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{48} + return file_daemon_started_service_proto_rawDescGZIP(), []int{50} } func (x *TaildropInbox) GetEndpointTag() string { @@ -3698,7 +3818,7 @@ type TaildropFile struct { func (x *TaildropFile) Reset() { *x = TaildropFile{} - mi := &file_daemon_started_service_proto_msgTypes[49] + mi := &file_daemon_started_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3710,7 +3830,7 @@ func (x *TaildropFile) String() string { func (*TaildropFile) ProtoMessage() {} func (x *TaildropFile) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[49] + mi := &file_daemon_started_service_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3723,7 +3843,7 @@ func (x *TaildropFile) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropFile.ProtoReflect.Descriptor instead. func (*TaildropFile) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{49} + return file_daemon_started_service_proto_rawDescGZIP(), []int{51} } func (x *TaildropFile) GetName() string { @@ -3767,7 +3887,7 @@ type TaildropReceivingFile struct { func (x *TaildropReceivingFile) Reset() { *x = TaildropReceivingFile{} - mi := &file_daemon_started_service_proto_msgTypes[50] + mi := &file_daemon_started_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3779,7 +3899,7 @@ func (x *TaildropReceivingFile) String() string { func (*TaildropReceivingFile) ProtoMessage() {} func (x *TaildropReceivingFile) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[50] + mi := &file_daemon_started_service_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3792,7 +3912,7 @@ func (x *TaildropReceivingFile) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropReceivingFile.ProtoReflect.Descriptor instead. func (*TaildropReceivingFile) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{50} + return file_daemon_started_service_proto_rawDescGZIP(), []int{52} } func (x *TaildropReceivingFile) GetName() string { @@ -3844,7 +3964,7 @@ type TaildropSendClientMessage struct { func (x *TaildropSendClientMessage) Reset() { *x = TaildropSendClientMessage{} - mi := &file_daemon_started_service_proto_msgTypes[51] + mi := &file_daemon_started_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3856,7 +3976,7 @@ func (x *TaildropSendClientMessage) String() string { func (*TaildropSendClientMessage) ProtoMessage() {} func (x *TaildropSendClientMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[51] + mi := &file_daemon_started_service_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3869,7 +3989,7 @@ func (x *TaildropSendClientMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropSendClientMessage.ProtoReflect.Descriptor instead. func (*TaildropSendClientMessage) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{51} + return file_daemon_started_service_proto_rawDescGZIP(), []int{53} } func (x *TaildropSendClientMessage) GetMessage() isTaildropSendClientMessage_Message { @@ -3939,7 +4059,7 @@ type TaildropSendStart struct { func (x *TaildropSendStart) Reset() { *x = TaildropSendStart{} - mi := &file_daemon_started_service_proto_msgTypes[52] + mi := &file_daemon_started_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3951,7 +4071,7 @@ func (x *TaildropSendStart) String() string { func (*TaildropSendStart) ProtoMessage() {} func (x *TaildropSendStart) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[52] + mi := &file_daemon_started_service_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3964,7 +4084,7 @@ func (x *TaildropSendStart) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropSendStart.ProtoReflect.Descriptor instead. func (*TaildropSendStart) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{52} + return file_daemon_started_service_proto_rawDescGZIP(), []int{54} } func (x *TaildropSendStart) GetEndpointTag() string { @@ -3998,7 +4118,7 @@ type TaildropOutgoingFile struct { func (x *TaildropOutgoingFile) Reset() { *x = TaildropOutgoingFile{} - mi := &file_daemon_started_service_proto_msgTypes[53] + mi := &file_daemon_started_service_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4010,7 +4130,7 @@ func (x *TaildropOutgoingFile) String() string { func (*TaildropOutgoingFile) ProtoMessage() {} func (x *TaildropOutgoingFile) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[53] + mi := &file_daemon_started_service_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4023,7 +4143,7 @@ func (x *TaildropOutgoingFile) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropOutgoingFile.ProtoReflect.Descriptor instead. func (*TaildropOutgoingFile) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{53} + return file_daemon_started_service_proto_rawDescGZIP(), []int{55} } func (x *TaildropOutgoingFile) GetName() string { @@ -4049,7 +4169,7 @@ type TaildropFileChunk struct { func (x *TaildropFileChunk) Reset() { *x = TaildropFileChunk{} - mi := &file_daemon_started_service_proto_msgTypes[54] + mi := &file_daemon_started_service_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4061,7 +4181,7 @@ func (x *TaildropFileChunk) String() string { func (*TaildropFileChunk) ProtoMessage() {} func (x *TaildropFileChunk) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[54] + mi := &file_daemon_started_service_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4074,7 +4194,7 @@ func (x *TaildropFileChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropFileChunk.ProtoReflect.Descriptor instead. func (*TaildropFileChunk) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{54} + return file_daemon_started_service_proto_rawDescGZIP(), []int{56} } func (x *TaildropFileChunk) GetData() []byte { @@ -4092,7 +4212,7 @@ type TaildropFileDone struct { func (x *TaildropFileDone) Reset() { *x = TaildropFileDone{} - mi := &file_daemon_started_service_proto_msgTypes[55] + mi := &file_daemon_started_service_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4104,7 +4224,7 @@ func (x *TaildropFileDone) String() string { func (*TaildropFileDone) ProtoMessage() {} func (x *TaildropFileDone) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[55] + mi := &file_daemon_started_service_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4117,7 +4237,7 @@ func (x *TaildropFileDone) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropFileDone.ProtoReflect.Descriptor instead. func (*TaildropFileDone) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{55} + return file_daemon_started_service_proto_rawDescGZIP(), []int{57} } type TaildropSendServerMessage struct { @@ -4133,7 +4253,7 @@ type TaildropSendServerMessage struct { func (x *TaildropSendServerMessage) Reset() { *x = TaildropSendServerMessage{} - mi := &file_daemon_started_service_proto_msgTypes[56] + mi := &file_daemon_started_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4145,7 +4265,7 @@ func (x *TaildropSendServerMessage) String() string { func (*TaildropSendServerMessage) ProtoMessage() {} func (x *TaildropSendServerMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[56] + mi := &file_daemon_started_service_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4158,7 +4278,7 @@ func (x *TaildropSendServerMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropSendServerMessage.ProtoReflect.Descriptor instead. func (*TaildropSendServerMessage) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{56} + return file_daemon_started_service_proto_rawDescGZIP(), []int{58} } func (x *TaildropSendServerMessage) GetMessage() isTaildropSendServerMessage_Message { @@ -4213,7 +4333,7 @@ type TaildropSendProgress struct { func (x *TaildropSendProgress) Reset() { *x = TaildropSendProgress{} - mi := &file_daemon_started_service_proto_msgTypes[57] + mi := &file_daemon_started_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4225,7 +4345,7 @@ func (x *TaildropSendProgress) String() string { func (*TaildropSendProgress) ProtoMessage() {} func (x *TaildropSendProgress) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[57] + mi := &file_daemon_started_service_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4238,7 +4358,7 @@ func (x *TaildropSendProgress) ProtoReflect() protoreflect.Message { // Deprecated: Use TaildropSendProgress.ProtoReflect.Descriptor instead. func (*TaildropSendProgress) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{57} + return file_daemon_started_service_proto_rawDescGZIP(), []int{59} } func (x *TaildropSendProgress) GetFileIndex() int32 { @@ -4272,7 +4392,7 @@ type DownloadTaildropFileRequest struct { func (x *DownloadTaildropFileRequest) Reset() { *x = DownloadTaildropFileRequest{} - mi := &file_daemon_started_service_proto_msgTypes[58] + mi := &file_daemon_started_service_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4284,7 +4404,7 @@ func (x *DownloadTaildropFileRequest) String() string { func (*DownloadTaildropFileRequest) ProtoMessage() {} func (x *DownloadTaildropFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[58] + mi := &file_daemon_started_service_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4297,7 +4417,7 @@ func (x *DownloadTaildropFileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadTaildropFileRequest.ProtoReflect.Descriptor instead. func (*DownloadTaildropFileRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{58} + return file_daemon_started_service_proto_rawDescGZIP(), []int{60} } func (x *DownloadTaildropFileRequest) GetEndpointTag() string { @@ -4324,7 +4444,7 @@ type DownloadTaildropFileChunk struct { func (x *DownloadTaildropFileChunk) Reset() { *x = DownloadTaildropFileChunk{} - mi := &file_daemon_started_service_proto_msgTypes[59] + mi := &file_daemon_started_service_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4336,7 +4456,7 @@ func (x *DownloadTaildropFileChunk) String() string { func (*DownloadTaildropFileChunk) ProtoMessage() {} func (x *DownloadTaildropFileChunk) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[59] + mi := &file_daemon_started_service_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4349,7 +4469,7 @@ func (x *DownloadTaildropFileChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadTaildropFileChunk.ProtoReflect.Descriptor instead. func (*DownloadTaildropFileChunk) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{59} + return file_daemon_started_service_proto_rawDescGZIP(), []int{61} } func (x *DownloadTaildropFileChunk) GetSize() int64 { @@ -4376,7 +4496,7 @@ type DeleteTaildropFileRequest struct { func (x *DeleteTaildropFileRequest) Reset() { *x = DeleteTaildropFileRequest{} - mi := &file_daemon_started_service_proto_msgTypes[60] + mi := &file_daemon_started_service_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4388,7 +4508,7 @@ func (x *DeleteTaildropFileRequest) String() string { func (*DeleteTaildropFileRequest) ProtoMessage() {} func (x *DeleteTaildropFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[60] + mi := &file_daemon_started_service_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4401,7 +4521,7 @@ func (x *DeleteTaildropFileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTaildropFileRequest.ProtoReflect.Descriptor instead. func (*DeleteTaildropFileRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{60} + return file_daemon_started_service_proto_rawDescGZIP(), []int{62} } func (x *DeleteTaildropFileRequest) GetEndpointTag() string { @@ -4429,7 +4549,7 @@ type CancelTaildropReceivingRequest struct { func (x *CancelTaildropReceivingRequest) Reset() { *x = CancelTaildropReceivingRequest{} - mi := &file_daemon_started_service_proto_msgTypes[61] + mi := &file_daemon_started_service_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4441,7 +4561,7 @@ func (x *CancelTaildropReceivingRequest) String() string { func (*CancelTaildropReceivingRequest) ProtoMessage() {} func (x *CancelTaildropReceivingRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[61] + mi := &file_daemon_started_service_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4454,7 +4574,7 @@ func (x *CancelTaildropReceivingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelTaildropReceivingRequest.ProtoReflect.Descriptor instead. func (*CancelTaildropReceivingRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{61} + return file_daemon_started_service_proto_rawDescGZIP(), []int{63} } func (x *CancelTaildropReceivingRequest) GetEndpointTag() string { @@ -4492,7 +4612,7 @@ type USBProviderMessage struct { func (x *USBProviderMessage) Reset() { *x = USBProviderMessage{} - mi := &file_daemon_started_service_proto_msgTypes[62] + mi := &file_daemon_started_service_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4504,7 +4624,7 @@ func (x *USBProviderMessage) String() string { func (*USBProviderMessage) ProtoMessage() {} func (x *USBProviderMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[62] + mi := &file_daemon_started_service_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4517,7 +4637,7 @@ func (x *USBProviderMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use USBProviderMessage.ProtoReflect.Descriptor instead. func (*USBProviderMessage) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{62} + return file_daemon_started_service_proto_rawDescGZIP(), []int{64} } func (x *USBProviderMessage) GetMessage() isUSBProviderMessage_Message { @@ -4591,7 +4711,7 @@ type USBServerMessage struct { func (x *USBServerMessage) Reset() { *x = USBServerMessage{} - mi := &file_daemon_started_service_proto_msgTypes[63] + mi := &file_daemon_started_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4603,7 +4723,7 @@ func (x *USBServerMessage) String() string { func (*USBServerMessage) ProtoMessage() {} func (x *USBServerMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[63] + mi := &file_daemon_started_service_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4616,7 +4736,7 @@ func (x *USBServerMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use USBServerMessage.ProtoReflect.Descriptor instead. func (*USBServerMessage) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{63} + return file_daemon_started_service_proto_rawDescGZIP(), []int{65} } func (x *USBServerMessage) GetMessage() isUSBServerMessage_Message { @@ -4713,7 +4833,7 @@ type USBDeviceDescriptor struct { func (x *USBDeviceDescriptor) Reset() { *x = USBDeviceDescriptor{} - mi := &file_daemon_started_service_proto_msgTypes[64] + mi := &file_daemon_started_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4725,7 +4845,7 @@ func (x *USBDeviceDescriptor) String() string { func (*USBDeviceDescriptor) ProtoMessage() {} func (x *USBDeviceDescriptor) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[64] + mi := &file_daemon_started_service_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4738,7 +4858,7 @@ func (x *USBDeviceDescriptor) ProtoReflect() protoreflect.Message { // Deprecated: Use USBDeviceDescriptor.ProtoReflect.Descriptor instead. func (*USBDeviceDescriptor) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{64} + return file_daemon_started_service_proto_rawDescGZIP(), []int{66} } func (x *USBDeviceDescriptor) GetDeviceId() string { @@ -4856,7 +4976,7 @@ type USBDeviceAttach struct { func (x *USBDeviceAttach) Reset() { *x = USBDeviceAttach{} - mi := &file_daemon_started_service_proto_msgTypes[65] + mi := &file_daemon_started_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4868,7 +4988,7 @@ func (x *USBDeviceAttach) String() string { func (*USBDeviceAttach) ProtoMessage() {} func (x *USBDeviceAttach) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[65] + mi := &file_daemon_started_service_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4881,7 +5001,7 @@ func (x *USBDeviceAttach) ProtoReflect() protoreflect.Message { // Deprecated: Use USBDeviceAttach.ProtoReflect.Descriptor instead. func (*USBDeviceAttach) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{65} + return file_daemon_started_service_proto_rawDescGZIP(), []int{67} } func (x *USBDeviceAttach) GetServerTag() string { @@ -4909,7 +5029,7 @@ type USBInterface struct { func (x *USBInterface) Reset() { *x = USBInterface{} - mi := &file_daemon_started_service_proto_msgTypes[66] + mi := &file_daemon_started_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4921,7 +5041,7 @@ func (x *USBInterface) String() string { func (*USBInterface) ProtoMessage() {} func (x *USBInterface) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[66] + mi := &file_daemon_started_service_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4934,7 +5054,7 @@ func (x *USBInterface) ProtoReflect() protoreflect.Message { // Deprecated: Use USBInterface.ProtoReflect.Descriptor instead. func (*USBInterface) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{66} + return file_daemon_started_service_proto_rawDescGZIP(), []int{68} } func (x *USBInterface) GetInterfaceClass() uint32 { @@ -4967,7 +5087,7 @@ type USBDeviceDetach struct { func (x *USBDeviceDetach) Reset() { *x = USBDeviceDetach{} - mi := &file_daemon_started_service_proto_msgTypes[67] + mi := &file_daemon_started_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4979,7 +5099,7 @@ func (x *USBDeviceDetach) String() string { func (*USBDeviceDetach) ProtoMessage() {} func (x *USBDeviceDetach) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[67] + mi := &file_daemon_started_service_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4992,7 +5112,7 @@ func (x *USBDeviceDetach) ProtoReflect() protoreflect.Message { // Deprecated: Use USBDeviceDetach.ProtoReflect.Descriptor instead. func (*USBDeviceDetach) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{67} + return file_daemon_started_service_proto_rawDescGZIP(), []int{69} } func (x *USBDeviceDetach) GetDeviceId() string { @@ -5012,7 +5132,7 @@ type USBDeviceReady struct { func (x *USBDeviceReady) Reset() { *x = USBDeviceReady{} - mi := &file_daemon_started_service_proto_msgTypes[68] + mi := &file_daemon_started_service_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5024,7 +5144,7 @@ func (x *USBDeviceReady) String() string { func (*USBDeviceReady) ProtoMessage() {} func (x *USBDeviceReady) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[68] + mi := &file_daemon_started_service_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5037,7 +5157,7 @@ func (x *USBDeviceReady) ProtoReflect() protoreflect.Message { // Deprecated: Use USBDeviceReady.ProtoReflect.Descriptor instead. func (*USBDeviceReady) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{68} + return file_daemon_started_service_proto_rawDescGZIP(), []int{70} } func (x *USBDeviceReady) GetDeviceId() string { @@ -5074,7 +5194,7 @@ type USBURBRequest struct { func (x *USBURBRequest) Reset() { *x = USBURBRequest{} - mi := &file_daemon_started_service_proto_msgTypes[69] + mi := &file_daemon_started_service_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5086,7 +5206,7 @@ func (x *USBURBRequest) String() string { func (*USBURBRequest) ProtoMessage() {} func (x *USBURBRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[69] + mi := &file_daemon_started_service_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5099,7 +5219,7 @@ func (x *USBURBRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use USBURBRequest.ProtoReflect.Descriptor instead. func (*USBURBRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{69} + return file_daemon_started_service_proto_rawDescGZIP(), []int{71} } func (x *USBURBRequest) GetDeviceId() string { @@ -5200,7 +5320,7 @@ type USBURBResponse struct { func (x *USBURBResponse) Reset() { *x = USBURBResponse{} - mi := &file_daemon_started_service_proto_msgTypes[70] + mi := &file_daemon_started_service_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5212,7 +5332,7 @@ func (x *USBURBResponse) String() string { func (*USBURBResponse) ProtoMessage() {} func (x *USBURBResponse) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[70] + mi := &file_daemon_started_service_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5225,7 +5345,7 @@ func (x *USBURBResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use USBURBResponse.ProtoReflect.Descriptor instead. func (*USBURBResponse) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{70} + return file_daemon_started_service_proto_rawDescGZIP(), []int{72} } func (x *USBURBResponse) GetDeviceId() string { @@ -5282,7 +5402,7 @@ type USBIsoPacket struct { func (x *USBIsoPacket) Reset() { *x = USBIsoPacket{} - mi := &file_daemon_started_service_proto_msgTypes[71] + mi := &file_daemon_started_service_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5294,7 +5414,7 @@ func (x *USBIsoPacket) String() string { func (*USBIsoPacket) ProtoMessage() {} func (x *USBIsoPacket) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[71] + mi := &file_daemon_started_service_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5307,7 +5427,7 @@ func (x *USBIsoPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use USBIsoPacket.ProtoReflect.Descriptor instead. func (*USBIsoPacket) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{71} + return file_daemon_started_service_proto_rawDescGZIP(), []int{73} } func (x *USBIsoPacket) GetOffset() int32 { @@ -5348,7 +5468,7 @@ type USBEndpointAbort struct { func (x *USBEndpointAbort) Reset() { *x = USBEndpointAbort{} - mi := &file_daemon_started_service_proto_msgTypes[72] + mi := &file_daemon_started_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5360,7 +5480,7 @@ func (x *USBEndpointAbort) String() string { func (*USBEndpointAbort) ProtoMessage() {} func (x *USBEndpointAbort) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[72] + mi := &file_daemon_started_service_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5373,7 +5493,7 @@ func (x *USBEndpointAbort) ProtoReflect() protoreflect.Message { // Deprecated: Use USBEndpointAbort.ProtoReflect.Descriptor instead. func (*USBEndpointAbort) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{72} + return file_daemon_started_service_proto_rawDescGZIP(), []int{74} } func (x *USBEndpointAbort) GetDeviceId() string { @@ -5400,7 +5520,7 @@ type USBError struct { func (x *USBError) Reset() { *x = USBError{} - mi := &file_daemon_started_service_proto_msgTypes[73] + mi := &file_daemon_started_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5412,7 +5532,7 @@ func (x *USBError) String() string { func (*USBError) ProtoMessage() {} func (x *USBError) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[73] + mi := &file_daemon_started_service_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5425,7 +5545,7 @@ func (x *USBError) ProtoReflect() protoreflect.Message { // Deprecated: Use USBError.ProtoReflect.Descriptor instead. func (*USBError) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{73} + return file_daemon_started_service_proto_rawDescGZIP(), []int{75} } func (x *USBError) GetDeviceId() string { @@ -5451,7 +5571,7 @@ type USBIPServerStatusUpdate struct { func (x *USBIPServerStatusUpdate) Reset() { *x = USBIPServerStatusUpdate{} - mi := &file_daemon_started_service_proto_msgTypes[74] + mi := &file_daemon_started_service_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5463,7 +5583,7 @@ func (x *USBIPServerStatusUpdate) String() string { func (*USBIPServerStatusUpdate) ProtoMessage() {} func (x *USBIPServerStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[74] + mi := &file_daemon_started_service_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5476,7 +5596,7 @@ func (x *USBIPServerStatusUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use USBIPServerStatusUpdate.ProtoReflect.Descriptor instead. func (*USBIPServerStatusUpdate) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{74} + return file_daemon_started_service_proto_rawDescGZIP(), []int{76} } func (x *USBIPServerStatusUpdate) GetServers() []*USBIPServerStatus { @@ -5496,7 +5616,7 @@ type USBIPServerStatus struct { func (x *USBIPServerStatus) Reset() { *x = USBIPServerStatus{} - mi := &file_daemon_started_service_proto_msgTypes[75] + mi := &file_daemon_started_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5508,7 +5628,7 @@ func (x *USBIPServerStatus) String() string { func (*USBIPServerStatus) ProtoMessage() {} func (x *USBIPServerStatus) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[75] + mi := &file_daemon_started_service_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5521,7 +5641,7 @@ func (x *USBIPServerStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use USBIPServerStatus.ProtoReflect.Descriptor instead. func (*USBIPServerStatus) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{75} + return file_daemon_started_service_proto_rawDescGZIP(), []int{77} } func (x *USBIPServerStatus) GetServerTag() string { @@ -5551,7 +5671,7 @@ type USBSharedDevice struct { func (x *USBSharedDevice) Reset() { *x = USBSharedDevice{} - mi := &file_daemon_started_service_proto_msgTypes[76] + mi := &file_daemon_started_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5563,7 +5683,7 @@ func (x *USBSharedDevice) String() string { func (*USBSharedDevice) ProtoMessage() {} func (x *USBSharedDevice) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[76] + mi := &file_daemon_started_service_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5576,7 +5696,7 @@ func (x *USBSharedDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use USBSharedDevice.ProtoReflect.Descriptor instead. func (*USBSharedDevice) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{76} + return file_daemon_started_service_proto_rawDescGZIP(), []int{78} } func (x *USBSharedDevice) GetDescriptor_() *USBDeviceDescriptor { @@ -5623,7 +5743,7 @@ type OpenConnectStatusUpdate struct { func (x *OpenConnectStatusUpdate) Reset() { *x = OpenConnectStatusUpdate{} - mi := &file_daemon_started_service_proto_msgTypes[77] + mi := &file_daemon_started_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5635,7 +5755,7 @@ func (x *OpenConnectStatusUpdate) String() string { func (*OpenConnectStatusUpdate) ProtoMessage() {} func (x *OpenConnectStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[77] + mi := &file_daemon_started_service_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5648,7 +5768,7 @@ func (x *OpenConnectStatusUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectStatusUpdate.ProtoReflect.Descriptor instead. func (*OpenConnectStatusUpdate) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{77} + return file_daemon_started_service_proto_rawDescGZIP(), []int{79} } func (x *OpenConnectStatusUpdate) GetEndpoints() []*OpenConnectEndpointStatus { @@ -5672,7 +5792,7 @@ type OpenConnectEndpointStatus struct { func (x *OpenConnectEndpointStatus) Reset() { *x = OpenConnectEndpointStatus{} - mi := &file_daemon_started_service_proto_msgTypes[78] + mi := &file_daemon_started_service_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5684,7 +5804,7 @@ func (x *OpenConnectEndpointStatus) String() string { func (*OpenConnectEndpointStatus) ProtoMessage() {} func (x *OpenConnectEndpointStatus) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[78] + mi := &file_daemon_started_service_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5697,7 +5817,7 @@ func (x *OpenConnectEndpointStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectEndpointStatus.ProtoReflect.Descriptor instead. func (*OpenConnectEndpointStatus) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{78} + return file_daemon_started_service_proto_rawDescGZIP(), []int{80} } func (x *OpenConnectEndpointStatus) GetEndpointTag() string { @@ -5758,7 +5878,7 @@ type OpenConnectTunnelInfo struct { func (x *OpenConnectTunnelInfo) Reset() { *x = OpenConnectTunnelInfo{} - mi := &file_daemon_started_service_proto_msgTypes[79] + mi := &file_daemon_started_service_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5770,7 +5890,7 @@ func (x *OpenConnectTunnelInfo) String() string { func (*OpenConnectTunnelInfo) ProtoMessage() {} func (x *OpenConnectTunnelInfo) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[79] + mi := &file_daemon_started_service_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5783,7 +5903,7 @@ func (x *OpenConnectTunnelInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectTunnelInfo.ProtoReflect.Descriptor instead. func (*OpenConnectTunnelInfo) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{79} + return file_daemon_started_service_proto_rawDescGZIP(), []int{81} } func (x *OpenConnectTunnelInfo) GetServer() string { @@ -5859,7 +5979,7 @@ type OpenConnectAuthChallenge struct { func (x *OpenConnectAuthChallenge) Reset() { *x = OpenConnectAuthChallenge{} - mi := &file_daemon_started_service_proto_msgTypes[80] + mi := &file_daemon_started_service_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5871,7 +5991,7 @@ func (x *OpenConnectAuthChallenge) String() string { func (*OpenConnectAuthChallenge) ProtoMessage() {} func (x *OpenConnectAuthChallenge) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[80] + mi := &file_daemon_started_service_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5884,7 +6004,7 @@ func (x *OpenConnectAuthChallenge) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectAuthChallenge.ProtoReflect.Descriptor instead. func (*OpenConnectAuthChallenge) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{80} + return file_daemon_started_service_proto_rawDescGZIP(), []int{82} } func (x *OpenConnectAuthChallenge) GetId() string { @@ -5965,7 +6085,7 @@ type OpenConnectAuthForm struct { func (x *OpenConnectAuthForm) Reset() { *x = OpenConnectAuthForm{} - mi := &file_daemon_started_service_proto_msgTypes[81] + mi := &file_daemon_started_service_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5977,7 +6097,7 @@ func (x *OpenConnectAuthForm) String() string { func (*OpenConnectAuthForm) ProtoMessage() {} func (x *OpenConnectAuthForm) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[81] + mi := &file_daemon_started_service_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5990,7 +6110,7 @@ func (x *OpenConnectAuthForm) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectAuthForm.ProtoReflect.Descriptor instead. func (*OpenConnectAuthForm) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{81} + return file_daemon_started_service_proto_rawDescGZIP(), []int{83} } func (x *OpenConnectAuthForm) GetFields() []*OpenConnectAuthFormField { @@ -6014,7 +6134,7 @@ type OpenConnectAuthFormField struct { func (x *OpenConnectAuthFormField) Reset() { *x = OpenConnectAuthFormField{} - mi := &file_daemon_started_service_proto_msgTypes[82] + mi := &file_daemon_started_service_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6026,7 +6146,7 @@ func (x *OpenConnectAuthFormField) String() string { func (*OpenConnectAuthFormField) ProtoMessage() {} func (x *OpenConnectAuthFormField) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[82] + mi := &file_daemon_started_service_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6039,7 +6159,7 @@ func (x *OpenConnectAuthFormField) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectAuthFormField.ProtoReflect.Descriptor instead. func (*OpenConnectAuthFormField) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{82} + return file_daemon_started_service_proto_rawDescGZIP(), []int{84} } func (x *OpenConnectAuthFormField) GetSubmissionKey() string { @@ -6094,7 +6214,7 @@ type OpenConnectAuthFormChoice struct { func (x *OpenConnectAuthFormChoice) Reset() { *x = OpenConnectAuthFormChoice{} - mi := &file_daemon_started_service_proto_msgTypes[83] + mi := &file_daemon_started_service_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6106,7 +6226,7 @@ func (x *OpenConnectAuthFormChoice) String() string { func (*OpenConnectAuthFormChoice) ProtoMessage() {} func (x *OpenConnectAuthFormChoice) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[83] + mi := &file_daemon_started_service_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6119,7 +6239,7 @@ func (x *OpenConnectAuthFormChoice) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectAuthFormChoice.ProtoReflect.Descriptor instead. func (*OpenConnectAuthFormChoice) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{83} + return file_daemon_started_service_proto_rawDescGZIP(), []int{85} } func (x *OpenConnectAuthFormChoice) GetValue() string { @@ -6151,7 +6271,7 @@ type OpenConnectBrowserRequest struct { func (x *OpenConnectBrowserRequest) Reset() { *x = OpenConnectBrowserRequest{} - mi := &file_daemon_started_service_proto_msgTypes[84] + mi := &file_daemon_started_service_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6163,7 +6283,7 @@ func (x *OpenConnectBrowserRequest) String() string { func (*OpenConnectBrowserRequest) ProtoMessage() {} func (x *OpenConnectBrowserRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[84] + mi := &file_daemon_started_service_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6176,7 +6296,7 @@ func (x *OpenConnectBrowserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectBrowserRequest.ProtoReflect.Descriptor instead. func (*OpenConnectBrowserRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{84} + return file_daemon_started_service_proto_rawDescGZIP(), []int{86} } func (x *OpenConnectBrowserRequest) GetUrl() string { @@ -6238,7 +6358,7 @@ type OpenConnectBrowserCookie struct { func (x *OpenConnectBrowserCookie) Reset() { *x = OpenConnectBrowserCookie{} - mi := &file_daemon_started_service_proto_msgTypes[85] + mi := &file_daemon_started_service_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6250,7 +6370,7 @@ func (x *OpenConnectBrowserCookie) String() string { func (*OpenConnectBrowserCookie) ProtoMessage() {} func (x *OpenConnectBrowserCookie) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[85] + mi := &file_daemon_started_service_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6263,7 +6383,7 @@ func (x *OpenConnectBrowserCookie) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectBrowserCookie.ProtoReflect.Descriptor instead. func (*OpenConnectBrowserCookie) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{85} + return file_daemon_started_service_proto_rawDescGZIP(), []int{87} } func (x *OpenConnectBrowserCookie) GetName() string { @@ -6290,7 +6410,7 @@ type OpenConnectBrowserHeader struct { func (x *OpenConnectBrowserHeader) Reset() { *x = OpenConnectBrowserHeader{} - mi := &file_daemon_started_service_proto_msgTypes[86] + mi := &file_daemon_started_service_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6302,7 +6422,7 @@ func (x *OpenConnectBrowserHeader) String() string { func (*OpenConnectBrowserHeader) ProtoMessage() {} func (x *OpenConnectBrowserHeader) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[86] + mi := &file_daemon_started_service_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6315,7 +6435,7 @@ func (x *OpenConnectBrowserHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectBrowserHeader.ProtoReflect.Descriptor instead. func (*OpenConnectBrowserHeader) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{86} + return file_daemon_started_service_proto_rawDescGZIP(), []int{88} } func (x *OpenConnectBrowserHeader) GetName() string { @@ -6341,7 +6461,7 @@ type OpenConnectAuthFormResponse struct { func (x *OpenConnectAuthFormResponse) Reset() { *x = OpenConnectAuthFormResponse{} - mi := &file_daemon_started_service_proto_msgTypes[87] + mi := &file_daemon_started_service_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6353,7 +6473,7 @@ func (x *OpenConnectAuthFormResponse) String() string { func (*OpenConnectAuthFormResponse) ProtoMessage() {} func (x *OpenConnectAuthFormResponse) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[87] + mi := &file_daemon_started_service_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6366,7 +6486,7 @@ func (x *OpenConnectAuthFormResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectAuthFormResponse.ProtoReflect.Descriptor instead. func (*OpenConnectAuthFormResponse) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{87} + return file_daemon_started_service_proto_rawDescGZIP(), []int{89} } func (x *OpenConnectAuthFormResponse) GetValues() map[string]string { @@ -6387,7 +6507,7 @@ type OpenConnectBrowserResult struct { func (x *OpenConnectBrowserResult) Reset() { *x = OpenConnectBrowserResult{} - mi := &file_daemon_started_service_proto_msgTypes[88] + mi := &file_daemon_started_service_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6399,7 +6519,7 @@ func (x *OpenConnectBrowserResult) String() string { func (*OpenConnectBrowserResult) ProtoMessage() {} func (x *OpenConnectBrowserResult) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[88] + mi := &file_daemon_started_service_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6412,7 +6532,7 @@ func (x *OpenConnectBrowserResult) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectBrowserResult.ProtoReflect.Descriptor instead. func (*OpenConnectBrowserResult) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{88} + return file_daemon_started_service_proto_rawDescGZIP(), []int{90} } func (x *OpenConnectBrowserResult) GetFinalURL() string { @@ -6451,7 +6571,7 @@ type OpenConnectAuthResponseSubmission struct { func (x *OpenConnectAuthResponseSubmission) Reset() { *x = OpenConnectAuthResponseSubmission{} - mi := &file_daemon_started_service_proto_msgTypes[89] + mi := &file_daemon_started_service_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6463,7 +6583,7 @@ func (x *OpenConnectAuthResponseSubmission) String() string { func (*OpenConnectAuthResponseSubmission) ProtoMessage() {} func (x *OpenConnectAuthResponseSubmission) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[89] + mi := &file_daemon_started_service_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6476,7 +6596,7 @@ func (x *OpenConnectAuthResponseSubmission) ProtoReflect() protoreflect.Message // Deprecated: Use OpenConnectAuthResponseSubmission.ProtoReflect.Descriptor instead. func (*OpenConnectAuthResponseSubmission) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{89} + return file_daemon_started_service_proto_rawDescGZIP(), []int{91} } func (x *OpenConnectAuthResponseSubmission) GetEndpointTag() string { @@ -6544,7 +6664,7 @@ type OpenConnectAuthChallengeCancel struct { func (x *OpenConnectAuthChallengeCancel) Reset() { *x = OpenConnectAuthChallengeCancel{} - mi := &file_daemon_started_service_proto_msgTypes[90] + mi := &file_daemon_started_service_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6556,7 +6676,7 @@ func (x *OpenConnectAuthChallengeCancel) String() string { func (*OpenConnectAuthChallengeCancel) ProtoMessage() {} func (x *OpenConnectAuthChallengeCancel) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[90] + mi := &file_daemon_started_service_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6569,7 +6689,7 @@ func (x *OpenConnectAuthChallengeCancel) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenConnectAuthChallengeCancel.ProtoReflect.Descriptor instead. func (*OpenConnectAuthChallengeCancel) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{90} + return file_daemon_started_service_proto_rawDescGZIP(), []int{92} } func (x *OpenConnectAuthChallengeCancel) GetEndpointTag() string { @@ -6595,7 +6715,7 @@ type OpenVPNStatusUpdate struct { func (x *OpenVPNStatusUpdate) Reset() { *x = OpenVPNStatusUpdate{} - mi := &file_daemon_started_service_proto_msgTypes[91] + mi := &file_daemon_started_service_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6607,7 +6727,7 @@ func (x *OpenVPNStatusUpdate) String() string { func (*OpenVPNStatusUpdate) ProtoMessage() {} func (x *OpenVPNStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[91] + mi := &file_daemon_started_service_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6620,7 +6740,7 @@ func (x *OpenVPNStatusUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenVPNStatusUpdate.ProtoReflect.Descriptor instead. func (*OpenVPNStatusUpdate) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{91} + return file_daemon_started_service_proto_rawDescGZIP(), []int{93} } func (x *OpenVPNStatusUpdate) GetEndpoints() []*OpenVPNEndpointStatus { @@ -6644,7 +6764,7 @@ type OpenVPNEndpointStatus struct { func (x *OpenVPNEndpointStatus) Reset() { *x = OpenVPNEndpointStatus{} - mi := &file_daemon_started_service_proto_msgTypes[92] + mi := &file_daemon_started_service_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6656,7 +6776,7 @@ func (x *OpenVPNEndpointStatus) String() string { func (*OpenVPNEndpointStatus) ProtoMessage() {} func (x *OpenVPNEndpointStatus) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[92] + mi := &file_daemon_started_service_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6669,7 +6789,7 @@ func (x *OpenVPNEndpointStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenVPNEndpointStatus.ProtoReflect.Descriptor instead. func (*OpenVPNEndpointStatus) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{92} + return file_daemon_started_service_proto_rawDescGZIP(), []int{94} } func (x *OpenVPNEndpointStatus) GetEndpointTag() string { @@ -6730,7 +6850,7 @@ type OpenVPNTunnelInfo struct { func (x *OpenVPNTunnelInfo) Reset() { *x = OpenVPNTunnelInfo{} - mi := &file_daemon_started_service_proto_msgTypes[93] + mi := &file_daemon_started_service_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6742,7 +6862,7 @@ func (x *OpenVPNTunnelInfo) String() string { func (*OpenVPNTunnelInfo) ProtoMessage() {} func (x *OpenVPNTunnelInfo) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[93] + mi := &file_daemon_started_service_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6755,7 +6875,7 @@ func (x *OpenVPNTunnelInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenVPNTunnelInfo.ProtoReflect.Descriptor instead. func (*OpenVPNTunnelInfo) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{93} + return file_daemon_started_service_proto_rawDescGZIP(), []int{95} } func (x *OpenVPNTunnelInfo) GetServer() string { @@ -6831,7 +6951,7 @@ type OpenVPNChallenge struct { func (x *OpenVPNChallenge) Reset() { *x = OpenVPNChallenge{} - mi := &file_daemon_started_service_proto_msgTypes[94] + mi := &file_daemon_started_service_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6843,7 +6963,7 @@ func (x *OpenVPNChallenge) String() string { func (*OpenVPNChallenge) ProtoMessage() {} func (x *OpenVPNChallenge) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[94] + mi := &file_daemon_started_service_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6856,7 +6976,7 @@ func (x *OpenVPNChallenge) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenVPNChallenge.ProtoReflect.Descriptor instead. func (*OpenVPNChallenge) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{94} + return file_daemon_started_service_proto_rawDescGZIP(), []int{96} } func (x *OpenVPNChallenge) GetId() string { @@ -6935,7 +7055,7 @@ type OpenVPNChallengeSubmission struct { func (x *OpenVPNChallengeSubmission) Reset() { *x = OpenVPNChallengeSubmission{} - mi := &file_daemon_started_service_proto_msgTypes[95] + mi := &file_daemon_started_service_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6947,7 +7067,7 @@ func (x *OpenVPNChallengeSubmission) String() string { func (*OpenVPNChallengeSubmission) ProtoMessage() {} func (x *OpenVPNChallengeSubmission) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[95] + mi := &file_daemon_started_service_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6960,7 +7080,7 @@ func (x *OpenVPNChallengeSubmission) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenVPNChallengeSubmission.ProtoReflect.Descriptor instead. func (*OpenVPNChallengeSubmission) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{95} + return file_daemon_started_service_proto_rawDescGZIP(), []int{97} } func (x *OpenVPNChallengeSubmission) GetEndpointTag() string { @@ -7008,7 +7128,7 @@ type OpenVPNChallengeCancel struct { func (x *OpenVPNChallengeCancel) Reset() { *x = OpenVPNChallengeCancel{} - mi := &file_daemon_started_service_proto_msgTypes[96] + mi := &file_daemon_started_service_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7020,7 +7140,7 @@ func (x *OpenVPNChallengeCancel) String() string { func (*OpenVPNChallengeCancel) ProtoMessage() {} func (x *OpenVPNChallengeCancel) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[96] + mi := &file_daemon_started_service_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7033,7 +7153,7 @@ func (x *OpenVPNChallengeCancel) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenVPNChallengeCancel.ProtoReflect.Descriptor instead. func (*OpenVPNChallengeCancel) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{96} + return file_daemon_started_service_proto_rawDescGZIP(), []int{98} } func (x *OpenVPNChallengeCancel) GetEndpointTag() string { @@ -7063,7 +7183,7 @@ type NotificationEvent struct { func (x *NotificationEvent) Reset() { *x = NotificationEvent{} - mi := &file_daemon_started_service_proto_msgTypes[97] + mi := &file_daemon_started_service_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7075,7 +7195,7 @@ func (x *NotificationEvent) String() string { func (*NotificationEvent) ProtoMessage() {} func (x *NotificationEvent) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[97] + mi := &file_daemon_started_service_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7088,7 +7208,7 @@ func (x *NotificationEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use NotificationEvent.ProtoReflect.Descriptor instead. func (*NotificationEvent) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{97} + return file_daemon_started_service_proto_rawDescGZIP(), []int{99} } func (x *NotificationEvent) GetEvent() isNotificationEvent_Event { @@ -7147,7 +7267,7 @@ type Notification struct { func (x *Notification) Reset() { *x = Notification{} - mi := &file_daemon_started_service_proto_msgTypes[98] + mi := &file_daemon_started_service_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7159,7 +7279,7 @@ func (x *Notification) String() string { func (*Notification) ProtoMessage() {} func (x *Notification) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[98] + mi := &file_daemon_started_service_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7172,7 +7292,7 @@ func (x *Notification) ProtoReflect() protoreflect.Message { // Deprecated: Use Notification.ProtoReflect.Descriptor instead. func (*Notification) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{98} + return file_daemon_started_service_proto_rawDescGZIP(), []int{100} } func (x *Notification) GetIdentifier() string { @@ -7234,7 +7354,7 @@ type NotificationCancel struct { func (x *NotificationCancel) Reset() { *x = NotificationCancel{} - mi := &file_daemon_started_service_proto_msgTypes[99] + mi := &file_daemon_started_service_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7246,7 +7366,7 @@ func (x *NotificationCancel) String() string { func (*NotificationCancel) ProtoMessage() {} func (x *NotificationCancel) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[99] + mi := &file_daemon_started_service_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7259,7 +7379,7 @@ func (x *NotificationCancel) ProtoReflect() protoreflect.Message { // Deprecated: Use NotificationCancel.ProtoReflect.Descriptor instead. func (*NotificationCancel) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{99} + return file_daemon_started_service_proto_rawDescGZIP(), []int{101} } func (x *NotificationCancel) GetIdentifier() string { @@ -7286,7 +7406,7 @@ type Log_Message struct { func (x *Log_Message) Reset() { *x = Log_Message{} - mi := &file_daemon_started_service_proto_msgTypes[100] + mi := &file_daemon_started_service_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7298,7 +7418,7 @@ func (x *Log_Message) String() string { func (*Log_Message) ProtoMessage() {} func (x *Log_Message) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[100] + mi := &file_daemon_started_service_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7494,7 +7614,7 @@ const file_daemon_started_service_proto_rawDesc = "" + "\x05error\x18\a \x01(\tR\x05error\x12*\n" + "\x10natTypeSupported\x18\b \x01(\bR\x10natTypeSupported\"V\n" + "\x15TailscaleStatusUpdate\x12=\n" + - "\tendpoints\x18\x01 \x03(\v2\x1f.daemon.TailscaleEndpointStatusR\tendpoints\"\xc1\x04\n" + + "\tendpoints\x18\x01 \x03(\v2\x1f.daemon.TailscaleEndpointStatusR\tendpoints\"\xe3\x04\n" + "\x17TailscaleEndpointStatus\x12 \n" + "\vendpointTag\x18\x01 \x01(\tR\vendpointTag\x12\"\n" + "\fbackendState\x18\x02 \x01(\tR\fbackendState\x12\x1c\n" + @@ -7512,7 +7632,8 @@ const file_daemon_started_service_proto_rawDesc = "" + "\rcanShareFiles\x18\v \x01(\bR\rcanShareFiles\x12*\n" + "\x10waitingFileCount\x18\f \x01(\x05R\x10waitingFileCount\x12.\n" + "\x12receivingFileCount\x18\r \x01(\x05R\x12receivingFileCount\x12(\n" + - "\x0funreadFileCount\x18\x0e \x01(\x05R\x0funreadFileCount\"\xbf\x01\n" + + "\x0funreadFileCount\x18\x0e \x01(\x05R\x0funreadFileCount\x12 \n" + + "\vcertDomains\x18\x0f \x03(\tR\vcertDomains\"\xbf\x01\n" + "\x12TailscaleUserGroup\x12\x16\n" + "\x06userID\x18\x01 \x01(\x03R\x06userID\x12\x1c\n" + "\tloginName\x18\x02 \x01(\tR\tloginName\x12 \n" + @@ -7555,7 +7676,14 @@ const file_daemon_started_service_proto_rawDesc = "" + "\vendpointTag\x18\x01 \x01(\tR\vendpointTag\x12\x1a\n" + "\bstableID\x18\x02 \x01(\tR\bstableID\":\n" + "\x16TailscaleLogoutRequest\x12 \n" + - "\vendpointTag\x18\x01 \x01(\tR\vendpointTag\"\xc2\x01\n" + + "\vendpointTag\x18\x01 \x01(\tR\vendpointTag\"\x87\x01\n" + + "\x1bTailscaleCertificateRequest\x12 \n" + + "\vendpointTag\x18\x01 \x01(\tR\vendpointTag\x12\x16\n" + + "\x06domain\x18\x02 \x01(\tR\x06domain\x12.\n" + + "\x12minValiditySeconds\x18\x03 \x01(\x03R\x12minValiditySeconds\"d\n" + + "\x14TailscaleCertificate\x12&\n" + + "\x0ecertificatePEM\x18\x01 \x01(\fR\x0ecertificatePEM\x12$\n" + + "\rprivateKeyPEM\x18\x02 \x01(\fR\rprivateKeyPEM\"\xc2\x01\n" + "\x19TailscaleSSHClientMessage\x121\n" + "\x05start\x18\x01 \x01(\v2\x19.daemon.TailscaleSSHStartH\x00R\x05start\x121\n" + "\x05input\x18\x02 \x01(\v2\x19.daemon.TailscaleSSHInputH\x00R\x05input\x124\n" + @@ -7911,7 +8039,7 @@ const file_daemon_started_service_proto_rawDesc = "" + "\x17USB_BACKEND_LINUX_SYSFS\x10\x01\x12\x17\n" + "\x13USB_BACKEND_DYNAMIC\x10\x02\x12\x1c\n" + "\x18USB_BACKEND_DARWIN_IOKIT\x10\x03\x12\x1f\n" + - "\x1bUSB_BACKEND_WINDOWS_VBOXUSB\x10\x042\xfb\x19\n" + + "\x1bUSB_BACKEND_WINDOWS_VBOXUSB\x10\x042\xdb\x1a\n" + "\x0eStartedService\x127\n" + "\n" + "GetVersion\x12\x16.google.protobuf.Empty\x1a\x0f.daemon.Version\"\x00\x12K\n" + @@ -7938,7 +8066,8 @@ const file_daemon_started_service_proto_rawDesc = "" + "\x18SubscribeTailscaleStatus\x12\x16.google.protobuf.Empty\x1a\x1d.daemon.TailscaleStatusUpdate\"\x000\x01\x12U\n" + "\x12StartTailscalePing\x12\x1c.daemon.TailscalePingRequest\x1a\x1d.daemon.TailscalePingResponse\"\x000\x01\x12U\n" + "\x14SetTailscaleExitNode\x12#.daemon.SetTailscaleExitNodeRequest\x1a\x16.google.protobuf.Empty\"\x00\x12K\n" + - "\x0fTailscaleLogout\x12\x1e.daemon.TailscaleLogoutRequest\x1a\x16.google.protobuf.Empty\"\x00\x12f\n" + + "\x0fTailscaleLogout\x12\x1e.daemon.TailscaleLogoutRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n" + + "\x17GetTailscaleCertificate\x12#.daemon.TailscaleCertificateRequest\x1a\x1c.daemon.TailscaleCertificate\"\x00\x12f\n" + "\x18StartTailscaleSSHSession\x12!.daemon.TailscaleSSHClientMessage\x1a!.daemon.TailscaleSSHServerMessage\"\x00(\x010\x01\x12Z\n" + "\x16SubscribeTaildropInbox\x12%.daemon.SubscribeTaildropInboxRequest\x1a\x15.daemon.TaildropInbox\"\x000\x01\x12W\n" + "\x15MarkTaildropInboxRead\x12$.daemon.MarkTaildropInboxReadRequest\x1a\x16.google.protobuf.Empty\"\x00\x12_\n" + @@ -7970,7 +8099,7 @@ func file_daemon_started_service_proto_rawDescGZIP() []byte { var ( file_daemon_started_service_proto_enumTypes = make([]protoimpl.EnumInfo, 5) - file_daemon_started_service_proto_msgTypes = make([]protoimpl.MessageInfo, 102) + file_daemon_started_service_proto_msgTypes = make([]protoimpl.MessageInfo, 104) file_daemon_started_service_proto_goTypes = []any{ LogLevel(0), // 0: daemon.LogLevel ConnectionEventType(0), // 1: daemon.ConnectionEventType @@ -8013,79 +8142,81 @@ var ( (*TailscalePingResponse)(nil), // 38: daemon.TailscalePingResponse (*SetTailscaleExitNodeRequest)(nil), // 39: daemon.SetTailscaleExitNodeRequest (*TailscaleLogoutRequest)(nil), // 40: daemon.TailscaleLogoutRequest - (*TailscaleSSHClientMessage)(nil), // 41: daemon.TailscaleSSHClientMessage - (*TailscaleSSHStart)(nil), // 42: daemon.TailscaleSSHStart - (*TailscaleSSHInput)(nil), // 43: daemon.TailscaleSSHInput - (*TailscaleSSHResize)(nil), // 44: daemon.TailscaleSSHResize - (*TailscaleSSHServerMessage)(nil), // 45: daemon.TailscaleSSHServerMessage - (*TailscaleSSHAuthBanner)(nil), // 46: daemon.TailscaleSSHAuthBanner - (*TailscaleSSHReady)(nil), // 47: daemon.TailscaleSSHReady - (*TailscaleSSHOutput)(nil), // 48: daemon.TailscaleSSHOutput - (*TailscaleSSHExit)(nil), // 49: daemon.TailscaleSSHExit - (*TailscaleSSHError)(nil), // 50: daemon.TailscaleSSHError - (*SubscribeTaildropInboxRequest)(nil), // 51: daemon.SubscribeTaildropInboxRequest - (*MarkTaildropInboxReadRequest)(nil), // 52: daemon.MarkTaildropInboxReadRequest - (*TaildropInbox)(nil), // 53: daemon.TaildropInbox - (*TaildropFile)(nil), // 54: daemon.TaildropFile - (*TaildropReceivingFile)(nil), // 55: daemon.TaildropReceivingFile - (*TaildropSendClientMessage)(nil), // 56: daemon.TaildropSendClientMessage - (*TaildropSendStart)(nil), // 57: daemon.TaildropSendStart - (*TaildropOutgoingFile)(nil), // 58: daemon.TaildropOutgoingFile - (*TaildropFileChunk)(nil), // 59: daemon.TaildropFileChunk - (*TaildropFileDone)(nil), // 60: daemon.TaildropFileDone - (*TaildropSendServerMessage)(nil), // 61: daemon.TaildropSendServerMessage - (*TaildropSendProgress)(nil), // 62: daemon.TaildropSendProgress - (*DownloadTaildropFileRequest)(nil), // 63: daemon.DownloadTaildropFileRequest - (*DownloadTaildropFileChunk)(nil), // 64: daemon.DownloadTaildropFileChunk - (*DeleteTaildropFileRequest)(nil), // 65: daemon.DeleteTaildropFileRequest - (*CancelTaildropReceivingRequest)(nil), // 66: daemon.CancelTaildropReceivingRequest - (*USBProviderMessage)(nil), // 67: daemon.USBProviderMessage - (*USBServerMessage)(nil), // 68: daemon.USBServerMessage - (*USBDeviceDescriptor)(nil), // 69: daemon.USBDeviceDescriptor - (*USBDeviceAttach)(nil), // 70: daemon.USBDeviceAttach - (*USBInterface)(nil), // 71: daemon.USBInterface - (*USBDeviceDetach)(nil), // 72: daemon.USBDeviceDetach - (*USBDeviceReady)(nil), // 73: daemon.USBDeviceReady - (*USBURBRequest)(nil), // 74: daemon.USBURBRequest - (*USBURBResponse)(nil), // 75: daemon.USBURBResponse - (*USBIsoPacket)(nil), // 76: daemon.USBIsoPacket - (*USBEndpointAbort)(nil), // 77: daemon.USBEndpointAbort - (*USBError)(nil), // 78: daemon.USBError - (*USBIPServerStatusUpdate)(nil), // 79: daemon.USBIPServerStatusUpdate - (*USBIPServerStatus)(nil), // 80: daemon.USBIPServerStatus - (*USBSharedDevice)(nil), // 81: daemon.USBSharedDevice - (*OpenConnectStatusUpdate)(nil), // 82: daemon.OpenConnectStatusUpdate - (*OpenConnectEndpointStatus)(nil), // 83: daemon.OpenConnectEndpointStatus - (*OpenConnectTunnelInfo)(nil), // 84: daemon.OpenConnectTunnelInfo - (*OpenConnectAuthChallenge)(nil), // 85: daemon.OpenConnectAuthChallenge - (*OpenConnectAuthForm)(nil), // 86: daemon.OpenConnectAuthForm - (*OpenConnectAuthFormField)(nil), // 87: daemon.OpenConnectAuthFormField - (*OpenConnectAuthFormChoice)(nil), // 88: daemon.OpenConnectAuthFormChoice - (*OpenConnectBrowserRequest)(nil), // 89: daemon.OpenConnectBrowserRequest - (*OpenConnectBrowserCookie)(nil), // 90: daemon.OpenConnectBrowserCookie - (*OpenConnectBrowserHeader)(nil), // 91: daemon.OpenConnectBrowserHeader - (*OpenConnectAuthFormResponse)(nil), // 92: daemon.OpenConnectAuthFormResponse - (*OpenConnectBrowserResult)(nil), // 93: daemon.OpenConnectBrowserResult - (*OpenConnectAuthResponseSubmission)(nil), // 94: daemon.OpenConnectAuthResponseSubmission - (*OpenConnectAuthChallengeCancel)(nil), // 95: daemon.OpenConnectAuthChallengeCancel - (*OpenVPNStatusUpdate)(nil), // 96: daemon.OpenVPNStatusUpdate - (*OpenVPNEndpointStatus)(nil), // 97: daemon.OpenVPNEndpointStatus - (*OpenVPNTunnelInfo)(nil), // 98: daemon.OpenVPNTunnelInfo - (*OpenVPNChallenge)(nil), // 99: daemon.OpenVPNChallenge - (*OpenVPNChallengeSubmission)(nil), // 100: daemon.OpenVPNChallengeSubmission - (*OpenVPNChallengeCancel)(nil), // 101: daemon.OpenVPNChallengeCancel - (*NotificationEvent)(nil), // 102: daemon.NotificationEvent - (*Notification)(nil), // 103: daemon.Notification - (*NotificationCancel)(nil), // 104: daemon.NotificationCancel - (*Log_Message)(nil), // 105: daemon.Log.Message - nil, // 106: daemon.OpenConnectAuthFormResponse.ValuesEntry - (*emptypb.Empty)(nil), // 107: google.protobuf.Empty + (*TailscaleCertificateRequest)(nil), // 41: daemon.TailscaleCertificateRequest + (*TailscaleCertificate)(nil), // 42: daemon.TailscaleCertificate + (*TailscaleSSHClientMessage)(nil), // 43: daemon.TailscaleSSHClientMessage + (*TailscaleSSHStart)(nil), // 44: daemon.TailscaleSSHStart + (*TailscaleSSHInput)(nil), // 45: daemon.TailscaleSSHInput + (*TailscaleSSHResize)(nil), // 46: daemon.TailscaleSSHResize + (*TailscaleSSHServerMessage)(nil), // 47: daemon.TailscaleSSHServerMessage + (*TailscaleSSHAuthBanner)(nil), // 48: daemon.TailscaleSSHAuthBanner + (*TailscaleSSHReady)(nil), // 49: daemon.TailscaleSSHReady + (*TailscaleSSHOutput)(nil), // 50: daemon.TailscaleSSHOutput + (*TailscaleSSHExit)(nil), // 51: daemon.TailscaleSSHExit + (*TailscaleSSHError)(nil), // 52: daemon.TailscaleSSHError + (*SubscribeTaildropInboxRequest)(nil), // 53: daemon.SubscribeTaildropInboxRequest + (*MarkTaildropInboxReadRequest)(nil), // 54: daemon.MarkTaildropInboxReadRequest + (*TaildropInbox)(nil), // 55: daemon.TaildropInbox + (*TaildropFile)(nil), // 56: daemon.TaildropFile + (*TaildropReceivingFile)(nil), // 57: daemon.TaildropReceivingFile + (*TaildropSendClientMessage)(nil), // 58: daemon.TaildropSendClientMessage + (*TaildropSendStart)(nil), // 59: daemon.TaildropSendStart + (*TaildropOutgoingFile)(nil), // 60: daemon.TaildropOutgoingFile + (*TaildropFileChunk)(nil), // 61: daemon.TaildropFileChunk + (*TaildropFileDone)(nil), // 62: daemon.TaildropFileDone + (*TaildropSendServerMessage)(nil), // 63: daemon.TaildropSendServerMessage + (*TaildropSendProgress)(nil), // 64: daemon.TaildropSendProgress + (*DownloadTaildropFileRequest)(nil), // 65: daemon.DownloadTaildropFileRequest + (*DownloadTaildropFileChunk)(nil), // 66: daemon.DownloadTaildropFileChunk + (*DeleteTaildropFileRequest)(nil), // 67: daemon.DeleteTaildropFileRequest + (*CancelTaildropReceivingRequest)(nil), // 68: daemon.CancelTaildropReceivingRequest + (*USBProviderMessage)(nil), // 69: daemon.USBProviderMessage + (*USBServerMessage)(nil), // 70: daemon.USBServerMessage + (*USBDeviceDescriptor)(nil), // 71: daemon.USBDeviceDescriptor + (*USBDeviceAttach)(nil), // 72: daemon.USBDeviceAttach + (*USBInterface)(nil), // 73: daemon.USBInterface + (*USBDeviceDetach)(nil), // 74: daemon.USBDeviceDetach + (*USBDeviceReady)(nil), // 75: daemon.USBDeviceReady + (*USBURBRequest)(nil), // 76: daemon.USBURBRequest + (*USBURBResponse)(nil), // 77: daemon.USBURBResponse + (*USBIsoPacket)(nil), // 78: daemon.USBIsoPacket + (*USBEndpointAbort)(nil), // 79: daemon.USBEndpointAbort + (*USBError)(nil), // 80: daemon.USBError + (*USBIPServerStatusUpdate)(nil), // 81: daemon.USBIPServerStatusUpdate + (*USBIPServerStatus)(nil), // 82: daemon.USBIPServerStatus + (*USBSharedDevice)(nil), // 83: daemon.USBSharedDevice + (*OpenConnectStatusUpdate)(nil), // 84: daemon.OpenConnectStatusUpdate + (*OpenConnectEndpointStatus)(nil), // 85: daemon.OpenConnectEndpointStatus + (*OpenConnectTunnelInfo)(nil), // 86: daemon.OpenConnectTunnelInfo + (*OpenConnectAuthChallenge)(nil), // 87: daemon.OpenConnectAuthChallenge + (*OpenConnectAuthForm)(nil), // 88: daemon.OpenConnectAuthForm + (*OpenConnectAuthFormField)(nil), // 89: daemon.OpenConnectAuthFormField + (*OpenConnectAuthFormChoice)(nil), // 90: daemon.OpenConnectAuthFormChoice + (*OpenConnectBrowserRequest)(nil), // 91: daemon.OpenConnectBrowserRequest + (*OpenConnectBrowserCookie)(nil), // 92: daemon.OpenConnectBrowserCookie + (*OpenConnectBrowserHeader)(nil), // 93: daemon.OpenConnectBrowserHeader + (*OpenConnectAuthFormResponse)(nil), // 94: daemon.OpenConnectAuthFormResponse + (*OpenConnectBrowserResult)(nil), // 95: daemon.OpenConnectBrowserResult + (*OpenConnectAuthResponseSubmission)(nil), // 96: daemon.OpenConnectAuthResponseSubmission + (*OpenConnectAuthChallengeCancel)(nil), // 97: daemon.OpenConnectAuthChallengeCancel + (*OpenVPNStatusUpdate)(nil), // 98: daemon.OpenVPNStatusUpdate + (*OpenVPNEndpointStatus)(nil), // 99: daemon.OpenVPNEndpointStatus + (*OpenVPNTunnelInfo)(nil), // 100: daemon.OpenVPNTunnelInfo + (*OpenVPNChallenge)(nil), // 101: daemon.OpenVPNChallenge + (*OpenVPNChallengeSubmission)(nil), // 102: daemon.OpenVPNChallengeSubmission + (*OpenVPNChallengeCancel)(nil), // 103: daemon.OpenVPNChallengeCancel + (*NotificationEvent)(nil), // 104: daemon.NotificationEvent + (*Notification)(nil), // 105: daemon.Notification + (*NotificationCancel)(nil), // 106: daemon.NotificationCancel + (*Log_Message)(nil), // 107: daemon.Log.Message + nil, // 108: daemon.OpenConnectAuthFormResponse.ValuesEntry + (*emptypb.Empty)(nil), // 109: google.protobuf.Empty } ) var file_daemon_started_service_proto_depIdxs = []int32{ 4, // 0: daemon.ServiceStatus.status:type_name -> daemon.ServiceStatus.Type - 105, // 1: daemon.Log.messages:type_name -> daemon.Log.Message + 107, // 1: daemon.Log.messages:type_name -> daemon.Log.Message 0, // 2: daemon.DefaultLogLevel.level:type_name -> daemon.LogLevel 12, // 3: daemon.Groups.group:type_name -> daemon.Group 13, // 4: daemon.Group.items:type_name -> daemon.GroupItem @@ -8100,139 +8231,141 @@ var file_daemon_started_service_proto_depIdxs = []int32{ 35, // 13: daemon.TailscaleEndpointStatus.userGroups:type_name -> daemon.TailscaleUserGroup 36, // 14: daemon.TailscaleEndpointStatus.exitNode:type_name -> daemon.TailscalePeer 36, // 15: daemon.TailscaleUserGroup.peers:type_name -> daemon.TailscalePeer - 42, // 16: daemon.TailscaleSSHClientMessage.start:type_name -> daemon.TailscaleSSHStart - 43, // 17: daemon.TailscaleSSHClientMessage.input:type_name -> daemon.TailscaleSSHInput - 44, // 18: daemon.TailscaleSSHClientMessage.resize:type_name -> daemon.TailscaleSSHResize - 46, // 19: daemon.TailscaleSSHServerMessage.authBanner:type_name -> daemon.TailscaleSSHAuthBanner - 47, // 20: daemon.TailscaleSSHServerMessage.ready:type_name -> daemon.TailscaleSSHReady - 48, // 21: daemon.TailscaleSSHServerMessage.output:type_name -> daemon.TailscaleSSHOutput - 49, // 22: daemon.TailscaleSSHServerMessage.exit:type_name -> daemon.TailscaleSSHExit - 50, // 23: daemon.TailscaleSSHServerMessage.error:type_name -> daemon.TailscaleSSHError - 54, // 24: daemon.TaildropInbox.files:type_name -> daemon.TaildropFile - 55, // 25: daemon.TaildropInbox.receiving:type_name -> daemon.TaildropReceivingFile - 57, // 26: daemon.TaildropSendClientMessage.start:type_name -> daemon.TaildropSendStart - 59, // 27: daemon.TaildropSendClientMessage.chunk:type_name -> daemon.TaildropFileChunk - 60, // 28: daemon.TaildropSendClientMessage.fileDone:type_name -> daemon.TaildropFileDone - 58, // 29: daemon.TaildropSendStart.files:type_name -> daemon.TaildropOutgoingFile - 62, // 30: daemon.TaildropSendServerMessage.progress:type_name -> daemon.TaildropSendProgress - 70, // 31: daemon.USBProviderMessage.attach:type_name -> daemon.USBDeviceAttach - 72, // 32: daemon.USBProviderMessage.detach:type_name -> daemon.USBDeviceDetach - 75, // 33: daemon.USBProviderMessage.urbResponse:type_name -> daemon.USBURBResponse - 73, // 34: daemon.USBServerMessage.ready:type_name -> daemon.USBDeviceReady - 74, // 35: daemon.USBServerMessage.urbRequest:type_name -> daemon.USBURBRequest - 77, // 36: daemon.USBServerMessage.abort:type_name -> daemon.USBEndpointAbort - 78, // 37: daemon.USBServerMessage.error:type_name -> daemon.USBError - 71, // 38: daemon.USBDeviceDescriptor.interfaces:type_name -> daemon.USBInterface - 69, // 39: daemon.USBDeviceAttach.descriptor:type_name -> daemon.USBDeviceDescriptor - 76, // 40: daemon.USBURBRequest.isoPackets:type_name -> daemon.USBIsoPacket - 76, // 41: daemon.USBURBResponse.isoPackets:type_name -> daemon.USBIsoPacket - 80, // 42: daemon.USBIPServerStatusUpdate.servers:type_name -> daemon.USBIPServerStatus - 81, // 43: daemon.USBIPServerStatus.devices:type_name -> daemon.USBSharedDevice - 69, // 44: daemon.USBSharedDevice.descriptor:type_name -> daemon.USBDeviceDescriptor + 44, // 16: daemon.TailscaleSSHClientMessage.start:type_name -> daemon.TailscaleSSHStart + 45, // 17: daemon.TailscaleSSHClientMessage.input:type_name -> daemon.TailscaleSSHInput + 46, // 18: daemon.TailscaleSSHClientMessage.resize:type_name -> daemon.TailscaleSSHResize + 48, // 19: daemon.TailscaleSSHServerMessage.authBanner:type_name -> daemon.TailscaleSSHAuthBanner + 49, // 20: daemon.TailscaleSSHServerMessage.ready:type_name -> daemon.TailscaleSSHReady + 50, // 21: daemon.TailscaleSSHServerMessage.output:type_name -> daemon.TailscaleSSHOutput + 51, // 22: daemon.TailscaleSSHServerMessage.exit:type_name -> daemon.TailscaleSSHExit + 52, // 23: daemon.TailscaleSSHServerMessage.error:type_name -> daemon.TailscaleSSHError + 56, // 24: daemon.TaildropInbox.files:type_name -> daemon.TaildropFile + 57, // 25: daemon.TaildropInbox.receiving:type_name -> daemon.TaildropReceivingFile + 59, // 26: daemon.TaildropSendClientMessage.start:type_name -> daemon.TaildropSendStart + 61, // 27: daemon.TaildropSendClientMessage.chunk:type_name -> daemon.TaildropFileChunk + 62, // 28: daemon.TaildropSendClientMessage.fileDone:type_name -> daemon.TaildropFileDone + 60, // 29: daemon.TaildropSendStart.files:type_name -> daemon.TaildropOutgoingFile + 64, // 30: daemon.TaildropSendServerMessage.progress:type_name -> daemon.TaildropSendProgress + 72, // 31: daemon.USBProviderMessage.attach:type_name -> daemon.USBDeviceAttach + 74, // 32: daemon.USBProviderMessage.detach:type_name -> daemon.USBDeviceDetach + 77, // 33: daemon.USBProviderMessage.urbResponse:type_name -> daemon.USBURBResponse + 75, // 34: daemon.USBServerMessage.ready:type_name -> daemon.USBDeviceReady + 76, // 35: daemon.USBServerMessage.urbRequest:type_name -> daemon.USBURBRequest + 79, // 36: daemon.USBServerMessage.abort:type_name -> daemon.USBEndpointAbort + 80, // 37: daemon.USBServerMessage.error:type_name -> daemon.USBError + 73, // 38: daemon.USBDeviceDescriptor.interfaces:type_name -> daemon.USBInterface + 71, // 39: daemon.USBDeviceAttach.descriptor:type_name -> daemon.USBDeviceDescriptor + 78, // 40: daemon.USBURBRequest.isoPackets:type_name -> daemon.USBIsoPacket + 78, // 41: daemon.USBURBResponse.isoPackets:type_name -> daemon.USBIsoPacket + 82, // 42: daemon.USBIPServerStatusUpdate.servers:type_name -> daemon.USBIPServerStatus + 83, // 43: daemon.USBIPServerStatus.devices:type_name -> daemon.USBSharedDevice + 71, // 44: daemon.USBSharedDevice.descriptor:type_name -> daemon.USBDeviceDescriptor 3, // 45: daemon.USBSharedDevice.backend:type_name -> daemon.USBBackend 2, // 46: daemon.USBSharedDevice.state:type_name -> daemon.USBDeviceState - 83, // 47: daemon.OpenConnectStatusUpdate.endpoints:type_name -> daemon.OpenConnectEndpointStatus - 85, // 48: daemon.OpenConnectEndpointStatus.authChallenge:type_name -> daemon.OpenConnectAuthChallenge - 84, // 49: daemon.OpenConnectEndpointStatus.tunnelInfo:type_name -> daemon.OpenConnectTunnelInfo - 86, // 50: daemon.OpenConnectAuthChallenge.form:type_name -> daemon.OpenConnectAuthForm - 89, // 51: daemon.OpenConnectAuthChallenge.browser:type_name -> daemon.OpenConnectBrowserRequest - 87, // 52: daemon.OpenConnectAuthForm.fields:type_name -> daemon.OpenConnectAuthFormField - 88, // 53: daemon.OpenConnectAuthFormField.options:type_name -> daemon.OpenConnectAuthFormChoice - 106, // 54: daemon.OpenConnectAuthFormResponse.values:type_name -> daemon.OpenConnectAuthFormResponse.ValuesEntry - 90, // 55: daemon.OpenConnectBrowserResult.cookies:type_name -> daemon.OpenConnectBrowserCookie - 91, // 56: daemon.OpenConnectBrowserResult.headers:type_name -> daemon.OpenConnectBrowserHeader - 92, // 57: daemon.OpenConnectAuthResponseSubmission.form:type_name -> daemon.OpenConnectAuthFormResponse - 93, // 58: daemon.OpenConnectAuthResponseSubmission.browser:type_name -> daemon.OpenConnectBrowserResult - 97, // 59: daemon.OpenVPNStatusUpdate.endpoints:type_name -> daemon.OpenVPNEndpointStatus - 99, // 60: daemon.OpenVPNEndpointStatus.challenge:type_name -> daemon.OpenVPNChallenge - 98, // 61: daemon.OpenVPNEndpointStatus.tunnelInfo:type_name -> daemon.OpenVPNTunnelInfo - 103, // 62: daemon.NotificationEvent.send:type_name -> daemon.Notification - 104, // 63: daemon.NotificationEvent.cancel:type_name -> daemon.NotificationCancel + 85, // 47: daemon.OpenConnectStatusUpdate.endpoints:type_name -> daemon.OpenConnectEndpointStatus + 87, // 48: daemon.OpenConnectEndpointStatus.authChallenge:type_name -> daemon.OpenConnectAuthChallenge + 86, // 49: daemon.OpenConnectEndpointStatus.tunnelInfo:type_name -> daemon.OpenConnectTunnelInfo + 88, // 50: daemon.OpenConnectAuthChallenge.form:type_name -> daemon.OpenConnectAuthForm + 91, // 51: daemon.OpenConnectAuthChallenge.browser:type_name -> daemon.OpenConnectBrowserRequest + 89, // 52: daemon.OpenConnectAuthForm.fields:type_name -> daemon.OpenConnectAuthFormField + 90, // 53: daemon.OpenConnectAuthFormField.options:type_name -> daemon.OpenConnectAuthFormChoice + 108, // 54: daemon.OpenConnectAuthFormResponse.values:type_name -> daemon.OpenConnectAuthFormResponse.ValuesEntry + 92, // 55: daemon.OpenConnectBrowserResult.cookies:type_name -> daemon.OpenConnectBrowserCookie + 93, // 56: daemon.OpenConnectBrowserResult.headers:type_name -> daemon.OpenConnectBrowserHeader + 94, // 57: daemon.OpenConnectAuthResponseSubmission.form:type_name -> daemon.OpenConnectAuthFormResponse + 95, // 58: daemon.OpenConnectAuthResponseSubmission.browser:type_name -> daemon.OpenConnectBrowserResult + 99, // 59: daemon.OpenVPNStatusUpdate.endpoints:type_name -> daemon.OpenVPNEndpointStatus + 101, // 60: daemon.OpenVPNEndpointStatus.challenge:type_name -> daemon.OpenVPNChallenge + 100, // 61: daemon.OpenVPNEndpointStatus.tunnelInfo:type_name -> daemon.OpenVPNTunnelInfo + 105, // 62: daemon.NotificationEvent.send:type_name -> daemon.Notification + 106, // 63: daemon.NotificationEvent.cancel:type_name -> daemon.NotificationCancel 0, // 64: daemon.Log.Message.level:type_name -> daemon.LogLevel - 107, // 65: daemon.StartedService.GetVersion:input_type -> google.protobuf.Empty - 107, // 66: daemon.StartedService.SubscribeServiceStatus:input_type -> google.protobuf.Empty - 107, // 67: daemon.StartedService.SubscribeLog:input_type -> google.protobuf.Empty - 107, // 68: daemon.StartedService.GetDefaultLogLevel:input_type -> google.protobuf.Empty - 107, // 69: daemon.StartedService.ClearLogs:input_type -> google.protobuf.Empty + 109, // 65: daemon.StartedService.GetVersion:input_type -> google.protobuf.Empty + 109, // 66: daemon.StartedService.SubscribeServiceStatus:input_type -> google.protobuf.Empty + 109, // 67: daemon.StartedService.SubscribeLog:input_type -> google.protobuf.Empty + 109, // 68: daemon.StartedService.GetDefaultLogLevel:input_type -> google.protobuf.Empty + 109, // 69: daemon.StartedService.ClearLogs:input_type -> google.protobuf.Empty 7, // 70: daemon.StartedService.SubscribeStatus:input_type -> daemon.SubscribeStatusRequest - 107, // 71: daemon.StartedService.SubscribeGroups:input_type -> google.protobuf.Empty - 107, // 72: daemon.StartedService.GetClashModeStatus:input_type -> google.protobuf.Empty - 107, // 73: daemon.StartedService.SubscribeClashMode:input_type -> google.protobuf.Empty + 109, // 71: daemon.StartedService.SubscribeGroups:input_type -> google.protobuf.Empty + 109, // 72: daemon.StartedService.GetClashModeStatus:input_type -> google.protobuf.Empty + 109, // 73: daemon.StartedService.SubscribeClashMode:input_type -> google.protobuf.Empty 17, // 74: daemon.StartedService.SetClashMode:input_type -> daemon.ClashMode 14, // 75: daemon.StartedService.URLTest:input_type -> daemon.URLTestRequest 15, // 76: daemon.StartedService.SelectOutbound:input_type -> daemon.SelectOutboundRequest 16, // 77: daemon.StartedService.SetGroupExpand:input_type -> daemon.SetGroupExpandRequest 19, // 78: daemon.StartedService.SubscribeConnections:input_type -> daemon.SubscribeConnectionsRequest 24, // 79: daemon.StartedService.CloseConnection:input_type -> daemon.CloseConnectionRequest - 107, // 80: daemon.StartedService.CloseAllConnections:input_type -> google.protobuf.Empty - 107, // 81: daemon.StartedService.GetDeprecatedWarnings:input_type -> google.protobuf.Empty - 107, // 82: daemon.StartedService.GetStartedAt:input_type -> google.protobuf.Empty - 107, // 83: daemon.StartedService.SubscribeOutbounds:input_type -> google.protobuf.Empty + 109, // 80: daemon.StartedService.CloseAllConnections:input_type -> google.protobuf.Empty + 109, // 81: daemon.StartedService.GetDeprecatedWarnings:input_type -> google.protobuf.Empty + 109, // 82: daemon.StartedService.GetStartedAt:input_type -> google.protobuf.Empty + 109, // 83: daemon.StartedService.SubscribeOutbounds:input_type -> google.protobuf.Empty 29, // 84: daemon.StartedService.StartNetworkQualityTest:input_type -> daemon.NetworkQualityTestRequest 31, // 85: daemon.StartedService.StartSTUNTest:input_type -> daemon.STUNTestRequest - 107, // 86: daemon.StartedService.SubscribeTailscaleStatus:input_type -> google.protobuf.Empty + 109, // 86: daemon.StartedService.SubscribeTailscaleStatus:input_type -> google.protobuf.Empty 37, // 87: daemon.StartedService.StartTailscalePing:input_type -> daemon.TailscalePingRequest 39, // 88: daemon.StartedService.SetTailscaleExitNode:input_type -> daemon.SetTailscaleExitNodeRequest 40, // 89: daemon.StartedService.TailscaleLogout:input_type -> daemon.TailscaleLogoutRequest - 41, // 90: daemon.StartedService.StartTailscaleSSHSession:input_type -> daemon.TailscaleSSHClientMessage - 51, // 91: daemon.StartedService.SubscribeTaildropInbox:input_type -> daemon.SubscribeTaildropInboxRequest - 52, // 92: daemon.StartedService.MarkTaildropInboxRead:input_type -> daemon.MarkTaildropInboxReadRequest - 56, // 93: daemon.StartedService.SendTaildropFiles:input_type -> daemon.TaildropSendClientMessage - 63, // 94: daemon.StartedService.DownloadTaildropFile:input_type -> daemon.DownloadTaildropFileRequest - 65, // 95: daemon.StartedService.DeleteTaildropFile:input_type -> daemon.DeleteTaildropFileRequest - 66, // 96: daemon.StartedService.CancelTaildropReceiving:input_type -> daemon.CancelTaildropReceivingRequest - 67, // 97: daemon.StartedService.ProvideUSBDevices:input_type -> daemon.USBProviderMessage - 107, // 98: daemon.StartedService.SubscribeUSBIPServerStatus:input_type -> google.protobuf.Empty - 107, // 99: daemon.StartedService.SubscribeOpenConnectStatus:input_type -> google.protobuf.Empty - 94, // 100: daemon.StartedService.SubmitOpenConnectAuthResponse:input_type -> daemon.OpenConnectAuthResponseSubmission - 95, // 101: daemon.StartedService.CancelOpenConnectAuthChallenge:input_type -> daemon.OpenConnectAuthChallengeCancel - 107, // 102: daemon.StartedService.SubscribeOpenVPNStatus:input_type -> google.protobuf.Empty - 100, // 103: daemon.StartedService.SubmitOpenVPNChallengeResponse:input_type -> daemon.OpenVPNChallengeSubmission - 101, // 104: daemon.StartedService.CancelOpenVPNChallenge:input_type -> daemon.OpenVPNChallengeCancel - 107, // 105: daemon.StartedService.SubscribeNotifications:input_type -> google.protobuf.Empty - 5, // 106: daemon.StartedService.GetVersion:output_type -> daemon.Version - 6, // 107: daemon.StartedService.SubscribeServiceStatus:output_type -> daemon.ServiceStatus - 8, // 108: daemon.StartedService.SubscribeLog:output_type -> daemon.Log - 9, // 109: daemon.StartedService.GetDefaultLogLevel:output_type -> daemon.DefaultLogLevel - 107, // 110: daemon.StartedService.ClearLogs:output_type -> google.protobuf.Empty - 10, // 111: daemon.StartedService.SubscribeStatus:output_type -> daemon.Status - 11, // 112: daemon.StartedService.SubscribeGroups:output_type -> daemon.Groups - 18, // 113: daemon.StartedService.GetClashModeStatus:output_type -> daemon.ClashModeStatus - 17, // 114: daemon.StartedService.SubscribeClashMode:output_type -> daemon.ClashMode - 107, // 115: daemon.StartedService.SetClashMode:output_type -> google.protobuf.Empty - 107, // 116: daemon.StartedService.URLTest:output_type -> google.protobuf.Empty - 107, // 117: daemon.StartedService.SelectOutbound:output_type -> google.protobuf.Empty - 107, // 118: daemon.StartedService.SetGroupExpand:output_type -> google.protobuf.Empty - 21, // 119: daemon.StartedService.SubscribeConnections:output_type -> daemon.ConnectionEvents - 107, // 120: daemon.StartedService.CloseConnection:output_type -> google.protobuf.Empty - 107, // 121: daemon.StartedService.CloseAllConnections:output_type -> google.protobuf.Empty - 25, // 122: daemon.StartedService.GetDeprecatedWarnings:output_type -> daemon.DeprecatedWarnings - 27, // 123: daemon.StartedService.GetStartedAt:output_type -> daemon.StartedAt - 28, // 124: daemon.StartedService.SubscribeOutbounds:output_type -> daemon.OutboundList - 30, // 125: daemon.StartedService.StartNetworkQualityTest:output_type -> daemon.NetworkQualityTestProgress - 32, // 126: daemon.StartedService.StartSTUNTest:output_type -> daemon.STUNTestProgress - 33, // 127: daemon.StartedService.SubscribeTailscaleStatus:output_type -> daemon.TailscaleStatusUpdate - 38, // 128: daemon.StartedService.StartTailscalePing:output_type -> daemon.TailscalePingResponse - 107, // 129: daemon.StartedService.SetTailscaleExitNode:output_type -> google.protobuf.Empty - 107, // 130: daemon.StartedService.TailscaleLogout:output_type -> google.protobuf.Empty - 45, // 131: daemon.StartedService.StartTailscaleSSHSession:output_type -> daemon.TailscaleSSHServerMessage - 53, // 132: daemon.StartedService.SubscribeTaildropInbox:output_type -> daemon.TaildropInbox - 107, // 133: daemon.StartedService.MarkTaildropInboxRead:output_type -> google.protobuf.Empty - 61, // 134: daemon.StartedService.SendTaildropFiles:output_type -> daemon.TaildropSendServerMessage - 64, // 135: daemon.StartedService.DownloadTaildropFile:output_type -> daemon.DownloadTaildropFileChunk - 107, // 136: daemon.StartedService.DeleteTaildropFile:output_type -> google.protobuf.Empty - 107, // 137: daemon.StartedService.CancelTaildropReceiving:output_type -> google.protobuf.Empty - 68, // 138: daemon.StartedService.ProvideUSBDevices:output_type -> daemon.USBServerMessage - 79, // 139: daemon.StartedService.SubscribeUSBIPServerStatus:output_type -> daemon.USBIPServerStatusUpdate - 82, // 140: daemon.StartedService.SubscribeOpenConnectStatus:output_type -> daemon.OpenConnectStatusUpdate - 107, // 141: daemon.StartedService.SubmitOpenConnectAuthResponse:output_type -> google.protobuf.Empty - 107, // 142: daemon.StartedService.CancelOpenConnectAuthChallenge:output_type -> google.protobuf.Empty - 96, // 143: daemon.StartedService.SubscribeOpenVPNStatus:output_type -> daemon.OpenVPNStatusUpdate - 107, // 144: daemon.StartedService.SubmitOpenVPNChallengeResponse:output_type -> google.protobuf.Empty - 107, // 145: daemon.StartedService.CancelOpenVPNChallenge:output_type -> google.protobuf.Empty - 102, // 146: daemon.StartedService.SubscribeNotifications:output_type -> daemon.NotificationEvent - 106, // [106:147] is the sub-list for method output_type - 65, // [65:106] is the sub-list for method input_type + 41, // 90: daemon.StartedService.GetTailscaleCertificate:input_type -> daemon.TailscaleCertificateRequest + 43, // 91: daemon.StartedService.StartTailscaleSSHSession:input_type -> daemon.TailscaleSSHClientMessage + 53, // 92: daemon.StartedService.SubscribeTaildropInbox:input_type -> daemon.SubscribeTaildropInboxRequest + 54, // 93: daemon.StartedService.MarkTaildropInboxRead:input_type -> daemon.MarkTaildropInboxReadRequest + 58, // 94: daemon.StartedService.SendTaildropFiles:input_type -> daemon.TaildropSendClientMessage + 65, // 95: daemon.StartedService.DownloadTaildropFile:input_type -> daemon.DownloadTaildropFileRequest + 67, // 96: daemon.StartedService.DeleteTaildropFile:input_type -> daemon.DeleteTaildropFileRequest + 68, // 97: daemon.StartedService.CancelTaildropReceiving:input_type -> daemon.CancelTaildropReceivingRequest + 69, // 98: daemon.StartedService.ProvideUSBDevices:input_type -> daemon.USBProviderMessage + 109, // 99: daemon.StartedService.SubscribeUSBIPServerStatus:input_type -> google.protobuf.Empty + 109, // 100: daemon.StartedService.SubscribeOpenConnectStatus:input_type -> google.protobuf.Empty + 96, // 101: daemon.StartedService.SubmitOpenConnectAuthResponse:input_type -> daemon.OpenConnectAuthResponseSubmission + 97, // 102: daemon.StartedService.CancelOpenConnectAuthChallenge:input_type -> daemon.OpenConnectAuthChallengeCancel + 109, // 103: daemon.StartedService.SubscribeOpenVPNStatus:input_type -> google.protobuf.Empty + 102, // 104: daemon.StartedService.SubmitOpenVPNChallengeResponse:input_type -> daemon.OpenVPNChallengeSubmission + 103, // 105: daemon.StartedService.CancelOpenVPNChallenge:input_type -> daemon.OpenVPNChallengeCancel + 109, // 106: daemon.StartedService.SubscribeNotifications:input_type -> google.protobuf.Empty + 5, // 107: daemon.StartedService.GetVersion:output_type -> daemon.Version + 6, // 108: daemon.StartedService.SubscribeServiceStatus:output_type -> daemon.ServiceStatus + 8, // 109: daemon.StartedService.SubscribeLog:output_type -> daemon.Log + 9, // 110: daemon.StartedService.GetDefaultLogLevel:output_type -> daemon.DefaultLogLevel + 109, // 111: daemon.StartedService.ClearLogs:output_type -> google.protobuf.Empty + 10, // 112: daemon.StartedService.SubscribeStatus:output_type -> daemon.Status + 11, // 113: daemon.StartedService.SubscribeGroups:output_type -> daemon.Groups + 18, // 114: daemon.StartedService.GetClashModeStatus:output_type -> daemon.ClashModeStatus + 17, // 115: daemon.StartedService.SubscribeClashMode:output_type -> daemon.ClashMode + 109, // 116: daemon.StartedService.SetClashMode:output_type -> google.protobuf.Empty + 109, // 117: daemon.StartedService.URLTest:output_type -> google.protobuf.Empty + 109, // 118: daemon.StartedService.SelectOutbound:output_type -> google.protobuf.Empty + 109, // 119: daemon.StartedService.SetGroupExpand:output_type -> google.protobuf.Empty + 21, // 120: daemon.StartedService.SubscribeConnections:output_type -> daemon.ConnectionEvents + 109, // 121: daemon.StartedService.CloseConnection:output_type -> google.protobuf.Empty + 109, // 122: daemon.StartedService.CloseAllConnections:output_type -> google.protobuf.Empty + 25, // 123: daemon.StartedService.GetDeprecatedWarnings:output_type -> daemon.DeprecatedWarnings + 27, // 124: daemon.StartedService.GetStartedAt:output_type -> daemon.StartedAt + 28, // 125: daemon.StartedService.SubscribeOutbounds:output_type -> daemon.OutboundList + 30, // 126: daemon.StartedService.StartNetworkQualityTest:output_type -> daemon.NetworkQualityTestProgress + 32, // 127: daemon.StartedService.StartSTUNTest:output_type -> daemon.STUNTestProgress + 33, // 128: daemon.StartedService.SubscribeTailscaleStatus:output_type -> daemon.TailscaleStatusUpdate + 38, // 129: daemon.StartedService.StartTailscalePing:output_type -> daemon.TailscalePingResponse + 109, // 130: daemon.StartedService.SetTailscaleExitNode:output_type -> google.protobuf.Empty + 109, // 131: daemon.StartedService.TailscaleLogout:output_type -> google.protobuf.Empty + 42, // 132: daemon.StartedService.GetTailscaleCertificate:output_type -> daemon.TailscaleCertificate + 47, // 133: daemon.StartedService.StartTailscaleSSHSession:output_type -> daemon.TailscaleSSHServerMessage + 55, // 134: daemon.StartedService.SubscribeTaildropInbox:output_type -> daemon.TaildropInbox + 109, // 135: daemon.StartedService.MarkTaildropInboxRead:output_type -> google.protobuf.Empty + 63, // 136: daemon.StartedService.SendTaildropFiles:output_type -> daemon.TaildropSendServerMessage + 66, // 137: daemon.StartedService.DownloadTaildropFile:output_type -> daemon.DownloadTaildropFileChunk + 109, // 138: daemon.StartedService.DeleteTaildropFile:output_type -> google.protobuf.Empty + 109, // 139: daemon.StartedService.CancelTaildropReceiving:output_type -> google.protobuf.Empty + 70, // 140: daemon.StartedService.ProvideUSBDevices:output_type -> daemon.USBServerMessage + 81, // 141: daemon.StartedService.SubscribeUSBIPServerStatus:output_type -> daemon.USBIPServerStatusUpdate + 84, // 142: daemon.StartedService.SubscribeOpenConnectStatus:output_type -> daemon.OpenConnectStatusUpdate + 109, // 143: daemon.StartedService.SubmitOpenConnectAuthResponse:output_type -> google.protobuf.Empty + 109, // 144: daemon.StartedService.CancelOpenConnectAuthChallenge:output_type -> google.protobuf.Empty + 98, // 145: daemon.StartedService.SubscribeOpenVPNStatus:output_type -> daemon.OpenVPNStatusUpdate + 109, // 146: daemon.StartedService.SubmitOpenVPNChallengeResponse:output_type -> google.protobuf.Empty + 109, // 147: daemon.StartedService.CancelOpenVPNChallenge:output_type -> google.protobuf.Empty + 104, // 148: daemon.StartedService.SubscribeNotifications:output_type -> daemon.NotificationEvent + 107, // [107:149] is the sub-list for method output_type + 65, // [65:107] is the sub-list for method input_type 65, // [65:65] is the sub-list for extension type_name 65, // [65:65] is the sub-list for extension extendee 0, // [0:65] is the sub-list for field type_name @@ -8243,47 +8376,47 @@ func file_daemon_started_service_proto_init() { if File_daemon_started_service_proto != nil { return } - file_daemon_started_service_proto_msgTypes[36].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[38].OneofWrappers = []any{ (*TailscaleSSHClientMessage_Start)(nil), (*TailscaleSSHClientMessage_Input)(nil), (*TailscaleSSHClientMessage_Resize)(nil), } - file_daemon_started_service_proto_msgTypes[40].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[42].OneofWrappers = []any{ (*TailscaleSSHServerMessage_AuthBanner)(nil), (*TailscaleSSHServerMessage_Ready)(nil), (*TailscaleSSHServerMessage_Output)(nil), (*TailscaleSSHServerMessage_Exit)(nil), (*TailscaleSSHServerMessage_Error)(nil), } - file_daemon_started_service_proto_msgTypes[51].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[53].OneofWrappers = []any{ (*TaildropSendClientMessage_Start)(nil), (*TaildropSendClientMessage_Chunk)(nil), (*TaildropSendClientMessage_FileDone)(nil), } - file_daemon_started_service_proto_msgTypes[56].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[58].OneofWrappers = []any{ (*TaildropSendServerMessage_Progress)(nil), (*TaildropSendServerMessage_ReceivedBytes)(nil), } - file_daemon_started_service_proto_msgTypes[62].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[64].OneofWrappers = []any{ (*USBProviderMessage_Attach)(nil), (*USBProviderMessage_Detach)(nil), (*USBProviderMessage_UrbResponse)(nil), } - file_daemon_started_service_proto_msgTypes[63].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[65].OneofWrappers = []any{ (*USBServerMessage_Ready)(nil), (*USBServerMessage_UrbRequest)(nil), (*USBServerMessage_Abort)(nil), (*USBServerMessage_Error)(nil), } - file_daemon_started_service_proto_msgTypes[80].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[82].OneofWrappers = []any{ (*OpenConnectAuthChallenge_Form)(nil), (*OpenConnectAuthChallenge_Browser)(nil), } - file_daemon_started_service_proto_msgTypes[89].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[91].OneofWrappers = []any{ (*OpenConnectAuthResponseSubmission_Form)(nil), (*OpenConnectAuthResponseSubmission_Browser)(nil), } - file_daemon_started_service_proto_msgTypes[97].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[99].OneofWrappers = []any{ (*NotificationEvent_Send)(nil), (*NotificationEvent_Cancel)(nil), } @@ -8293,7 +8426,7 @@ func file_daemon_started_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_daemon_started_service_proto_rawDesc), len(file_daemon_started_service_proto_rawDesc)), NumEnums: 5, - NumMessages: 102, + NumMessages: 104, NumExtensions: 0, NumServices: 1, }, diff --git a/daemon/started_service.proto b/daemon/started_service.proto index 21116b30..2c27937b 100644 --- a/daemon/started_service.proto +++ b/daemon/started_service.proto @@ -35,6 +35,7 @@ service StartedService { rpc StartTailscalePing(TailscalePingRequest) returns (stream TailscalePingResponse) {} rpc SetTailscaleExitNode(SetTailscaleExitNodeRequest) returns (google.protobuf.Empty) {} rpc TailscaleLogout(TailscaleLogoutRequest) returns (google.protobuf.Empty) {} + rpc GetTailscaleCertificate(TailscaleCertificateRequest) returns (TailscaleCertificate) {} rpc StartTailscaleSSHSession(stream TailscaleSSHClientMessage) returns (stream TailscaleSSHServerMessage) {} rpc SubscribeTaildropInbox(SubscribeTaildropInboxRequest) returns (stream TaildropInbox) {} rpc MarkTaildropInboxRead(MarkTaildropInboxReadRequest) returns (google.protobuf.Empty) {} @@ -293,6 +294,7 @@ message TailscaleEndpointStatus { int32 waitingFileCount = 12; int32 receivingFileCount = 13; int32 unreadFileCount = 14; + repeated string certDomains = 15; } message TailscaleUserGroup { @@ -347,6 +349,17 @@ message TailscaleLogoutRequest { string endpointTag = 1; } +message TailscaleCertificateRequest { + string endpointTag = 1; + string domain = 2; + int64 minValiditySeconds = 3; +} + +message TailscaleCertificate { + bytes certificatePEM = 1; + bytes privateKeyPEM = 2; +} + message TailscaleSSHClientMessage { oneof message { TailscaleSSHStart start = 1; diff --git a/daemon/started_service_grpc.pb.go b/daemon/started_service_grpc.pb.go index 4a9fc458..ded8d7b4 100644 --- a/daemon/started_service_grpc.pb.go +++ b/daemon/started_service_grpc.pb.go @@ -40,6 +40,7 @@ const ( StartedService_StartTailscalePing_FullMethodName = "/daemon.StartedService/StartTailscalePing" StartedService_SetTailscaleExitNode_FullMethodName = "/daemon.StartedService/SetTailscaleExitNode" StartedService_TailscaleLogout_FullMethodName = "/daemon.StartedService/TailscaleLogout" + StartedService_GetTailscaleCertificate_FullMethodName = "/daemon.StartedService/GetTailscaleCertificate" StartedService_StartTailscaleSSHSession_FullMethodName = "/daemon.StartedService/StartTailscaleSSHSession" StartedService_SubscribeTaildropInbox_FullMethodName = "/daemon.StartedService/SubscribeTaildropInbox" StartedService_MarkTaildropInboxRead_FullMethodName = "/daemon.StartedService/MarkTaildropInboxRead" @@ -87,6 +88,7 @@ type StartedServiceClient interface { StartTailscalePing(ctx context.Context, in *TailscalePingRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[TailscalePingResponse], error) SetTailscaleExitNode(ctx context.Context, in *SetTailscaleExitNodeRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) TailscaleLogout(ctx context.Context, in *TailscaleLogoutRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + GetTailscaleCertificate(ctx context.Context, in *TailscaleCertificateRequest, opts ...grpc.CallOption) (*TailscaleCertificate, error) StartTailscaleSSHSession(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[TailscaleSSHClientMessage, TailscaleSSHServerMessage], error) SubscribeTaildropInbox(ctx context.Context, in *SubscribeTaildropInboxRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[TaildropInbox], error) MarkTaildropInboxRead(ctx context.Context, in *MarkTaildropInboxReadRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) @@ -462,6 +464,16 @@ func (c *startedServiceClient) TailscaleLogout(ctx context.Context, in *Tailscal return out, nil } +func (c *startedServiceClient) GetTailscaleCertificate(ctx context.Context, in *TailscaleCertificateRequest, opts ...grpc.CallOption) (*TailscaleCertificate, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(TailscaleCertificate) + err := c.cc.Invoke(ctx, StartedService_GetTailscaleCertificate_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *startedServiceClient) StartTailscaleSSHSession(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[TailscaleSSHClientMessage, TailscaleSSHServerMessage], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &StartedService_ServiceDesc.Streams[11], StartedService_StartTailscaleSSHSession_FullMethodName, cOpts...) @@ -714,6 +726,7 @@ type StartedServiceServer interface { StartTailscalePing(*TailscalePingRequest, grpc.ServerStreamingServer[TailscalePingResponse]) error SetTailscaleExitNode(context.Context, *SetTailscaleExitNodeRequest) (*emptypb.Empty, error) TailscaleLogout(context.Context, *TailscaleLogoutRequest) (*emptypb.Empty, error) + GetTailscaleCertificate(context.Context, *TailscaleCertificateRequest) (*TailscaleCertificate, error) StartTailscaleSSHSession(grpc.BidiStreamingServer[TailscaleSSHClientMessage, TailscaleSSHServerMessage]) error SubscribeTaildropInbox(*SubscribeTaildropInboxRequest, grpc.ServerStreamingServer[TaildropInbox]) error MarkTaildropInboxRead(context.Context, *MarkTaildropInboxReadRequest) (*emptypb.Empty, error) @@ -840,6 +853,10 @@ func (UnimplementedStartedServiceServer) TailscaleLogout(context.Context, *Tails return nil, status.Error(codes.Unimplemented, "method TailscaleLogout not implemented") } +func (UnimplementedStartedServiceServer) GetTailscaleCertificate(context.Context, *TailscaleCertificateRequest) (*TailscaleCertificate, error) { + return nil, status.Error(codes.Unimplemented, "method GetTailscaleCertificate not implemented") +} + func (UnimplementedStartedServiceServer) StartTailscaleSSHSession(grpc.BidiStreamingServer[TailscaleSSHClientMessage, TailscaleSSHServerMessage]) error { return status.Error(codes.Unimplemented, "method StartTailscaleSSHSession not implemented") } @@ -1297,6 +1314,24 @@ func _StartedService_TailscaleLogout_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _StartedService_GetTailscaleCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TailscaleCertificateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StartedServiceServer).GetTailscaleCertificate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StartedService_GetTailscaleCertificate_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StartedServiceServer).GetTailscaleCertificate(ctx, req.(*TailscaleCertificateRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _StartedService_StartTailscaleSSHSession_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(StartedServiceServer).StartTailscaleSSHSession(&grpc.GenericServerStream[TailscaleSSHClientMessage, TailscaleSSHServerMessage]{ServerStream: stream}) } @@ -1573,6 +1608,10 @@ var StartedService_ServiceDesc = grpc.ServiceDesc{ MethodName: "TailscaleLogout", Handler: _StartedService_TailscaleLogout_Handler, }, + { + MethodName: "GetTailscaleCertificate", + Handler: _StartedService_GetTailscaleCertificate_Handler, + }, { MethodName: "MarkTaildropInboxRead", Handler: _StartedService_MarkTaildropInboxRead_Handler, diff --git a/protocol/tailscale/certificate.go b/protocol/tailscale/certificate.go new file mode 100644 index 00000000..ebf084f3 --- /dev/null +++ b/protocol/tailscale/certificate.go @@ -0,0 +1,22 @@ +//go:build with_gvisor + +package tailscale + +import ( + "context" + "time" + + "github.com/sagernet/sing/common" + E "github.com/sagernet/sing/common/exceptions" +) + +func (t *Endpoint) GetTailscaleCertificate(ctx context.Context, domain string, minValidity time.Duration) ([]byte, []byte, error) { + if !t.started.Load() { + return nil, nil, E.New("Tailscale is not ready yet") + } + certificatePEM, privateKeyPEM, err := common.Must1(t.server.LocalClient()).CertPairWithValidity(ctx, domain, minValidity) + if err != nil { + return nil, nil, E.Cause(err, "tailscale certificate") + } + return certificatePEM, privateKeyPEM, nil +} diff --git a/protocol/tailscale/status.go b/protocol/tailscale/status.go index 17b6d640..bd1630ed 100644 --- a/protocol/tailscale/status.go +++ b/protocol/tailscale/status.go @@ -42,6 +42,7 @@ func (t *Endpoint) SubscribeTailscaleStatus(ctx context.Context, fn func(*adapte result.WaitingFileCount = t.taildrop.waitingFileCount() result.ReceivingFileCount = t.taildrop.receivingFileCount() result.UnreadFileCount = t.taildrop.unreadFileCount() + result.CertDomains = t.server.CertDomains() if len(taildropTargets) > 0 { for _, group := range result.UserGroups { for _, peer := range group.Peers {