From 65aeb3c8f47d9d6ec76e5bbf6b634c00c1a535bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 11 Jun 2026 08:11:06 +0800 Subject: [PATCH] daemon: Split host operations into ManagedService --- daemon/managed_service.go | 84 +++ daemon/managed_service.pb.go | 295 ++++++++++ daemon/managed_service.proto | 33 ++ daemon/managed_service_grpc.pb.go | 273 +++++++++ daemon/platform.go | 7 +- daemon/started_service.go | 52 -- daemon/started_service.pb.go | 816 +++++++++----------------- daemon/started_service.proto | 28 - daemon/started_service_grpc.pb.go | 195 ------ experimental/libbox/command_client.go | 52 +- experimental/libbox/command_server.go | 12 + 11 files changed, 1016 insertions(+), 831 deletions(-) create mode 100644 daemon/managed_service.go create mode 100644 daemon/managed_service.pb.go create mode 100644 daemon/managed_service.proto create mode 100644 daemon/managed_service_grpc.pb.go diff --git a/daemon/managed_service.go b/daemon/managed_service.go new file mode 100644 index 000000000..922a1d15c --- /dev/null +++ b/daemon/managed_service.go @@ -0,0 +1,84 @@ +package daemon + +import ( + "context" + "time" + "unsafe" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/emptypb" +) + +var _ ManagedServiceServer = (*ManagedService)(nil) + +type ManagedService struct { + handler ManagedHandler + debug bool +} + +type ManagedServiceOptions struct { + Handler ManagedHandler + Debug bool +} + +func NewManagedService(options ManagedServiceOptions) *ManagedService { + return &ManagedService{ + handler: options.Handler, + debug: options.Debug, + } +} + +func (s *ManagedService) StopService(ctx context.Context, empty *emptypb.Empty) (*emptypb.Empty, error) { + err := s.handler.ServiceStop() + if err != nil { + return nil, err + } + return &emptypb.Empty{}, nil +} + +func (s *ManagedService) ReloadService(ctx context.Context, empty *emptypb.Empty) (*emptypb.Empty, error) { + err := s.handler.ServiceReload() + if err != nil { + return nil, err + } + return &emptypb.Empty{}, nil +} + +func (s *ManagedService) GetSystemProxyStatus(ctx context.Context, empty *emptypb.Empty) (*SystemProxyStatus, error) { + return s.handler.SystemProxyStatus() +} + +func (s *ManagedService) SetSystemProxyEnabled(ctx context.Context, request *SetSystemProxyEnabledRequest) (*emptypb.Empty, error) { + err := s.handler.SetSystemProxyEnabled(request.Enabled) + if err != nil { + return nil, err + } + return &emptypb.Empty{}, nil +} + +func (s *ManagedService) TriggerDebugCrash(ctx context.Context, request *DebugCrashRequest) (*emptypb.Empty, error) { + if !s.debug { + return nil, status.Error(codes.PermissionDenied, "debug crash trigger unavailable") + } + if request == nil { + return nil, status.Error(codes.InvalidArgument, "missing debug crash request") + } + switch request.Type { + case DebugCrashRequest_GO: + time.AfterFunc(200*time.Millisecond, func() { + *(*int)(unsafe.Pointer(uintptr(0))) = 0 + }) + case DebugCrashRequest_NATIVE: + err := s.handler.TriggerNativeCrash() + if err != nil { + return nil, err + } + default: + return nil, status.Error(codes.InvalidArgument, "unknown debug crash type") + } + return &emptypb.Empty{}, nil +} + +func (s *ManagedService) mustEmbedUnimplementedManagedServiceServer() { +} diff --git a/daemon/managed_service.pb.go b/daemon/managed_service.pb.go new file mode 100644 index 000000000..2ca6b614a --- /dev/null +++ b/daemon/managed_service.pb.go @@ -0,0 +1,295 @@ +package daemon + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DebugCrashRequest_Type int32 + +const ( + DebugCrashRequest_GO DebugCrashRequest_Type = 0 + DebugCrashRequest_NATIVE DebugCrashRequest_Type = 1 +) + +// Enum value maps for DebugCrashRequest_Type. +var ( + DebugCrashRequest_Type_name = map[int32]string{ + 0: "GO", + 1: "NATIVE", + } + DebugCrashRequest_Type_value = map[string]int32{ + "GO": 0, + "NATIVE": 1, + } +) + +func (x DebugCrashRequest_Type) Enum() *DebugCrashRequest_Type { + p := new(DebugCrashRequest_Type) + *p = x + return p +} + +func (x DebugCrashRequest_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DebugCrashRequest_Type) Descriptor() protoreflect.EnumDescriptor { + return file_daemon_managed_service_proto_enumTypes[0].Descriptor() +} + +func (DebugCrashRequest_Type) Type() protoreflect.EnumType { + return &file_daemon_managed_service_proto_enumTypes[0] +} + +func (x DebugCrashRequest_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DebugCrashRequest_Type.Descriptor instead. +func (DebugCrashRequest_Type) EnumDescriptor() ([]byte, []int) { + return file_daemon_managed_service_proto_rawDescGZIP(), []int{2, 0} +} + +type SystemProxyStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SystemProxyStatus) Reset() { + *x = SystemProxyStatus{} + mi := &file_daemon_managed_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SystemProxyStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemProxyStatus) ProtoMessage() {} + +func (x *SystemProxyStatus) ProtoReflect() protoreflect.Message { + mi := &file_daemon_managed_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SystemProxyStatus.ProtoReflect.Descriptor instead. +func (*SystemProxyStatus) Descriptor() ([]byte, []int) { + return file_daemon_managed_service_proto_rawDescGZIP(), []int{0} +} + +func (x *SystemProxyStatus) GetAvailable() bool { + if x != nil { + return x.Available + } + return false +} + +func (x *SystemProxyStatus) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +type SetSystemProxyEnabledRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetSystemProxyEnabledRequest) Reset() { + *x = SetSystemProxyEnabledRequest{} + mi := &file_daemon_managed_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetSystemProxyEnabledRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetSystemProxyEnabledRequest) ProtoMessage() {} + +func (x *SetSystemProxyEnabledRequest) ProtoReflect() protoreflect.Message { + mi := &file_daemon_managed_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetSystemProxyEnabledRequest.ProtoReflect.Descriptor instead. +func (*SetSystemProxyEnabledRequest) Descriptor() ([]byte, []int) { + return file_daemon_managed_service_proto_rawDescGZIP(), []int{1} +} + +func (x *SetSystemProxyEnabledRequest) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +type DebugCrashRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type DebugCrashRequest_Type `protobuf:"varint,1,opt,name=type,proto3,enum=daemon.DebugCrashRequest_Type" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DebugCrashRequest) Reset() { + *x = DebugCrashRequest{} + mi := &file_daemon_managed_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DebugCrashRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DebugCrashRequest) ProtoMessage() {} + +func (x *DebugCrashRequest) ProtoReflect() protoreflect.Message { + mi := &file_daemon_managed_service_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DebugCrashRequest.ProtoReflect.Descriptor instead. +func (*DebugCrashRequest) Descriptor() ([]byte, []int) { + return file_daemon_managed_service_proto_rawDescGZIP(), []int{2} +} + +func (x *DebugCrashRequest) GetType() DebugCrashRequest_Type { + if x != nil { + return x.Type + } + return DebugCrashRequest_GO +} + +var File_daemon_managed_service_proto protoreflect.FileDescriptor + +const file_daemon_managed_service_proto_rawDesc = "" + + "\n" + + "\x1cdaemon/managed_service.proto\x12\x06daemon\x1a\x1bgoogle/protobuf/empty.proto\"K\n" + + "\x11SystemProxyStatus\x12\x1c\n" + + "\tavailable\x18\x01 \x01(\bR\tavailable\x12\x18\n" + + "\aenabled\x18\x02 \x01(\bR\aenabled\"8\n" + + "\x1cSetSystemProxyEnabledRequest\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\"c\n" + + "\x11DebugCrashRequest\x122\n" + + "\x04type\x18\x01 \x01(\x0e2\x1e.daemon.DebugCrashRequest.TypeR\x04type\"\x1a\n" + + "\x04Type\x12\x06\n" + + "\x02GO\x10\x00\x12\n" + + "\n" + + "\x06NATIVE\x10\x012\x80\x03\n" + + "\x0eManagedService\x12=\n" + + "\vStopService\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12?\n" + + "\rReloadService\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12K\n" + + "\x14GetSystemProxyStatus\x12\x16.google.protobuf.Empty\x1a\x19.daemon.SystemProxyStatus\"\x00\x12W\n" + + "\x15SetSystemProxyEnabled\x12$.daemon.SetSystemProxyEnabledRequest\x1a\x16.google.protobuf.Empty\"\x00\x12H\n" + + "\x11TriggerDebugCrash\x12\x19.daemon.DebugCrashRequest\x1a\x16.google.protobuf.Empty\"\x00B%Z#github.com/sagernet/sing-box/daemonb\x06proto3" + +var ( + file_daemon_managed_service_proto_rawDescOnce sync.Once + file_daemon_managed_service_proto_rawDescData []byte +) + +func file_daemon_managed_service_proto_rawDescGZIP() []byte { + file_daemon_managed_service_proto_rawDescOnce.Do(func() { + file_daemon_managed_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_daemon_managed_service_proto_rawDesc), len(file_daemon_managed_service_proto_rawDesc))) + }) + return file_daemon_managed_service_proto_rawDescData +} + +var ( + file_daemon_managed_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) + file_daemon_managed_service_proto_msgTypes = make([]protoimpl.MessageInfo, 3) + file_daemon_managed_service_proto_goTypes = []any{ + (DebugCrashRequest_Type)(0), // 0: daemon.DebugCrashRequest.Type + (*SystemProxyStatus)(nil), // 1: daemon.SystemProxyStatus + (*SetSystemProxyEnabledRequest)(nil), // 2: daemon.SetSystemProxyEnabledRequest + (*DebugCrashRequest)(nil), // 3: daemon.DebugCrashRequest + (*emptypb.Empty)(nil), // 4: google.protobuf.Empty + } +) + +var file_daemon_managed_service_proto_depIdxs = []int32{ + 0, // 0: daemon.DebugCrashRequest.type:type_name -> daemon.DebugCrashRequest.Type + 4, // 1: daemon.ManagedService.StopService:input_type -> google.protobuf.Empty + 4, // 2: daemon.ManagedService.ReloadService:input_type -> google.protobuf.Empty + 4, // 3: daemon.ManagedService.GetSystemProxyStatus:input_type -> google.protobuf.Empty + 2, // 4: daemon.ManagedService.SetSystemProxyEnabled:input_type -> daemon.SetSystemProxyEnabledRequest + 3, // 5: daemon.ManagedService.TriggerDebugCrash:input_type -> daemon.DebugCrashRequest + 4, // 6: daemon.ManagedService.StopService:output_type -> google.protobuf.Empty + 4, // 7: daemon.ManagedService.ReloadService:output_type -> google.protobuf.Empty + 1, // 8: daemon.ManagedService.GetSystemProxyStatus:output_type -> daemon.SystemProxyStatus + 4, // 9: daemon.ManagedService.SetSystemProxyEnabled:output_type -> google.protobuf.Empty + 4, // 10: daemon.ManagedService.TriggerDebugCrash:output_type -> google.protobuf.Empty + 6, // [6:11] is the sub-list for method output_type + 1, // [1:6] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_daemon_managed_service_proto_init() } +func file_daemon_managed_service_proto_init() { + if File_daemon_managed_service_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_daemon_managed_service_proto_rawDesc), len(file_daemon_managed_service_proto_rawDesc)), + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_daemon_managed_service_proto_goTypes, + DependencyIndexes: file_daemon_managed_service_proto_depIdxs, + EnumInfos: file_daemon_managed_service_proto_enumTypes, + MessageInfos: file_daemon_managed_service_proto_msgTypes, + }.Build() + File_daemon_managed_service_proto = out.File + file_daemon_managed_service_proto_goTypes = nil + file_daemon_managed_service_proto_depIdxs = nil +} diff --git a/daemon/managed_service.proto b/daemon/managed_service.proto new file mode 100644 index 000000000..9626fd847 --- /dev/null +++ b/daemon/managed_service.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +package daemon; +option go_package = "github.com/sagernet/sing-box/daemon"; + +import "google/protobuf/empty.proto"; + +service ManagedService { + rpc StopService(google.protobuf.Empty) returns (google.protobuf.Empty); + rpc ReloadService(google.protobuf.Empty) returns (google.protobuf.Empty); + + rpc GetSystemProxyStatus(google.protobuf.Empty) returns(SystemProxyStatus) {} + rpc SetSystemProxyEnabled(SetSystemProxyEnabledRequest) returns(google.protobuf.Empty) {} + rpc TriggerDebugCrash(DebugCrashRequest) returns(google.protobuf.Empty) {} +} + +message SystemProxyStatus { + bool available = 1; + bool enabled = 2; +} + +message SetSystemProxyEnabledRequest { + bool enabled = 1; +} + +message DebugCrashRequest { + enum Type { + GO = 0; + NATIVE = 1; + } + + Type type = 1; +} diff --git a/daemon/managed_service_grpc.pb.go b/daemon/managed_service_grpc.pb.go new file mode 100644 index 000000000..668627f6f --- /dev/null +++ b/daemon/managed_service_grpc.pb.go @@ -0,0 +1,273 @@ +package daemon + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + ManagedService_StopService_FullMethodName = "/daemon.ManagedService/StopService" + ManagedService_ReloadService_FullMethodName = "/daemon.ManagedService/ReloadService" + ManagedService_GetSystemProxyStatus_FullMethodName = "/daemon.ManagedService/GetSystemProxyStatus" + ManagedService_SetSystemProxyEnabled_FullMethodName = "/daemon.ManagedService/SetSystemProxyEnabled" + ManagedService_TriggerDebugCrash_FullMethodName = "/daemon.ManagedService/TriggerDebugCrash" +) + +// ManagedServiceClient is the client API for ManagedService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ManagedServiceClient interface { + StopService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + ReloadService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + GetSystemProxyStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SystemProxyStatus, error) + SetSystemProxyEnabled(ctx context.Context, in *SetSystemProxyEnabledRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + TriggerDebugCrash(ctx context.Context, in *DebugCrashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type managedServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewManagedServiceClient(cc grpc.ClientConnInterface) ManagedServiceClient { + return &managedServiceClient{cc} +} + +func (c *managedServiceClient) StopService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ManagedService_StopService_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *managedServiceClient) ReloadService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ManagedService_ReloadService_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *managedServiceClient) GetSystemProxyStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SystemProxyStatus, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SystemProxyStatus) + err := c.cc.Invoke(ctx, ManagedService_GetSystemProxyStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *managedServiceClient) SetSystemProxyEnabled(ctx context.Context, in *SetSystemProxyEnabledRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ManagedService_SetSystemProxyEnabled_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *managedServiceClient) TriggerDebugCrash(ctx context.Context, in *DebugCrashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ManagedService_TriggerDebugCrash_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ManagedServiceServer is the server API for ManagedService service. +// All implementations must embed UnimplementedManagedServiceServer +// for forward compatibility. +type ManagedServiceServer interface { + StopService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + ReloadService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + GetSystemProxyStatus(context.Context, *emptypb.Empty) (*SystemProxyStatus, error) + SetSystemProxyEnabled(context.Context, *SetSystemProxyEnabledRequest) (*emptypb.Empty, error) + TriggerDebugCrash(context.Context, *DebugCrashRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedManagedServiceServer() +} + +// UnimplementedManagedServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedManagedServiceServer struct{} + +func (UnimplementedManagedServiceServer) StopService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Error(codes.Unimplemented, "method StopService not implemented") +} + +func (UnimplementedManagedServiceServer) ReloadService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Error(codes.Unimplemented, "method ReloadService not implemented") +} + +func (UnimplementedManagedServiceServer) GetSystemProxyStatus(context.Context, *emptypb.Empty) (*SystemProxyStatus, error) { + return nil, status.Error(codes.Unimplemented, "method GetSystemProxyStatus not implemented") +} + +func (UnimplementedManagedServiceServer) SetSystemProxyEnabled(context.Context, *SetSystemProxyEnabledRequest) (*emptypb.Empty, error) { + return nil, status.Error(codes.Unimplemented, "method SetSystemProxyEnabled not implemented") +} + +func (UnimplementedManagedServiceServer) TriggerDebugCrash(context.Context, *DebugCrashRequest) (*emptypb.Empty, error) { + return nil, status.Error(codes.Unimplemented, "method TriggerDebugCrash not implemented") +} +func (UnimplementedManagedServiceServer) mustEmbedUnimplementedManagedServiceServer() {} +func (UnimplementedManagedServiceServer) testEmbeddedByValue() {} + +// UnsafeManagedServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ManagedServiceServer will +// result in compilation errors. +type UnsafeManagedServiceServer interface { + mustEmbedUnimplementedManagedServiceServer() +} + +func RegisterManagedServiceServer(s grpc.ServiceRegistrar, srv ManagedServiceServer) { + // If the following call panics, it indicates UnimplementedManagedServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&ManagedService_ServiceDesc, srv) +} + +func _ManagedService_StopService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagedServiceServer).StopService(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ManagedService_StopService_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagedServiceServer).StopService(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ManagedService_ReloadService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagedServiceServer).ReloadService(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ManagedService_ReloadService_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagedServiceServer).ReloadService(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ManagedService_GetSystemProxyStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagedServiceServer).GetSystemProxyStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ManagedService_GetSystemProxyStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagedServiceServer).GetSystemProxyStatus(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ManagedService_SetSystemProxyEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetSystemProxyEnabledRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagedServiceServer).SetSystemProxyEnabled(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ManagedService_SetSystemProxyEnabled_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagedServiceServer).SetSystemProxyEnabled(ctx, req.(*SetSystemProxyEnabledRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ManagedService_TriggerDebugCrash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DebugCrashRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagedServiceServer).TriggerDebugCrash(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ManagedService_TriggerDebugCrash_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagedServiceServer).TriggerDebugCrash(ctx, req.(*DebugCrashRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ManagedService_ServiceDesc is the grpc.ServiceDesc for ManagedService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ManagedService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "daemon.ManagedService", + HandlerType: (*ManagedServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "StopService", + Handler: _ManagedService_StopService_Handler, + }, + { + MethodName: "ReloadService", + Handler: _ManagedService_ReloadService_Handler, + }, + { + MethodName: "GetSystemProxyStatus", + Handler: _ManagedService_GetSystemProxyStatus_Handler, + }, + { + MethodName: "SetSystemProxyEnabled", + Handler: _ManagedService_SetSystemProxyEnabled_Handler, + }, + { + MethodName: "TriggerDebugCrash", + Handler: _ManagedService_TriggerDebugCrash_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "daemon/managed_service.proto", +} diff --git a/daemon/platform.go b/daemon/platform.go index 3d24fc259..2e0d0e6aa 100644 --- a/daemon/platform.go +++ b/daemon/platform.go @@ -1,11 +1,14 @@ package daemon type PlatformHandler interface { + WriteDebugMessage(message string) + ConnectSSHAgent() (int32, error) +} + +type ManagedHandler interface { ServiceStop() error ServiceReload() error SystemProxyStatus() (*SystemProxyStatus, error) SetSystemProxyEnabled(enabled bool) error TriggerNativeCrash() error - WriteDebugMessage(message string) - ConnectSSHAgent() (int32, error) } diff --git a/daemon/started_service.go b/daemon/started_service.go index 7b2a09497..103b2c71b 100644 --- a/daemon/started_service.go +++ b/daemon/started_service.go @@ -6,7 +6,6 @@ import ( "runtime" "sync" "time" - "unsafe" "github.com/sagernet/sing-box/adapter" "github.com/sagernet/sing-box/common/dialer" @@ -261,22 +260,6 @@ func (s *StartedService) SetError(err error) { s.WriteMessage(log.LevelError, err.Error()) } -func (s *StartedService) StopService(ctx context.Context, empty *emptypb.Empty) (*emptypb.Empty, error) { - err := s.handler.ServiceStop() - if err != nil { - return nil, err - } - return &emptypb.Empty{}, nil -} - -func (s *StartedService) ReloadService(ctx context.Context, empty *emptypb.Empty) (*emptypb.Empty, error) { - err := s.handler.ServiceReload() - if err != nil { - return nil, err - } - return &emptypb.Empty{}, nil -} - func (s *StartedService) SubscribeServiceStatus(empty *emptypb.Empty, server grpc.ServerStreamingServer[ServiceStatus]) error { subscription, done, err := s.serviceStatusObserver.Subscribe() if err != nil { @@ -684,41 +667,6 @@ func (s *StartedService) SetGroupExpand(ctx context.Context, request *SetGroupEx return &emptypb.Empty{}, nil } -func (s *StartedService) GetSystemProxyStatus(ctx context.Context, empty *emptypb.Empty) (*SystemProxyStatus, error) { - return s.handler.SystemProxyStatus() -} - -func (s *StartedService) SetSystemProxyEnabled(ctx context.Context, request *SetSystemProxyEnabledRequest) (*emptypb.Empty, error) { - err := s.handler.SetSystemProxyEnabled(request.Enabled) - if err != nil { - return nil, err - } - return &emptypb.Empty{}, nil -} - -func (s *StartedService) TriggerDebugCrash(ctx context.Context, request *DebugCrashRequest) (*emptypb.Empty, error) { - if !s.debug { - return nil, status.Error(codes.PermissionDenied, "debug crash trigger unavailable") - } - if request == nil { - return nil, status.Error(codes.InvalidArgument, "missing debug crash request") - } - switch request.Type { - case DebugCrashRequest_GO: - time.AfterFunc(200*time.Millisecond, func() { - *(*int)(unsafe.Pointer(uintptr(0))) = 0 - }) - case DebugCrashRequest_NATIVE: - err := s.handler.TriggerNativeCrash() - if err != nil { - return nil, err - } - default: - return nil, status.Error(codes.InvalidArgument, "unknown debug crash type") - } - return &emptypb.Empty{}, nil -} - func (s *StartedService) TriggerOOMReport(ctx context.Context, _ *emptypb.Empty) (*emptypb.Empty, error) { instance := s.Instance() if instance == nil { diff --git a/daemon/started_service.pb.go b/daemon/started_service.pb.go index 047e92f0a..5304a4106 100644 --- a/daemon/started_service.pb.go +++ b/daemon/started_service.pb.go @@ -182,52 +182,6 @@ func (ServiceStatus_Type) EnumDescriptor() ([]byte, []int) { return file_daemon_started_service_proto_rawDescGZIP(), []int{0, 0} } -type DebugCrashRequest_Type int32 - -const ( - DebugCrashRequest_GO DebugCrashRequest_Type = 0 - DebugCrashRequest_NATIVE DebugCrashRequest_Type = 1 -) - -// Enum value maps for DebugCrashRequest_Type. -var ( - DebugCrashRequest_Type_name = map[int32]string{ - 0: "GO", - 1: "NATIVE", - } - DebugCrashRequest_Type_value = map[string]int32{ - "GO": 0, - "NATIVE": 1, - } -) - -func (x DebugCrashRequest_Type) Enum() *DebugCrashRequest_Type { - p := new(DebugCrashRequest_Type) - *p = x - return p -} - -func (x DebugCrashRequest_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DebugCrashRequest_Type) Descriptor() protoreflect.EnumDescriptor { - return file_daemon_started_service_proto_enumTypes[3].Descriptor() -} - -func (DebugCrashRequest_Type) Type() protoreflect.EnumType { - return &file_daemon_started_service_proto_enumTypes[3] -} - -func (x DebugCrashRequest_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DebugCrashRequest_Type.Descriptor instead. -func (DebugCrashRequest_Type) EnumDescriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{16, 0} -} - type ServiceStatus struct { state protoimpl.MessageState `protogen:"open.v1"` Status ServiceStatus_Type `protobuf:"varint,1,opt,name=status,proto3,enum=daemon.ServiceStatus_Type" json:"status,omitempty"` @@ -280,50 +234,6 @@ func (x *ServiceStatus) GetErrorMessage() string { return "" } -type ReloadServiceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NewProfileContent string `protobuf:"bytes,1,opt,name=newProfileContent,proto3" json:"newProfileContent,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReloadServiceRequest) Reset() { - *x = ReloadServiceRequest{} - mi := &file_daemon_started_service_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReloadServiceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReloadServiceRequest) ProtoMessage() {} - -func (x *ReloadServiceRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReloadServiceRequest.ProtoReflect.Descriptor instead. -func (*ReloadServiceRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{1} -} - -func (x *ReloadServiceRequest) GetNewProfileContent() string { - if x != nil { - return x.NewProfileContent - } - return "" -} - type SubscribeStatusRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Interval int64 `protobuf:"varint,1,opt,name=interval,proto3" json:"interval,omitempty"` @@ -333,7 +243,7 @@ type SubscribeStatusRequest struct { func (x *SubscribeStatusRequest) Reset() { *x = SubscribeStatusRequest{} - mi := &file_daemon_started_service_proto_msgTypes[2] + mi := &file_daemon_started_service_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -345,7 +255,7 @@ func (x *SubscribeStatusRequest) String() string { func (*SubscribeStatusRequest) ProtoMessage() {} func (x *SubscribeStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[2] + mi := &file_daemon_started_service_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -358,7 +268,7 @@ func (x *SubscribeStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeStatusRequest.ProtoReflect.Descriptor instead. func (*SubscribeStatusRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{2} + return file_daemon_started_service_proto_rawDescGZIP(), []int{1} } func (x *SubscribeStatusRequest) GetInterval() int64 { @@ -378,7 +288,7 @@ type Log struct { func (x *Log) Reset() { *x = Log{} - mi := &file_daemon_started_service_proto_msgTypes[3] + mi := &file_daemon_started_service_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -390,7 +300,7 @@ func (x *Log) String() string { func (*Log) ProtoMessage() {} func (x *Log) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[3] + mi := &file_daemon_started_service_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -403,7 +313,7 @@ func (x *Log) ProtoReflect() protoreflect.Message { // Deprecated: Use Log.ProtoReflect.Descriptor instead. func (*Log) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{3} + return file_daemon_started_service_proto_rawDescGZIP(), []int{2} } func (x *Log) GetMessages() []*Log_Message { @@ -429,7 +339,7 @@ type DefaultLogLevel struct { func (x *DefaultLogLevel) Reset() { *x = DefaultLogLevel{} - mi := &file_daemon_started_service_proto_msgTypes[4] + mi := &file_daemon_started_service_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -441,7 +351,7 @@ func (x *DefaultLogLevel) String() string { func (*DefaultLogLevel) ProtoMessage() {} func (x *DefaultLogLevel) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[4] + mi := &file_daemon_started_service_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -454,7 +364,7 @@ func (x *DefaultLogLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DefaultLogLevel.ProtoReflect.Descriptor instead. func (*DefaultLogLevel) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{4} + return file_daemon_started_service_proto_rawDescGZIP(), []int{3} } func (x *DefaultLogLevel) GetLevel() LogLevel { @@ -481,7 +391,7 @@ type Status struct { func (x *Status) Reset() { *x = Status{} - mi := &file_daemon_started_service_proto_msgTypes[5] + mi := &file_daemon_started_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -493,7 +403,7 @@ func (x *Status) String() string { func (*Status) ProtoMessage() {} func (x *Status) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[5] + mi := &file_daemon_started_service_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -506,7 +416,7 @@ func (x *Status) ProtoReflect() protoreflect.Message { // Deprecated: Use Status.ProtoReflect.Descriptor instead. func (*Status) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{5} + return file_daemon_started_service_proto_rawDescGZIP(), []int{4} } func (x *Status) GetMemory() uint64 { @@ -581,7 +491,7 @@ type Groups struct { func (x *Groups) Reset() { *x = Groups{} - mi := &file_daemon_started_service_proto_msgTypes[6] + mi := &file_daemon_started_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -593,7 +503,7 @@ func (x *Groups) String() string { func (*Groups) ProtoMessage() {} func (x *Groups) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[6] + mi := &file_daemon_started_service_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -606,7 +516,7 @@ func (x *Groups) ProtoReflect() protoreflect.Message { // Deprecated: Use Groups.ProtoReflect.Descriptor instead. func (*Groups) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{6} + return file_daemon_started_service_proto_rawDescGZIP(), []int{5} } func (x *Groups) GetGroup() []*Group { @@ -630,7 +540,7 @@ type Group struct { func (x *Group) Reset() { *x = Group{} - mi := &file_daemon_started_service_proto_msgTypes[7] + mi := &file_daemon_started_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -642,7 +552,7 @@ func (x *Group) String() string { func (*Group) ProtoMessage() {} func (x *Group) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[7] + mi := &file_daemon_started_service_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -655,7 +565,7 @@ func (x *Group) ProtoReflect() protoreflect.Message { // Deprecated: Use Group.ProtoReflect.Descriptor instead. func (*Group) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{7} + return file_daemon_started_service_proto_rawDescGZIP(), []int{6} } func (x *Group) GetTag() string { @@ -712,7 +622,7 @@ type GroupItem struct { func (x *GroupItem) Reset() { *x = GroupItem{} - mi := &file_daemon_started_service_proto_msgTypes[8] + mi := &file_daemon_started_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -724,7 +634,7 @@ func (x *GroupItem) String() string { func (*GroupItem) ProtoMessage() {} func (x *GroupItem) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[8] + mi := &file_daemon_started_service_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -737,7 +647,7 @@ func (x *GroupItem) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupItem.ProtoReflect.Descriptor instead. func (*GroupItem) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{8} + return file_daemon_started_service_proto_rawDescGZIP(), []int{7} } func (x *GroupItem) GetTag() string { @@ -777,7 +687,7 @@ type URLTestRequest struct { func (x *URLTestRequest) Reset() { *x = URLTestRequest{} - mi := &file_daemon_started_service_proto_msgTypes[9] + mi := &file_daemon_started_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -789,7 +699,7 @@ func (x *URLTestRequest) String() string { func (*URLTestRequest) ProtoMessage() {} func (x *URLTestRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[9] + mi := &file_daemon_started_service_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -802,7 +712,7 @@ func (x *URLTestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use URLTestRequest.ProtoReflect.Descriptor instead. func (*URLTestRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{9} + return file_daemon_started_service_proto_rawDescGZIP(), []int{8} } func (x *URLTestRequest) GetOutboundTag() string { @@ -822,7 +732,7 @@ type SelectOutboundRequest struct { func (x *SelectOutboundRequest) Reset() { *x = SelectOutboundRequest{} - mi := &file_daemon_started_service_proto_msgTypes[10] + mi := &file_daemon_started_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -834,7 +744,7 @@ func (x *SelectOutboundRequest) String() string { func (*SelectOutboundRequest) ProtoMessage() {} func (x *SelectOutboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[10] + mi := &file_daemon_started_service_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -847,7 +757,7 @@ func (x *SelectOutboundRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SelectOutboundRequest.ProtoReflect.Descriptor instead. func (*SelectOutboundRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{10} + return file_daemon_started_service_proto_rawDescGZIP(), []int{9} } func (x *SelectOutboundRequest) GetGroupTag() string { @@ -874,7 +784,7 @@ type SetGroupExpandRequest struct { func (x *SetGroupExpandRequest) Reset() { *x = SetGroupExpandRequest{} - mi := &file_daemon_started_service_proto_msgTypes[11] + mi := &file_daemon_started_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -886,7 +796,7 @@ func (x *SetGroupExpandRequest) String() string { func (*SetGroupExpandRequest) ProtoMessage() {} func (x *SetGroupExpandRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[11] + mi := &file_daemon_started_service_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -899,7 +809,7 @@ func (x *SetGroupExpandRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGroupExpandRequest.ProtoReflect.Descriptor instead. func (*SetGroupExpandRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{11} + return file_daemon_started_service_proto_rawDescGZIP(), []int{10} } func (x *SetGroupExpandRequest) GetGroupTag() string { @@ -925,7 +835,7 @@ type ClashMode struct { func (x *ClashMode) Reset() { *x = ClashMode{} - mi := &file_daemon_started_service_proto_msgTypes[12] + mi := &file_daemon_started_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -937,7 +847,7 @@ func (x *ClashMode) String() string { func (*ClashMode) ProtoMessage() {} func (x *ClashMode) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[12] + mi := &file_daemon_started_service_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -950,7 +860,7 @@ func (x *ClashMode) ProtoReflect() protoreflect.Message { // Deprecated: Use ClashMode.ProtoReflect.Descriptor instead. func (*ClashMode) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{12} + return file_daemon_started_service_proto_rawDescGZIP(), []int{11} } func (x *ClashMode) GetMode() string { @@ -970,7 +880,7 @@ type ClashModeStatus struct { func (x *ClashModeStatus) Reset() { *x = ClashModeStatus{} - mi := &file_daemon_started_service_proto_msgTypes[13] + mi := &file_daemon_started_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +892,7 @@ func (x *ClashModeStatus) String() string { func (*ClashModeStatus) ProtoMessage() {} func (x *ClashModeStatus) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[13] + mi := &file_daemon_started_service_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +905,7 @@ func (x *ClashModeStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ClashModeStatus.ProtoReflect.Descriptor instead. func (*ClashModeStatus) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{13} + return file_daemon_started_service_proto_rawDescGZIP(), []int{12} } func (x *ClashModeStatus) GetModeList() []string { @@ -1012,146 +922,6 @@ func (x *ClashModeStatus) GetCurrentMode() string { return "" } -type SystemProxyStatus struct { - state protoimpl.MessageState `protogen:"open.v1"` - Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SystemProxyStatus) Reset() { - *x = SystemProxyStatus{} - mi := &file_daemon_started_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SystemProxyStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SystemProxyStatus) ProtoMessage() {} - -func (x *SystemProxyStatus) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SystemProxyStatus.ProtoReflect.Descriptor instead. -func (*SystemProxyStatus) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{14} -} - -func (x *SystemProxyStatus) GetAvailable() bool { - if x != nil { - return x.Available - } - return false -} - -func (x *SystemProxyStatus) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -type SetSystemProxyEnabledRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetSystemProxyEnabledRequest) Reset() { - *x = SetSystemProxyEnabledRequest{} - mi := &file_daemon_started_service_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetSystemProxyEnabledRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetSystemProxyEnabledRequest) ProtoMessage() {} - -func (x *SetSystemProxyEnabledRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetSystemProxyEnabledRequest.ProtoReflect.Descriptor instead. -func (*SetSystemProxyEnabledRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{15} -} - -func (x *SetSystemProxyEnabledRequest) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -type DebugCrashRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Type DebugCrashRequest_Type `protobuf:"varint,1,opt,name=type,proto3,enum=daemon.DebugCrashRequest_Type" json:"type,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DebugCrashRequest) Reset() { - *x = DebugCrashRequest{} - mi := &file_daemon_started_service_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DebugCrashRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DebugCrashRequest) ProtoMessage() {} - -func (x *DebugCrashRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DebugCrashRequest.ProtoReflect.Descriptor instead. -func (*DebugCrashRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{16} -} - -func (x *DebugCrashRequest) GetType() DebugCrashRequest_Type { - if x != nil { - return x.Type - } - return DebugCrashRequest_GO -} - type SubscribeConnectionsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Interval int64 `protobuf:"varint,1,opt,name=interval,proto3" json:"interval,omitempty"` @@ -1161,7 +931,7 @@ type SubscribeConnectionsRequest struct { func (x *SubscribeConnectionsRequest) Reset() { *x = SubscribeConnectionsRequest{} - mi := &file_daemon_started_service_proto_msgTypes[17] + mi := &file_daemon_started_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1173,7 +943,7 @@ func (x *SubscribeConnectionsRequest) String() string { func (*SubscribeConnectionsRequest) ProtoMessage() {} func (x *SubscribeConnectionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[17] + mi := &file_daemon_started_service_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1186,7 +956,7 @@ func (x *SubscribeConnectionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeConnectionsRequest.ProtoReflect.Descriptor instead. func (*SubscribeConnectionsRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{17} + return file_daemon_started_service_proto_rawDescGZIP(), []int{13} } func (x *SubscribeConnectionsRequest) GetInterval() int64 { @@ -1210,7 +980,7 @@ type ConnectionEvent struct { func (x *ConnectionEvent) Reset() { *x = ConnectionEvent{} - mi := &file_daemon_started_service_proto_msgTypes[18] + mi := &file_daemon_started_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1222,7 +992,7 @@ func (x *ConnectionEvent) String() string { func (*ConnectionEvent) ProtoMessage() {} func (x *ConnectionEvent) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[18] + mi := &file_daemon_started_service_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1235,7 +1005,7 @@ func (x *ConnectionEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionEvent.ProtoReflect.Descriptor instead. func (*ConnectionEvent) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{18} + return file_daemon_started_service_proto_rawDescGZIP(), []int{14} } func (x *ConnectionEvent) GetType() ConnectionEventType { @@ -1290,7 +1060,7 @@ type ConnectionEvents struct { func (x *ConnectionEvents) Reset() { *x = ConnectionEvents{} - mi := &file_daemon_started_service_proto_msgTypes[19] + mi := &file_daemon_started_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1302,7 +1072,7 @@ func (x *ConnectionEvents) String() string { func (*ConnectionEvents) ProtoMessage() {} func (x *ConnectionEvents) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[19] + mi := &file_daemon_started_service_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1315,7 +1085,7 @@ func (x *ConnectionEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionEvents.ProtoReflect.Descriptor instead. func (*ConnectionEvents) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{19} + return file_daemon_started_service_proto_rawDescGZIP(), []int{15} } func (x *ConnectionEvents) GetEvents() []*ConnectionEvent { @@ -1362,7 +1132,7 @@ type Connection struct { func (x *Connection) Reset() { *x = Connection{} - mi := &file_daemon_started_service_proto_msgTypes[20] + mi := &file_daemon_started_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1374,7 +1144,7 @@ func (x *Connection) String() string { func (*Connection) ProtoMessage() {} func (x *Connection) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[20] + mi := &file_daemon_started_service_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1387,7 +1157,7 @@ func (x *Connection) ProtoReflect() protoreflect.Message { // Deprecated: Use Connection.ProtoReflect.Descriptor instead. func (*Connection) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{20} + return file_daemon_started_service_proto_rawDescGZIP(), []int{16} } func (x *Connection) GetId() string { @@ -1557,7 +1327,7 @@ type ProcessInfo struct { func (x *ProcessInfo) Reset() { *x = ProcessInfo{} - mi := &file_daemon_started_service_proto_msgTypes[21] + mi := &file_daemon_started_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1569,7 +1339,7 @@ func (x *ProcessInfo) String() string { func (*ProcessInfo) ProtoMessage() {} func (x *ProcessInfo) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[21] + mi := &file_daemon_started_service_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1582,7 +1352,7 @@ func (x *ProcessInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessInfo.ProtoReflect.Descriptor instead. func (*ProcessInfo) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{21} + return file_daemon_started_service_proto_rawDescGZIP(), []int{17} } func (x *ProcessInfo) GetProcessId() uint32 { @@ -1629,7 +1399,7 @@ type CloseConnectionRequest struct { func (x *CloseConnectionRequest) Reset() { *x = CloseConnectionRequest{} - mi := &file_daemon_started_service_proto_msgTypes[22] + mi := &file_daemon_started_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1641,7 +1411,7 @@ func (x *CloseConnectionRequest) String() string { func (*CloseConnectionRequest) ProtoMessage() {} func (x *CloseConnectionRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[22] + mi := &file_daemon_started_service_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1654,7 +1424,7 @@ func (x *CloseConnectionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CloseConnectionRequest.ProtoReflect.Descriptor instead. func (*CloseConnectionRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{22} + return file_daemon_started_service_proto_rawDescGZIP(), []int{18} } func (x *CloseConnectionRequest) GetId() string { @@ -1673,7 +1443,7 @@ type DeprecatedWarnings struct { func (x *DeprecatedWarnings) Reset() { *x = DeprecatedWarnings{} - mi := &file_daemon_started_service_proto_msgTypes[23] + mi := &file_daemon_started_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1455,7 @@ func (x *DeprecatedWarnings) String() string { func (*DeprecatedWarnings) ProtoMessage() {} func (x *DeprecatedWarnings) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[23] + mi := &file_daemon_started_service_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1468,7 @@ func (x *DeprecatedWarnings) ProtoReflect() protoreflect.Message { // Deprecated: Use DeprecatedWarnings.ProtoReflect.Descriptor instead. func (*DeprecatedWarnings) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{23} + return file_daemon_started_service_proto_rawDescGZIP(), []int{19} } func (x *DeprecatedWarnings) GetWarnings() []*DeprecatedWarning { @@ -1722,7 +1492,7 @@ type DeprecatedWarning struct { func (x *DeprecatedWarning) Reset() { *x = DeprecatedWarning{} - mi := &file_daemon_started_service_proto_msgTypes[24] + mi := &file_daemon_started_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1734,7 +1504,7 @@ func (x *DeprecatedWarning) String() string { func (*DeprecatedWarning) ProtoMessage() {} func (x *DeprecatedWarning) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[24] + mi := &file_daemon_started_service_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1747,7 +1517,7 @@ func (x *DeprecatedWarning) ProtoReflect() protoreflect.Message { // Deprecated: Use DeprecatedWarning.ProtoReflect.Descriptor instead. func (*DeprecatedWarning) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{24} + return file_daemon_started_service_proto_rawDescGZIP(), []int{20} } func (x *DeprecatedWarning) GetMessage() string { @@ -1801,7 +1571,7 @@ type StartedAt struct { func (x *StartedAt) Reset() { *x = StartedAt{} - mi := &file_daemon_started_service_proto_msgTypes[25] + mi := &file_daemon_started_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1813,7 +1583,7 @@ func (x *StartedAt) String() string { func (*StartedAt) ProtoMessage() {} func (x *StartedAt) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[25] + mi := &file_daemon_started_service_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1826,7 +1596,7 @@ func (x *StartedAt) ProtoReflect() protoreflect.Message { // Deprecated: Use StartedAt.ProtoReflect.Descriptor instead. func (*StartedAt) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{25} + return file_daemon_started_service_proto_rawDescGZIP(), []int{21} } func (x *StartedAt) GetStartedAt() int64 { @@ -1845,7 +1615,7 @@ type OutboundList struct { func (x *OutboundList) Reset() { *x = OutboundList{} - mi := &file_daemon_started_service_proto_msgTypes[26] + mi := &file_daemon_started_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1857,7 +1627,7 @@ func (x *OutboundList) String() string { func (*OutboundList) ProtoMessage() {} func (x *OutboundList) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[26] + mi := &file_daemon_started_service_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1870,7 +1640,7 @@ func (x *OutboundList) ProtoReflect() protoreflect.Message { // Deprecated: Use OutboundList.ProtoReflect.Descriptor instead. func (*OutboundList) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{26} + return file_daemon_started_service_proto_rawDescGZIP(), []int{22} } func (x *OutboundList) GetOutbounds() []*GroupItem { @@ -1893,7 +1663,7 @@ type NetworkQualityTestRequest struct { func (x *NetworkQualityTestRequest) Reset() { *x = NetworkQualityTestRequest{} - mi := &file_daemon_started_service_proto_msgTypes[27] + mi := &file_daemon_started_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1905,7 +1675,7 @@ func (x *NetworkQualityTestRequest) String() string { func (*NetworkQualityTestRequest) ProtoMessage() {} func (x *NetworkQualityTestRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[27] + mi := &file_daemon_started_service_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1918,7 +1688,7 @@ func (x *NetworkQualityTestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkQualityTestRequest.ProtoReflect.Descriptor instead. func (*NetworkQualityTestRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{27} + return file_daemon_started_service_proto_rawDescGZIP(), []int{23} } func (x *NetworkQualityTestRequest) GetConfigURL() string { @@ -1977,7 +1747,7 @@ type NetworkQualityTestProgress struct { func (x *NetworkQualityTestProgress) Reset() { *x = NetworkQualityTestProgress{} - mi := &file_daemon_started_service_proto_msgTypes[28] + mi := &file_daemon_started_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1989,7 +1759,7 @@ func (x *NetworkQualityTestProgress) String() string { func (*NetworkQualityTestProgress) ProtoMessage() {} func (x *NetworkQualityTestProgress) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[28] + mi := &file_daemon_started_service_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2002,7 +1772,7 @@ func (x *NetworkQualityTestProgress) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkQualityTestProgress.ProtoReflect.Descriptor instead. func (*NetworkQualityTestProgress) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{28} + return file_daemon_started_service_proto_rawDescGZIP(), []int{24} } func (x *NetworkQualityTestProgress) GetPhase() int32 { @@ -2106,7 +1876,7 @@ type STUNTestRequest struct { func (x *STUNTestRequest) Reset() { *x = STUNTestRequest{} - mi := &file_daemon_started_service_proto_msgTypes[29] + mi := &file_daemon_started_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2118,7 +1888,7 @@ func (x *STUNTestRequest) String() string { func (*STUNTestRequest) ProtoMessage() {} func (x *STUNTestRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[29] + mi := &file_daemon_started_service_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2131,7 +1901,7 @@ func (x *STUNTestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use STUNTestRequest.ProtoReflect.Descriptor instead. func (*STUNTestRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{29} + return file_daemon_started_service_proto_rawDescGZIP(), []int{25} } func (x *STUNTestRequest) GetServer() string { @@ -2164,7 +1934,7 @@ type STUNTestProgress struct { func (x *STUNTestProgress) Reset() { *x = STUNTestProgress{} - mi := &file_daemon_started_service_proto_msgTypes[30] + mi := &file_daemon_started_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2176,7 +1946,7 @@ func (x *STUNTestProgress) String() string { func (*STUNTestProgress) ProtoMessage() {} func (x *STUNTestProgress) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[30] + mi := &file_daemon_started_service_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2189,7 +1959,7 @@ func (x *STUNTestProgress) ProtoReflect() protoreflect.Message { // Deprecated: Use STUNTestProgress.ProtoReflect.Descriptor instead. func (*STUNTestProgress) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{30} + return file_daemon_started_service_proto_rawDescGZIP(), []int{26} } func (x *STUNTestProgress) GetPhase() int32 { @@ -2257,7 +2027,7 @@ type TailscaleStatusUpdate struct { func (x *TailscaleStatusUpdate) Reset() { *x = TailscaleStatusUpdate{} - mi := &file_daemon_started_service_proto_msgTypes[31] + mi := &file_daemon_started_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2269,7 +2039,7 @@ func (x *TailscaleStatusUpdate) String() string { func (*TailscaleStatusUpdate) ProtoMessage() {} func (x *TailscaleStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[31] + mi := &file_daemon_started_service_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2282,7 +2052,7 @@ func (x *TailscaleStatusUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleStatusUpdate.ProtoReflect.Descriptor instead. func (*TailscaleStatusUpdate) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{31} + return file_daemon_started_service_proto_rawDescGZIP(), []int{27} } func (x *TailscaleStatusUpdate) GetEndpoints() []*TailscaleEndpointStatus { @@ -2309,7 +2079,7 @@ type TailscaleEndpointStatus struct { func (x *TailscaleEndpointStatus) Reset() { *x = TailscaleEndpointStatus{} - mi := &file_daemon_started_service_proto_msgTypes[32] + mi := &file_daemon_started_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2321,7 +2091,7 @@ func (x *TailscaleEndpointStatus) String() string { func (*TailscaleEndpointStatus) ProtoMessage() {} func (x *TailscaleEndpointStatus) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[32] + mi := &file_daemon_started_service_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2334,7 +2104,7 @@ func (x *TailscaleEndpointStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleEndpointStatus.ProtoReflect.Descriptor instead. func (*TailscaleEndpointStatus) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{32} + return file_daemon_started_service_proto_rawDescGZIP(), []int{28} } func (x *TailscaleEndpointStatus) GetEndpointTag() string { @@ -2413,7 +2183,7 @@ type TailscaleUserGroup struct { func (x *TailscaleUserGroup) Reset() { *x = TailscaleUserGroup{} - mi := &file_daemon_started_service_proto_msgTypes[33] + mi := &file_daemon_started_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2425,7 +2195,7 @@ func (x *TailscaleUserGroup) String() string { func (*TailscaleUserGroup) ProtoMessage() {} func (x *TailscaleUserGroup) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[33] + mi := &file_daemon_started_service_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2438,7 +2208,7 @@ func (x *TailscaleUserGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleUserGroup.ProtoReflect.Descriptor instead. func (*TailscaleUserGroup) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{33} + return file_daemon_started_service_proto_rawDescGZIP(), []int{29} } func (x *TailscaleUserGroup) GetUserID() int64 { @@ -2500,7 +2270,7 @@ type TailscalePeer struct { func (x *TailscalePeer) Reset() { *x = TailscalePeer{} - mi := &file_daemon_started_service_proto_msgTypes[34] + mi := &file_daemon_started_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2512,7 +2282,7 @@ func (x *TailscalePeer) String() string { func (*TailscalePeer) ProtoMessage() {} func (x *TailscalePeer) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[34] + mi := &file_daemon_started_service_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2525,7 +2295,7 @@ func (x *TailscalePeer) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscalePeer.ProtoReflect.Descriptor instead. func (*TailscalePeer) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{34} + return file_daemon_started_service_proto_rawDescGZIP(), []int{30} } func (x *TailscalePeer) GetHostName() string { @@ -2650,7 +2420,7 @@ type TailscalePingRequest struct { func (x *TailscalePingRequest) Reset() { *x = TailscalePingRequest{} - mi := &file_daemon_started_service_proto_msgTypes[35] + mi := &file_daemon_started_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2662,7 +2432,7 @@ func (x *TailscalePingRequest) String() string { func (*TailscalePingRequest) ProtoMessage() {} func (x *TailscalePingRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[35] + mi := &file_daemon_started_service_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2675,7 +2445,7 @@ func (x *TailscalePingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscalePingRequest.ProtoReflect.Descriptor instead. func (*TailscalePingRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{35} + return file_daemon_started_service_proto_rawDescGZIP(), []int{31} } func (x *TailscalePingRequest) GetEndpointTag() string { @@ -2706,7 +2476,7 @@ type TailscalePingResponse struct { func (x *TailscalePingResponse) Reset() { *x = TailscalePingResponse{} - mi := &file_daemon_started_service_proto_msgTypes[36] + mi := &file_daemon_started_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2718,7 +2488,7 @@ func (x *TailscalePingResponse) String() string { func (*TailscalePingResponse) ProtoMessage() {} func (x *TailscalePingResponse) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[36] + mi := &file_daemon_started_service_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2731,7 +2501,7 @@ func (x *TailscalePingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscalePingResponse.ProtoReflect.Descriptor instead. func (*TailscalePingResponse) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{36} + return file_daemon_started_service_proto_rawDescGZIP(), []int{32} } func (x *TailscalePingResponse) GetLatencyMs() float64 { @@ -2786,7 +2556,7 @@ type SetTailscaleExitNodeRequest struct { func (x *SetTailscaleExitNodeRequest) Reset() { *x = SetTailscaleExitNodeRequest{} - mi := &file_daemon_started_service_proto_msgTypes[37] + mi := &file_daemon_started_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2798,7 +2568,7 @@ func (x *SetTailscaleExitNodeRequest) String() string { func (*SetTailscaleExitNodeRequest) ProtoMessage() {} func (x *SetTailscaleExitNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[37] + mi := &file_daemon_started_service_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2811,7 +2581,7 @@ func (x *SetTailscaleExitNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTailscaleExitNodeRequest.ProtoReflect.Descriptor instead. func (*SetTailscaleExitNodeRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{37} + return file_daemon_started_service_proto_rawDescGZIP(), []int{33} } func (x *SetTailscaleExitNodeRequest) GetEndpointTag() string { @@ -2837,7 +2607,7 @@ type TailscaleLogoutRequest struct { func (x *TailscaleLogoutRequest) Reset() { *x = TailscaleLogoutRequest{} - mi := &file_daemon_started_service_proto_msgTypes[38] + mi := &file_daemon_started_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2849,7 +2619,7 @@ func (x *TailscaleLogoutRequest) String() string { func (*TailscaleLogoutRequest) ProtoMessage() {} func (x *TailscaleLogoutRequest) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[38] + mi := &file_daemon_started_service_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2862,7 +2632,7 @@ func (x *TailscaleLogoutRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TailscaleLogoutRequest.ProtoReflect.Descriptor instead. func (*TailscaleLogoutRequest) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{38} + return file_daemon_started_service_proto_rawDescGZIP(), []int{34} } func (x *TailscaleLogoutRequest) GetEndpointTag() string { @@ -2886,7 +2656,7 @@ type TailscaleSSHClientMessage struct { func (x *TailscaleSSHClientMessage) Reset() { *x = TailscaleSSHClientMessage{} - mi := &file_daemon_started_service_proto_msgTypes[39] + mi := &file_daemon_started_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2898,7 +2668,7 @@ func (x *TailscaleSSHClientMessage) String() string { func (*TailscaleSSHClientMessage) ProtoMessage() {} func (x *TailscaleSSHClientMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[39] + mi := &file_daemon_started_service_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2911,7 +2681,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{39} + return file_daemon_started_service_proto_rawDescGZIP(), []int{35} } func (x *TailscaleSSHClientMessage) GetMessage() isTailscaleSSHClientMessage_Message { @@ -2988,7 +2758,7 @@ type TailscaleSSHStart struct { func (x *TailscaleSSHStart) Reset() { *x = TailscaleSSHStart{} - mi := &file_daemon_started_service_proto_msgTypes[40] + mi := &file_daemon_started_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3000,7 +2770,7 @@ func (x *TailscaleSSHStart) String() string { func (*TailscaleSSHStart) ProtoMessage() {} func (x *TailscaleSSHStart) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[40] + mi := &file_daemon_started_service_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3013,7 +2783,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{40} + return file_daemon_started_service_proto_rawDescGZIP(), []int{36} } func (x *TailscaleSSHStart) GetEndpointTag() string { @@ -3095,7 +2865,7 @@ type TailscaleSSHInput struct { func (x *TailscaleSSHInput) Reset() { *x = TailscaleSSHInput{} - mi := &file_daemon_started_service_proto_msgTypes[41] + mi := &file_daemon_started_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3107,7 +2877,7 @@ func (x *TailscaleSSHInput) String() string { func (*TailscaleSSHInput) ProtoMessage() {} func (x *TailscaleSSHInput) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[41] + mi := &file_daemon_started_service_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3120,7 +2890,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{41} + return file_daemon_started_service_proto_rawDescGZIP(), []int{37} } func (x *TailscaleSSHInput) GetData() []byte { @@ -3142,7 +2912,7 @@ type TailscaleSSHResize struct { func (x *TailscaleSSHResize) Reset() { *x = TailscaleSSHResize{} - mi := &file_daemon_started_service_proto_msgTypes[42] + mi := &file_daemon_started_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3154,7 +2924,7 @@ func (x *TailscaleSSHResize) String() string { func (*TailscaleSSHResize) ProtoMessage() {} func (x *TailscaleSSHResize) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[42] + mi := &file_daemon_started_service_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3167,7 +2937,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{42} + return file_daemon_started_service_proto_rawDescGZIP(), []int{38} } func (x *TailscaleSSHResize) GetColumns() int32 { @@ -3214,7 +2984,7 @@ type TailscaleSSHServerMessage struct { func (x *TailscaleSSHServerMessage) Reset() { *x = TailscaleSSHServerMessage{} - mi := &file_daemon_started_service_proto_msgTypes[43] + mi := &file_daemon_started_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3226,7 +2996,7 @@ func (x *TailscaleSSHServerMessage) String() string { func (*TailscaleSSHServerMessage) ProtoMessage() {} func (x *TailscaleSSHServerMessage) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[43] + mi := &file_daemon_started_service_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3239,7 +3009,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{43} + return file_daemon_started_service_proto_rawDescGZIP(), []int{39} } func (x *TailscaleSSHServerMessage) GetMessage() isTailscaleSSHServerMessage_Message { @@ -3337,7 +3107,7 @@ type TailscaleSSHAuthBanner struct { func (x *TailscaleSSHAuthBanner) Reset() { *x = TailscaleSSHAuthBanner{} - mi := &file_daemon_started_service_proto_msgTypes[44] + mi := &file_daemon_started_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3349,7 +3119,7 @@ func (x *TailscaleSSHAuthBanner) String() string { func (*TailscaleSSHAuthBanner) ProtoMessage() {} func (x *TailscaleSSHAuthBanner) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[44] + mi := &file_daemon_started_service_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3362,7 +3132,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{44} + return file_daemon_started_service_proto_rawDescGZIP(), []int{40} } func (x *TailscaleSSHAuthBanner) GetMessage() string { @@ -3380,7 +3150,7 @@ type TailscaleSSHReady struct { func (x *TailscaleSSHReady) Reset() { *x = TailscaleSSHReady{} - mi := &file_daemon_started_service_proto_msgTypes[45] + mi := &file_daemon_started_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3392,7 +3162,7 @@ func (x *TailscaleSSHReady) String() string { func (*TailscaleSSHReady) ProtoMessage() {} func (x *TailscaleSSHReady) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[45] + mi := &file_daemon_started_service_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3405,7 +3175,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{45} + return file_daemon_started_service_proto_rawDescGZIP(), []int{41} } type TailscaleSSHOutput struct { @@ -3417,7 +3187,7 @@ type TailscaleSSHOutput struct { func (x *TailscaleSSHOutput) Reset() { *x = TailscaleSSHOutput{} - mi := &file_daemon_started_service_proto_msgTypes[46] + mi := &file_daemon_started_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3429,7 +3199,7 @@ func (x *TailscaleSSHOutput) String() string { func (*TailscaleSSHOutput) ProtoMessage() {} func (x *TailscaleSSHOutput) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[46] + mi := &file_daemon_started_service_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3442,7 +3212,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{46} + return file_daemon_started_service_proto_rawDescGZIP(), []int{42} } func (x *TailscaleSSHOutput) GetData() []byte { @@ -3463,7 +3233,7 @@ type TailscaleSSHExit struct { func (x *TailscaleSSHExit) Reset() { *x = TailscaleSSHExit{} - mi := &file_daemon_started_service_proto_msgTypes[47] + mi := &file_daemon_started_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3475,7 +3245,7 @@ func (x *TailscaleSSHExit) String() string { func (*TailscaleSSHExit) ProtoMessage() {} func (x *TailscaleSSHExit) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[47] + mi := &file_daemon_started_service_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3488,7 +3258,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{47} + return file_daemon_started_service_proto_rawDescGZIP(), []int{43} } func (x *TailscaleSSHExit) GetExitCode() int32 { @@ -3521,7 +3291,7 @@ type TailscaleSSHError struct { func (x *TailscaleSSHError) Reset() { *x = TailscaleSSHError{} - mi := &file_daemon_started_service_proto_msgTypes[48] + mi := &file_daemon_started_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3533,7 +3303,7 @@ func (x *TailscaleSSHError) String() string { func (*TailscaleSSHError) ProtoMessage() {} func (x *TailscaleSSHError) ProtoReflect() protoreflect.Message { - mi := &file_daemon_started_service_proto_msgTypes[48] + mi := &file_daemon_started_service_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3546,7 +3316,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{48} + return file_daemon_started_service_proto_rawDescGZIP(), []int{44} } func (x *TailscaleSSHError) GetMessage() string { @@ -3566,7 +3336,7 @@ type Log_Message struct { func (x *Log_Message) Reset() { *x = Log_Message{} - mi := &file_daemon_started_service_proto_msgTypes[49] + mi := &file_daemon_started_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3578,7 +3348,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[49] + mi := &file_daemon_started_service_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3591,7 +3361,7 @@ func (x *Log_Message) ProtoReflect() protoreflect.Message { // Deprecated: Use Log_Message.ProtoReflect.Descriptor instead. func (*Log_Message) Descriptor() ([]byte, []int) { - return file_daemon_started_service_proto_rawDescGZIP(), []int{3, 0} + return file_daemon_started_service_proto_rawDescGZIP(), []int{2, 0} } func (x *Log_Message) GetLevel() LogLevel { @@ -3621,9 +3391,7 @@ const file_daemon_started_service_proto_rawDesc = "" + "\bSTARTING\x10\x01\x12\v\n" + "\aSTARTED\x10\x02\x12\f\n" + "\bSTOPPING\x10\x03\x12\t\n" + - "\x05FATAL\x10\x04\"D\n" + - "\x14ReloadServiceRequest\x12,\n" + - "\x11newProfileContent\x18\x01 \x01(\tR\x11newProfileContent\"4\n" + + "\x05FATAL\x10\x04\"4\n" + "\x16SubscribeStatusRequest\x12\x1a\n" + "\binterval\x18\x01 \x01(\x03R\binterval\"\x99\x01\n" + "\x03Log\x12/\n" + @@ -3674,18 +3442,7 @@ const file_daemon_started_service_proto_rawDesc = "" + "\x04mode\x18\x03 \x01(\tR\x04mode\"O\n" + "\x0fClashModeStatus\x12\x1a\n" + "\bmodeList\x18\x01 \x03(\tR\bmodeList\x12 \n" + - "\vcurrentMode\x18\x02 \x01(\tR\vcurrentMode\"K\n" + - "\x11SystemProxyStatus\x12\x1c\n" + - "\tavailable\x18\x01 \x01(\bR\tavailable\x12\x18\n" + - "\aenabled\x18\x02 \x01(\bR\aenabled\"8\n" + - "\x1cSetSystemProxyEnabledRequest\x12\x18\n" + - "\aenabled\x18\x01 \x01(\bR\aenabled\"c\n" + - "\x11DebugCrashRequest\x122\n" + - "\x04type\x18\x01 \x01(\x0e2\x1e.daemon.DebugCrashRequest.TypeR\x04type\"\x1a\n" + - "\x04Type\x12\x06\n" + - "\x02GO\x10\x00\x12\n" + - "\n" + - "\x06NATIVE\x10\x01\"9\n" + + "\vcurrentMode\x18\x02 \x01(\tR\vcurrentMode\"9\n" + "\x1bSubscribeConnectionsRequest\x12\x1a\n" + "\binterval\x18\x01 \x01(\x03R\binterval\"\xea\x01\n" + "\x0fConnectionEvent\x12/\n" + @@ -3891,10 +3648,8 @@ const file_daemon_started_service_proto_rawDesc = "" + "\x13ConnectionEventType\x12\x18\n" + "\x14CONNECTION_EVENT_NEW\x10\x00\x12\x1b\n" + "\x17CONNECTION_EVENT_UPDATE\x10\x01\x12\x1b\n" + - "\x17CONNECTION_EVENT_CLOSED\x10\x022\xa5\x12\n" + - "\x0eStartedService\x12=\n" + - "\vStopService\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12?\n" + - "\rReloadService\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12K\n" + + "\x17CONNECTION_EVENT_CLOSED\x10\x022\xb5\x0f\n" + + "\x0eStartedService\x12K\n" + "\x16SubscribeServiceStatus\x12\x16.google.protobuf.Empty\x1a\x15.daemon.ServiceStatus\"\x000\x01\x127\n" + "\fSubscribeLog\x12\x16.google.protobuf.Empty\x1a\v.daemon.Log\"\x000\x01\x12G\n" + "\x12GetDefaultLogLevel\x12\x16.google.protobuf.Empty\x1a\x17.daemon.DefaultLogLevel\"\x00\x12=\n" + @@ -3906,10 +3661,7 @@ const file_daemon_started_service_proto_rawDesc = "" + "\fSetClashMode\x12\x11.daemon.ClashMode\x1a\x16.google.protobuf.Empty\"\x00\x12;\n" + "\aURLTest\x12\x16.daemon.URLTestRequest\x1a\x16.google.protobuf.Empty\"\x00\x12I\n" + "\x0eSelectOutbound\x12\x1d.daemon.SelectOutboundRequest\x1a\x16.google.protobuf.Empty\"\x00\x12I\n" + - "\x0eSetGroupExpand\x12\x1d.daemon.SetGroupExpandRequest\x1a\x16.google.protobuf.Empty\"\x00\x12K\n" + - "\x14GetSystemProxyStatus\x12\x16.google.protobuf.Empty\x1a\x19.daemon.SystemProxyStatus\"\x00\x12W\n" + - "\x15SetSystemProxyEnabled\x12$.daemon.SetSystemProxyEnabledRequest\x1a\x16.google.protobuf.Empty\"\x00\x12H\n" + - "\x11TriggerDebugCrash\x12\x19.daemon.DebugCrashRequest\x1a\x16.google.protobuf.Empty\"\x00\x12D\n" + + "\x0eSetGroupExpand\x12\x1d.daemon.SetGroupExpandRequest\x1a\x16.google.protobuf.Empty\"\x00\x12D\n" + "\x10TriggerOOMReport\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12Y\n" + "\x14SubscribeConnections\x12#.daemon.SubscribeConnectionsRequest\x1a\x18.daemon.ConnectionEvents\"\x000\x01\x12K\n" + "\x0fCloseConnection\x12\x1e.daemon.CloseConnectionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12G\n" + @@ -3938,161 +3690,145 @@ func file_daemon_started_service_proto_rawDescGZIP() []byte { } var ( - file_daemon_started_service_proto_enumTypes = make([]protoimpl.EnumInfo, 4) - file_daemon_started_service_proto_msgTypes = make([]protoimpl.MessageInfo, 50) + file_daemon_started_service_proto_enumTypes = make([]protoimpl.EnumInfo, 3) + file_daemon_started_service_proto_msgTypes = make([]protoimpl.MessageInfo, 46) file_daemon_started_service_proto_goTypes = []any{ - (LogLevel)(0), // 0: daemon.LogLevel - (ConnectionEventType)(0), // 1: daemon.ConnectionEventType - (ServiceStatus_Type)(0), // 2: daemon.ServiceStatus.Type - (DebugCrashRequest_Type)(0), // 3: daemon.DebugCrashRequest.Type - (*ServiceStatus)(nil), // 4: daemon.ServiceStatus - (*ReloadServiceRequest)(nil), // 5: daemon.ReloadServiceRequest - (*SubscribeStatusRequest)(nil), // 6: daemon.SubscribeStatusRequest - (*Log)(nil), // 7: daemon.Log - (*DefaultLogLevel)(nil), // 8: daemon.DefaultLogLevel - (*Status)(nil), // 9: daemon.Status - (*Groups)(nil), // 10: daemon.Groups - (*Group)(nil), // 11: daemon.Group - (*GroupItem)(nil), // 12: daemon.GroupItem - (*URLTestRequest)(nil), // 13: daemon.URLTestRequest - (*SelectOutboundRequest)(nil), // 14: daemon.SelectOutboundRequest - (*SetGroupExpandRequest)(nil), // 15: daemon.SetGroupExpandRequest - (*ClashMode)(nil), // 16: daemon.ClashMode - (*ClashModeStatus)(nil), // 17: daemon.ClashModeStatus - (*SystemProxyStatus)(nil), // 18: daemon.SystemProxyStatus - (*SetSystemProxyEnabledRequest)(nil), // 19: daemon.SetSystemProxyEnabledRequest - (*DebugCrashRequest)(nil), // 20: daemon.DebugCrashRequest - (*SubscribeConnectionsRequest)(nil), // 21: daemon.SubscribeConnectionsRequest - (*ConnectionEvent)(nil), // 22: daemon.ConnectionEvent - (*ConnectionEvents)(nil), // 23: daemon.ConnectionEvents - (*Connection)(nil), // 24: daemon.Connection - (*ProcessInfo)(nil), // 25: daemon.ProcessInfo - (*CloseConnectionRequest)(nil), // 26: daemon.CloseConnectionRequest - (*DeprecatedWarnings)(nil), // 27: daemon.DeprecatedWarnings - (*DeprecatedWarning)(nil), // 28: daemon.DeprecatedWarning - (*StartedAt)(nil), // 29: daemon.StartedAt - (*OutboundList)(nil), // 30: daemon.OutboundList - (*NetworkQualityTestRequest)(nil), // 31: daemon.NetworkQualityTestRequest - (*NetworkQualityTestProgress)(nil), // 32: daemon.NetworkQualityTestProgress - (*STUNTestRequest)(nil), // 33: daemon.STUNTestRequest - (*STUNTestProgress)(nil), // 34: daemon.STUNTestProgress - (*TailscaleStatusUpdate)(nil), // 35: daemon.TailscaleStatusUpdate - (*TailscaleEndpointStatus)(nil), // 36: daemon.TailscaleEndpointStatus - (*TailscaleUserGroup)(nil), // 37: daemon.TailscaleUserGroup - (*TailscalePeer)(nil), // 38: daemon.TailscalePeer - (*TailscalePingRequest)(nil), // 39: daemon.TailscalePingRequest - (*TailscalePingResponse)(nil), // 40: daemon.TailscalePingResponse - (*SetTailscaleExitNodeRequest)(nil), // 41: daemon.SetTailscaleExitNodeRequest - (*TailscaleLogoutRequest)(nil), // 42: daemon.TailscaleLogoutRequest - (*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 - (*Log_Message)(nil), // 53: daemon.Log.Message - (*emptypb.Empty)(nil), // 54: google.protobuf.Empty + (LogLevel)(0), // 0: daemon.LogLevel + (ConnectionEventType)(0), // 1: daemon.ConnectionEventType + (ServiceStatus_Type)(0), // 2: daemon.ServiceStatus.Type + (*ServiceStatus)(nil), // 3: daemon.ServiceStatus + (*SubscribeStatusRequest)(nil), // 4: daemon.SubscribeStatusRequest + (*Log)(nil), // 5: daemon.Log + (*DefaultLogLevel)(nil), // 6: daemon.DefaultLogLevel + (*Status)(nil), // 7: daemon.Status + (*Groups)(nil), // 8: daemon.Groups + (*Group)(nil), // 9: daemon.Group + (*GroupItem)(nil), // 10: daemon.GroupItem + (*URLTestRequest)(nil), // 11: daemon.URLTestRequest + (*SelectOutboundRequest)(nil), // 12: daemon.SelectOutboundRequest + (*SetGroupExpandRequest)(nil), // 13: daemon.SetGroupExpandRequest + (*ClashMode)(nil), // 14: daemon.ClashMode + (*ClashModeStatus)(nil), // 15: daemon.ClashModeStatus + (*SubscribeConnectionsRequest)(nil), // 16: daemon.SubscribeConnectionsRequest + (*ConnectionEvent)(nil), // 17: daemon.ConnectionEvent + (*ConnectionEvents)(nil), // 18: daemon.ConnectionEvents + (*Connection)(nil), // 19: daemon.Connection + (*ProcessInfo)(nil), // 20: daemon.ProcessInfo + (*CloseConnectionRequest)(nil), // 21: daemon.CloseConnectionRequest + (*DeprecatedWarnings)(nil), // 22: daemon.DeprecatedWarnings + (*DeprecatedWarning)(nil), // 23: daemon.DeprecatedWarning + (*StartedAt)(nil), // 24: daemon.StartedAt + (*OutboundList)(nil), // 25: daemon.OutboundList + (*NetworkQualityTestRequest)(nil), // 26: daemon.NetworkQualityTestRequest + (*NetworkQualityTestProgress)(nil), // 27: daemon.NetworkQualityTestProgress + (*STUNTestRequest)(nil), // 28: daemon.STUNTestRequest + (*STUNTestProgress)(nil), // 29: daemon.STUNTestProgress + (*TailscaleStatusUpdate)(nil), // 30: daemon.TailscaleStatusUpdate + (*TailscaleEndpointStatus)(nil), // 31: daemon.TailscaleEndpointStatus + (*TailscaleUserGroup)(nil), // 32: daemon.TailscaleUserGroup + (*TailscalePeer)(nil), // 33: daemon.TailscalePeer + (*TailscalePingRequest)(nil), // 34: daemon.TailscalePingRequest + (*TailscalePingResponse)(nil), // 35: daemon.TailscalePingResponse + (*SetTailscaleExitNodeRequest)(nil), // 36: daemon.SetTailscaleExitNodeRequest + (*TailscaleLogoutRequest)(nil), // 37: daemon.TailscaleLogoutRequest + (*TailscaleSSHClientMessage)(nil), // 38: daemon.TailscaleSSHClientMessage + (*TailscaleSSHStart)(nil), // 39: daemon.TailscaleSSHStart + (*TailscaleSSHInput)(nil), // 40: daemon.TailscaleSSHInput + (*TailscaleSSHResize)(nil), // 41: daemon.TailscaleSSHResize + (*TailscaleSSHServerMessage)(nil), // 42: daemon.TailscaleSSHServerMessage + (*TailscaleSSHAuthBanner)(nil), // 43: daemon.TailscaleSSHAuthBanner + (*TailscaleSSHReady)(nil), // 44: daemon.TailscaleSSHReady + (*TailscaleSSHOutput)(nil), // 45: daemon.TailscaleSSHOutput + (*TailscaleSSHExit)(nil), // 46: daemon.TailscaleSSHExit + (*TailscaleSSHError)(nil), // 47: daemon.TailscaleSSHError + (*Log_Message)(nil), // 48: daemon.Log.Message + (*emptypb.Empty)(nil), // 49: google.protobuf.Empty } ) var file_daemon_started_service_proto_depIdxs = []int32{ 2, // 0: daemon.ServiceStatus.status:type_name -> daemon.ServiceStatus.Type - 53, // 1: daemon.Log.messages:type_name -> daemon.Log.Message + 48, // 1: daemon.Log.messages:type_name -> daemon.Log.Message 0, // 2: daemon.DefaultLogLevel.level:type_name -> daemon.LogLevel - 11, // 3: daemon.Groups.group:type_name -> daemon.Group - 12, // 4: daemon.Group.items:type_name -> daemon.GroupItem - 3, // 5: daemon.DebugCrashRequest.type:type_name -> daemon.DebugCrashRequest.Type - 1, // 6: daemon.ConnectionEvent.type:type_name -> daemon.ConnectionEventType - 24, // 7: daemon.ConnectionEvent.connection:type_name -> daemon.Connection - 22, // 8: daemon.ConnectionEvents.events:type_name -> daemon.ConnectionEvent - 25, // 9: daemon.Connection.processInfo:type_name -> daemon.ProcessInfo - 28, // 10: daemon.DeprecatedWarnings.warnings:type_name -> daemon.DeprecatedWarning - 12, // 11: daemon.OutboundList.outbounds:type_name -> daemon.GroupItem - 36, // 12: daemon.TailscaleStatusUpdate.endpoints:type_name -> daemon.TailscaleEndpointStatus - 38, // 13: daemon.TailscaleEndpointStatus.self:type_name -> daemon.TailscalePeer - 37, // 14: daemon.TailscaleEndpointStatus.userGroups:type_name -> daemon.TailscaleUserGroup - 38, // 15: daemon.TailscaleEndpointStatus.exitNode:type_name -> daemon.TailscalePeer - 38, // 16: daemon.TailscaleUserGroup.peers:type_name -> daemon.TailscalePeer - 44, // 17: daemon.TailscaleSSHClientMessage.start:type_name -> daemon.TailscaleSSHStart - 45, // 18: daemon.TailscaleSSHClientMessage.input:type_name -> daemon.TailscaleSSHInput - 46, // 19: daemon.TailscaleSSHClientMessage.resize:type_name -> daemon.TailscaleSSHResize - 48, // 20: daemon.TailscaleSSHServerMessage.authBanner:type_name -> daemon.TailscaleSSHAuthBanner - 49, // 21: daemon.TailscaleSSHServerMessage.ready:type_name -> daemon.TailscaleSSHReady - 50, // 22: daemon.TailscaleSSHServerMessage.output:type_name -> daemon.TailscaleSSHOutput - 51, // 23: daemon.TailscaleSSHServerMessage.exit:type_name -> daemon.TailscaleSSHExit - 52, // 24: daemon.TailscaleSSHServerMessage.error:type_name -> daemon.TailscaleSSHError - 0, // 25: daemon.Log.Message.level:type_name -> daemon.LogLevel - 54, // 26: daemon.StartedService.StopService:input_type -> google.protobuf.Empty - 54, // 27: daemon.StartedService.ReloadService:input_type -> google.protobuf.Empty - 54, // 28: daemon.StartedService.SubscribeServiceStatus:input_type -> google.protobuf.Empty - 54, // 29: daemon.StartedService.SubscribeLog:input_type -> google.protobuf.Empty - 54, // 30: daemon.StartedService.GetDefaultLogLevel:input_type -> google.protobuf.Empty - 54, // 31: daemon.StartedService.ClearLogs:input_type -> google.protobuf.Empty - 6, // 32: daemon.StartedService.SubscribeStatus:input_type -> daemon.SubscribeStatusRequest - 54, // 33: daemon.StartedService.SubscribeGroups:input_type -> google.protobuf.Empty - 54, // 34: daemon.StartedService.GetClashModeStatus:input_type -> google.protobuf.Empty - 54, // 35: daemon.StartedService.SubscribeClashMode:input_type -> google.protobuf.Empty - 16, // 36: daemon.StartedService.SetClashMode:input_type -> daemon.ClashMode - 13, // 37: daemon.StartedService.URLTest:input_type -> daemon.URLTestRequest - 14, // 38: daemon.StartedService.SelectOutbound:input_type -> daemon.SelectOutboundRequest - 15, // 39: daemon.StartedService.SetGroupExpand:input_type -> daemon.SetGroupExpandRequest - 54, // 40: daemon.StartedService.GetSystemProxyStatus:input_type -> google.protobuf.Empty - 19, // 41: daemon.StartedService.SetSystemProxyEnabled:input_type -> daemon.SetSystemProxyEnabledRequest - 20, // 42: daemon.StartedService.TriggerDebugCrash:input_type -> daemon.DebugCrashRequest - 54, // 43: daemon.StartedService.TriggerOOMReport:input_type -> google.protobuf.Empty - 21, // 44: daemon.StartedService.SubscribeConnections:input_type -> daemon.SubscribeConnectionsRequest - 26, // 45: daemon.StartedService.CloseConnection:input_type -> daemon.CloseConnectionRequest - 54, // 46: daemon.StartedService.CloseAllConnections:input_type -> google.protobuf.Empty - 54, // 47: daemon.StartedService.GetDeprecatedWarnings:input_type -> google.protobuf.Empty - 54, // 48: daemon.StartedService.GetStartedAt:input_type -> google.protobuf.Empty - 54, // 49: daemon.StartedService.SubscribeOutbounds:input_type -> google.protobuf.Empty - 31, // 50: daemon.StartedService.StartNetworkQualityTest:input_type -> daemon.NetworkQualityTestRequest - 33, // 51: daemon.StartedService.StartSTUNTest:input_type -> daemon.STUNTestRequest - 54, // 52: daemon.StartedService.SubscribeTailscaleStatus:input_type -> google.protobuf.Empty - 39, // 53: daemon.StartedService.StartTailscalePing:input_type -> daemon.TailscalePingRequest - 41, // 54: daemon.StartedService.SetTailscaleExitNode:input_type -> daemon.SetTailscaleExitNodeRequest - 42, // 55: daemon.StartedService.TailscaleLogout:input_type -> daemon.TailscaleLogoutRequest - 43, // 56: daemon.StartedService.StartTailscaleSSHSession:input_type -> daemon.TailscaleSSHClientMessage - 54, // 57: daemon.StartedService.StopService:output_type -> google.protobuf.Empty - 54, // 58: daemon.StartedService.ReloadService:output_type -> google.protobuf.Empty - 4, // 59: daemon.StartedService.SubscribeServiceStatus:output_type -> daemon.ServiceStatus - 7, // 60: daemon.StartedService.SubscribeLog:output_type -> daemon.Log - 8, // 61: daemon.StartedService.GetDefaultLogLevel:output_type -> daemon.DefaultLogLevel - 54, // 62: daemon.StartedService.ClearLogs:output_type -> google.protobuf.Empty - 9, // 63: daemon.StartedService.SubscribeStatus:output_type -> daemon.Status - 10, // 64: daemon.StartedService.SubscribeGroups:output_type -> daemon.Groups - 17, // 65: daemon.StartedService.GetClashModeStatus:output_type -> daemon.ClashModeStatus - 16, // 66: daemon.StartedService.SubscribeClashMode:output_type -> daemon.ClashMode - 54, // 67: daemon.StartedService.SetClashMode:output_type -> google.protobuf.Empty - 54, // 68: daemon.StartedService.URLTest:output_type -> google.protobuf.Empty - 54, // 69: daemon.StartedService.SelectOutbound:output_type -> google.protobuf.Empty - 54, // 70: daemon.StartedService.SetGroupExpand:output_type -> google.protobuf.Empty - 18, // 71: daemon.StartedService.GetSystemProxyStatus:output_type -> daemon.SystemProxyStatus - 54, // 72: daemon.StartedService.SetSystemProxyEnabled:output_type -> google.protobuf.Empty - 54, // 73: daemon.StartedService.TriggerDebugCrash:output_type -> google.protobuf.Empty - 54, // 74: daemon.StartedService.TriggerOOMReport:output_type -> google.protobuf.Empty - 23, // 75: daemon.StartedService.SubscribeConnections:output_type -> daemon.ConnectionEvents - 54, // 76: daemon.StartedService.CloseConnection:output_type -> google.protobuf.Empty - 54, // 77: daemon.StartedService.CloseAllConnections:output_type -> google.protobuf.Empty - 27, // 78: daemon.StartedService.GetDeprecatedWarnings:output_type -> daemon.DeprecatedWarnings - 29, // 79: daemon.StartedService.GetStartedAt:output_type -> daemon.StartedAt - 30, // 80: daemon.StartedService.SubscribeOutbounds:output_type -> daemon.OutboundList - 32, // 81: daemon.StartedService.StartNetworkQualityTest:output_type -> daemon.NetworkQualityTestProgress - 34, // 82: daemon.StartedService.StartSTUNTest:output_type -> daemon.STUNTestProgress - 35, // 83: daemon.StartedService.SubscribeTailscaleStatus:output_type -> daemon.TailscaleStatusUpdate - 40, // 84: daemon.StartedService.StartTailscalePing:output_type -> daemon.TailscalePingResponse - 54, // 85: daemon.StartedService.SetTailscaleExitNode:output_type -> google.protobuf.Empty - 54, // 86: daemon.StartedService.TailscaleLogout:output_type -> google.protobuf.Empty - 47, // 87: daemon.StartedService.StartTailscaleSSHSession:output_type -> daemon.TailscaleSSHServerMessage - 57, // [57:88] is the sub-list for method output_type - 26, // [26:57] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 9, // 3: daemon.Groups.group:type_name -> daemon.Group + 10, // 4: daemon.Group.items:type_name -> daemon.GroupItem + 1, // 5: daemon.ConnectionEvent.type:type_name -> daemon.ConnectionEventType + 19, // 6: daemon.ConnectionEvent.connection:type_name -> daemon.Connection + 17, // 7: daemon.ConnectionEvents.events:type_name -> daemon.ConnectionEvent + 20, // 8: daemon.Connection.processInfo:type_name -> daemon.ProcessInfo + 23, // 9: daemon.DeprecatedWarnings.warnings:type_name -> daemon.DeprecatedWarning + 10, // 10: daemon.OutboundList.outbounds:type_name -> daemon.GroupItem + 31, // 11: daemon.TailscaleStatusUpdate.endpoints:type_name -> daemon.TailscaleEndpointStatus + 33, // 12: daemon.TailscaleEndpointStatus.self:type_name -> daemon.TailscalePeer + 32, // 13: daemon.TailscaleEndpointStatus.userGroups:type_name -> daemon.TailscaleUserGroup + 33, // 14: daemon.TailscaleEndpointStatus.exitNode:type_name -> daemon.TailscalePeer + 33, // 15: daemon.TailscaleUserGroup.peers:type_name -> daemon.TailscalePeer + 39, // 16: daemon.TailscaleSSHClientMessage.start:type_name -> daemon.TailscaleSSHStart + 40, // 17: daemon.TailscaleSSHClientMessage.input:type_name -> daemon.TailscaleSSHInput + 41, // 18: daemon.TailscaleSSHClientMessage.resize:type_name -> daemon.TailscaleSSHResize + 43, // 19: daemon.TailscaleSSHServerMessage.authBanner:type_name -> daemon.TailscaleSSHAuthBanner + 44, // 20: daemon.TailscaleSSHServerMessage.ready:type_name -> daemon.TailscaleSSHReady + 45, // 21: daemon.TailscaleSSHServerMessage.output:type_name -> daemon.TailscaleSSHOutput + 46, // 22: daemon.TailscaleSSHServerMessage.exit:type_name -> daemon.TailscaleSSHExit + 47, // 23: daemon.TailscaleSSHServerMessage.error:type_name -> daemon.TailscaleSSHError + 0, // 24: daemon.Log.Message.level:type_name -> daemon.LogLevel + 49, // 25: daemon.StartedService.SubscribeServiceStatus:input_type -> google.protobuf.Empty + 49, // 26: daemon.StartedService.SubscribeLog:input_type -> google.protobuf.Empty + 49, // 27: daemon.StartedService.GetDefaultLogLevel:input_type -> google.protobuf.Empty + 49, // 28: daemon.StartedService.ClearLogs:input_type -> google.protobuf.Empty + 4, // 29: daemon.StartedService.SubscribeStatus:input_type -> daemon.SubscribeStatusRequest + 49, // 30: daemon.StartedService.SubscribeGroups:input_type -> google.protobuf.Empty + 49, // 31: daemon.StartedService.GetClashModeStatus:input_type -> google.protobuf.Empty + 49, // 32: daemon.StartedService.SubscribeClashMode:input_type -> google.protobuf.Empty + 14, // 33: daemon.StartedService.SetClashMode:input_type -> daemon.ClashMode + 11, // 34: daemon.StartedService.URLTest:input_type -> daemon.URLTestRequest + 12, // 35: daemon.StartedService.SelectOutbound:input_type -> daemon.SelectOutboundRequest + 13, // 36: daemon.StartedService.SetGroupExpand:input_type -> daemon.SetGroupExpandRequest + 49, // 37: daemon.StartedService.TriggerOOMReport:input_type -> google.protobuf.Empty + 16, // 38: daemon.StartedService.SubscribeConnections:input_type -> daemon.SubscribeConnectionsRequest + 21, // 39: daemon.StartedService.CloseConnection:input_type -> daemon.CloseConnectionRequest + 49, // 40: daemon.StartedService.CloseAllConnections:input_type -> google.protobuf.Empty + 49, // 41: daemon.StartedService.GetDeprecatedWarnings:input_type -> google.protobuf.Empty + 49, // 42: daemon.StartedService.GetStartedAt:input_type -> google.protobuf.Empty + 49, // 43: daemon.StartedService.SubscribeOutbounds:input_type -> google.protobuf.Empty + 26, // 44: daemon.StartedService.StartNetworkQualityTest:input_type -> daemon.NetworkQualityTestRequest + 28, // 45: daemon.StartedService.StartSTUNTest:input_type -> daemon.STUNTestRequest + 49, // 46: daemon.StartedService.SubscribeTailscaleStatus:input_type -> google.protobuf.Empty + 34, // 47: daemon.StartedService.StartTailscalePing:input_type -> daemon.TailscalePingRequest + 36, // 48: daemon.StartedService.SetTailscaleExitNode:input_type -> daemon.SetTailscaleExitNodeRequest + 37, // 49: daemon.StartedService.TailscaleLogout:input_type -> daemon.TailscaleLogoutRequest + 38, // 50: daemon.StartedService.StartTailscaleSSHSession:input_type -> daemon.TailscaleSSHClientMessage + 3, // 51: daemon.StartedService.SubscribeServiceStatus:output_type -> daemon.ServiceStatus + 5, // 52: daemon.StartedService.SubscribeLog:output_type -> daemon.Log + 6, // 53: daemon.StartedService.GetDefaultLogLevel:output_type -> daemon.DefaultLogLevel + 49, // 54: daemon.StartedService.ClearLogs:output_type -> google.protobuf.Empty + 7, // 55: daemon.StartedService.SubscribeStatus:output_type -> daemon.Status + 8, // 56: daemon.StartedService.SubscribeGroups:output_type -> daemon.Groups + 15, // 57: daemon.StartedService.GetClashModeStatus:output_type -> daemon.ClashModeStatus + 14, // 58: daemon.StartedService.SubscribeClashMode:output_type -> daemon.ClashMode + 49, // 59: daemon.StartedService.SetClashMode:output_type -> google.protobuf.Empty + 49, // 60: daemon.StartedService.URLTest:output_type -> google.protobuf.Empty + 49, // 61: daemon.StartedService.SelectOutbound:output_type -> google.protobuf.Empty + 49, // 62: daemon.StartedService.SetGroupExpand:output_type -> google.protobuf.Empty + 49, // 63: daemon.StartedService.TriggerOOMReport:output_type -> google.protobuf.Empty + 18, // 64: daemon.StartedService.SubscribeConnections:output_type -> daemon.ConnectionEvents + 49, // 65: daemon.StartedService.CloseConnection:output_type -> google.protobuf.Empty + 49, // 66: daemon.StartedService.CloseAllConnections:output_type -> google.protobuf.Empty + 22, // 67: daemon.StartedService.GetDeprecatedWarnings:output_type -> daemon.DeprecatedWarnings + 24, // 68: daemon.StartedService.GetStartedAt:output_type -> daemon.StartedAt + 25, // 69: daemon.StartedService.SubscribeOutbounds:output_type -> daemon.OutboundList + 27, // 70: daemon.StartedService.StartNetworkQualityTest:output_type -> daemon.NetworkQualityTestProgress + 29, // 71: daemon.StartedService.StartSTUNTest:output_type -> daemon.STUNTestProgress + 30, // 72: daemon.StartedService.SubscribeTailscaleStatus:output_type -> daemon.TailscaleStatusUpdate + 35, // 73: daemon.StartedService.StartTailscalePing:output_type -> daemon.TailscalePingResponse + 49, // 74: daemon.StartedService.SetTailscaleExitNode:output_type -> google.protobuf.Empty + 49, // 75: daemon.StartedService.TailscaleLogout:output_type -> google.protobuf.Empty + 42, // 76: daemon.StartedService.StartTailscaleSSHSession:output_type -> daemon.TailscaleSSHServerMessage + 51, // [51:77] is the sub-list for method output_type + 25, // [25:51] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name } func init() { file_daemon_started_service_proto_init() } @@ -4100,12 +3836,12 @@ func file_daemon_started_service_proto_init() { if File_daemon_started_service_proto != nil { return } - file_daemon_started_service_proto_msgTypes[39].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[35].OneofWrappers = []any{ (*TailscaleSSHClientMessage_Start)(nil), (*TailscaleSSHClientMessage_Input)(nil), (*TailscaleSSHClientMessage_Resize)(nil), } - file_daemon_started_service_proto_msgTypes[43].OneofWrappers = []any{ + file_daemon_started_service_proto_msgTypes[39].OneofWrappers = []any{ (*TailscaleSSHServerMessage_AuthBanner)(nil), (*TailscaleSSHServerMessage_Ready)(nil), (*TailscaleSSHServerMessage_Output)(nil), @@ -4117,8 +3853,8 @@ func file_daemon_started_service_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_daemon_started_service_proto_rawDesc), len(file_daemon_started_service_proto_rawDesc)), - NumEnums: 4, - NumMessages: 50, + NumEnums: 3, + NumMessages: 46, NumExtensions: 0, NumServices: 1, }, diff --git a/daemon/started_service.proto b/daemon/started_service.proto index 4ef6fb5fe..e83f3b84b 100644 --- a/daemon/started_service.proto +++ b/daemon/started_service.proto @@ -6,9 +6,6 @@ option go_package = "github.com/sagernet/sing-box/daemon"; import "google/protobuf/empty.proto"; service StartedService { - rpc StopService(google.protobuf.Empty) returns (google.protobuf.Empty); - rpc ReloadService(google.protobuf.Empty) returns (google.protobuf.Empty); - rpc SubscribeServiceStatus(google.protobuf.Empty) returns(stream ServiceStatus) {} rpc SubscribeLog(google.protobuf.Empty) returns(stream Log) {} rpc GetDefaultLogLevel(google.protobuf.Empty) returns(DefaultLogLevel) {} @@ -24,9 +21,6 @@ service StartedService { rpc SelectOutbound(SelectOutboundRequest) returns (google.protobuf.Empty) {} rpc SetGroupExpand(SetGroupExpandRequest) returns (google.protobuf.Empty) {} - rpc GetSystemProxyStatus(google.protobuf.Empty) returns(SystemProxyStatus) {} - rpc SetSystemProxyEnabled(SetSystemProxyEnabledRequest) returns(google.protobuf.Empty) {} - rpc TriggerDebugCrash(DebugCrashRequest) returns(google.protobuf.Empty) {} rpc TriggerOOMReport(google.protobuf.Empty) returns(google.protobuf.Empty) {} rpc SubscribeConnections(SubscribeConnectionsRequest) returns(stream ConnectionEvents) {} @@ -57,10 +51,6 @@ message ServiceStatus { string errorMessage = 2; } -message ReloadServiceRequest { - string newProfileContent = 1; -} - message SubscribeStatusRequest { int64 interval = 1; } @@ -143,24 +133,6 @@ message ClashModeStatus { string currentMode = 2; } -message SystemProxyStatus { - bool available = 1; - bool enabled = 2; -} - -message SetSystemProxyEnabledRequest { - bool enabled = 1; -} - -message DebugCrashRequest { - enum Type { - GO = 0; - NATIVE = 1; - } - - Type type = 1; -} - message SubscribeConnectionsRequest { int64 interval = 1; } diff --git a/daemon/started_service_grpc.pb.go b/daemon/started_service_grpc.pb.go index ad1f32c3d..76a6ef536 100644 --- a/daemon/started_service_grpc.pb.go +++ b/daemon/started_service_grpc.pb.go @@ -15,8 +15,6 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - StartedService_StopService_FullMethodName = "/daemon.StartedService/StopService" - StartedService_ReloadService_FullMethodName = "/daemon.StartedService/ReloadService" StartedService_SubscribeServiceStatus_FullMethodName = "/daemon.StartedService/SubscribeServiceStatus" StartedService_SubscribeLog_FullMethodName = "/daemon.StartedService/SubscribeLog" StartedService_GetDefaultLogLevel_FullMethodName = "/daemon.StartedService/GetDefaultLogLevel" @@ -29,9 +27,6 @@ const ( StartedService_URLTest_FullMethodName = "/daemon.StartedService/URLTest" StartedService_SelectOutbound_FullMethodName = "/daemon.StartedService/SelectOutbound" StartedService_SetGroupExpand_FullMethodName = "/daemon.StartedService/SetGroupExpand" - StartedService_GetSystemProxyStatus_FullMethodName = "/daemon.StartedService/GetSystemProxyStatus" - StartedService_SetSystemProxyEnabled_FullMethodName = "/daemon.StartedService/SetSystemProxyEnabled" - StartedService_TriggerDebugCrash_FullMethodName = "/daemon.StartedService/TriggerDebugCrash" StartedService_TriggerOOMReport_FullMethodName = "/daemon.StartedService/TriggerOOMReport" StartedService_SubscribeConnections_FullMethodName = "/daemon.StartedService/SubscribeConnections" StartedService_CloseConnection_FullMethodName = "/daemon.StartedService/CloseConnection" @@ -52,8 +47,6 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type StartedServiceClient interface { - StopService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) - ReloadService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) SubscribeServiceStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ServiceStatus], error) SubscribeLog(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Log], error) GetDefaultLogLevel(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DefaultLogLevel, error) @@ -66,9 +59,6 @@ type StartedServiceClient interface { URLTest(ctx context.Context, in *URLTestRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) SelectOutbound(ctx context.Context, in *SelectOutboundRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) SetGroupExpand(ctx context.Context, in *SetGroupExpandRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - GetSystemProxyStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SystemProxyStatus, error) - SetSystemProxyEnabled(ctx context.Context, in *SetSystemProxyEnabledRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - TriggerDebugCrash(ctx context.Context, in *DebugCrashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) TriggerOOMReport(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) SubscribeConnections(ctx context.Context, in *SubscribeConnectionsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ConnectionEvents], error) CloseConnection(ctx context.Context, in *CloseConnectionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) @@ -93,26 +83,6 @@ func NewStartedServiceClient(cc grpc.ClientConnInterface) StartedServiceClient { return &startedServiceClient{cc} } -func (c *startedServiceClient) StopService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, StartedService_StopService_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *startedServiceClient) ReloadService(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, StartedService_ReloadService_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *startedServiceClient) SubscribeServiceStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ServiceStatus], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &StartedService_ServiceDesc.Streams[0], StartedService_SubscribeServiceStatus_FullMethodName, cOpts...) @@ -278,36 +248,6 @@ func (c *startedServiceClient) SetGroupExpand(ctx context.Context, in *SetGroupE return out, nil } -func (c *startedServiceClient) GetSystemProxyStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SystemProxyStatus, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SystemProxyStatus) - err := c.cc.Invoke(ctx, StartedService_GetSystemProxyStatus_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *startedServiceClient) SetSystemProxyEnabled(ctx context.Context, in *SetSystemProxyEnabledRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, StartedService_SetSystemProxyEnabled_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *startedServiceClient) TriggerDebugCrash(ctx context.Context, in *DebugCrashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, StartedService_TriggerDebugCrash_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *startedServiceClient) TriggerOOMReport(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) @@ -509,8 +449,6 @@ type StartedService_StartTailscaleSSHSessionClient = grpc.BidiStreamingClient[Ta // All implementations must embed UnimplementedStartedServiceServer // for forward compatibility. type StartedServiceServer interface { - StopService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) - ReloadService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) SubscribeServiceStatus(*emptypb.Empty, grpc.ServerStreamingServer[ServiceStatus]) error SubscribeLog(*emptypb.Empty, grpc.ServerStreamingServer[Log]) error GetDefaultLogLevel(context.Context, *emptypb.Empty) (*DefaultLogLevel, error) @@ -523,9 +461,6 @@ type StartedServiceServer interface { URLTest(context.Context, *URLTestRequest) (*emptypb.Empty, error) SelectOutbound(context.Context, *SelectOutboundRequest) (*emptypb.Empty, error) SetGroupExpand(context.Context, *SetGroupExpandRequest) (*emptypb.Empty, error) - GetSystemProxyStatus(context.Context, *emptypb.Empty) (*SystemProxyStatus, error) - SetSystemProxyEnabled(context.Context, *SetSystemProxyEnabledRequest) (*emptypb.Empty, error) - TriggerDebugCrash(context.Context, *DebugCrashRequest) (*emptypb.Empty, error) TriggerOOMReport(context.Context, *emptypb.Empty) (*emptypb.Empty, error) SubscribeConnections(*SubscribeConnectionsRequest, grpc.ServerStreamingServer[ConnectionEvents]) error CloseConnection(context.Context, *CloseConnectionRequest) (*emptypb.Empty, error) @@ -550,14 +485,6 @@ type StartedServiceServer interface { // pointer dereference when methods are called. type UnimplementedStartedServiceServer struct{} -func (UnimplementedStartedServiceServer) StopService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { - return nil, status.Error(codes.Unimplemented, "method StopService not implemented") -} - -func (UnimplementedStartedServiceServer) ReloadService(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { - return nil, status.Error(codes.Unimplemented, "method ReloadService not implemented") -} - func (UnimplementedStartedServiceServer) SubscribeServiceStatus(*emptypb.Empty, grpc.ServerStreamingServer[ServiceStatus]) error { return status.Error(codes.Unimplemented, "method SubscribeServiceStatus not implemented") } @@ -606,18 +533,6 @@ func (UnimplementedStartedServiceServer) SetGroupExpand(context.Context, *SetGro return nil, status.Error(codes.Unimplemented, "method SetGroupExpand not implemented") } -func (UnimplementedStartedServiceServer) GetSystemProxyStatus(context.Context, *emptypb.Empty) (*SystemProxyStatus, error) { - return nil, status.Error(codes.Unimplemented, "method GetSystemProxyStatus not implemented") -} - -func (UnimplementedStartedServiceServer) SetSystemProxyEnabled(context.Context, *SetSystemProxyEnabledRequest) (*emptypb.Empty, error) { - return nil, status.Error(codes.Unimplemented, "method SetSystemProxyEnabled not implemented") -} - -func (UnimplementedStartedServiceServer) TriggerDebugCrash(context.Context, *DebugCrashRequest) (*emptypb.Empty, error) { - return nil, status.Error(codes.Unimplemented, "method TriggerDebugCrash not implemented") -} - func (UnimplementedStartedServiceServer) TriggerOOMReport(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { return nil, status.Error(codes.Unimplemented, "method TriggerOOMReport not implemented") } @@ -694,42 +609,6 @@ func RegisterStartedServiceServer(s grpc.ServiceRegistrar, srv StartedServiceSer s.RegisterService(&StartedService_ServiceDesc, srv) } -func _StartedService_StopService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(emptypb.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StartedServiceServer).StopService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StartedService_StopService_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StartedServiceServer).StopService(ctx, req.(*emptypb.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _StartedService_ReloadService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(emptypb.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StartedServiceServer).ReloadService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StartedService_ReloadService_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StartedServiceServer).ReloadService(ctx, req.(*emptypb.Empty)) - } - return interceptor(ctx, in, info, handler) -} - func _StartedService_SubscribeServiceStatus_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(emptypb.Empty) if err := stream.RecvMsg(m); err != nil { @@ -911,60 +790,6 @@ func _StartedService_SetGroupExpand_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } -func _StartedService_GetSystemProxyStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(emptypb.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StartedServiceServer).GetSystemProxyStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StartedService_GetSystemProxyStatus_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StartedServiceServer).GetSystemProxyStatus(ctx, req.(*emptypb.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _StartedService_SetSystemProxyEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetSystemProxyEnabledRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StartedServiceServer).SetSystemProxyEnabled(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StartedService_SetSystemProxyEnabled_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StartedServiceServer).SetSystemProxyEnabled(ctx, req.(*SetSystemProxyEnabledRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StartedService_TriggerDebugCrash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DebugCrashRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StartedServiceServer).TriggerDebugCrash(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StartedService_TriggerDebugCrash_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StartedServiceServer).TriggerDebugCrash(ctx, req.(*DebugCrashRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _StartedService_TriggerOOMReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(emptypb.Empty) if err := dec(in); err != nil { @@ -1171,14 +996,6 @@ var StartedService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "daemon.StartedService", HandlerType: (*StartedServiceServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "StopService", - Handler: _StartedService_StopService_Handler, - }, - { - MethodName: "ReloadService", - Handler: _StartedService_ReloadService_Handler, - }, { MethodName: "GetDefaultLogLevel", Handler: _StartedService_GetDefaultLogLevel_Handler, @@ -1207,18 +1024,6 @@ var StartedService_ServiceDesc = grpc.ServiceDesc{ MethodName: "SetGroupExpand", Handler: _StartedService_SetGroupExpand_Handler, }, - { - MethodName: "GetSystemProxyStatus", - Handler: _StartedService_GetSystemProxyStatus_Handler, - }, - { - MethodName: "SetSystemProxyEnabled", - Handler: _StartedService_SetSystemProxyEnabled_Handler, - }, - { - MethodName: "TriggerDebugCrash", - Handler: _StartedService_TriggerDebugCrash_Handler, - }, { MethodName: "TriggerOOMReport", Handler: _StartedService_TriggerOOMReport_Handler, diff --git a/experimental/libbox/command_client.go b/experimental/libbox/command_client.go index b302eee8e..41e78a6d4 100644 --- a/experimental/libbox/command_client.go +++ b/experimental/libbox/command_client.go @@ -23,14 +23,15 @@ import ( ) type CommandClient struct { - handler CommandClientHandler - grpcConn *grpc.ClientConn - grpcClient daemon.StartedServiceClient - options CommandClientOptions - ctx context.Context - cancel context.CancelFunc - clientMutex sync.RWMutex - standalone bool + handler CommandClientHandler + grpcConn *grpc.ClientConn + grpcClient daemon.StartedServiceClient + grpcManagedClient daemon.ManagedServiceClient + options CommandClientOptions + ctx context.Context + cancel context.CancelFunc + clientMutex sync.RWMutex + standalone bool } type CommandClientOptions struct { @@ -201,6 +202,7 @@ func (c *CommandClient) Connect() error { } c.grpcConn = connection c.grpcClient = client + c.grpcManagedClient = daemon.NewManagedServiceClient(connection) c.ctx, c.cancel = context.WithCancel(context.Background()) c.clientMutex.Unlock() @@ -227,6 +229,7 @@ func (c *CommandClient) ConnectWithFD(fd int32) error { } c.grpcConn = connection c.grpcClient = client + c.grpcManagedClient = daemon.NewManagedServiceClient(connection) c.ctx, c.cancel = context.WithCancel(context.Background()) c.clientMutex.Unlock() @@ -287,6 +290,7 @@ func (c *CommandClient) getClientForCall() (daemon.StartedServiceClient, context } c.grpcConn = connection c.grpcClient = client + c.grpcManagedClient = daemon.NewManagedServiceClient(connection) if c.ctx == nil { c.ctx, c.cancel = context.WithCancel(context.Background()) } @@ -300,6 +304,7 @@ func (c *CommandClient) closeConnection() { c.grpcConn.Close() c.grpcConn = nil c.grpcClient = nil + c.grpcManagedClient = nil } } @@ -315,6 +320,25 @@ func callWithResult[T any](c *CommandClient, call func(ctx context.Context, clie return call(ctx, client) } +func callManagedWithResult[T any](c *CommandClient, call func(ctx context.Context, client daemon.ManagedServiceClient) (T, error)) (T, error) { + _, ctx, err := c.getClientForCall() + if err != nil { + var zero T + return zero, err + } + if c.standalone { + defer c.closeConnection() + } + c.clientMutex.RLock() + client := c.grpcManagedClient + c.clientMutex.RUnlock() + if client == nil { + var zero T + return zero, os.ErrClosed + } + return call(ctx, client) +} + func (c *CommandClient) getStreamContext() (daemon.StartedServiceClient, context.Context) { c.clientMutex.RLock() defer c.clientMutex.RUnlock() @@ -541,7 +565,7 @@ func (c *CommandClient) CloseConnections() error { } func (c *CommandClient) ServiceReload() error { - _, err := callWithResult(c, func(ctx context.Context, client daemon.StartedServiceClient) (*emptypb.Empty, error) { + _, err := callManagedWithResult(c, func(ctx context.Context, client daemon.ManagedServiceClient) (*emptypb.Empty, error) { return client.ReloadService(ctx, &emptypb.Empty{}) }) if err != nil { @@ -551,7 +575,7 @@ func (c *CommandClient) ServiceReload() error { } func (c *CommandClient) ServiceClose() error { - _, err := callWithResult(c, func(ctx context.Context, client daemon.StartedServiceClient) (*emptypb.Empty, error) { + _, err := callManagedWithResult(c, func(ctx context.Context, client daemon.ManagedServiceClient) (*emptypb.Empty, error) { return client.StopService(ctx, &emptypb.Empty{}) }) if err != nil { @@ -571,7 +595,7 @@ func (c *CommandClient) ClearLogs() error { } func (c *CommandClient) GetSystemProxyStatus() (*SystemProxyStatus, error) { - return callWithResult(c, func(ctx context.Context, client daemon.StartedServiceClient) (*SystemProxyStatus, error) { + return callManagedWithResult(c, func(ctx context.Context, client daemon.ManagedServiceClient) (*SystemProxyStatus, error) { status, err := client.GetSystemProxyStatus(ctx, &emptypb.Empty{}) if err != nil { return nil, E.Cause(err, "get system proxy status") @@ -581,7 +605,7 @@ func (c *CommandClient) GetSystemProxyStatus() (*SystemProxyStatus, error) { } func (c *CommandClient) SetSystemProxyEnabled(isEnabled bool) error { - _, err := callWithResult(c, func(ctx context.Context, client daemon.StartedServiceClient) (*emptypb.Empty, error) { + _, err := callManagedWithResult(c, func(ctx context.Context, client daemon.ManagedServiceClient) (*emptypb.Empty, error) { return client.SetSystemProxyEnabled(ctx, &daemon.SetSystemProxyEnabledRequest{ Enabled: isEnabled, }) @@ -593,7 +617,7 @@ func (c *CommandClient) SetSystemProxyEnabled(isEnabled bool) error { } func (c *CommandClient) TriggerGoCrash() error { - _, err := callWithResult(c, func(ctx context.Context, client daemon.StartedServiceClient) (*emptypb.Empty, error) { + _, err := callManagedWithResult(c, func(ctx context.Context, client daemon.ManagedServiceClient) (*emptypb.Empty, error) { return client.TriggerDebugCrash(ctx, &daemon.DebugCrashRequest{ Type: daemon.DebugCrashRequest_GO, }) @@ -605,7 +629,7 @@ func (c *CommandClient) TriggerGoCrash() error { } func (c *CommandClient) TriggerNativeCrash() error { - _, err := callWithResult(c, func(ctx context.Context, client daemon.StartedServiceClient) (*emptypb.Empty, error) { + _, err := callManagedWithResult(c, func(ctx context.Context, client daemon.ManagedServiceClient) (*emptypb.Empty, error) { return client.TriggerDebugCrash(ctx, &daemon.DebugCrashRequest{ Type: daemon.DebugCrashRequest_NATIVE, }) diff --git a/experimental/libbox/command_server.go b/experimental/libbox/command_server.go index a67b010e6..8c6015a16 100644 --- a/experimental/libbox/command_server.go +++ b/experimental/libbox/command_server.go @@ -20,12 +20,15 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/health" + "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) type CommandServer struct { *daemon.StartedService + managedService *daemon.ManagedService handler CommandServerHandler platformInterface PlatformInterface platformWrapper *platformInterfaceWrapper @@ -71,6 +74,10 @@ func NewCommandServer(handler CommandServerHandler, platformInterface PlatformIn // GroupID: sGroupID, // SystemProxyEnabled: false, }) + server.managedService = daemon.NewManagedService(daemon.ManagedServiceOptions{ + Handler: (*platformHandler)(server), + Debug: sDebug, + }) return server, nil } @@ -155,6 +162,11 @@ func (s *CommandServer) Start() error { } s.grpcServer = grpc.NewServer(serverOptions...) daemon.RegisterStartedServiceServer(s.grpcServer, s.StartedService) + daemon.RegisterManagedServiceServer(s.grpcServer, s.managedService) + healthServer := health.NewServer() + healthServer.SetServingStatus(daemon.StartedService_ServiceDesc.ServiceName, grpc_health_v1.HealthCheckResponse_SERVING) + healthServer.SetServingStatus(daemon.ManagedService_ServiceDesc.ServiceName, grpc_health_v1.HealthCheckResponse_SERVING) + grpc_health_v1.RegisterHealthServer(s.grpcServer, healthServer) go s.grpcServer.Serve(listener) return nil }