From 8a699e1906ca56fbd15e69a08950309d14fe25cf Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Thu, 28 Sep 2023 21:05:44 +0800 Subject: [PATCH] add reload and plugin support for hop --- cmd/gost/config.go | 40 +++++++++++++++++++++++++--------------- go.mod | 6 +++--- go.sum | 12 ++++++------ 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/cmd/gost/config.go b/cmd/gost/config.go index 2bc9250..56cf474 100644 --- a/cmd/gost/config.go +++ b/cmd/gost/config.go @@ -9,7 +9,17 @@ import ( "github.com/go-gost/core/service" "github.com/go-gost/x/api" "github.com/go-gost/x/config" - "github.com/go-gost/x/config/parsing" + admission_parser "github.com/go-gost/x/config/parsing/admission" + auth_parser "github.com/go-gost/x/config/parsing/auth" + bypass_parser "github.com/go-gost/x/config/parsing/bypass" + chain_parser "github.com/go-gost/x/config/parsing/chain" + hop_parser "github.com/go-gost/x/config/parsing/hop" + hosts_parser "github.com/go-gost/x/config/parsing/hosts" + ingress_parser "github.com/go-gost/x/config/parsing/ingress" + limiter_parser "github.com/go-gost/x/config/parsing/limiter" + recorder_parser "github.com/go-gost/x/config/parsing/recorder" + resolver_parser "github.com/go-gost/x/config/parsing/resolver" + service_parser "github.com/go-gost/x/config/parsing/service" xlogger "github.com/go-gost/x/logger" metrics "github.com/go-gost/x/metrics/service" "github.com/go-gost/x/registry" @@ -24,7 +34,7 @@ func buildService(cfg *config.Config) (services []service.Service) { log := logger.Default() for _, autherCfg := range cfg.Authers { - if auther := parsing.ParseAuther(autherCfg); auther != nil { + if auther := auth_parser.ParseAuther(autherCfg); auther != nil { if err := registry.AutherRegistry().Register(autherCfg.Name, auther); err != nil { log.Fatal(err) } @@ -32,7 +42,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, admissionCfg := range cfg.Admissions { - if adm := parsing.ParseAdmission(admissionCfg); adm != nil { + if adm := admission_parser.ParseAdmission(admissionCfg); adm != nil { if err := registry.AdmissionRegistry().Register(admissionCfg.Name, adm); err != nil { log.Fatal(err) } @@ -40,7 +50,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, bypassCfg := range cfg.Bypasses { - if bp := parsing.ParseBypass(bypassCfg); bp != nil { + if bp := bypass_parser.ParseBypass(bypassCfg); bp != nil { if err := registry.BypassRegistry().Register(bypassCfg.Name, bp); err != nil { log.Fatal(err) } @@ -48,7 +58,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, resolverCfg := range cfg.Resolvers { - r, err := parsing.ParseResolver(resolverCfg) + r, err := resolver_parser.ParseResolver(resolverCfg) if err != nil { log.Fatal(err) } @@ -60,7 +70,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, hostsCfg := range cfg.Hosts { - if h := parsing.ParseHosts(hostsCfg); h != nil { + if h := hosts_parser.ParseHostMapper(hostsCfg); h != nil { if err := registry.HostsRegistry().Register(hostsCfg.Name, h); err != nil { log.Fatal(err) } @@ -68,7 +78,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, ingressCfg := range cfg.Ingresses { - if h := parsing.ParseIngress(ingressCfg); h != nil { + if h := ingress_parser.ParseIngress(ingressCfg); h != nil { if err := registry.IngressRegistry().Register(ingressCfg.Name, h); err != nil { log.Fatal(err) } @@ -76,7 +86,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, recorderCfg := range cfg.Recorders { - if h := parsing.ParseRecorder(recorderCfg); h != nil { + if h := recorder_parser.ParseRecorder(recorderCfg); h != nil { if err := registry.RecorderRegistry().Register(recorderCfg.Name, h); err != nil { log.Fatal(err) } @@ -84,28 +94,28 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, limiterCfg := range cfg.Limiters { - if h := parsing.ParseTrafficLimiter(limiterCfg); h != nil { + if h := limiter_parser.ParseTrafficLimiter(limiterCfg); h != nil { if err := registry.TrafficLimiterRegistry().Register(limiterCfg.Name, h); err != nil { log.Fatal(err) } } } for _, limiterCfg := range cfg.CLimiters { - if h := parsing.ParseConnLimiter(limiterCfg); h != nil { + if h := limiter_parser.ParseConnLimiter(limiterCfg); h != nil { if err := registry.ConnLimiterRegistry().Register(limiterCfg.Name, h); err != nil { log.Fatal(err) } } } for _, limiterCfg := range cfg.RLimiters { - if h := parsing.ParseRateLimiter(limiterCfg); h != nil { + if h := limiter_parser.ParseRateLimiter(limiterCfg); h != nil { if err := registry.RateLimiterRegistry().Register(limiterCfg.Name, h); err != nil { log.Fatal(err) } } } for _, hopCfg := range cfg.Hops { - hop, err := parsing.ParseHop(hopCfg) + hop, err := hop_parser.ParseHop(hopCfg) if err != nil { log.Fatal(err) } @@ -116,7 +126,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } } for _, chainCfg := range cfg.Chains { - c, err := parsing.ParseChain(chainCfg) + c, err := chain_parser.ParseChain(chainCfg) if err != nil { log.Fatal(err) } @@ -128,7 +138,7 @@ func buildService(cfg *config.Config) (services []service.Service) { } for _, svcCfg := range cfg.Services { - svc, err := parsing.ParseService(svcCfg) + svc, err := service_parser.ParseService(svcCfg) if err != nil { log.Fatal(err) } @@ -186,7 +196,7 @@ func logFromConfig(cfg *config.LogConfig) logger.Logger { } func buildAPIService(cfg *config.APIConfig) (service.Service, error) { - auther := parsing.ParseAutherFromAuth(cfg.Auth) + auther := auth_parser.ParseAutherFromAuth(cfg.Auth) if cfg.Auther != "" { auther = registry.AutherRegistry().Get(cfg.Auther) } diff --git a/go.mod b/go.mod index fba4ab8..0c6ff75 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ go 1.21 replace github.com/templexxx/cpu v0.0.7 => github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a require ( - github.com/go-gost/core v0.0.0-20230920145336-6d0e88635be9 - github.com/go-gost/x v0.0.0-20230921115956-ddc3c9392e1d + github.com/go-gost/core v0.0.0-20230928130125-b0bd45c1b862 + github.com/go-gost/x v0.0.0-20230928130415-ea585fc25d1f github.com/judwhite/go-svc v1.2.1 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) @@ -28,7 +28,7 @@ require ( github.com/gin-gonic/gin v1.9.1 // indirect github.com/go-gost/gosocks4 v0.0.1 // indirect github.com/go-gost/gosocks5 v0.4.0 // indirect - github.com/go-gost/plugin v0.0.0-20230921115816-47001719099f // indirect + github.com/go-gost/plugin v0.0.0-20230928130211-8bc0679b5c15 // indirect github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7 // indirect github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 // indirect github.com/go-playground/locales v0.14.1 // indirect diff --git a/go.sum b/go.sum index 646a607..c3abed2 100644 --- a/go.sum +++ b/go.sum @@ -101,20 +101,20 @@ github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SU github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gost/core v0.0.0-20230920145336-6d0e88635be9 h1:VHka8LcdBJmM7Yv2bjQO5kctF0T9O4E/PVzgkdk0Vdo= -github.com/go-gost/core v0.0.0-20230920145336-6d0e88635be9/go.mod h1:ndkgWVYRLwupVaFFWv8ML1Nr8tD3xhHK245PLpUDg4E= +github.com/go-gost/core v0.0.0-20230928130125-b0bd45c1b862 h1:hbCHyfYE96WZefTBitiL35FCYxHCgEWpS+W/5oCyEXk= +github.com/go-gost/core v0.0.0-20230928130125-b0bd45c1b862/go.mod h1:ndkgWVYRLwupVaFFWv8ML1Nr8tD3xhHK245PLpUDg4E= github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s= github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc= github.com/go-gost/gosocks5 v0.4.0 h1:EIrOEkpJez4gwHrMa33frA+hHXJyevjp47thpMQsJzI= github.com/go-gost/gosocks5 v0.4.0/go.mod h1:1G6I7HP7VFVxveGkoK8mnprnJqSqJjdcASKsdUn4Pp4= -github.com/go-gost/plugin v0.0.0-20230921115816-47001719099f h1:Z6k8xfvQv8PmrC++wV4BlzVv85iuGtHhL6QSzrF6m5Q= -github.com/go-gost/plugin v0.0.0-20230921115816-47001719099f/go.mod h1:mM/RLNsVy2nz5PiOijuqLYR3LhMzyQ9Kh/p0rXybJoo= +github.com/go-gost/plugin v0.0.0-20230928130211-8bc0679b5c15 h1:SKPbGuJUBKhh4qE2G5juT4PNMrzYH86itiY3TGwvYcs= +github.com/go-gost/plugin v0.0.0-20230928130211-8bc0679b5c15/go.mod h1:mM/RLNsVy2nz5PiOijuqLYR3LhMzyQ9Kh/p0rXybJoo= github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7 h1:qAG1OyjvdA5h221CfFSS3J359V3d2E7dJWyP29QoDSI= github.com/go-gost/relay v0.4.1-0.20230916134211-828f314ddfe7/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8= github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 h1:xj8gUZGYO3nb5+6Bjw9+tsFkA9sYynrOvDvvC4uDV2I= github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs= -github.com/go-gost/x v0.0.0-20230921115956-ddc3c9392e1d h1:CcvAiJyJRePwGNkthSX2XMhgK8fQ3XvSCp/Oi0NcwRU= -github.com/go-gost/x v0.0.0-20230921115956-ddc3c9392e1d/go.mod h1:1Z7dufNApXaRdwg4XW6TjPSoXUHZMw/yWoMO6+4vFcE= +github.com/go-gost/x v0.0.0-20230928130415-ea585fc25d1f h1:k5aeEAiw35bJwYHBbKHWlYF6Up5XglN6MDo0UVi7xG4= +github.com/go-gost/x v0.0.0-20230928130415-ea585fc25d1f/go.mod h1:C1trZX4uveaL1igcIWCE88qAVaUBIj0tXGcOPMCre8Q= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=