From 76bddde9a4ef45a888453d8946d0c855a02368f6 Mon Sep 17 00:00:00 2001 From: Nova Date: Tue, 31 Dec 2024 03:23:30 +0330 Subject: [PATCH] prepare connection list --- core/cmd/nekobox_core/grpc_box.go | 26 +- .../internal/boxapi/clash_server.go | 359 +++++++++++++ .../cmd/nekobox_core/server/gen/libcore.pb.go | 499 +++++++++++------- .../cmd/nekobox_core/server/gen/libcore.proto | 14 +- 4 files changed, 717 insertions(+), 181 deletions(-) create mode 100644 core/cmd/nekobox_core/internal/boxapi/clash_server.go diff --git a/core/cmd/nekobox_core/grpc_box.go b/core/cmd/nekobox_core/grpc_box.go index 4f599da..7d70562 100644 --- a/core/cmd/nekobox_core/grpc_box.go +++ b/core/cmd/nekobox_core/grpc_box.go @@ -159,8 +159,32 @@ func (s *server) QueryStats(ctx context.Context, in *gen.QueryStatsReq) (out *ge } func (s *server) ListConnections(ctx context.Context, in *gen.EmptyReq) (*gen.ListConnectionsResp, error) { + if instance.Router().ClashServer() == nil { + return nil, errors.New("no clash server found") + } + clash, ok := instance.Router().ClashServer().(*boxapi.SbClashServer) + if !ok { + return nil, errors.New("invalid state, should not be here") + } + connections := clash.TrafficManager().Connections() + + res := make([]*gen.ConnectionMetaData, 0) + for _, c := range connections { + r := &gen.ConnectionMetaData{ + Id: c.ID.String(), + CreatedAt: c.CreatedAt.UnixMilli(), + Upload: c.Upload.Load(), + Download: c.Download.Load(), + Outbound: c.Outbound, + Network: c.Metadata.Network, + Dest: c.Metadata.Destination.String(), + Protocol: c.Metadata.Protocol, + Domain: c.Metadata.Domain, + } + res = append(res, r) + } out := &gen.ListConnectionsResp{ - // TODO upstream api + Connections: res, } return out, nil } diff --git a/core/cmd/nekobox_core/internal/boxapi/clash_server.go b/core/cmd/nekobox_core/internal/boxapi/clash_server.go new file mode 100644 index 0000000..daf09e5 --- /dev/null +++ b/core/cmd/nekobox_core/internal/boxapi/clash_server.go @@ -0,0 +1,359 @@ +package boxapi + +import ( + "bytes" + "context" + "net" + "net/http" + "os" + "strings" + "time" + + "github.com/sagernet/sing-box/adapter" + "github.com/sagernet/sing-box/common/urltest" + C "github.com/sagernet/sing-box/constant" + "github.com/sagernet/sing-box/experimental" + "github.com/sagernet/sing-box/experimental/clashapi/trafficontrol" + "github.com/sagernet/sing-box/log" + "github.com/sagernet/sing-box/option" + "github.com/sagernet/sing/common" + E "github.com/sagernet/sing/common/exceptions" + "github.com/sagernet/sing/common/json" + N "github.com/sagernet/sing/common/network" + "github.com/sagernet/sing/service" + "github.com/sagernet/sing/service/filemanager" + "github.com/sagernet/ws" + "github.com/sagernet/ws/wsutil" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/render" +) + +func init() { + experimental.RegisterClashServerConstructor(NewServer) +} + +var _ adapter.ClashServer = (*SbClashServer)(nil) + +type SbClashServer struct { + ctx context.Context + router adapter.Router + logger log.Logger + httpServer *http.Server + trafficManager *trafficontrol.Manager + urlTestHistory *urltest.HistoryStorage + mode string + modeList []string + modeUpdateHook chan<- struct{} + + externalController bool + externalUI string + externalUIDownloadURL string + externalUIDownloadDetour string +} + +func NewServer(ctx context.Context, router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error) { + trafficManager := trafficontrol.NewManager() + chiRouter := chi.NewRouter() + server := &SbClashServer{ + ctx: ctx, + router: router, + logger: logFactory.NewLogger("clash-api"), + httpServer: &http.Server{ + Addr: options.ExternalController, + Handler: chiRouter, + }, + trafficManager: trafficManager, + modeList: options.ModeList, + externalController: options.ExternalController != "", + externalUIDownloadURL: options.ExternalUIDownloadURL, + externalUIDownloadDetour: options.ExternalUIDownloadDetour, + } + server.urlTestHistory = service.PtrFromContext[urltest.HistoryStorage](ctx) + if server.urlTestHistory == nil { + server.urlTestHistory = urltest.NewHistoryStorage() + } + defaultMode := "Rule" + if options.DefaultMode != "" { + defaultMode = options.DefaultMode + } + if !common.Contains(server.modeList, defaultMode) { + server.modeList = append([]string{defaultMode}, server.modeList...) + } + server.mode = defaultMode + //goland:noinspection GoDeprecation + //nolint:staticcheck + if options.StoreMode || options.StoreSelected || options.StoreFakeIP || options.CacheFile != "" || options.CacheID != "" { + return nil, E.New("cache_file and related fields in Clash API is deprecated in sing-box 1.8.0, use experimental.cache_file instead.") + } + allowedOrigins := options.AccessControlAllowOrigin + if len(allowedOrigins) == 0 { + allowedOrigins = []string{"*"} + } + if options.ExternalUI != "" { + server.externalUI = filemanager.BasePath(ctx, os.ExpandEnv(options.ExternalUI)) + chiRouter.Group(func(r chi.Router) { + r.Get("/ui", http.RedirectHandler("/ui/", http.StatusMovedPermanently).ServeHTTP) + r.Handle("/ui/*", http.StripPrefix("/ui/", http.FileServer(http.Dir(server.externalUI)))) + }) + } + return server, nil +} + +func (s *SbClashServer) PreStart() error { + cacheFile := service.FromContext[adapter.CacheFile](s.ctx) + if cacheFile != nil { + mode := cacheFile.LoadMode() + if common.Any(s.modeList, func(it string) bool { + return strings.EqualFold(it, mode) + }) { + s.mode = mode + } + } + return nil +} + +func (s *SbClashServer) Start() error { + return nil +} + +func (s *SbClashServer) Close() error { + return common.Close( + common.PtrOrNil(s.httpServer), + s.trafficManager, + s.urlTestHistory, + ) +} + +func (s *SbClashServer) Mode() string { + return s.mode +} + +func (s *SbClashServer) ModeList() []string { + return s.modeList +} + +func (s *SbClashServer) SetModeUpdateHook(hook chan<- struct{}) { + s.modeUpdateHook = hook +} + +func (s *SbClashServer) SetMode(newMode string) { + if !common.Contains(s.modeList, newMode) { + newMode = common.Find(s.modeList, func(it string) bool { + return strings.EqualFold(it, newMode) + }) + } + if !common.Contains(s.modeList, newMode) { + return + } + if newMode == s.mode { + return + } + s.mode = newMode + if s.modeUpdateHook != nil { + select { + case s.modeUpdateHook <- struct{}{}: + default: + } + } + s.router.ClearDNSCache() + cacheFile := service.FromContext[adapter.CacheFile](s.ctx) + if cacheFile != nil { + err := cacheFile.StoreMode(newMode) + if err != nil { + s.logger.Error(E.Cause(err, "save mode")) + } + } + s.logger.Info("updated mode: ", newMode) +} + +func (s *SbClashServer) HistoryStorage() *urltest.HistoryStorage { + return s.urlTestHistory +} + +func (s *SbClashServer) TrafficManager() *trafficontrol.Manager { + return s.trafficManager +} + +func (s *SbClashServer) RoutedConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext, matchedRule adapter.Rule) (net.Conn, adapter.Tracker) { + tracker := trafficontrol.NewTCPTracker(conn, s.trafficManager, metadata, s.router, matchedRule) + return tracker, tracker +} + +func (s *SbClashServer) RoutedPacketConnection(ctx context.Context, conn N.PacketConn, metadata adapter.InboundContext, matchedRule adapter.Rule) (N.PacketConn, adapter.Tracker) { + tracker := trafficontrol.NewUDPTracker(conn, s.trafficManager, metadata, s.router, matchedRule) + return tracker, tracker +} + +func authentication(serverSecret string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + if serverSecret == "" { + next.ServeHTTP(w, r) + return + } + + // Browser websocket not support custom header + if r.Header.Get("Upgrade") == "websocket" && r.URL.Query().Get("token") != "" { + token := r.URL.Query().Get("token") + if token != serverSecret { + render.Status(r, http.StatusUnauthorized) + return + } + next.ServeHTTP(w, r) + return + } + + header := r.Header.Get("Authorization") + bearer, token, found := strings.Cut(header, " ") + + hasInvalidHeader := bearer != "Bearer" + hasInvalidSecret := !found || token != serverSecret + if hasInvalidHeader || hasInvalidSecret { + render.Status(r, http.StatusUnauthorized) + return + } + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} + +func hello(redirect bool) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + contentType := r.Header.Get("Content-Type") + if !redirect || contentType == "application/json" { + render.JSON(w, r, render.M{"hello": "clash"}) + } else { + http.Redirect(w, r, "/ui/", http.StatusTemporaryRedirect) + } + } +} + +type Traffic struct { + Up int64 `json:"up"` + Down int64 `json:"down"` +} + +func traffic(trafficManager *trafficontrol.Manager) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + var conn net.Conn + if r.Header.Get("Upgrade") == "websocket" { + var err error + conn, _, _, err = ws.UpgradeHTTP(r, w) + if err != nil { + return + } + defer conn.Close() + } + + if conn == nil { + w.Header().Set("Content-Type", "application/json") + render.Status(r, http.StatusOK) + } + + tick := time.NewTicker(time.Second) + defer tick.Stop() + buf := &bytes.Buffer{} + uploadTotal, downloadTotal := trafficManager.Total() + for range tick.C { + buf.Reset() + uploadTotalNew, downloadTotalNew := trafficManager.Total() + err := json.NewEncoder(buf).Encode(Traffic{ + Up: uploadTotalNew - uploadTotal, + Down: downloadTotalNew - downloadTotal, + }) + if err != nil { + break + } + if conn == nil { + _, err = w.Write(buf.Bytes()) + w.(http.Flusher).Flush() + } else { + err = wsutil.WriteServerText(conn, buf.Bytes()) + } + if err != nil { + break + } + + uploadTotal = uploadTotalNew + downloadTotal = downloadTotalNew + } + } +} + +type Log struct { + Type string `json:"type"` + Payload string `json:"payload"` +} + +func getLogs(logFactory log.ObservableFactory) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + levelText := r.URL.Query().Get("level") + if levelText == "" { + levelText = "info" + } + + level, ok := log.ParseLevel(levelText) + if ok != nil { + render.Status(r, http.StatusBadRequest) + return + } + + subscription, done, err := logFactory.Subscribe() + if err != nil { + render.Status(r, http.StatusNoContent) + return + } + defer logFactory.UnSubscribe(subscription) + + var conn net.Conn + if r.Header.Get("Upgrade") == "websocket" { + conn, _, _, err = ws.UpgradeHTTP(r, w) + if err != nil { + return + } + defer conn.Close() + } + + if conn == nil { + w.Header().Set("Content-Type", "application/json") + render.Status(r, http.StatusOK) + } + + buf := &bytes.Buffer{} + var logEntry log.Entry + for { + select { + case <-done: + return + case logEntry = <-subscription: + } + if logEntry.Level > level { + continue + } + buf.Reset() + err = json.NewEncoder(buf).Encode(Log{ + Type: log.FormatLevel(logEntry.Level), + Payload: logEntry.Message, + }) + if err != nil { + break + } + if conn == nil { + _, err = w.Write(buf.Bytes()) + w.(http.Flusher).Flush() + } else { + err = wsutil.WriteServerText(conn, buf.Bytes()) + } + + if err != nil { + break + } + } + } +} + +func version(w http.ResponseWriter, r *http.Request) { + render.JSON(w, r, render.M{"version": "sing-box " + C.Version, "premium": true, "meta": true}) +} diff --git a/core/cmd/nekobox_core/server/gen/libcore.pb.go b/core/cmd/nekobox_core/server/gen/libcore.pb.go index 1bc74e3..4f028a9 100644 --- a/core/cmd/nekobox_core/server/gen/libcore.pb.go +++ b/core/cmd/nekobox_core/server/gen/libcore.pb.go @@ -706,7 +706,7 @@ type ListConnectionsResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NekorayConnectionsJson string `protobuf:"bytes,1,opt,name=nekoray_connections_json,json=nekorayConnectionsJson,proto3" json:"nekoray_connections_json,omitempty"` + Connections []*ConnectionMetaData `protobuf:"bytes,1,rep,name=connections,proto3" json:"connections,omitempty"` } func (x *ListConnectionsResp) Reset() { @@ -741,9 +741,120 @@ func (*ListConnectionsResp) Descriptor() ([]byte, []int) { return file_libcore_proto_rawDescGZIP(), []int{11} } -func (x *ListConnectionsResp) GetNekorayConnectionsJson() string { +func (x *ListConnectionsResp) GetConnections() []*ConnectionMetaData { if x != nil { - return x.NekorayConnectionsJson + return x.Connections + } + return nil +} + +type ConnectionMetaData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Upload int64 `protobuf:"varint,3,opt,name=upload,proto3" json:"upload,omitempty"` + Download int64 `protobuf:"varint,4,opt,name=download,proto3" json:"download,omitempty"` + Outbound string `protobuf:"bytes,5,opt,name=outbound,proto3" json:"outbound,omitempty"` + Network string `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` + Dest string `protobuf:"bytes,7,opt,name=dest,proto3" json:"dest,omitempty"` + Protocol string `protobuf:"bytes,8,opt,name=protocol,proto3" json:"protocol,omitempty"` + Domain string `protobuf:"bytes,9,opt,name=domain,proto3" json:"domain,omitempty"` +} + +func (x *ConnectionMetaData) Reset() { + *x = ConnectionMetaData{} + if protoimpl.UnsafeEnabled { + mi := &file_libcore_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConnectionMetaData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectionMetaData) ProtoMessage() {} + +func (x *ConnectionMetaData) ProtoReflect() protoreflect.Message { + mi := &file_libcore_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectionMetaData.ProtoReflect.Descriptor instead. +func (*ConnectionMetaData) Descriptor() ([]byte, []int) { + return file_libcore_proto_rawDescGZIP(), []int{12} +} + +func (x *ConnectionMetaData) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ConnectionMetaData) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *ConnectionMetaData) GetUpload() int64 { + if x != nil { + return x.Upload + } + return 0 +} + +func (x *ConnectionMetaData) GetDownload() int64 { + if x != nil { + return x.Download + } + return 0 +} + +func (x *ConnectionMetaData) GetOutbound() string { + if x != nil { + return x.Outbound + } + return "" +} + +func (x *ConnectionMetaData) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ConnectionMetaData) GetDest() string { + if x != nil { + return x.Dest + } + return "" +} + +func (x *ConnectionMetaData) GetProtocol() string { + if x != nil { + return x.Protocol + } + return "" +} + +func (x *ConnectionMetaData) GetDomain() string { + if x != nil { + return x.Domain } return "" } @@ -759,7 +870,7 @@ type GetGeoIPListResponse struct { func (x *GetGeoIPListResponse) Reset() { *x = GetGeoIPListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[12] + mi := &file_libcore_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -772,7 +883,7 @@ func (x *GetGeoIPListResponse) String() string { func (*GetGeoIPListResponse) ProtoMessage() {} func (x *GetGeoIPListResponse) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[12] + mi := &file_libcore_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -785,7 +896,7 @@ func (x *GetGeoIPListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGeoIPListResponse.ProtoReflect.Descriptor instead. func (*GetGeoIPListResponse) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{12} + return file_libcore_proto_rawDescGZIP(), []int{13} } func (x *GetGeoIPListResponse) GetItems() []string { @@ -806,7 +917,7 @@ type GetGeoSiteListResponse struct { func (x *GetGeoSiteListResponse) Reset() { *x = GetGeoSiteListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[13] + mi := &file_libcore_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -819,7 +930,7 @@ func (x *GetGeoSiteListResponse) String() string { func (*GetGeoSiteListResponse) ProtoMessage() {} func (x *GetGeoSiteListResponse) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[13] + mi := &file_libcore_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -832,7 +943,7 @@ func (x *GetGeoSiteListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGeoSiteListResponse.ProtoReflect.Descriptor instead. func (*GetGeoSiteListResponse) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{13} + return file_libcore_proto_rawDescGZIP(), []int{14} } func (x *GetGeoSiteListResponse) GetItems() []string { @@ -853,7 +964,7 @@ type GeoListRequest struct { func (x *GeoListRequest) Reset() { *x = GeoListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[14] + mi := &file_libcore_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -866,7 +977,7 @@ func (x *GeoListRequest) String() string { func (*GeoListRequest) ProtoMessage() {} func (x *GeoListRequest) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[14] + mi := &file_libcore_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -879,7 +990,7 @@ func (x *GeoListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GeoListRequest.ProtoReflect.Descriptor instead. func (*GeoListRequest) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{14} + return file_libcore_proto_rawDescGZIP(), []int{15} } func (x *GeoListRequest) GetPath() string { @@ -901,7 +1012,7 @@ type CompileGeoIPToSrsRequest struct { func (x *CompileGeoIPToSrsRequest) Reset() { *x = CompileGeoIPToSrsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[15] + mi := &file_libcore_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -914,7 +1025,7 @@ func (x *CompileGeoIPToSrsRequest) String() string { func (*CompileGeoIPToSrsRequest) ProtoMessage() {} func (x *CompileGeoIPToSrsRequest) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[15] + mi := &file_libcore_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -927,7 +1038,7 @@ func (x *CompileGeoIPToSrsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CompileGeoIPToSrsRequest.ProtoReflect.Descriptor instead. func (*CompileGeoIPToSrsRequest) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{15} + return file_libcore_proto_rawDescGZIP(), []int{16} } func (x *CompileGeoIPToSrsRequest) GetItem() string { @@ -956,7 +1067,7 @@ type CompileGeoSiteToSrsRequest struct { func (x *CompileGeoSiteToSrsRequest) Reset() { *x = CompileGeoSiteToSrsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[16] + mi := &file_libcore_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -969,7 +1080,7 @@ func (x *CompileGeoSiteToSrsRequest) String() string { func (*CompileGeoSiteToSrsRequest) ProtoMessage() {} func (x *CompileGeoSiteToSrsRequest) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[16] + mi := &file_libcore_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -982,7 +1093,7 @@ func (x *CompileGeoSiteToSrsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CompileGeoSiteToSrsRequest.ProtoReflect.Descriptor instead. func (*CompileGeoSiteToSrsRequest) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{16} + return file_libcore_proto_rawDescGZIP(), []int{17} } func (x *CompileGeoSiteToSrsRequest) GetItem() string { @@ -1011,7 +1122,7 @@ type SetSystemProxyRequest struct { func (x *SetSystemProxyRequest) Reset() { *x = SetSystemProxyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[17] + mi := &file_libcore_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1024,7 +1135,7 @@ func (x *SetSystemProxyRequest) String() string { func (*SetSystemProxyRequest) ProtoMessage() {} func (x *SetSystemProxyRequest) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[17] + mi := &file_libcore_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1037,7 +1148,7 @@ func (x *SetSystemProxyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetSystemProxyRequest.ProtoReflect.Descriptor instead. func (*SetSystemProxyRequest) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{17} + return file_libcore_proto_rawDescGZIP(), []int{18} } func (x *SetSystemProxyRequest) GetEnable() bool { @@ -1067,7 +1178,7 @@ type SetSystemDNSRequest struct { func (x *SetSystemDNSRequest) Reset() { *x = SetSystemDNSRequest{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[18] + mi := &file_libcore_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1080,7 +1191,7 @@ func (x *SetSystemDNSRequest) String() string { func (*SetSystemDNSRequest) ProtoMessage() {} func (x *SetSystemDNSRequest) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[18] + mi := &file_libcore_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1093,7 +1204,7 @@ func (x *SetSystemDNSRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetSystemDNSRequest.ProtoReflect.Descriptor instead. func (*SetSystemDNSRequest) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{18} + return file_libcore_proto_rawDescGZIP(), []int{19} } func (x *SetSystemDNSRequest) GetClear() bool { @@ -1129,7 +1240,7 @@ type GetSystemDNSResponse struct { func (x *GetSystemDNSResponse) Reset() { *x = GetSystemDNSResponse{} if protoimpl.UnsafeEnabled { - mi := &file_libcore_proto_msgTypes[19] + mi := &file_libcore_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1142,7 +1253,7 @@ func (x *GetSystemDNSResponse) String() string { func (*GetSystemDNSResponse) ProtoMessage() {} func (x *GetSystemDNSResponse) ProtoReflect() protoreflect.Message { - mi := &file_libcore_proto_msgTypes[19] + mi := &file_libcore_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1155,7 +1266,7 @@ func (x *GetSystemDNSResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSystemDNSResponse.ProtoReflect.Descriptor instead. func (*GetSystemDNSResponse) Descriptor() ([]byte, []int) { - return file_libcore_proto_rawDescGZIP(), []int{19} + return file_libcore_proto_rawDescGZIP(), []int{20} } func (x *GetSystemDNSResponse) GetServers() []string { @@ -1242,108 +1353,124 @@ var file_libcore_proto_rawDesc = []byte{ 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x50, 0x72, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x22, 0x4f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x18, 0x6e, 0x65, 0x6b, 0x6f, - 0x72, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6e, 0x65, 0x6b, 0x6f, - 0x72, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x73, - 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x22, 0x2e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x22, 0x24, 0x0a, 0x0e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x42, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, - 0x65, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x54, 0x6f, 0x53, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x44, 0x0a, 0x1a, 0x43, 0x6f, - 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x22, 0x49, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x60, 0x0a, 0x13, 0x53, - 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x68, 0x63, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x65, 0x74, 0x44, 0x68, 0x63, 0x70, 0x22, 0x49, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, - 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x64, 0x68, 0x63, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x69, 0x73, 0x44, 0x68, 0x63, 0x70, 0x2a, 0x27, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x10, - 0x01, 0x32, 0xc1, 0x07, 0x0a, 0x0e, 0x4c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x45, 0x78, 0x69, 0x74, 0x12, 0x11, 0x2e, 0x6c, - 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, - 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, - 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x16, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, - 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6c, 0x69, - 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x2f, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, + 0x65, 0x22, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, + 0x2c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x2e, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x24, 0x0a, + 0x0e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x22, 0x42, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, + 0x6f, 0x49, 0x50, 0x54, 0x6f, 0x53, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, + 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x44, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x70, 0x69, + 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x49, 0x0a, + 0x15, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x60, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x63, 0x6c, 0x65, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x68, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x73, 0x65, 0x74, 0x44, 0x68, 0x63, 0x70, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x17, 0x0a, 0x07, + 0x69, 0x73, 0x5f, 0x64, 0x68, 0x63, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, + 0x73, 0x44, 0x68, 0x63, 0x70, 0x2a, 0x27, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x10, 0x01, 0x32, 0xc1, + 0x07, 0x0a, 0x0e, 0x4c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x45, 0x78, 0x69, 0x74, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6c, - 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x6c, 0x69, 0x62, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6c, - 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x31, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x65, 0x73, 0x74, 0x12, 0x11, 0x2e, - 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, - 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x16, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6c, 0x69, 0x62, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, - 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x6c, 0x69, - 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x53, - 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4a, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x54, - 0x6f, 0x53, 0x72, 0x73, 0x12, 0x21, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x54, 0x6f, 0x53, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x13, 0x43, - 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x53, - 0x72, 0x73, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x0e, 0x53, - 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1e, 0x2e, - 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, + 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x33, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x12, 0x2e, 0x6c, + 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x13, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x16, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2f, + 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x2d, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x31, + 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x65, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x40, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, - 0x53, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x44, 0x4e, 0x53, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, - 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x42, 0x11, 0x5a, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x12, 0x3f, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x16, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x47, + 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x47, + 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x17, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6f, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x69, + 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x11, + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x54, 0x6f, 0x53, 0x72, + 0x73, 0x12, 0x21, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x54, 0x6f, 0x53, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x72, 0x73, 0x12, + 0x23, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x62, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, + 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x69, 0x62, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x12, 0x11, + 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, + 0x71, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x40, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, + 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, + 0x2e, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x42, 0x11, 0x5a, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1359,7 +1486,7 @@ func file_libcore_proto_rawDescGZIP() []byte { } var file_libcore_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_libcore_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_libcore_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_libcore_proto_goTypes = []interface{}{ (UpdateAction)(0), // 0: libcore.UpdateAction (*EmptyReq)(nil), // 1: libcore.EmptyReq @@ -1374,53 +1501,55 @@ var file_libcore_proto_goTypes = []interface{}{ (*UpdateReq)(nil), // 10: libcore.UpdateReq (*UpdateResp)(nil), // 11: libcore.UpdateResp (*ListConnectionsResp)(nil), // 12: libcore.ListConnectionsResp - (*GetGeoIPListResponse)(nil), // 13: libcore.GetGeoIPListResponse - (*GetGeoSiteListResponse)(nil), // 14: libcore.GetGeoSiteListResponse - (*GeoListRequest)(nil), // 15: libcore.GeoListRequest - (*CompileGeoIPToSrsRequest)(nil), // 16: libcore.CompileGeoIPToSrsRequest - (*CompileGeoSiteToSrsRequest)(nil), // 17: libcore.CompileGeoSiteToSrsRequest - (*SetSystemProxyRequest)(nil), // 18: libcore.SetSystemProxyRequest - (*SetSystemDNSRequest)(nil), // 19: libcore.SetSystemDNSRequest - (*GetSystemDNSResponse)(nil), // 20: libcore.GetSystemDNSResponse + (*ConnectionMetaData)(nil), // 13: libcore.ConnectionMetaData + (*GetGeoIPListResponse)(nil), // 14: libcore.GetGeoIPListResponse + (*GetGeoSiteListResponse)(nil), // 15: libcore.GetGeoSiteListResponse + (*GeoListRequest)(nil), // 16: libcore.GeoListRequest + (*CompileGeoIPToSrsRequest)(nil), // 17: libcore.CompileGeoIPToSrsRequest + (*CompileGeoSiteToSrsRequest)(nil), // 18: libcore.CompileGeoSiteToSrsRequest + (*SetSystemProxyRequest)(nil), // 19: libcore.SetSystemProxyRequest + (*SetSystemDNSRequest)(nil), // 20: libcore.SetSystemDNSRequest + (*GetSystemDNSResponse)(nil), // 21: libcore.GetSystemDNSResponse } var file_libcore_proto_depIdxs = []int32{ 5, // 0: libcore.TestResp.results:type_name -> libcore.URLTestResp 0, // 1: libcore.UpdateReq.action:type_name -> libcore.UpdateAction - 1, // 2: libcore.LibcoreService.Exit:input_type -> libcore.EmptyReq - 10, // 3: libcore.LibcoreService.Update:input_type -> libcore.UpdateReq - 4, // 4: libcore.LibcoreService.Start:input_type -> libcore.LoadConfigReq - 1, // 5: libcore.LibcoreService.Stop:input_type -> libcore.EmptyReq - 6, // 6: libcore.LibcoreService.Test:input_type -> libcore.TestReq - 1, // 7: libcore.LibcoreService.StopTest:input_type -> libcore.EmptyReq - 8, // 8: libcore.LibcoreService.QueryStats:input_type -> libcore.QueryStatsReq - 1, // 9: libcore.LibcoreService.ListConnections:input_type -> libcore.EmptyReq - 15, // 10: libcore.LibcoreService.GetGeoIPList:input_type -> libcore.GeoListRequest - 15, // 11: libcore.LibcoreService.GetGeoSiteList:input_type -> libcore.GeoListRequest - 16, // 12: libcore.LibcoreService.CompileGeoIPToSrs:input_type -> libcore.CompileGeoIPToSrsRequest - 17, // 13: libcore.LibcoreService.CompileGeoSiteToSrs:input_type -> libcore.CompileGeoSiteToSrsRequest - 18, // 14: libcore.LibcoreService.SetSystemProxy:input_type -> libcore.SetSystemProxyRequest - 1, // 15: libcore.LibcoreService.GetSystemDNS:input_type -> libcore.EmptyReq - 19, // 16: libcore.LibcoreService.SetSystemDNS:input_type -> libcore.SetSystemDNSRequest - 2, // 17: libcore.LibcoreService.Exit:output_type -> libcore.EmptyResp - 11, // 18: libcore.LibcoreService.Update:output_type -> libcore.UpdateResp - 3, // 19: libcore.LibcoreService.Start:output_type -> libcore.ErrorResp - 3, // 20: libcore.LibcoreService.Stop:output_type -> libcore.ErrorResp - 7, // 21: libcore.LibcoreService.Test:output_type -> libcore.TestResp - 2, // 22: libcore.LibcoreService.StopTest:output_type -> libcore.EmptyResp - 9, // 23: libcore.LibcoreService.QueryStats:output_type -> libcore.QueryStatsResp - 12, // 24: libcore.LibcoreService.ListConnections:output_type -> libcore.ListConnectionsResp - 13, // 25: libcore.LibcoreService.GetGeoIPList:output_type -> libcore.GetGeoIPListResponse - 14, // 26: libcore.LibcoreService.GetGeoSiteList:output_type -> libcore.GetGeoSiteListResponse - 2, // 27: libcore.LibcoreService.CompileGeoIPToSrs:output_type -> libcore.EmptyResp - 2, // 28: libcore.LibcoreService.CompileGeoSiteToSrs:output_type -> libcore.EmptyResp - 2, // 29: libcore.LibcoreService.SetSystemProxy:output_type -> libcore.EmptyResp - 20, // 30: libcore.LibcoreService.GetSystemDNS:output_type -> libcore.GetSystemDNSResponse - 2, // 31: libcore.LibcoreService.SetSystemDNS:output_type -> libcore.EmptyResp - 17, // [17:32] is the sub-list for method output_type - 2, // [2:17] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 13, // 2: libcore.ListConnectionsResp.connections:type_name -> libcore.ConnectionMetaData + 1, // 3: libcore.LibcoreService.Exit:input_type -> libcore.EmptyReq + 10, // 4: libcore.LibcoreService.Update:input_type -> libcore.UpdateReq + 4, // 5: libcore.LibcoreService.Start:input_type -> libcore.LoadConfigReq + 1, // 6: libcore.LibcoreService.Stop:input_type -> libcore.EmptyReq + 6, // 7: libcore.LibcoreService.Test:input_type -> libcore.TestReq + 1, // 8: libcore.LibcoreService.StopTest:input_type -> libcore.EmptyReq + 8, // 9: libcore.LibcoreService.QueryStats:input_type -> libcore.QueryStatsReq + 1, // 10: libcore.LibcoreService.ListConnections:input_type -> libcore.EmptyReq + 16, // 11: libcore.LibcoreService.GetGeoIPList:input_type -> libcore.GeoListRequest + 16, // 12: libcore.LibcoreService.GetGeoSiteList:input_type -> libcore.GeoListRequest + 17, // 13: libcore.LibcoreService.CompileGeoIPToSrs:input_type -> libcore.CompileGeoIPToSrsRequest + 18, // 14: libcore.LibcoreService.CompileGeoSiteToSrs:input_type -> libcore.CompileGeoSiteToSrsRequest + 19, // 15: libcore.LibcoreService.SetSystemProxy:input_type -> libcore.SetSystemProxyRequest + 1, // 16: libcore.LibcoreService.GetSystemDNS:input_type -> libcore.EmptyReq + 20, // 17: libcore.LibcoreService.SetSystemDNS:input_type -> libcore.SetSystemDNSRequest + 2, // 18: libcore.LibcoreService.Exit:output_type -> libcore.EmptyResp + 11, // 19: libcore.LibcoreService.Update:output_type -> libcore.UpdateResp + 3, // 20: libcore.LibcoreService.Start:output_type -> libcore.ErrorResp + 3, // 21: libcore.LibcoreService.Stop:output_type -> libcore.ErrorResp + 7, // 22: libcore.LibcoreService.Test:output_type -> libcore.TestResp + 2, // 23: libcore.LibcoreService.StopTest:output_type -> libcore.EmptyResp + 9, // 24: libcore.LibcoreService.QueryStats:output_type -> libcore.QueryStatsResp + 12, // 25: libcore.LibcoreService.ListConnections:output_type -> libcore.ListConnectionsResp + 14, // 26: libcore.LibcoreService.GetGeoIPList:output_type -> libcore.GetGeoIPListResponse + 15, // 27: libcore.LibcoreService.GetGeoSiteList:output_type -> libcore.GetGeoSiteListResponse + 2, // 28: libcore.LibcoreService.CompileGeoIPToSrs:output_type -> libcore.EmptyResp + 2, // 29: libcore.LibcoreService.CompileGeoSiteToSrs:output_type -> libcore.EmptyResp + 2, // 30: libcore.LibcoreService.SetSystemProxy:output_type -> libcore.EmptyResp + 21, // 31: libcore.LibcoreService.GetSystemDNS:output_type -> libcore.GetSystemDNSResponse + 2, // 32: libcore.LibcoreService.SetSystemDNS:output_type -> libcore.EmptyResp + 18, // [18:33] is the sub-list for method output_type + 3, // [3:18] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_libcore_proto_init() } @@ -1574,7 +1703,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGeoIPListResponse); i { + switch v := v.(*ConnectionMetaData); i { case 0: return &v.state case 1: @@ -1586,7 +1715,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGeoSiteListResponse); i { + switch v := v.(*GetGeoIPListResponse); i { case 0: return &v.state case 1: @@ -1598,7 +1727,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeoListRequest); i { + switch v := v.(*GetGeoSiteListResponse); i { case 0: return &v.state case 1: @@ -1610,7 +1739,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompileGeoIPToSrsRequest); i { + switch v := v.(*GeoListRequest); i { case 0: return &v.state case 1: @@ -1622,7 +1751,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompileGeoSiteToSrsRequest); i { + switch v := v.(*CompileGeoIPToSrsRequest); i { case 0: return &v.state case 1: @@ -1634,7 +1763,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetSystemProxyRequest); i { + switch v := v.(*CompileGeoSiteToSrsRequest); i { case 0: return &v.state case 1: @@ -1646,7 +1775,7 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetSystemDNSRequest); i { + switch v := v.(*SetSystemProxyRequest); i { case 0: return &v.state case 1: @@ -1658,6 +1787,18 @@ func file_libcore_proto_init() { } } file_libcore_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetSystemDNSRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_libcore_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSystemDNSResponse); i { case 0: return &v.state @@ -1676,7 +1817,7 @@ func file_libcore_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_libcore_proto_rawDesc, NumEnums: 1, - NumMessages: 20, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/core/cmd/nekobox_core/server/gen/libcore.proto b/core/cmd/nekobox_core/server/gen/libcore.proto index 0dc4fc2..f8ec07f 100644 --- a/core/cmd/nekobox_core/server/gen/libcore.proto +++ b/core/cmd/nekobox_core/server/gen/libcore.proto @@ -88,7 +88,19 @@ message UpdateResp { } message ListConnectionsResp { - string nekoray_connections_json = 1; + repeated ConnectionMetaData connections = 1; +} + +message ConnectionMetaData { + string id = 1; + int64 created_at = 2; + int64 upload = 3; + int64 download = 4; + string outbound = 5; + string network = 6; + string dest = 7; + string protocol = 8; + string domain = 9; } message GetGeoIPListResponse {