diff --git a/.github/workflows/buildx.yaml b/.github/workflows/buildx.yaml index a5628e3..0ebf5d5 100644 --- a/.github/workflows/buildx.yaml +++ b/.github/workflows/buildx.yaml @@ -36,7 +36,7 @@ jobs: # Set output parameters. echo ::set-output name=tags::${TAGS} echo ::set-output name=docker_image::${DOCKER_IMAGE} - echo ::set-output name=docker_platforms::linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x + echo ::set-output name=docker_platforms::linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/s390x # https://github.com/crazy-max/ghaction-docker-buildx - name: Set up Docker Buildx diff --git a/cmd/gost/cmd.go b/cmd/gost/cmd.go index cd26325..a70badf 100644 --- a/cmd/gost/cmd.go +++ b/cmd/gost/cmd.go @@ -270,10 +270,10 @@ func buildServiceConfig(url *url.URL) (*config.ServiceConfig, error) { Addr: url.Host, } - if h := registry.GetHandler(handler); h == nil { + if h := registry.HandlerRegistry().Get(handler); h == nil { handler = "auto" } - if ln := registry.GetListener(listener); ln == nil { + if ln := registry.ListenerRegistry().Get(listener); ln == nil { listener = "tcp" if handler == "ssu" { listener = "udp" @@ -378,10 +378,10 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) { Addr: url.Host, } - if c := registry.GetConnector(connector); c == nil { + if c := registry.ConnectorRegistry().Get(connector); c == nil { connector = "http" } - if d := registry.GetDialer(dialer); d == nil { + if d := registry.DialerRegistry().Get(dialer); d == nil { dialer = "tcp" if connector == "ssu" { dialer = "udp" diff --git a/cmd/gost/config.go b/cmd/gost/config.go index d8739c3..1a77ef0 100644 --- a/cmd/gost/config.go +++ b/cmd/gost/config.go @@ -20,7 +20,7 @@ func buildService(cfg *config.Config) (services []service.Service) { for _, autherCfg := range cfg.Authers { if auther := parsing.ParseAuther(autherCfg); auther != nil { - if err := registry.Auther().Register(autherCfg.Name, auther); err != nil { + if err := registry.AutherRegistry().Register(autherCfg.Name, auther); err != nil { log.Fatal(err) } } @@ -28,7 +28,7 @@ func buildService(cfg *config.Config) (services []service.Service) { for _, admissionCfg := range cfg.Admissions { if adm := parsing.ParseAdmission(admissionCfg); adm != nil { - if err := registry.Admission().Register(admissionCfg.Name, adm); err != nil { + if err := registry.AdmissionRegistry().Register(admissionCfg.Name, adm); err != nil { log.Fatal(err) } } @@ -36,7 +36,7 @@ func buildService(cfg *config.Config) (services []service.Service) { for _, bypassCfg := range cfg.Bypasses { if bp := parsing.ParseBypass(bypassCfg); bp != nil { - if err := registry.Bypass().Register(bypassCfg.Name, bp); err != nil { + if err := registry.BypassRegistry().Register(bypassCfg.Name, bp); err != nil { log.Fatal(err) } } @@ -48,7 +48,7 @@ func buildService(cfg *config.Config) (services []service.Service) { log.Fatal(err) } if r != nil { - if err := registry.Resolver().Register(resolverCfg.Name, r); err != nil { + if err := registry.ResolverRegistry().Register(resolverCfg.Name, r); err != nil { log.Fatal(err) } } @@ -56,7 +56,7 @@ func buildService(cfg *config.Config) (services []service.Service) { for _, hostsCfg := range cfg.Hosts { if h := parsing.ParseHosts(hostsCfg); h != nil { - if err := registry.Hosts().Register(hostsCfg.Name, h); err != nil { + if err := registry.HostsRegistry().Register(hostsCfg.Name, h); err != nil { log.Fatal(err) } } @@ -68,7 +68,7 @@ func buildService(cfg *config.Config) (services []service.Service) { log.Fatal(err) } if c != nil { - if err := registry.Chain().Register(chainCfg.Name, c); err != nil { + if err := registry.ChainRegistry().Register(chainCfg.Name, c); err != nil { log.Fatal(err) } } @@ -80,7 +80,7 @@ func buildService(cfg *config.Config) (services []service.Service) { log.Fatal(err) } if svc != nil { - if err := registry.Service().Register(svcCfg.Name, svc); err != nil { + if err := registry.ServiceRegistry().Register(svcCfg.Name, svc); err != nil { log.Fatal(err) } } @@ -123,7 +123,7 @@ func logFromConfig(cfg *config.LogConfig) logger.Logger { func buildAPIService(cfg *config.APIConfig) (service.Service, error) { auther := parsing.ParseAutherFromAuth(cfg.Auth) if cfg.Auther != "" { - auther = registry.Auther().Get(cfg.Auther) + auther = registry.AutherRegistry().Get(cfg.Auther) } return api.NewService( cfg.Addr, diff --git a/pkg/api/config_admission.go b/pkg/api/config_admission.go index 48a3ab5..06431e0 100644 --- a/pkg/api/config_admission.go +++ b/pkg/api/config_admission.go @@ -42,7 +42,7 @@ func createAdmission(ctx *gin.Context) { v := parsing.ParseAdmission(&req.Data) - if err := registry.Admission().Register(req.Data.Name, v); err != nil { + if err := registry.AdmissionRegistry().Register(req.Data.Name, v); err != nil { writeError(ctx, ErrDup) return } @@ -86,7 +86,7 @@ func updateAdmission(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - if !registry.Admission().IsRegistered(req.Admission) { + if !registry.AdmissionRegistry().IsRegistered(req.Admission) { writeError(ctx, ErrNotFound) return } @@ -95,9 +95,9 @@ func updateAdmission(ctx *gin.Context) { v := parsing.ParseAdmission(&req.Data) - registry.Admission().Unregister(req.Admission) + registry.AdmissionRegistry().Unregister(req.Admission) - if err := registry.Admission().Register(req.Admission, v); err != nil { + if err := registry.AdmissionRegistry().Register(req.Admission, v); err != nil { writeError(ctx, ErrDup) return } @@ -143,11 +143,11 @@ func deleteAdmission(ctx *gin.Context) { var req deleteAdmissionRequest ctx.ShouldBindUri(&req) - if !registry.Admission().IsRegistered(req.Admission) { + if !registry.AdmissionRegistry().IsRegistered(req.Admission) { writeError(ctx, ErrNotFound) return } - registry.Admission().Unregister(req.Admission) + registry.AdmissionRegistry().Unregister(req.Admission) cfg := config.Global() admissiones := cfg.Admissions diff --git a/pkg/api/config_auther.go b/pkg/api/config_auther.go index 840a854..1ea5981 100644 --- a/pkg/api/config_auther.go +++ b/pkg/api/config_auther.go @@ -41,7 +41,7 @@ func createAuther(ctx *gin.Context) { } v := parsing.ParseAuther(&req.Data) - if err := registry.Auther().Register(req.Data.Name, v); err != nil { + if err := registry.AutherRegistry().Register(req.Data.Name, v); err != nil { writeError(ctx, ErrDup) return } @@ -85,7 +85,7 @@ func updateAuther(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - if !registry.Auther().IsRegistered(req.Auther) { + if !registry.AutherRegistry().IsRegistered(req.Auther) { writeError(ctx, ErrNotFound) return } @@ -93,9 +93,9 @@ func updateAuther(ctx *gin.Context) { req.Data.Name = req.Auther v := parsing.ParseAuther(&req.Data) - registry.Auther().Unregister(req.Auther) + registry.AutherRegistry().Unregister(req.Auther) - if err := registry.Auther().Register(req.Auther, v); err != nil { + if err := registry.AutherRegistry().Register(req.Auther, v); err != nil { writeError(ctx, ErrDup) return } @@ -141,11 +141,11 @@ func deleteAuther(ctx *gin.Context) { var req deleteAutherRequest ctx.ShouldBindUri(&req) - if !registry.Auther().IsRegistered(req.Auther) { + if !registry.AutherRegistry().IsRegistered(req.Auther) { writeError(ctx, ErrNotFound) return } - registry.Auther().Unregister(req.Auther) + registry.AutherRegistry().Unregister(req.Auther) cfg := config.Global() authers := cfg.Authers diff --git a/pkg/api/config_bypass.go b/pkg/api/config_bypass.go index 321ead0..1a8aa1f 100644 --- a/pkg/api/config_bypass.go +++ b/pkg/api/config_bypass.go @@ -42,7 +42,7 @@ func createBypass(ctx *gin.Context) { v := parsing.ParseBypass(&req.Data) - if err := registry.Bypass().Register(req.Data.Name, v); err != nil { + if err := registry.BypassRegistry().Register(req.Data.Name, v); err != nil { writeError(ctx, ErrDup) return } @@ -86,7 +86,7 @@ func updateBypass(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - if !registry.Bypass().IsRegistered(req.Bypass) { + if !registry.BypassRegistry().IsRegistered(req.Bypass) { writeError(ctx, ErrNotFound) return } @@ -95,9 +95,9 @@ func updateBypass(ctx *gin.Context) { v := parsing.ParseBypass(&req.Data) - registry.Bypass().Unregister(req.Bypass) + registry.BypassRegistry().Unregister(req.Bypass) - if err := registry.Bypass().Register(req.Bypass, v); err != nil { + if err := registry.BypassRegistry().Register(req.Bypass, v); err != nil { writeError(ctx, ErrDup) return } @@ -143,11 +143,11 @@ func deleteBypass(ctx *gin.Context) { var req deleteBypassRequest ctx.ShouldBindUri(&req) - if !registry.Bypass().IsRegistered(req.Bypass) { + if !registry.BypassRegistry().IsRegistered(req.Bypass) { writeError(ctx, ErrNotFound) return } - registry.Bypass().Unregister(req.Bypass) + registry.BypassRegistry().Unregister(req.Bypass) cfg := config.Global() bypasses := cfg.Bypasses diff --git a/pkg/api/config_chain.go b/pkg/api/config_chain.go index 7d6393a..5ac08a5 100644 --- a/pkg/api/config_chain.go +++ b/pkg/api/config_chain.go @@ -46,7 +46,7 @@ func createChain(ctx *gin.Context) { return } - if err := registry.Chain().Register(req.Data.Name, v); err != nil { + if err := registry.ChainRegistry().Register(req.Data.Name, v); err != nil { writeError(ctx, ErrDup) return } @@ -91,7 +91,7 @@ func updateChain(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - if !registry.Chain().IsRegistered(req.Chain) { + if !registry.ChainRegistry().IsRegistered(req.Chain) { writeError(ctx, ErrNotFound) return } @@ -104,9 +104,9 @@ func updateChain(ctx *gin.Context) { return } - registry.Chain().Unregister(req.Chain) + registry.ChainRegistry().Unregister(req.Chain) - if err := registry.Chain().Register(req.Chain, v); err != nil { + if err := registry.ChainRegistry().Register(req.Chain, v); err != nil { writeError(ctx, ErrDup) return } @@ -152,11 +152,11 @@ func deleteChain(ctx *gin.Context) { var req deleteChainRequest ctx.ShouldBindUri(&req) - if !registry.Chain().IsRegistered(req.Chain) { + if !registry.ChainRegistry().IsRegistered(req.Chain) { writeError(ctx, ErrNotFound) return } - registry.Chain().Unregister(req.Chain) + registry.ChainRegistry().Unregister(req.Chain) cfg := config.Global() chains := cfg.Chains diff --git a/pkg/api/config_hosts.go b/pkg/api/config_hosts.go index 6d75021..dd7971b 100644 --- a/pkg/api/config_hosts.go +++ b/pkg/api/config_hosts.go @@ -42,7 +42,7 @@ func createHosts(ctx *gin.Context) { v := parsing.ParseHosts(&req.Data) - if err := registry.Hosts().Register(req.Data.Name, v); err != nil { + if err := registry.HostsRegistry().Register(req.Data.Name, v); err != nil { writeError(ctx, ErrDup) return } @@ -86,7 +86,7 @@ func updateHosts(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - if !registry.Hosts().IsRegistered(req.Hosts) { + if !registry.HostsRegistry().IsRegistered(req.Hosts) { writeError(ctx, ErrNotFound) return } @@ -95,9 +95,9 @@ func updateHosts(ctx *gin.Context) { v := parsing.ParseHosts(&req.Data) - registry.Hosts().Unregister(req.Hosts) + registry.HostsRegistry().Unregister(req.Hosts) - if err := registry.Hosts().Register(req.Hosts, v); err != nil { + if err := registry.HostsRegistry().Register(req.Hosts, v); err != nil { writeError(ctx, ErrDup) return } @@ -143,11 +143,11 @@ func deleteHosts(ctx *gin.Context) { var req deleteHostsRequest ctx.ShouldBindUri(&req) - if !registry.Hosts().IsRegistered(req.Hosts) { + if !registry.HostsRegistry().IsRegistered(req.Hosts) { writeError(ctx, ErrNotFound) return } - registry.Hosts().Unregister(req.Hosts) + registry.HostsRegistry().Unregister(req.Hosts) cfg := config.Global() hosts := cfg.Hosts diff --git a/pkg/api/config_resolver.go b/pkg/api/config_resolver.go index e8a82da..22e788f 100644 --- a/pkg/api/config_resolver.go +++ b/pkg/api/config_resolver.go @@ -46,7 +46,7 @@ func createResolver(ctx *gin.Context) { return } - if err := registry.Resolver().Register(req.Data.Name, v); err != nil { + if err := registry.ResolverRegistry().Register(req.Data.Name, v); err != nil { writeError(ctx, ErrDup) return } @@ -90,7 +90,7 @@ func updateResolver(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - if !registry.Resolver().IsRegistered(req.Resolver) { + if !registry.ResolverRegistry().IsRegistered(req.Resolver) { writeError(ctx, ErrNotFound) return } @@ -103,9 +103,9 @@ func updateResolver(ctx *gin.Context) { return } - registry.Resolver().Unregister(req.Resolver) + registry.ResolverRegistry().Unregister(req.Resolver) - if err := registry.Resolver().Register(req.Resolver, v); err != nil { + if err := registry.ResolverRegistry().Register(req.Resolver, v); err != nil { writeError(ctx, ErrDup) return } @@ -151,11 +151,11 @@ func deleteResolver(ctx *gin.Context) { var req deleteResolverRequest ctx.ShouldBindUri(&req) - if !registry.Resolver().IsRegistered(req.Resolver) { + if !registry.ResolverRegistry().IsRegistered(req.Resolver) { writeError(ctx, ErrNotFound) return } - registry.Resolver().Unregister(req.Resolver) + registry.ResolverRegistry().Unregister(req.Resolver) cfg := config.Global() resolvers := cfg.Resolvers diff --git a/pkg/api/config_service.go b/pkg/api/config_service.go index d2a9d9c..eab0504 100644 --- a/pkg/api/config_service.go +++ b/pkg/api/config_service.go @@ -40,7 +40,7 @@ func createService(ctx *gin.Context) { return } - if registry.Service().IsRegistered(req.Data.Name) { + if registry.ServiceRegistry().IsRegistered(req.Data.Name) { writeError(ctx, ErrDup) return } @@ -51,7 +51,7 @@ func createService(ctx *gin.Context) { return } - if err := registry.Service().Register(req.Data.Name, svc); err != nil { + if err := registry.ServiceRegistry().Register(req.Data.Name, svc); err != nil { svc.Close() writeError(ctx, ErrDup) return @@ -98,7 +98,7 @@ func updateService(ctx *gin.Context) { ctx.ShouldBindUri(&req) ctx.ShouldBindJSON(&req.Data) - old := registry.Service().Get(req.Service) + old := registry.ServiceRegistry().Get(req.Service) if old == nil { writeError(ctx, ErrNotFound) return @@ -113,9 +113,9 @@ func updateService(ctx *gin.Context) { return } - registry.Service().Unregister(req.Service) + registry.ServiceRegistry().Unregister(req.Service) - if err := registry.Service().Register(req.Service, svc); err != nil { + if err := registry.ServiceRegistry().Register(req.Service, svc); err != nil { svc.Close() writeError(ctx, ErrDup) return @@ -164,13 +164,13 @@ func deleteService(ctx *gin.Context) { var req deleteServiceRequest ctx.ShouldBindUri(&req) - svc := registry.Service().Get(req.Service) + svc := registry.ServiceRegistry().Get(req.Service) if svc == nil { writeError(ctx, ErrNotFound) return } - registry.Service().Unregister(req.Service) + registry.ServiceRegistry().Unregister(req.Service) svc.Close() cfg := config.Global() diff --git a/pkg/api/middleware.go b/pkg/api/middleware.go index d9c71f6..9303379 100644 --- a/pkg/api/middleware.go +++ b/pkg/api/middleware.go @@ -17,7 +17,7 @@ func mwLogger() gin.HandlerFunc { ctx.Next() duration := time.Since(startTime) - logger.Default().WithFields(map[string]interface{}{ + logger.Default().WithFields(map[string]any{ "kind": "api", "method": ctx.Request.Method, "uri": ctx.Request.RequestURI, diff --git a/pkg/chain/route.go b/pkg/chain/route.go index 16beafe..a3a5223 100644 --- a/pkg/chain/route.go +++ b/pkg/chain/route.go @@ -181,7 +181,7 @@ func (r *Route) bindLocal(ctx context.Context, network, address string, opts ... if err != nil { return nil, err } - logger := logger.Default().WithFields(map[string]interface{}{ + logger := logger.Default().WithFields(map[string]any{ "network": network, "address": address, }) diff --git a/pkg/common/bufpool/pool.go b/pkg/common/bufpool/pool.go index d9b6fcc..5af2c87 100644 --- a/pkg/common/bufpool/pool.go +++ b/pkg/common/bufpool/pool.go @@ -10,7 +10,7 @@ var ( { size: 128, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 128) return &b }, @@ -19,7 +19,7 @@ var ( { size: 512, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 512) return &b }, @@ -28,7 +28,7 @@ var ( { size: 1024, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 1024) return &b }, @@ -37,7 +37,7 @@ var ( { size: 4096, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 4096) return &b }, @@ -46,7 +46,7 @@ var ( { size: 8192, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 8192) return &b }, @@ -55,7 +55,7 @@ var ( { size: 16 * 1024, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 16*1024) return &b }, @@ -64,7 +64,7 @@ var ( { size: 32 * 1024, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 32*1024) return &b }, @@ -73,7 +73,7 @@ var ( { size: 64 * 1024, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 64*1024) return &b }, @@ -82,7 +82,7 @@ var ( { size: 65 * 1024, pool: sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 65*1024) return &b }, diff --git a/pkg/common/util/grpc/proto/gost.pb.go b/pkg/common/util/grpc/proto/gost.pb.go index 90847bc..d3167d3 100644 --- a/pkg/common/util/grpc/proto/gost.pb.go +++ b/pkg/common/util/grpc/proto/gost.pb.go @@ -95,7 +95,7 @@ func file_gost_proto_rawDescGZIP() []byte { } var file_gost_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_gost_proto_goTypes = []interface{}{ +var file_gost_proto_goTypes = []any{ (*Chunk)(nil), // 0: Chunk } var file_gost_proto_depIdxs = []int32{ @@ -114,7 +114,7 @@ func file_gost_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_gost_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_gost_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Chunk); i { case 0: return &v.state diff --git a/pkg/common/util/grpc/proto/gost_grpc.pb.go b/pkg/common/util/grpc/proto/gost_grpc.pb.go index 2cf63d2..0730e5d 100644 --- a/pkg/common/util/grpc/proto/gost_grpc.pb.go +++ b/pkg/common/util/grpc/proto/gost_grpc.pb.go @@ -88,7 +88,7 @@ func RegisterGostTunelServer(s grpc.ServiceRegistrar, srv GostTunelServer) { s.RegisterService(&GostTunel_ServiceDesc, srv) } -func _GostTunel_Tunnel_Handler(srv interface{}, stream grpc.ServerStream) error { +func _GostTunel_Tunnel_Handler(srv any, stream grpc.ServerStream) error { return srv.(GostTunelServer).Tunnel(&gostTunelTunnelServer{stream}) } diff --git a/pkg/common/util/udp/pool.go b/pkg/common/util/udp/pool.go index 513f70e..ea67acd 100644 --- a/pkg/common/util/udp/pool.go +++ b/pkg/common/util/udp/pool.go @@ -28,7 +28,7 @@ func (p *ConnPool) WithLogger(logger logger.Logger) *ConnPool { return p } -func (p *ConnPool) Get(key interface{}) (c *Conn, ok bool) { +func (p *ConnPool) Get(key any) (c *Conn, ok bool) { v, ok := p.m.Load(key) if ok { c, ok = v.(*Conn) @@ -36,11 +36,11 @@ func (p *ConnPool) Get(key interface{}) (c *Conn, ok bool) { return } -func (p *ConnPool) Set(key interface{}, c *Conn) { +func (p *ConnPool) Set(key any, c *Conn) { p.m.Store(key, c) } -func (p *ConnPool) Delete(key interface{}) { +func (p *ConnPool) Delete(key any) { p.m.Delete(key) } @@ -53,7 +53,7 @@ func (p *ConnPool) Close() { close(p.closed) - p.m.Range(func(k, v interface{}) bool { + p.m.Range(func(k, v any) bool { if c, ok := v.(*Conn); ok && c != nil { c.Close() } @@ -70,7 +70,7 @@ func (p *ConnPool) idleCheck() { case <-ticker.C: size := 0 idles := 0 - p.m.Range(func(key, value interface{}) bool { + p.m.Range(func(key, value any) bool { c, ok := value.(*Conn) if !ok || c == nil { p.Delete(key) diff --git a/pkg/config/config.go b/pkg/config/config.go index bee72a8..6d77b2b 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -140,22 +140,22 @@ type HostsConfig struct { } type ListenerConfig struct { - Type string `json:"type"` - Chain string `yaml:",omitempty" json:"chain,omitempty"` - Auther string `yaml:",omitempty" json:"auther,omitempty"` - Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` - TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` - Metadata map[string]interface{} `yaml:",omitempty" json:"metadata,omitempty"` + Type string `json:"type"` + Chain string `yaml:",omitempty" json:"chain,omitempty"` + Auther string `yaml:",omitempty" json:"auther,omitempty"` + Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` + TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` + Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` } type HandlerConfig struct { - Type string `json:"type"` - Retries int `yaml:",omitempty" json:"retries,omitempty"` - Chain string `yaml:",omitempty" json:"chain,omitempty"` - Auther string `yaml:",omitempty" json:"auther,omitempty"` - Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` - TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` - Metadata map[string]interface{} `yaml:",omitempty" json:"metadata,omitempty"` + Type string `json:"type"` + Retries int `yaml:",omitempty" json:"retries,omitempty"` + Chain string `yaml:",omitempty" json:"chain,omitempty"` + Auther string `yaml:",omitempty" json:"auther,omitempty"` + Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` + TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` + Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` } type ForwarderConfig struct { @@ -164,17 +164,17 @@ type ForwarderConfig struct { } type DialerConfig struct { - Type string `json:"type"` - Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` - TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` - Metadata map[string]interface{} `yaml:",omitempty" json:"metadata,omitempty"` + Type string `json:"type"` + Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` + TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` + Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` } type ConnectorConfig struct { - Type string `json:"type"` - Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` - TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` - Metadata map[string]interface{} `yaml:",omitempty" json:"metadata,omitempty"` + Type string `json:"type"` + Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` + TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` + Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` } type ServiceConfig struct { diff --git a/pkg/config/parsing/chain.go b/pkg/config/parsing/chain.go index e73b3b9..f99fd58 100644 --- a/pkg/config/parsing/chain.go +++ b/pkg/config/parsing/chain.go @@ -16,7 +16,7 @@ func ParseChain(cfg *config.ChainConfig) (chain.Chainer, error) { return nil, nil } - chainLogger := logger.Default().WithFields(map[string]interface{}{ + chainLogger := logger.Default().WithFields(map[string]any{ "kind": "chain", "chain": cfg.Name, }) @@ -26,14 +26,14 @@ func ParseChain(cfg *config.ChainConfig) (chain.Chainer, error) { for _, hop := range cfg.Hops { group := &chain.NodeGroup{} for _, v := range hop.Nodes { - nodeLogger := chainLogger.WithFields(map[string]interface{}{ + nodeLogger := chainLogger.WithFields(map[string]any{ "kind": "node", "connector": v.Connector.Type, "dialer": v.Dialer.Type, "hop": hop.Name, "node": v.Name, }) - connectorLogger := nodeLogger.WithFields(map[string]interface{}{ + connectorLogger := nodeLogger.WithFields(map[string]any{ "kind": "connector", }) @@ -49,21 +49,21 @@ func ParseChain(cfg *config.ChainConfig) (chain.Chainer, error) { return nil, err } - cr := registry.GetConnector(v.Connector.Type)( + cr := registry.ConnectorRegistry().Get(v.Connector.Type)( connector.AuthOption(parseAuth(v.Connector.Auth)), connector.TLSConfigOption(tlsConfig), connector.LoggerOption(connectorLogger), ) if v.Connector.Metadata == nil { - v.Connector.Metadata = make(map[string]interface{}) + v.Connector.Metadata = make(map[string]any) } if err := cr.Init(metadata.MapMetadata(v.Connector.Metadata)); err != nil { connectorLogger.Error("init: ", err) return nil, err } - dialerLogger := nodeLogger.WithFields(map[string]interface{}{ + dialerLogger := nodeLogger.WithFields(map[string]any{ "kind": "dialer", }) @@ -79,14 +79,14 @@ func ParseChain(cfg *config.ChainConfig) (chain.Chainer, error) { return nil, err } - d := registry.GetDialer(v.Dialer.Type)( + d := registry.DialerRegistry().Get(v.Dialer.Type)( dialer.AuthOption(parseAuth(v.Dialer.Auth)), dialer.TLSConfigOption(tlsConfig), dialer.LoggerOption(dialerLogger), ) if v.Dialer.Metadata == nil { - v.Dialer.Metadata = make(map[string]interface{}) + v.Dialer.Metadata = make(map[string]any) } if err := d.Init(metadata.MapMetadata(v.Dialer.Metadata)); err != nil { dialerLogger.Error("init: ", err) @@ -112,9 +112,9 @@ func ParseChain(cfg *config.ChainConfig) (chain.Chainer, error) { Name: v.Name, Addr: v.Addr, Transport: tr, - Bypass: registry.Bypass().Get(v.Bypass), - Resolver: registry.Resolver().Get(v.Resolver), - Hosts: registry.Hosts().Get(v.Hosts), + Bypass: registry.BypassRegistry().Get(v.Bypass), + Resolver: registry.ResolverRegistry().Get(v.Resolver), + Hosts: registry.HostsRegistry().Get(v.Hosts), Marker: &chain.FailMarker{}, } group.AddNode(node) diff --git a/pkg/config/parsing/parse.go b/pkg/config/parsing/parse.go index 1626701..cbdbcb4 100644 --- a/pkg/config/parsing/parse.go +++ b/pkg/config/parsing/parse.go @@ -87,7 +87,7 @@ func ParseAdmission(cfg *config.AdmissionConfig) admission.Admission { return admission.NewAdmissionPatterns( cfg.Reverse, cfg.Matchers, - admission.LoggerOption(logger.Default().WithFields(map[string]interface{}{ + admission.LoggerOption(logger.Default().WithFields(map[string]any{ "kind": "admission", "admission": cfg.Name, })), @@ -101,7 +101,7 @@ func ParseBypass(cfg *config.BypassConfig) bypass.Bypass { return bypass.NewBypassPatterns( cfg.Reverse, cfg.Matchers, - bypass.LoggerOption(logger.Default().WithFields(map[string]interface{}{ + bypass.LoggerOption(logger.Default().WithFields(map[string]any{ "kind": "bypass", "bypass": cfg.Name, })), @@ -116,7 +116,7 @@ func ParseResolver(cfg *config.ResolverConfig) (resolver.Resolver, error) { for _, server := range cfg.Nameservers { nameservers = append(nameservers, resolver_impl.NameServer{ Addr: server.Addr, - Chain: registry.Chain().Get(server.Chain), + Chain: registry.ChainRegistry().Get(server.Chain), TTL: server.TTL, Timeout: server.Timeout, ClientIP: net.ParseIP(server.ClientIP), @@ -128,7 +128,7 @@ func ParseResolver(cfg *config.ResolverConfig) (resolver.Resolver, error) { return resolver_impl.NewResolver( nameservers, resolver_impl.LoggerResolverOption( - logger.Default().WithFields(map[string]interface{}{ + logger.Default().WithFields(map[string]any{ "kind": "resolver", "resolver": cfg.Name, }), @@ -141,7 +141,7 @@ func ParseHosts(cfg *config.HostsConfig) hostspkg.HostMapper { return nil } hosts := hostspkg.NewHosts() - hosts.Logger = logger.Default().WithFields(map[string]interface{}{ + hosts.Logger = logger.Default().WithFields(map[string]any{ "kind": "hosts", "hosts": cfg.Name, }) diff --git a/pkg/config/parsing/service.go b/pkg/config/parsing/service.go index bac1d29..feb1f43 100644 --- a/pkg/config/parsing/service.go +++ b/pkg/config/parsing/service.go @@ -25,14 +25,14 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) { Type: "auto", } } - serviceLogger := logger.Default().WithFields(map[string]interface{}{ + serviceLogger := logger.Default().WithFields(map[string]any{ "kind": "service", "service": cfg.Name, "listener": cfg.Listener.Type, "handler": cfg.Handler.Type, }) - listenerLogger := serviceLogger.WithFields(map[string]interface{}{ + listenerLogger := serviceLogger.WithFields(map[string]any{ "kind": "listener", }) @@ -49,12 +49,12 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) { auther := ParseAutherFromAuth(cfg.Listener.Auth) if cfg.Listener.Auther != "" { - auther = registry.Auther().Get(cfg.Listener.Auther) + auther = registry.AutherRegistry().Get(cfg.Listener.Auther) } - ln := registry.GetListener(cfg.Listener.Type)( + ln := registry.ListenerRegistry().Get(cfg.Listener.Type)( listener.AddrOption(cfg.Addr), - listener.ChainOption(registry.Chain().Get(cfg.Listener.Chain)), + listener.ChainOption(registry.ChainRegistry().Get(cfg.Listener.Chain)), listener.AutherOption(auther), listener.AuthOption(parseAuth(cfg.Listener.Auth)), listener.TLSConfigOption(tlsConfig), @@ -62,14 +62,14 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) { ) if cfg.Listener.Metadata == nil { - cfg.Listener.Metadata = make(map[string]interface{}) + cfg.Listener.Metadata = make(map[string]any) } if err := ln.Init(metadata.MapMetadata(cfg.Listener.Metadata)); err != nil { listenerLogger.Error("init: ", err) return nil, err } - handlerLogger := serviceLogger.WithFields(map[string]interface{}{ + handlerLogger := serviceLogger.WithFields(map[string]any{ "kind": "handler", }) @@ -86,16 +86,16 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) { auther = ParseAutherFromAuth(cfg.Handler.Auth) if cfg.Handler.Auther != "" { - auther = registry.Auther().Get(cfg.Handler.Auther) + auther = registry.AutherRegistry().Get(cfg.Handler.Auther) } - h := registry.GetHandler(cfg.Handler.Type)( + h := registry.HandlerRegistry().Get(cfg.Handler.Type)( handler.AutherOption(auther), handler.AuthOption(parseAuth(cfg.Handler.Auth)), handler.RetriesOption(cfg.Handler.Retries), - handler.ChainOption(registry.Chain().Get(cfg.Handler.Chain)), - handler.BypassOption(registry.Bypass().Get(cfg.Bypass)), - handler.ResolverOption(registry.Resolver().Get(cfg.Resolver)), - handler.HostsOption(registry.Hosts().Get(cfg.Hosts)), + handler.ChainOption(registry.ChainRegistry().Get(cfg.Handler.Chain)), + handler.BypassOption(registry.BypassRegistry().Get(cfg.Bypass)), + handler.ResolverOption(registry.ResolverRegistry().Get(cfg.Resolver)), + handler.HostsOption(registry.HostsRegistry().Get(cfg.Hosts)), handler.TLSConfigOption(tlsConfig), handler.LoggerOption(handlerLogger), ) @@ -105,7 +105,7 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) { } if cfg.Handler.Metadata == nil { - cfg.Handler.Metadata = make(map[string]interface{}) + cfg.Handler.Metadata = make(map[string]any) } if err := h.Init(metadata.MapMetadata(cfg.Handler.Metadata)); err != nil { handlerLogger.Error("init: ", err) @@ -113,7 +113,7 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) { } s := service.NewService(ln, h, - service.AdmissionOption(registry.Admission().Get(cfg.Admission)), + service.AdmissionOption(registry.AdmissionRegistry().Get(cfg.Admission)), service.LoggerOption(serviceLogger), ) diff --git a/pkg/connector/forward/connector.go b/pkg/connector/forward/connector.go index 189ec0e..8a149db 100644 --- a/pkg/connector/forward/connector.go +++ b/pkg/connector/forward/connector.go @@ -10,7 +10,7 @@ import ( ) func init() { - registry.RegiserConnector("forward", NewConnector) + registry.ConnectorRegistry().Register("forward", NewConnector) } type forwardConnector struct { @@ -33,7 +33,7 @@ func (c *forwardConnector) Init(md md.Metadata) (err error) { } func (c *forwardConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/http/connector.go b/pkg/connector/http/connector.go index 8ea1102..d63e029 100644 --- a/pkg/connector/http/connector.go +++ b/pkg/connector/http/connector.go @@ -19,7 +19,7 @@ import ( ) func init() { - registry.RegiserConnector("http", NewConnector) + registry.ConnectorRegistry().Register("http", NewConnector) } type httpConnector struct { @@ -43,7 +43,7 @@ func (c *httpConnector) Init(md md.Metadata) (err error) { } func (c *httpConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "local": conn.LocalAddr().String(), "remote": conn.RemoteAddr().String(), "network": network, diff --git a/pkg/connector/http2/connector.go b/pkg/connector/http2/connector.go index 7fb1cc4..47ab698 100644 --- a/pkg/connector/http2/connector.go +++ b/pkg/connector/http2/connector.go @@ -20,7 +20,7 @@ import ( ) func init() { - registry.RegiserConnector("http2", NewConnector) + registry.ConnectorRegistry().Register("http2", NewConnector) } type http2Connector struct { @@ -44,7 +44,7 @@ func (c *http2Connector) Init(md md.Metadata) (err error) { } func (c *http2Connector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "local": conn.LocalAddr().String(), "remote": conn.RemoteAddr().String(), "network": network, diff --git a/pkg/connector/relay/bind.go b/pkg/connector/relay/bind.go index c4a0fb9..e55297d 100644 --- a/pkg/connector/relay/bind.go +++ b/pkg/connector/relay/bind.go @@ -16,7 +16,7 @@ import ( // Bind implements connector.Binder. func (c *relayConnector) Bind(ctx context.Context, conn net.Conn, network, address string, opts ...connector.BindOption) (net.Listener, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "network": network, "address": address, }) diff --git a/pkg/connector/relay/connector.go b/pkg/connector/relay/connector.go index 4ff4949..be1ae96 100644 --- a/pkg/connector/relay/connector.go +++ b/pkg/connector/relay/connector.go @@ -14,7 +14,7 @@ import ( ) func init() { - registry.RegiserConnector("relay", NewConnector) + registry.ConnectorRegistry().Register("relay", NewConnector) } type relayConnector struct { @@ -38,7 +38,7 @@ func (c *relayConnector) Init(md md.Metadata) (err error) { } func (c *relayConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/sni/connector.go b/pkg/connector/sni/connector.go index 4cd0230..e86550d 100644 --- a/pkg/connector/sni/connector.go +++ b/pkg/connector/sni/connector.go @@ -10,7 +10,7 @@ import ( ) func init() { - registry.RegiserConnector("sni", NewConnector) + registry.ConnectorRegistry().Register("sni", NewConnector) } type sniConnector struct { @@ -34,7 +34,7 @@ func (c *sniConnector) Init(md md.Metadata) (err error) { } func (c *sniConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/socks/v4/connector.go b/pkg/connector/socks/v4/connector.go index dc633b0..ff1d55d 100644 --- a/pkg/connector/socks/v4/connector.go +++ b/pkg/connector/socks/v4/connector.go @@ -15,8 +15,8 @@ import ( ) func init() { - registry.RegiserConnector("socks4", NewConnector) - registry.RegiserConnector("socks4a", NewConnector) + registry.ConnectorRegistry().Register("socks4", NewConnector) + registry.ConnectorRegistry().Register("socks4a", NewConnector) } type socks4Connector struct { @@ -40,7 +40,7 @@ func (c *socks4Connector) Init(md md.Metadata) (err error) { } func (c *socks4Connector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/socks/v5/bind.go b/pkg/connector/socks/v5/bind.go index 0a9a9db..f99c8b3 100644 --- a/pkg/connector/socks/v5/bind.go +++ b/pkg/connector/socks/v5/bind.go @@ -15,7 +15,7 @@ import ( // Bind implements connector.Binder. func (c *socks5Connector) Bind(ctx context.Context, conn net.Conn, network, address string, opts ...connector.BindOption) (net.Listener, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/socks/v5/connector.go b/pkg/connector/socks/v5/connector.go index 64796f0..bdde586 100644 --- a/pkg/connector/socks/v5/connector.go +++ b/pkg/connector/socks/v5/connector.go @@ -17,8 +17,8 @@ import ( ) func init() { - registry.RegiserConnector("socks5", NewConnector) - registry.RegiserConnector("socks", NewConnector) + registry.ConnectorRegistry().Register("socks5", NewConnector) + registry.ConnectorRegistry().Register("socks", NewConnector) } type socks5Connector struct { @@ -67,7 +67,7 @@ func (c *socks5Connector) Init(md md.Metadata) (err error) { // Handshake implements connector.Handshaker. func (c *socks5Connector) Handshake(ctx context.Context, conn net.Conn) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) @@ -87,7 +87,7 @@ func (c *socks5Connector) Handshake(ctx context.Context, conn net.Conn) (net.Con } func (c *socks5Connector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/ss/connector.go b/pkg/connector/ss/connector.go index b0124bf..4e30527 100644 --- a/pkg/connector/ss/connector.go +++ b/pkg/connector/ss/connector.go @@ -16,7 +16,7 @@ import ( ) func init() { - registry.RegiserConnector("ss", NewConnector) + registry.ConnectorRegistry().Register("ss", NewConnector) } type ssConnector struct { @@ -51,7 +51,7 @@ func (c *ssConnector) Init(md md.Metadata) (err error) { } func (c *ssConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/ss/udp/connector.go b/pkg/connector/ss/udp/connector.go index 7cd9b87..26ee5b6 100644 --- a/pkg/connector/ss/udp/connector.go +++ b/pkg/connector/ss/udp/connector.go @@ -15,7 +15,7 @@ import ( ) func init() { - registry.RegiserConnector("ssu", NewConnector) + registry.ConnectorRegistry().Register("ssu", NewConnector) } type ssuConnector struct { @@ -50,7 +50,7 @@ func (c *ssuConnector) Init(md md.Metadata) (err error) { } func (c *ssuConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/connector/sshd/connector.go b/pkg/connector/sshd/connector.go index 92c6eab..4c85340 100644 --- a/pkg/connector/sshd/connector.go +++ b/pkg/connector/sshd/connector.go @@ -12,7 +12,7 @@ import ( ) func init() { - registry.RegiserConnector("sshd", NewConnector) + registry.ConnectorRegistry().Register("sshd", NewConnector) } type sshdConnector struct { @@ -35,7 +35,7 @@ func (c *sshdConnector) Init(md md.Metadata) (err error) { } func (c *sshdConnector) Connect(ctx context.Context, conn net.Conn, network, address string, opts ...connector.ConnectOption) (net.Conn, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, @@ -59,7 +59,7 @@ func (c *sshdConnector) Connect(ctx context.Context, conn net.Conn, network, add // Bind implements connector.Binder. func (c *sshdConnector) Bind(ctx context.Context, conn net.Conn, network, address string, opts ...connector.BindOption) (net.Listener, error) { - log := c.options.Logger.WithFields(map[string]interface{}{ + log := c.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), "network": network, diff --git a/pkg/dialer/ftcp/dialer.go b/pkg/dialer/ftcp/dialer.go index 5db9032..e7970bb 100644 --- a/pkg/dialer/ftcp/dialer.go +++ b/pkg/dialer/ftcp/dialer.go @@ -12,7 +12,7 @@ import ( ) func init() { - registry.RegisterDialer("ftcp", NewDialer) + registry.DialerRegistry().Register("ftcp", NewDialer) } type ftcpDialer struct { diff --git a/pkg/dialer/grpc/dialer.go b/pkg/dialer/grpc/dialer.go index c8bdd50..6620154 100644 --- a/pkg/dialer/grpc/dialer.go +++ b/pkg/dialer/grpc/dialer.go @@ -17,7 +17,7 @@ import ( ) func init() { - registry.RegisterDialer("grpc", NewDialer) + registry.DialerRegistry().Register("grpc", NewDialer) } type grpcDialer struct { @@ -119,7 +119,7 @@ func (d *grpcDialer) dial(ctx context.Context, network, addr string, opts *diale if err != nil { d.options.Logger.Error(err) } else { - d.options.Logger.WithFields(map[string]interface{}{ + d.options.Logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -132,7 +132,7 @@ func (d *grpcDialer) dial(ctx context.Context, network, addr string, opts *diale if err != nil { d.options.Logger.Error(err) } else { - d.options.Logger.WithFields(map[string]interface{}{ + d.options.Logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/dialer/http2/dialer.go b/pkg/dialer/http2/dialer.go index 42f82d1..623feba 100644 --- a/pkg/dialer/http2/dialer.go +++ b/pkg/dialer/http2/dialer.go @@ -15,7 +15,7 @@ import ( ) func init() { - registry.RegisterDialer("http2", NewDialer) + registry.DialerRegistry().Register("http2", NewDialer) } type http2Dialer struct { @@ -102,7 +102,7 @@ func (d *http2Dialer) dial(ctx context.Context, network, addr string, opts *dial if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -115,7 +115,7 @@ func (d *http2Dialer) dial(ctx context.Context, network, addr string, opts *dial if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/dialer/http2/h2/dialer.go b/pkg/dialer/http2/h2/dialer.go index a2a7ac6..34b1b6b 100644 --- a/pkg/dialer/http2/h2/dialer.go +++ b/pkg/dialer/http2/h2/dialer.go @@ -20,8 +20,8 @@ import ( ) func init() { - registry.RegisterDialer("h2", NewTLSDialer) - registry.RegisterDialer("h2c", NewDialer) + registry.DialerRegistry().Register("h2", NewTLSDialer) + registry.DialerRegistry().Register("h2c", NewDialer) } type h2Dialer struct { @@ -171,7 +171,7 @@ func (d *h2Dialer) dial(ctx context.Context, network, addr string, opts *dialer. if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -184,7 +184,7 @@ func (d *h2Dialer) dial(ctx context.Context, network, addr string, opts *dialer. if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/dialer/http3/dialer.go b/pkg/dialer/http3/dialer.go index 0694e23..dbd0a0a 100644 --- a/pkg/dialer/http3/dialer.go +++ b/pkg/dialer/http3/dialer.go @@ -14,8 +14,8 @@ import ( ) func init() { - registry.RegisterDialer("http3", NewDialer) - registry.RegisterDialer("h3", NewDialer) + registry.DialerRegistry().Register("http3", NewDialer) + registry.DialerRegistry().Register("h3", NewDialer) } type http3Dialer struct { diff --git a/pkg/dialer/kcp/dialer.go b/pkg/dialer/kcp/dialer.go index a671b49..e44ccc2 100644 --- a/pkg/dialer/kcp/dialer.go +++ b/pkg/dialer/kcp/dialer.go @@ -18,7 +18,7 @@ import ( ) func init() { - registry.RegisterDialer("kcp", NewDialer) + registry.DialerRegistry().Register("kcp", NewDialer) } type kcpDialer struct { diff --git a/pkg/dialer/obfs/http/dialer.go b/pkg/dialer/obfs/http/dialer.go index 21869c5..e8ad601 100644 --- a/pkg/dialer/obfs/http/dialer.go +++ b/pkg/dialer/obfs/http/dialer.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterDialer("ohttp", NewDialer) + registry.DialerRegistry().Register("ohttp", NewDialer) } type obfsHTTPDialer struct { diff --git a/pkg/dialer/obfs/tls/dialer.go b/pkg/dialer/obfs/tls/dialer.go index 44665a5..dd8b202 100644 --- a/pkg/dialer/obfs/tls/dialer.go +++ b/pkg/dialer/obfs/tls/dialer.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterDialer("otls", NewDialer) + registry.DialerRegistry().Register("otls", NewDialer) } type obfsTLSDialer struct { diff --git a/pkg/dialer/pht/dialer.go b/pkg/dialer/pht/dialer.go index 40ab32e..10f19a4 100644 --- a/pkg/dialer/pht/dialer.go +++ b/pkg/dialer/pht/dialer.go @@ -14,8 +14,8 @@ import ( ) func init() { - registry.RegisterDialer("pht", NewDialer) - registry.RegisterDialer("phts", NewTLSDialer) + registry.DialerRegistry().Register("pht", NewDialer) + registry.DialerRegistry().Register("phts", NewTLSDialer) } type phtDialer struct { diff --git a/pkg/dialer/quic/dialer.go b/pkg/dialer/quic/dialer.go index 163406f..3d5005f 100644 --- a/pkg/dialer/quic/dialer.go +++ b/pkg/dialer/quic/dialer.go @@ -16,7 +16,7 @@ import ( ) func init() { - registry.RegisterDialer("quic", NewDialer) + registry.DialerRegistry().Register("quic", NewDialer) } type quicDialer struct { diff --git a/pkg/dialer/ssh/dialer.go b/pkg/dialer/ssh/dialer.go index 847764d..4646310 100644 --- a/pkg/dialer/ssh/dialer.go +++ b/pkg/dialer/ssh/dialer.go @@ -16,7 +16,7 @@ import ( ) func init() { - registry.RegisterDialer("ssh", NewDialer) + registry.DialerRegistry().Register("ssh", NewDialer) } type sshDialer struct { @@ -141,7 +141,7 @@ func (d *sshDialer) dial(ctx context.Context, network, addr string, opts *dialer if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -154,7 +154,7 @@ func (d *sshDialer) dial(ctx context.Context, network, addr string, opts *dialer if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/dialer/sshd/dialer.go b/pkg/dialer/sshd/dialer.go index 62edb90..fdef35b 100644 --- a/pkg/dialer/sshd/dialer.go +++ b/pkg/dialer/sshd/dialer.go @@ -15,7 +15,7 @@ import ( ) func init() { - registry.RegisterDialer("sshd", NewDialer) + registry.DialerRegistry().Register("sshd", NewDialer) } type sshdDialer struct { @@ -138,7 +138,7 @@ func (d *sshdDialer) dial(ctx context.Context, network, addr string, opts *diale if err != nil { log.Error(err) } else { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -151,7 +151,7 @@ func (d *sshdDialer) dial(ctx context.Context, network, addr string, opts *diale if err != nil { log.Error(err) } else { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/dialer/tcp/dialer.go b/pkg/dialer/tcp/dialer.go index 9c72cd2..27cdf2d 100644 --- a/pkg/dialer/tcp/dialer.go +++ b/pkg/dialer/tcp/dialer.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterDialer("tcp", NewDialer) + registry.DialerRegistry().Register("tcp", NewDialer) } type tcpDialer struct { diff --git a/pkg/dialer/tls/dialer.go b/pkg/dialer/tls/dialer.go index c9689f2..2a1d48b 100644 --- a/pkg/dialer/tls/dialer.go +++ b/pkg/dialer/tls/dialer.go @@ -13,7 +13,7 @@ import ( ) func init() { - registry.RegisterDialer("tls", NewDialer) + registry.DialerRegistry().Register("tls", NewDialer) } type tlsDialer struct { diff --git a/pkg/dialer/tls/mux/dialer.go b/pkg/dialer/tls/mux/dialer.go index 94d67cc..0bdb410 100644 --- a/pkg/dialer/tls/mux/dialer.go +++ b/pkg/dialer/tls/mux/dialer.go @@ -16,7 +16,7 @@ import ( ) func init() { - registry.RegisterDialer("mtls", NewDialer) + registry.DialerRegistry().Register("mtls", NewDialer) } type mtlsDialer struct { @@ -129,7 +129,7 @@ func (d *mtlsDialer) dial(ctx context.Context, network, addr string, opts *diale if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -142,7 +142,7 @@ func (d *mtlsDialer) dial(ctx context.Context, network, addr string, opts *diale if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/dialer/udp/dialer.go b/pkg/dialer/udp/dialer.go index 67893b3..0f9e264 100644 --- a/pkg/dialer/udp/dialer.go +++ b/pkg/dialer/udp/dialer.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterDialer("udp", NewDialer) + registry.DialerRegistry().Register("udp", NewDialer) } type udpDialer struct { diff --git a/pkg/dialer/ws/dialer.go b/pkg/dialer/ws/dialer.go index d046302..7f77b74 100644 --- a/pkg/dialer/ws/dialer.go +++ b/pkg/dialer/ws/dialer.go @@ -15,8 +15,8 @@ import ( ) func init() { - registry.RegisterDialer("ws", NewDialer) - registry.RegisterDialer("wss", NewTLSDialer) + registry.DialerRegistry().Register("ws", NewDialer) + registry.DialerRegistry().Register("wss", NewTLSDialer) } type wsDialer struct { diff --git a/pkg/dialer/ws/mux/dialer.go b/pkg/dialer/ws/mux/dialer.go index 0cd8d70..cc29cbb 100644 --- a/pkg/dialer/ws/mux/dialer.go +++ b/pkg/dialer/ws/mux/dialer.go @@ -18,8 +18,8 @@ import ( ) func init() { - registry.RegisterDialer("mws", NewDialer) - registry.RegisterDialer("mwss", NewTLSDialer) + registry.DialerRegistry().Register("mws", NewDialer) + registry.DialerRegistry().Register("mwss", NewTLSDialer) } type mwsDialer struct { @@ -150,7 +150,7 @@ func (d *mwsDialer) dial(ctx context.Context, network, addr string, opts *dialer if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debug("dial with dial func") @@ -163,7 +163,7 @@ func (d *mwsDialer) dial(ctx context.Context, network, addr string, opts *dialer if err != nil { d.logger.Error(err) } else { - d.logger.WithFields(map[string]interface{}{ + d.logger.WithFields(map[string]any{ "src": conn.LocalAddr().String(), "dst": addr, }).Debugf("dial direct %s/%s", addr, network) diff --git a/pkg/handler/auto/handler.go b/pkg/handler/auto/handler.go index ac995ec..145ec4a 100644 --- a/pkg/handler/auto/handler.go +++ b/pkg/handler/auto/handler.go @@ -15,7 +15,7 @@ import ( ) func init() { - registry.RegisterHandler("auto", NewHandler) + registry.HandlerRegistry().Register("auto", NewHandler) } type autoHandler struct { @@ -36,24 +36,24 @@ func NewHandler(opts ...handler.Option) handler.Handler { options: options, } - if f := registry.GetHandler("http"); f != nil { + if f := registry.HandlerRegistry().Get("http"); f != nil { v := append(opts, - handler.LoggerOption(options.Logger.WithFields(map[string]interface{}{"type": "http"}))) + handler.LoggerOption(options.Logger.WithFields(map[string]any{"type": "http"}))) h.httpHandler = f(v...) } - if f := registry.GetHandler("socks4"); f != nil { + if f := registry.HandlerRegistry().Get("socks4"); f != nil { v := append(opts, - handler.LoggerOption(options.Logger.WithFields(map[string]interface{}{"type": "socks4"}))) + handler.LoggerOption(options.Logger.WithFields(map[string]any{"type": "socks4"}))) h.socks4Handler = f(v...) } - if f := registry.GetHandler("socks5"); f != nil { + if f := registry.HandlerRegistry().Get("socks5"); f != nil { v := append(opts, - handler.LoggerOption(options.Logger.WithFields(map[string]interface{}{"type": "socks5"}))) + handler.LoggerOption(options.Logger.WithFields(map[string]any{"type": "socks5"}))) h.socks5Handler = f(v...) } - if f := registry.GetHandler("relay"); f != nil { + if f := registry.HandlerRegistry().Get("relay"); f != nil { v := append(opts, - handler.LoggerOption(options.Logger.WithFields(map[string]interface{}{"type": "relay"}))) + handler.LoggerOption(options.Logger.WithFields(map[string]any{"type": "relay"}))) h.relayHandler = f(v...) } @@ -86,7 +86,7 @@ func (h *autoHandler) Init(md md.Metadata) error { } func (h *autoHandler) Handle(ctx context.Context, conn net.Conn) { - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) @@ -94,7 +94,7 @@ func (h *autoHandler) Handle(ctx context.Context, conn net.Conn) { start := time.Now() log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() diff --git a/pkg/handler/dns/handler.go b/pkg/handler/dns/handler.go index 5cb9dfa..5856296 100644 --- a/pkg/handler/dns/handler.go +++ b/pkg/handler/dns/handler.go @@ -26,7 +26,7 @@ const ( ) func init() { - registry.RegisterHandler("dns", NewHandler) + registry.HandlerRegistry().Register("dns", NewHandler) } type dnsHandler struct { @@ -101,14 +101,14 @@ func (h *dnsHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() diff --git a/pkg/handler/forward/local/handler.go b/pkg/handler/forward/local/handler.go index 8e9d93f..eded2aa 100644 --- a/pkg/handler/forward/local/handler.go +++ b/pkg/handler/forward/local/handler.go @@ -13,9 +13,9 @@ import ( ) func init() { - registry.RegisterHandler("tcp", NewHandler) - registry.RegisterHandler("udp", NewHandler) - registry.RegisterHandler("forward", NewHandler) + registry.HandlerRegistry().Register("tcp", NewHandler) + registry.HandlerRegistry().Register("udp", NewHandler) + registry.HandlerRegistry().Register("forward", NewHandler) } type forwardHandler struct { @@ -66,14 +66,14 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -89,7 +89,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { network = "udp" } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", target.Addr, network), }) @@ -109,7 +109,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), target.Addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), target.Addr) } diff --git a/pkg/handler/forward/remote/handler.go b/pkg/handler/forward/remote/handler.go index a08b45d..cce2b95 100644 --- a/pkg/handler/forward/remote/handler.go +++ b/pkg/handler/forward/remote/handler.go @@ -13,8 +13,8 @@ import ( ) func init() { - registry.RegisterHandler("rtcp", NewHandler) - registry.RegisterHandler("rudp", NewHandler) + registry.HandlerRegistry().Register("rtcp", NewHandler) + registry.HandlerRegistry().Register("rudp", NewHandler) } type forwardHandler struct { @@ -60,14 +60,14 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -83,7 +83,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { network = "udp" } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", target.Addr, network), }) @@ -103,7 +103,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), target.Addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), target.Addr) } diff --git a/pkg/handler/http/handler.go b/pkg/handler/http/handler.go index 9d9a13d..9f37ddf 100644 --- a/pkg/handler/http/handler.go +++ b/pkg/handler/http/handler.go @@ -24,7 +24,7 @@ import ( ) func init() { - registry.RegisterHandler("http", NewHandler) + registry.HandlerRegistry().Register("http", NewHandler) } type httpHandler struct { @@ -64,13 +64,13 @@ func (h *httpHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -120,7 +120,7 @@ func (h *httpHandler) handleRequest(ctx context.Context, conn net.Conn, req *htt addr = net.JoinHostPort(addr, "80") } - fields := map[string]interface{}{ + fields := map[string]any{ "dst": addr, } if u, _, _ := h.basicProxyAuth(req.Header.Get("Proxy-Authorization"), log); u != "" { @@ -216,7 +216,7 @@ func (h *httpHandler) handleRequest(ctx context.Context, conn net.Conn, req *htt start := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >-< %s", conn.RemoteAddr(), addr) } diff --git a/pkg/handler/http/udp.go b/pkg/handler/http/udp.go index 11f910d..3343af9 100644 --- a/pkg/handler/http/udp.go +++ b/pkg/handler/http/udp.go @@ -13,7 +13,7 @@ import ( ) func (h *httpHandler) handleUDP(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "cmd": "udp", }) @@ -70,7 +70,7 @@ func (h *httpHandler) handleUDP(ctx context.Context, conn net.Conn, network, add t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), pc.LocalAddr()) relay.Run() - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), pc.LocalAddr()) } diff --git a/pkg/handler/http2/handler.go b/pkg/handler/http2/handler.go index fe20942..7b8be15 100644 --- a/pkg/handler/http2/handler.go +++ b/pkg/handler/http2/handler.go @@ -27,7 +27,7 @@ import ( ) func init() { - registry.RegisterHandler("http2", NewHandler) + registry.HandlerRegistry().Register("http2", NewHandler) } type http2Handler struct { @@ -66,13 +66,13 @@ func (h *http2Handler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -110,7 +110,7 @@ func (h *http2Handler) roundTrip(ctx context.Context, w http.ResponseWriter, req addr = net.JoinHostPort(addr, "80") } - fields := map[string]interface{}{ + fields := map[string]any{ "dst": addr, } if u, _, _ := h.basicProxyAuth(req.Header.Get("Proxy-Authorization")); u != "" { @@ -177,7 +177,7 @@ func (h *http2Handler) roundTrip(ctx context.Context, w http.ResponseWriter, req start := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >-< %s", conn.RemoteAddr(), addr) @@ -187,7 +187,7 @@ func (h *http2Handler) roundTrip(ctx context.Context, w http.ResponseWriter, req start := time.Now() log.Infof("%s <-> %s", req.RemoteAddr, addr) handler.Transport(&readWriter{r: req.Body, w: flushWriter{w}}, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >-< %s", req.RemoteAddr, addr) return diff --git a/pkg/handler/redirect/handler.go b/pkg/handler/redirect/handler.go index cd1b880..1646abe 100644 --- a/pkg/handler/redirect/handler.go +++ b/pkg/handler/redirect/handler.go @@ -13,10 +13,10 @@ import ( ) func init() { - registry.RegisterHandler("red", NewHandler) - registry.RegisterHandler("redu", NewHandler) - registry.RegisterHandler("redir", NewHandler) - registry.RegisterHandler("redirect", NewHandler) + registry.HandlerRegistry().Register("red", NewHandler) + registry.HandlerRegistry().Register("redu", NewHandler) + registry.HandlerRegistry().Register("redir", NewHandler) + registry.HandlerRegistry().Register("redirect", NewHandler) } type redirectHandler struct { @@ -56,14 +56,14 @@ func (h *redirectHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -85,7 +85,7 @@ func (h *redirectHandler) Handle(ctx context.Context, conn net.Conn) { } } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", dstAddr, network), }) @@ -106,7 +106,7 @@ func (h *redirectHandler) Handle(ctx context.Context, conn net.Conn) { t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), dstAddr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), dstAddr) } diff --git a/pkg/handler/relay/bind.go b/pkg/handler/relay/bind.go index dd2f8b8..726cdfa 100644 --- a/pkg/handler/relay/bind.go +++ b/pkg/handler/relay/bind.go @@ -14,7 +14,7 @@ import ( ) func (h *relayHandler) handleBind(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", address, network), "cmd": "bind", }) @@ -70,7 +70,7 @@ func (h *relayHandler) bindTCP(ctx context.Context, conn net.Conn, network, addr return } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "bind": fmt.Sprintf("%s/%s", ln.Addr(), ln.Addr().Network()), }) log.Debugf("bind on %s OK", ln.Addr()) @@ -107,7 +107,7 @@ func (h *relayHandler) bindUDP(ctx context.Context, conn net.Conn, network, addr return } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "bind": pc.LocalAddr().String(), }) log.Debugf("bind on %s OK", pc.LocalAddr()) @@ -120,7 +120,7 @@ func (h *relayHandler) bindUDP(ctx context.Context, conn net.Conn, network, addr t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), pc.LocalAddr()) relay.Run() - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), pc.LocalAddr()) } @@ -157,7 +157,7 @@ func (h *relayHandler) serveTCPBind(ctx context.Context, conn net.Conn, ln net.L go func(c net.Conn) { defer c.Close() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "local": ln.Addr().String(), "remote": c.RemoteAddr().String(), }) @@ -184,7 +184,7 @@ func (h *relayHandler) serveTCPBind(ctx context.Context, conn net.Conn, ln net.L t := time.Now() log.Infof("%s <-> %s", c.LocalAddr(), c.RemoteAddr()) handler.Transport(sc, c) - log.WithFields(map[string]interface{}{"duration": time.Since(t)}). + log.WithFields(map[string]any{"duration": time.Since(t)}). Infof("%s >-< %s", c.LocalAddr(), c.RemoteAddr()) }(rc) } diff --git a/pkg/handler/relay/connect.go b/pkg/handler/relay/connect.go index ca116d3..495e275 100644 --- a/pkg/handler/relay/connect.go +++ b/pkg/handler/relay/connect.go @@ -12,7 +12,7 @@ import ( ) func (h *relayHandler) handleConnect(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", address, network), "cmd": "connect", }) @@ -81,7 +81,7 @@ func (h *relayHandler) handleConnect(ctx context.Context, conn net.Conn, network t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), address) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), address) } diff --git a/pkg/handler/relay/forward.go b/pkg/handler/relay/forward.go index 79cc98e..8ddbf9a 100644 --- a/pkg/handler/relay/forward.go +++ b/pkg/handler/relay/forward.go @@ -24,7 +24,7 @@ func (h *relayHandler) handleForward(ctx context.Context, conn net.Conn, network return } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", target.Addr, network), "cmd": "forward", }) @@ -81,7 +81,7 @@ func (h *relayHandler) handleForward(ctx context.Context, conn net.Conn, network t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), target.Addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), target.Addr) } diff --git a/pkg/handler/relay/handler.go b/pkg/handler/relay/handler.go index 14a4269..4013a17 100644 --- a/pkg/handler/relay/handler.go +++ b/pkg/handler/relay/handler.go @@ -14,7 +14,7 @@ import ( ) func init() { - registry.RegisterHandler("relay", NewHandler) + registry.HandlerRegistry().Register("relay", NewHandler) } type relayHandler struct { @@ -59,14 +59,14 @@ func (h *relayHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -102,7 +102,7 @@ func (h *relayHandler) Handle(ctx context.Context, conn net.Conn) { } if user != "" { - log = log.WithFields(map[string]interface{}{"user": user}) + log = log.WithFields(map[string]any{"user": user}) } resp := relay.Response{ diff --git a/pkg/handler/sni/handler.go b/pkg/handler/sni/handler.go index 1d3754a..ac67986 100644 --- a/pkg/handler/sni/handler.go +++ b/pkg/handler/sni/handler.go @@ -20,7 +20,7 @@ import ( ) func init() { - registry.RegisterHandler("sni", NewHandler) + registry.HandlerRegistry().Register("sni", NewHandler) } type sniHandler struct { @@ -40,9 +40,9 @@ func NewHandler(opts ...handler.Option) handler.Handler { options: options, } - if f := registry.GetHandler("http"); f != nil { + if f := registry.HandlerRegistry().Get("http"); f != nil { v := append(opts, - handler.LoggerOption(h.options.Logger.WithFields(map[string]interface{}{"type": "http"}))) + handler.LoggerOption(h.options.Logger.WithFields(map[string]any{"type": "http"}))) h.httpHandler = f(v...) } @@ -77,14 +77,14 @@ func (h *sniHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -125,7 +125,7 @@ func (h *sniHandler) Handle(ctx context.Context, conn net.Conn) { } target := net.JoinHostPort(host, "443") - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": target, }) log.Infof("%s >> %s", conn.RemoteAddr(), target) @@ -149,7 +149,7 @@ func (h *sniHandler) Handle(ctx context.Context, conn net.Conn) { t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), target) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), target) } diff --git a/pkg/handler/socks/v4/handler.go b/pkg/handler/socks/v4/handler.go index 54cea8c..5305368 100644 --- a/pkg/handler/socks/v4/handler.go +++ b/pkg/handler/socks/v4/handler.go @@ -14,8 +14,8 @@ import ( ) func init() { - registry.RegisterHandler("socks4", NewHandler) - registry.RegisterHandler("socks4a", NewHandler) + registry.HandlerRegistry().Register("socks4", NewHandler) + registry.HandlerRegistry().Register("socks4a", NewHandler) } type socks4Handler struct { @@ -56,14 +56,14 @@ func (h *socks4Handler) Handle(ctx context.Context, conn net.Conn) { start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -102,7 +102,7 @@ func (h *socks4Handler) Handle(ctx context.Context, conn net.Conn) { func (h *socks4Handler) handleConnect(ctx context.Context, conn net.Conn, req *gosocks4.Request, log logger.Logger) { addr := req.Addr.String() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": addr, }) log.Infof("%s >> %s", conn.RemoteAddr(), addr) @@ -135,7 +135,7 @@ func (h *socks4Handler) handleConnect(ctx context.Context, conn net.Conn, req *g t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), addr) } diff --git a/pkg/handler/socks/v5/bind.go b/pkg/handler/socks/v5/bind.go index b5a6bf9..7b30635 100644 --- a/pkg/handler/socks/v5/bind.go +++ b/pkg/handler/socks/v5/bind.go @@ -12,7 +12,7 @@ import ( ) func (h *socks5Handler) handleBind(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", address, network), "cmd": "bind", }) @@ -59,7 +59,7 @@ func (h *socks5Handler) bindLocal(ctx context.Context, conn net.Conn, network, a } log.Debug(reply) - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "bind": fmt.Sprintf("%s/%s", ln.Addr(), ln.Addr().Network()), }) @@ -120,7 +120,7 @@ func (h *socks5Handler) serveBind(ctx context.Context, conn net.Conn, ln net.Lis log.Debugf("peer %s accepted", rc.RemoteAddr()) - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "local": rc.LocalAddr().String(), "remote": rc.RemoteAddr().String(), }) @@ -136,7 +136,7 @@ func (h *socks5Handler) serveBind(ctx context.Context, conn net.Conn, ln net.Lis start := time.Now() log.Infof("%s <-> %s", rc.LocalAddr(), rc.RemoteAddr()) handler.Transport(pc2, rc) - log.WithFields(map[string]interface{}{"duration": time.Since(start)}). + log.WithFields(map[string]any{"duration": time.Since(start)}). Infof("%s >-< %s", rc.LocalAddr(), rc.RemoteAddr()) case err := <-pipe(): diff --git a/pkg/handler/socks/v5/connect.go b/pkg/handler/socks/v5/connect.go index 8caf1a7..51c702b 100644 --- a/pkg/handler/socks/v5/connect.go +++ b/pkg/handler/socks/v5/connect.go @@ -12,7 +12,7 @@ import ( ) func (h *socks5Handler) handleConnect(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", address, network), "cmd": "connect", }) @@ -46,7 +46,7 @@ func (h *socks5Handler) handleConnect(ctx context.Context, conn net.Conn, networ t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), address) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), address) } diff --git a/pkg/handler/socks/v5/handler.go b/pkg/handler/socks/v5/handler.go index 1327fd6..d948bdc 100644 --- a/pkg/handler/socks/v5/handler.go +++ b/pkg/handler/socks/v5/handler.go @@ -14,8 +14,8 @@ import ( ) func init() { - registry.RegisterHandler("socks5", NewHandler) - registry.RegisterHandler("socks", NewHandler) + registry.HandlerRegistry().Register("socks5", NewHandler) + registry.HandlerRegistry().Register("socks", NewHandler) } type socks5Handler struct { @@ -64,14 +64,14 @@ func (h *socks5Handler) Handle(ctx context.Context, conn net.Conn) { start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() diff --git a/pkg/handler/socks/v5/mbind.go b/pkg/handler/socks/v5/mbind.go index 109474a..6f32803 100644 --- a/pkg/handler/socks/v5/mbind.go +++ b/pkg/handler/socks/v5/mbind.go @@ -13,7 +13,7 @@ import ( ) func (h *socks5Handler) handleMuxBind(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", address, network), "cmd": "mbind", }) @@ -60,7 +60,7 @@ func (h *socks5Handler) muxBindLocal(ctx context.Context, conn net.Conn, network } log.Debug(reply) - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "bind": fmt.Sprintf("%s/%s", ln.Addr(), ln.Addr().Network()), }) @@ -101,7 +101,7 @@ func (h *socks5Handler) serveMuxBind(ctx context.Context, conn net.Conn, ln net. go func(c net.Conn) { defer c.Close() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "local": rc.LocalAddr().String(), "remote": rc.RemoteAddr().String(), }) @@ -127,7 +127,7 @@ func (h *socks5Handler) serveMuxBind(ctx context.Context, conn net.Conn, ln net. t := time.Now() log.Infof("%s <-> %s", c.LocalAddr(), c.RemoteAddr()) handler.Transport(sc, c) - log.WithFields(map[string]interface{}{"duration": time.Since(t)}). + log.WithFields(map[string]any{"duration": time.Since(t)}). Infof("%s >-< %s", c.LocalAddr(), c.RemoteAddr()) }(rc) } diff --git a/pkg/handler/socks/v5/udp.go b/pkg/handler/socks/v5/udp.go index 619a92f..12f4c6a 100644 --- a/pkg/handler/socks/v5/udp.go +++ b/pkg/handler/socks/v5/udp.go @@ -15,7 +15,7 @@ import ( ) func (h *socks5Handler) handleUDP(ctx context.Context, conn net.Conn, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "cmd": "udp", }) @@ -48,7 +48,7 @@ func (h *socks5Handler) handleUDP(ctx context.Context, conn net.Conn, log logger } log.Debug(reply) - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "bind": fmt.Sprintf("%s/%s", cc.LocalAddr(), cc.LocalAddr().Network()), }) log.Debugf("bind on %s OK", cc.LocalAddr()) @@ -77,6 +77,6 @@ func (h *socks5Handler) handleUDP(ctx context.Context, conn net.Conn, log logger t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), cc.LocalAddr()) io.Copy(ioutil.Discard, conn) - log.WithFields(map[string]interface{}{"duration": time.Since(t)}). + log.WithFields(map[string]any{"duration": time.Since(t)}). Infof("%s >-< %s", conn.RemoteAddr(), cc.LocalAddr()) } diff --git a/pkg/handler/socks/v5/udp_tun.go b/pkg/handler/socks/v5/udp_tun.go index 4dbbd31..68c6a03 100644 --- a/pkg/handler/socks/v5/udp_tun.go +++ b/pkg/handler/socks/v5/udp_tun.go @@ -12,7 +12,7 @@ import ( ) func (h *socks5Handler) handleUDPTun(ctx context.Context, conn net.Conn, network, address string, log logger.Logger) { - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "cmd": "udp-tun", }) @@ -66,7 +66,7 @@ func (h *socks5Handler) handleUDPTun(ctx context.Context, conn net.Conn, network t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), pc.LocalAddr()) relay.Run() - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), pc.LocalAddr()) } diff --git a/pkg/handler/ss/handler.go b/pkg/handler/ss/handler.go index b329376..a2c592e 100644 --- a/pkg/handler/ss/handler.go +++ b/pkg/handler/ss/handler.go @@ -17,7 +17,7 @@ import ( ) func init() { - registry.RegisterHandler("ss", NewHandler) + registry.HandlerRegistry().Register("ss", NewHandler) } type ssHandler struct { @@ -66,14 +66,14 @@ func (h *ssHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -93,7 +93,7 @@ func (h *ssHandler) Handle(ctx context.Context, conn net.Conn) { return } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": addr.String(), }) @@ -113,7 +113,7 @@ func (h *ssHandler) Handle(ctx context.Context, conn net.Conn) { t := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), addr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.RemoteAddr(), addr) } diff --git a/pkg/handler/ss/udp/handler.go b/pkg/handler/ss/udp/handler.go index 4b5ce15..eefe3b7 100644 --- a/pkg/handler/ss/udp/handler.go +++ b/pkg/handler/ss/udp/handler.go @@ -17,7 +17,7 @@ import ( ) func init() { - registry.RegisterHandler("ssu", NewHandler) + registry.HandlerRegistry().Register("ssu", NewHandler) } type ssuHandler struct { @@ -67,14 +67,14 @@ func (h *ssuHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() start := time.Now() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -111,7 +111,7 @@ func (h *ssuHandler) Handle(ctx context.Context, conn net.Conn) { t := time.Now() log.Infof("%s <-> %s", conn.LocalAddr(), cc.LocalAddr()) h.relayPacket(pc, cc, log) - log.WithFields(map[string]interface{}{"duration": time.Since(t)}). + log.WithFields(map[string]any{"duration": time.Since(t)}). Infof("%s >-< %s", conn.LocalAddr(), cc.LocalAddr()) } diff --git a/pkg/handler/sshd/handler.go b/pkg/handler/sshd/handler.go index ee7d4ce..d8f0e06 100644 --- a/pkg/handler/sshd/handler.go +++ b/pkg/handler/sshd/handler.go @@ -23,7 +23,7 @@ const ( ) func init() { - registry.RegisterHandler("sshd", NewHandler) + registry.HandlerRegistry().Register("sshd", NewHandler) } type forwardHandler struct { @@ -62,7 +62,7 @@ func (h *forwardHandler) Init(md md.Metadata) (err error) { func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { defer conn.Close() - log := h.options.Logger.WithFields(map[string]interface{}{ + log := h.options.Logger.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) @@ -81,7 +81,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn) { func (h *forwardHandler) handleDirectForward(ctx context.Context, conn *sshd_util.DirectForwardConn, log logger.Logger) { targetAddr := conn.DstAddr() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", targetAddr, "tcp"), "cmd": "connect", }) @@ -102,7 +102,7 @@ func (h *forwardHandler) handleDirectForward(ctx context.Context, conn *sshd_uti t := time.Now() log.Infof("%s <-> %s", cc.LocalAddr(), targetAddr) handler.Transport(conn, cc) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", cc.LocalAddr(), targetAddr) } @@ -116,7 +116,7 @@ func (h *forwardHandler) handleRemoteForward(ctx context.Context, conn *sshd_uti network := "tcp" addr := net.JoinHostPort(t.Host, strconv.Itoa(int(t.Port))) - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", addr, network), "cmd": "bind", }) @@ -132,7 +132,7 @@ func (h *forwardHandler) handleRemoteForward(ctx context.Context, conn *sshd_uti } defer ln.Close() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "bind": fmt.Sprintf("%s/%s", ln.Addr(), ln.Addr().Network()), }) log.Debugf("bind on %s OK", ln.Addr()) @@ -167,7 +167,7 @@ func (h *forwardHandler) handleRemoteForward(ctx context.Context, conn *sshd_uti go func(conn net.Conn) { defer conn.Close() - log := log.WithFields(map[string]interface{}{ + log := log.WithFields(map[string]any{ "local": conn.LocalAddr().String(), "remote": conn.RemoteAddr().String(), }) @@ -195,7 +195,7 @@ func (h *forwardHandler) handleRemoteForward(ctx context.Context, conn *sshd_uti t := time.Now() log.Infof("%s <-> %s", conn.LocalAddr(), conn.RemoteAddr()) handler.Transport(ch, conn) - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(t), }).Infof("%s >-< %s", conn.LocalAddr(), conn.RemoteAddr()) }(cc) @@ -205,7 +205,7 @@ func (h *forwardHandler) handleRemoteForward(ctx context.Context, conn *sshd_uti tm := time.Now() log.Infof("%s <-> %s", conn.RemoteAddr(), addr) <-conn.Done() - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(tm), }).Infof("%s >-< %s", conn.RemoteAddr(), addr) } diff --git a/pkg/handler/tap/handler.go b/pkg/handler/tap/handler.go index 3850763..e61a6a7 100644 --- a/pkg/handler/tap/handler.go +++ b/pkg/handler/tap/handler.go @@ -24,7 +24,7 @@ import ( ) func init() { - registry.RegisterHandler("tap", NewHandler) + registry.HandlerRegistry().Register("tap", NewHandler) } type tapHandler struct { @@ -91,14 +91,14 @@ func (h *tapHandler) Handle(ctx context.Context, conn net.Conn) { } start := time.Now() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -114,7 +114,7 @@ func (h *tapHandler) Handle(ctx context.Context, conn net.Conn) { log.Error(err) return } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", raddr.String(), raddr.Network()), }) log.Infof("%s >> %s", conn.RemoteAddr(), target.Addr) @@ -214,7 +214,7 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr // server side, broadcast. if waterutil.IsBroadcast(dst) { - go h.routes.Range(func(k, v interface{}) bool { + go h.routes.Range(func(k, v any) bool { conn.WriteTo((*b)[:n], v.(net.Addr)) return true }) @@ -281,7 +281,7 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr } if waterutil.IsBroadcast(dst) { - go h.routes.Range(func(k, v interface{}) bool { + go h.routes.Range(func(k, v any) bool { if k.(tapRouteKey) != rkey { conn.WriteTo((*b)[:n], v.(net.Addr)) } diff --git a/pkg/handler/tun/handler.go b/pkg/handler/tun/handler.go index 088c15c..ad0064b 100644 --- a/pkg/handler/tun/handler.go +++ b/pkg/handler/tun/handler.go @@ -26,7 +26,7 @@ import ( ) func init() { - registry.RegisterHandler("tun", NewHandler) + registry.HandlerRegistry().Register("tun", NewHandler) } type tunHandler struct { @@ -94,14 +94,14 @@ func (h *tunHandler) Handle(ctx context.Context, conn net.Conn) { } start := time.Now() - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "remote": conn.RemoteAddr().String(), "local": conn.LocalAddr().String(), }) log.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - log.WithFields(map[string]interface{}{ + log.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() @@ -117,7 +117,7 @@ func (h *tunHandler) Handle(ctx context.Context, conn net.Conn) { log.Error(err) return } - log = log.WithFields(map[string]interface{}{ + log = log.WithFields(map[string]any{ "dst": fmt.Sprintf("%s/%s", raddr.String(), raddr.Network()), }) log.Infof("%s >> %s", conn.RemoteAddr(), target.Addr) diff --git a/pkg/listener/dns/listener.go b/pkg/listener/dns/listener.go index 479d3e5..04a7b47 100644 --- a/pkg/listener/dns/listener.go +++ b/pkg/listener/dns/listener.go @@ -17,7 +17,7 @@ import ( ) func init() { - registry.RegisterListener("dns", NewListener) + registry.ListenerRegistry().Register("dns", NewListener) } type dnsListener struct { diff --git a/pkg/listener/ftcp/listener.go b/pkg/listener/ftcp/listener.go index c8813a2..d56d7da 100644 --- a/pkg/listener/ftcp/listener.go +++ b/pkg/listener/ftcp/listener.go @@ -13,7 +13,7 @@ import ( ) func init() { - registry.RegisterListener("ftcp", NewListener) + registry.ListenerRegistry().Register("ftcp", NewListener) } type ftcpListener struct { @@ -69,7 +69,7 @@ func (l *ftcpListener) Accept() (conn net.Conn, err error) { func (l *ftcpListener) Close() error { err := l.conn.Close() - l.connPool.Range(func(k interface{}, v *serverConn) bool { + l.connPool.Range(func(k any, v *serverConn) bool { v.Close() return true }) @@ -128,7 +128,7 @@ type connPool struct { m sync.Map } -func (p *connPool) Get(key interface{}) (conn *serverConn, ok bool) { +func (p *connPool) Get(key any) (conn *serverConn, ok bool) { v, ok := p.m.Load(key) if ok { conn, ok = v.(*serverConn) @@ -136,18 +136,18 @@ func (p *connPool) Get(key interface{}) (conn *serverConn, ok bool) { return } -func (p *connPool) Set(key interface{}, conn *serverConn) { +func (p *connPool) Set(key any, conn *serverConn) { p.m.Store(key, conn) atomic.AddInt64(&p.size, 1) } -func (p *connPool) Delete(key interface{}) { +func (p *connPool) Delete(key any) { p.m.Delete(key) atomic.AddInt64(&p.size, -1) } -func (p *connPool) Range(f func(key interface{}, value *serverConn) bool) { - p.m.Range(func(k, v interface{}) bool { +func (p *connPool) Range(f func(key any, value *serverConn) bool) { + p.m.Range(func(k, v any) bool { return f(k, v.(*serverConn)) }) } diff --git a/pkg/listener/grpc/listener.go b/pkg/listener/grpc/listener.go index d9560d7..d84b7fc 100644 --- a/pkg/listener/grpc/listener.go +++ b/pkg/listener/grpc/listener.go @@ -13,7 +13,7 @@ import ( ) func init() { - registry.RegisterListener("grpc", NewListener) + registry.ListenerRegistry().Register("grpc", NewListener) } type grpcListener struct { diff --git a/pkg/listener/http2/h2/listener.go b/pkg/listener/http2/h2/listener.go index 8e2a408..2b253c2 100644 --- a/pkg/listener/http2/h2/listener.go +++ b/pkg/listener/http2/h2/listener.go @@ -16,8 +16,8 @@ import ( ) func init() { - registry.RegisterListener("h2c", NewListener) - registry.RegisterListener("h2", NewTLSListener) + registry.ListenerRegistry().Register("h2c", NewListener) + registry.ListenerRegistry().Register("h2", NewTLSListener) } type h2Listener struct { diff --git a/pkg/listener/http2/listener.go b/pkg/listener/http2/listener.go index 3efae13..0d398da 100644 --- a/pkg/listener/http2/listener.go +++ b/pkg/listener/http2/listener.go @@ -15,7 +15,7 @@ import ( ) func init() { - registry.RegisterListener("http2", NewListener) + registry.ListenerRegistry().Register("http2", NewListener) } type http2Listener struct { diff --git a/pkg/listener/http3/listener.go b/pkg/listener/http3/listener.go index d2ef9a1..76aa269 100644 --- a/pkg/listener/http3/listener.go +++ b/pkg/listener/http3/listener.go @@ -12,8 +12,8 @@ import ( ) func init() { - registry.RegisterListener("http3", NewListener) - registry.RegisterListener("h3", NewListener) + registry.ListenerRegistry().Register("http3", NewListener) + registry.ListenerRegistry().Register("h3", NewListener) } type http3Listener struct { diff --git a/pkg/listener/kcp/listener.go b/pkg/listener/kcp/listener.go index 4c067c5..54d11f5 100644 --- a/pkg/listener/kcp/listener.go +++ b/pkg/listener/kcp/listener.go @@ -15,7 +15,7 @@ import ( ) func init() { - registry.RegisterListener("kcp", NewListener) + registry.ListenerRegistry().Register("kcp", NewListener) } type kcpListener struct { diff --git a/pkg/listener/obfs/http/listener.go b/pkg/listener/obfs/http/listener.go index f3b52d8..9411248 100644 --- a/pkg/listener/obfs/http/listener.go +++ b/pkg/listener/obfs/http/listener.go @@ -10,7 +10,7 @@ import ( ) func init() { - registry.RegisterListener("ohttp", NewListener) + registry.ListenerRegistry().Register("ohttp", NewListener) } type obfsListener struct { diff --git a/pkg/listener/obfs/tls/listener.go b/pkg/listener/obfs/tls/listener.go index cb4056a..fd6fd93 100644 --- a/pkg/listener/obfs/tls/listener.go +++ b/pkg/listener/obfs/tls/listener.go @@ -10,7 +10,7 @@ import ( ) func init() { - registry.RegisterListener("otls", NewListener) + registry.ListenerRegistry().Register("otls", NewListener) } type obfsListener struct { diff --git a/pkg/listener/pht/listener.go b/pkg/listener/pht/listener.go index ce61114..5a863fe 100644 --- a/pkg/listener/pht/listener.go +++ b/pkg/listener/pht/listener.go @@ -13,8 +13,8 @@ import ( ) func init() { - registry.RegisterListener("pht", NewListener) - registry.RegisterListener("phts", NewTLSListener) + registry.ListenerRegistry().Register("pht", NewListener) + registry.ListenerRegistry().Register("phts", NewTLSListener) } type phtListener struct { diff --git a/pkg/listener/quic/listener.go b/pkg/listener/quic/listener.go index 0ca6fbc..74727ed 100644 --- a/pkg/listener/quic/listener.go +++ b/pkg/listener/quic/listener.go @@ -13,7 +13,7 @@ import ( ) func init() { - registry.RegisterListener("quic", NewListener) + registry.ListenerRegistry().Register("quic", NewListener) } type quicListener struct { diff --git a/pkg/listener/redirect/udp/listener.go b/pkg/listener/redirect/udp/listener.go index 281c8b4..1a067ca 100644 --- a/pkg/listener/redirect/udp/listener.go +++ b/pkg/listener/redirect/udp/listener.go @@ -10,7 +10,7 @@ import ( ) func init() { - registry.RegisterListener("redu", NewListener) + registry.ListenerRegistry().Register("redu", NewListener) } type redirectListener struct { diff --git a/pkg/listener/rtcp/listener.go b/pkg/listener/rtcp/listener.go index 0f7db34..81e6762 100644 --- a/pkg/listener/rtcp/listener.go +++ b/pkg/listener/rtcp/listener.go @@ -13,7 +13,7 @@ import ( ) func init() { - registry.RegisterListener("rtcp", NewListener) + registry.ListenerRegistry().Register("rtcp", NewListener) } type rtcpListener struct { diff --git a/pkg/listener/rudp/listener.go b/pkg/listener/rudp/listener.go index e604f39..21cb24a 100644 --- a/pkg/listener/rudp/listener.go +++ b/pkg/listener/rudp/listener.go @@ -13,7 +13,7 @@ import ( ) func init() { - registry.RegisterListener("rudp", NewListener) + registry.ListenerRegistry().Register("rudp", NewListener) } type rudpListener struct { diff --git a/pkg/listener/ssh/listener.go b/pkg/listener/ssh/listener.go index eb82314..da8fd44 100644 --- a/pkg/listener/ssh/listener.go +++ b/pkg/listener/ssh/listener.go @@ -14,7 +14,7 @@ import ( ) func init() { - registry.RegisterListener("ssh", NewListener) + registry.ListenerRegistry().Register("ssh", NewListener) } type sshListener struct { @@ -99,7 +99,7 @@ func (l *sshListener) serveConn(conn net.Conn) { start := time.Now() l.logger.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - l.logger.WithFields(map[string]interface{}{ + l.logger.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() diff --git a/pkg/listener/sshd/listener.go b/pkg/listener/sshd/listener.go index 3e3a091..57ae9b6 100644 --- a/pkg/listener/sshd/listener.go +++ b/pkg/listener/sshd/listener.go @@ -23,7 +23,7 @@ const ( ) func init() { - registry.RegisterListener("sshd", NewListener) + registry.ListenerRegistry().Register("sshd", NewListener) } type sshdListener struct { @@ -108,7 +108,7 @@ func (l *sshdListener) serveConn(conn net.Conn) { start := time.Now() l.logger.Infof("%s <> %s", conn.RemoteAddr(), conn.LocalAddr()) defer func() { - l.logger.WithFields(map[string]interface{}{ + l.logger.WithFields(map[string]any{ "duration": time.Since(start), }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() diff --git a/pkg/listener/tap/listener.go b/pkg/listener/tap/listener.go index 7333099..4ef70b0 100644 --- a/pkg/listener/tap/listener.go +++ b/pkg/listener/tap/listener.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterListener("tap", NewListener) + registry.ListenerRegistry().Register("tap", NewListener) } type tapListener struct { diff --git a/pkg/listener/tcp/listener.go b/pkg/listener/tcp/listener.go index 7b3d7a7..9e5f43e 100644 --- a/pkg/listener/tcp/listener.go +++ b/pkg/listener/tcp/listener.go @@ -10,7 +10,7 @@ import ( ) func init() { - registry.RegisterListener("tcp", NewListener) + registry.ListenerRegistry().Register("tcp", NewListener) } type tcpListener struct { diff --git a/pkg/listener/tls/listener.go b/pkg/listener/tls/listener.go index 93f7971..7db56d8 100644 --- a/pkg/listener/tls/listener.go +++ b/pkg/listener/tls/listener.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterListener("tls", NewListener) + registry.ListenerRegistry().Register("tls", NewListener) } type tlsListener struct { diff --git a/pkg/listener/tls/mux/listener.go b/pkg/listener/tls/mux/listener.go index 4261346..99a2595 100644 --- a/pkg/listener/tls/mux/listener.go +++ b/pkg/listener/tls/mux/listener.go @@ -12,7 +12,7 @@ import ( ) func init() { - registry.RegisterListener("mtls", NewListener) + registry.ListenerRegistry().Register("mtls", NewListener) } type mtlsListener struct { diff --git a/pkg/listener/tun/listener.go b/pkg/listener/tun/listener.go index 26da643..94f6936 100644 --- a/pkg/listener/tun/listener.go +++ b/pkg/listener/tun/listener.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterListener("tun", NewListener) + registry.ListenerRegistry().Register("tun", NewListener) } type tunListener struct { diff --git a/pkg/listener/udp/listener.go b/pkg/listener/udp/listener.go index 1c9c8f0..51afa84 100644 --- a/pkg/listener/udp/listener.go +++ b/pkg/listener/udp/listener.go @@ -11,7 +11,7 @@ import ( ) func init() { - registry.RegisterListener("udp", NewListener) + registry.ListenerRegistry().Register("udp", NewListener) } type udpListener struct { diff --git a/pkg/listener/ws/listener.go b/pkg/listener/ws/listener.go index 165954a..a2ccbf3 100644 --- a/pkg/listener/ws/listener.go +++ b/pkg/listener/ws/listener.go @@ -15,8 +15,8 @@ import ( ) func init() { - registry.RegisterListener("ws", NewListener) - registry.RegisterListener("wss", NewTLSListener) + registry.ListenerRegistry().Register("ws", NewListener) + registry.ListenerRegistry().Register("wss", NewTLSListener) } type wsListener struct { @@ -121,7 +121,7 @@ func (l *wsListener) Addr() net.Addr { func (l *wsListener) upgrade(w http.ResponseWriter, r *http.Request) { if l.logger.IsLevelEnabled(logger.DebugLevel) { - log := l.logger.WithFields(map[string]interface{}{ + log := l.logger.WithFields(map[string]any{ "local": l.addr.String(), "remote": r.RemoteAddr, }) diff --git a/pkg/listener/ws/mux/listener.go b/pkg/listener/ws/mux/listener.go index bad8739..2913134 100644 --- a/pkg/listener/ws/mux/listener.go +++ b/pkg/listener/ws/mux/listener.go @@ -16,8 +16,8 @@ import ( ) func init() { - registry.RegisterListener("mws", NewListener) - registry.RegisterListener("mwss", NewTLSListener) + registry.ListenerRegistry().Register("mws", NewListener) + registry.ListenerRegistry().Register("mwss", NewTLSListener) } type mwsListener struct { @@ -126,7 +126,7 @@ func (l *mwsListener) Addr() net.Addr { func (l *mwsListener) upgrade(w http.ResponseWriter, r *http.Request) { if l.logger.IsLevelEnabled(logger.DebugLevel) { - log := l.logger.WithFields(map[string]interface{}{ + log := l.logger.WithFields(map[string]any{ "local": l.addr.String(), "remote": r.RemoteAddr, }) diff --git a/pkg/logger/gost_logger.go b/pkg/logger/gost_logger.go index 4cc7a4c..7395fb8 100644 --- a/pkg/logger/gost_logger.go +++ b/pkg/logger/gost_logger.go @@ -61,60 +61,60 @@ func NewLogger(opts ...LoggerOption) Logger { } // WithFields adds new fields to log. -func (l *logger) WithFields(fields map[string]interface{}) Logger { +func (l *logger) WithFields(fields map[string]any) Logger { return &logger{ logger: l.logger.WithFields(logrus.Fields(fields)), } } // Debug logs a message at level Debug. -func (l *logger) Debug(args ...interface{}) { +func (l *logger) Debug(args ...any) { l.log(logrus.DebugLevel, args...) } // Debugf logs a message at level Debug. -func (l *logger) Debugf(format string, args ...interface{}) { +func (l *logger) Debugf(format string, args ...any) { l.logf(logrus.DebugLevel, format, args...) } // Info logs a message at level Info. -func (l *logger) Info(args ...interface{}) { +func (l *logger) Info(args ...any) { l.log(logrus.InfoLevel, args...) } // Infof logs a message at level Info. -func (l *logger) Infof(format string, args ...interface{}) { +func (l *logger) Infof(format string, args ...any) { l.logf(logrus.InfoLevel, format, args...) } // Warn logs a message at level Warn. -func (l *logger) Warn(args ...interface{}) { +func (l *logger) Warn(args ...any) { l.log(logrus.WarnLevel, args...) } // Warnf logs a message at level Warn. -func (l *logger) Warnf(format string, args ...interface{}) { +func (l *logger) Warnf(format string, args ...any) { l.logf(logrus.WarnLevel, format, args...) } // Error logs a message at level Error. -func (l *logger) Error(args ...interface{}) { +func (l *logger) Error(args ...any) { l.log(logrus.ErrorLevel, args...) } // Errorf logs a message at level Error. -func (l *logger) Errorf(format string, args ...interface{}) { +func (l *logger) Errorf(format string, args ...any) { l.logf(logrus.ErrorLevel, format, args...) } // Fatal logs a message at level Fatal then the process will exit with status set to 1. -func (l *logger) Fatal(args ...interface{}) { +func (l *logger) Fatal(args ...any) { l.log(logrus.FatalLevel, args...) l.logger.Logger.Exit(1) } // Fatalf logs a message at level Fatal then the process will exit with status set to 1. -func (l *logger) Fatalf(format string, args ...interface{}) { +func (l *logger) Fatalf(format string, args ...any) { l.logf(logrus.FatalLevel, format, args...) l.logger.Logger.Exit(1) } @@ -128,7 +128,7 @@ func (l *logger) IsLevelEnabled(level LogLevel) bool { return l.logger.Logger.IsLevelEnabled(lvl) } -func (l *logger) log(level logrus.Level, args ...interface{}) { +func (l *logger) log(level logrus.Level, args ...any) { lg := l.logger if l.logger.Logger.IsLevelEnabled(logrus.DebugLevel) { lg = lg.WithField("caller", l.caller(3)) @@ -136,7 +136,7 @@ func (l *logger) log(level logrus.Level, args ...interface{}) { lg.Log(level, args...) } -func (l *logger) logf(level logrus.Level, format string, args ...interface{}) { +func (l *logger) logf(level logrus.Level, format string, args ...any) { lg := l.logger if l.logger.Logger.IsLevelEnabled(logrus.DebugLevel) { lg = lg.WithField("caller", l.caller(3)) diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index a823639..6aa1e99 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -29,17 +29,17 @@ const ( ) type Logger interface { - WithFields(map[string]interface{}) Logger - Debug(args ...interface{}) - Debugf(format string, args ...interface{}) - Info(args ...interface{}) - Infof(format string, args ...interface{}) - Warn(args ...interface{}) - Warnf(format string, args ...interface{}) - Error(args ...interface{}) - Errorf(format string, args ...interface{}) - Fatal(args ...interface{}) - Fatalf(format string, args ...interface{}) + WithFields(map[string]any) Logger + Debug(args ...any) + Debugf(format string, args ...any) + Info(args ...any) + Infof(format string, args ...any) + Warn(args ...any) + Warnf(format string, args ...any) + Error(args ...any) + Errorf(format string, args ...any) + Fatal(args ...any) + Fatalf(format string, args ...any) GetLevel() LogLevel IsLevelEnabled(level LogLevel) bool } diff --git a/pkg/logger/nop_logger.go b/pkg/logger/nop_logger.go index 60e86ac..5a131fe 100644 --- a/pkg/logger/nop_logger.go +++ b/pkg/logger/nop_logger.go @@ -10,38 +10,38 @@ func Nop() Logger { type nopLogger struct{} -func (l *nopLogger) WithFields(fields map[string]interface{}) Logger { +func (l *nopLogger) WithFields(fields map[string]any) Logger { return l } -func (l *nopLogger) Debug(args ...interface{}) { +func (l *nopLogger) Debug(args ...any) { } -func (l *nopLogger) Debugf(format string, args ...interface{}) { +func (l *nopLogger) Debugf(format string, args ...any) { } -func (l *nopLogger) Info(args ...interface{}) { +func (l *nopLogger) Info(args ...any) { } -func (l *nopLogger) Infof(format string, args ...interface{}) { +func (l *nopLogger) Infof(format string, args ...any) { } -func (l *nopLogger) Warn(args ...interface{}) { +func (l *nopLogger) Warn(args ...any) { } -func (l *nopLogger) Warnf(format string, args ...interface{}) { +func (l *nopLogger) Warnf(format string, args ...any) { } -func (l *nopLogger) Error(args ...interface{}) { +func (l *nopLogger) Error(args ...any) { } -func (l *nopLogger) Errorf(format string, args ...interface{}) { +func (l *nopLogger) Errorf(format string, args ...any) { } -func (l *nopLogger) Fatal(args ...interface{}) { +func (l *nopLogger) Fatal(args ...any) { } -func (l *nopLogger) Fatalf(format string, args ...interface{}) { +func (l *nopLogger) Fatalf(format string, args ...any) { } func (l *nopLogger) GetLevel() LogLevel { diff --git a/pkg/metadata/metadata.go b/pkg/metadata/metadata.go index 1b54336..1840e16 100644 --- a/pkg/metadata/metadata.go +++ b/pkg/metadata/metadata.go @@ -8,22 +8,22 @@ import ( type Metadata interface { IsExists(key string) bool - Set(key string, value interface{}) - Get(key string) interface{} + Set(key string, value any) + Get(key string) any } -type MapMetadata map[string]interface{} +type MapMetadata map[string]any func (m MapMetadata) IsExists(key string) bool { _, ok := m[key] return ok } -func (m MapMetadata) Set(key string, value interface{}) { +func (m MapMetadata) Set(key string, value any) { m[key] = value } -func (m MapMetadata) Get(key string) interface{} { +func (m MapMetadata) Get(key string) any { if m != nil { return m[key] } @@ -112,7 +112,7 @@ func GetStrings(md Metadata, key string) (ss []string) { switch v := md.Get(key).(type) { case []string: ss = v - case []interface{}: + case []any: for _, vv := range v { if s, ok := vv.(string); ok { ss = append(ss, s) @@ -122,12 +122,12 @@ func GetStrings(md Metadata, key string) (ss []string) { return } -func GetStringMap(md Metadata, key string) (m map[string]interface{}) { +func GetStringMap(md Metadata, key string) (m map[string]any) { switch vv := md.Get(key).(type) { - case map[string]interface{}: + case map[string]any: return vv - case map[interface{}]interface{}: - m = make(map[string]interface{}) + case map[any]any: + m = make(map[string]any) for k, v := range vv { m[fmt.Sprintf("%v", k)] = v } @@ -137,12 +137,12 @@ func GetStringMap(md Metadata, key string) (m map[string]interface{}) { func GetStringMapString(md Metadata, key string) (m map[string]string) { switch vv := md.Get(key).(type) { - case map[string]interface{}: + case map[string]any: m = make(map[string]string) for k, v := range vv { m[k] = fmt.Sprintf("%v", v) } - case map[interface{}]interface{}: + case map[any]any: m = make(map[string]string) for k, v := range vv { m[fmt.Sprintf("%v", k)] = fmt.Sprintf("%v", v) diff --git a/pkg/registry/admission.go b/pkg/registry/admission.go index 05bc0cd..e7a9bdf 100644 --- a/pkg/registry/admission.go +++ b/pkg/registry/admission.go @@ -1,52 +1,26 @@ package registry import ( - "sync" - "github.com/go-gost/gost/pkg/admission" ) -var ( - admissionReg = &admissionRegistry{} -) - -func Admission() *admissionRegistry { - return admissionReg -} - type admissionRegistry struct { - m sync.Map + registry } -func (r *admissionRegistry) Register(name string, admission admission.Admission) error { - if name == "" || admission == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, admission); loaded { - return ErrDup - } - - return nil -} - -func (r *admissionRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *admissionRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *admissionRegistry) Register(name string, v admission.Admission) error { + return r.registry.Register(name, v) } func (r *admissionRegistry) Get(name string) admission.Admission { - if name == "" { - return nil + if name != "" { + return &admissionWrapper{name: name, r: r} } - return &admissionWrapper{name: name} + return nil } func (r *admissionRegistry) get(name string) admission.Admission { - if v, ok := r.m.Load(name); ok { + if v := r.registry.Get(name); v != nil { return v.(admission.Admission) } return nil @@ -54,10 +28,11 @@ func (r *admissionRegistry) get(name string) admission.Admission { type admissionWrapper struct { name string + r *admissionRegistry } func (w *admissionWrapper) Admit(addr string) bool { - p := admissionReg.get(w.name) + p := w.r.get(w.name) if p == nil { return false } diff --git a/pkg/registry/auther.go b/pkg/registry/auther.go index d5d02e9..2e43150 100644 --- a/pkg/registry/auther.go +++ b/pkg/registry/auther.go @@ -1,52 +1,26 @@ package registry import ( - "sync" - "github.com/go-gost/gost/pkg/auth" ) -var ( - autherReg = &autherRegistry{} -) - -func Auther() *autherRegistry { - return autherReg -} - type autherRegistry struct { - m sync.Map + registry } -func (r *autherRegistry) Register(name string, auther auth.Authenticator) error { - if name == "" || auther == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, auther); loaded { - return ErrDup - } - - return nil -} - -func (r *autherRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *autherRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *autherRegistry) Register(name string, v auth.Authenticator) error { + return r.registry.Register(name, v) } func (r *autherRegistry) Get(name string) auth.Authenticator { - if name == "" { - return nil + if name != "" { + return &autherWrapper{name: name, r: r} } - return &autherWrapper{name: name} + return nil } func (r *autherRegistry) get(name string) auth.Authenticator { - if v, ok := r.m.Load(name); ok { + if v := r.registry.Get(name); v != nil { return v.(auth.Authenticator) } return nil @@ -54,10 +28,11 @@ func (r *autherRegistry) get(name string) auth.Authenticator { type autherWrapper struct { name string + r *autherRegistry } func (w *autherWrapper) Authenticate(user, password string) bool { - v := autherReg.get(w.name) + v := w.r.get(w.name) if v == nil { return true } diff --git a/pkg/registry/bypass.go b/pkg/registry/bypass.go index 8f37797..7bc53c1 100644 --- a/pkg/registry/bypass.go +++ b/pkg/registry/bypass.go @@ -1,52 +1,26 @@ package registry import ( - "sync" - "github.com/go-gost/gost/pkg/bypass" ) -var ( - bypassReg = &bypassRegistry{} -) - -func Bypass() *bypassRegistry { - return bypassReg -} - type bypassRegistry struct { - m sync.Map + registry } -func (r *bypassRegistry) Register(name string, bypass bypass.Bypass) error { - if name == "" || bypass == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, bypass); loaded { - return ErrDup - } - - return nil -} - -func (r *bypassRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *bypassRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *bypassRegistry) Register(name string, v bypass.Bypass) error { + return r.registry.Register(name, v) } func (r *bypassRegistry) Get(name string) bypass.Bypass { - if name == "" { - return nil + if name != "" { + return &bypassWrapper{name: name, r: r} } - return &bypassWrapper{name: name} + return nil } func (r *bypassRegistry) get(name string) bypass.Bypass { - if v, ok := r.m.Load(name); ok { + if v := r.registry.Get(name); v != nil { return v.(bypass.Bypass) } return nil @@ -54,10 +28,11 @@ func (r *bypassRegistry) get(name string) bypass.Bypass { type bypassWrapper struct { name string + r *bypassRegistry } func (w *bypassWrapper) Contains(addr string) bool { - bp := bypassReg.get(w.name) + bp := w.r.get(w.name) if bp == nil { return false } diff --git a/pkg/registry/chain.go b/pkg/registry/chain.go index 75d5683..9295fd1 100644 --- a/pkg/registry/chain.go +++ b/pkg/registry/chain.go @@ -1,52 +1,26 @@ package registry import ( - "sync" - "github.com/go-gost/gost/pkg/chain" ) -var ( - chainReg = &chainRegistry{} -) - -func Chain() *chainRegistry { - return chainReg -} - type chainRegistry struct { - m sync.Map + registry } -func (r *chainRegistry) Register(name string, chain chain.Chainer) error { - if name == "" || chain == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, chain); loaded { - return ErrDup - } - - return nil -} - -func (r *chainRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *chainRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *chainRegistry) Register(name string, v chain.Chainer) error { + return r.registry.Register(name, v) } func (r *chainRegistry) Get(name string) chain.Chainer { - if name == "" { - return nil + if name != "" { + return &chainWrapper{name: name, r: r} } - return &chainWrapper{name: name} + return nil } func (r *chainRegistry) get(name string) chain.Chainer { - if v, ok := r.m.Load(name); ok { + if v := r.registry.Get(name); v != nil { return v.(chain.Chainer) } return nil @@ -54,10 +28,11 @@ func (r *chainRegistry) get(name string) chain.Chainer { type chainWrapper struct { name string + r *chainRegistry } func (w *chainWrapper) Route(network, address string) *chain.Route { - v := Chain().get(w.name) + v := w.r.get(w.name) if v == nil { return nil } diff --git a/pkg/registry/connector.go b/pkg/registry/connector.go new file mode 100644 index 0000000..68f01f5 --- /dev/null +++ b/pkg/registry/connector.go @@ -0,0 +1,26 @@ +package registry + +import ( + "github.com/go-gost/gost/pkg/connector" + "github.com/go-gost/gost/pkg/logger" +) + +type NewConnector func(opts ...connector.Option) connector.Connector + +type connectorRegistry struct { + registry +} + +func (r *connectorRegistry) Register(name string, v NewConnector) error { + if err := r.registry.Register(name, v); err != nil { + logger.Default().Fatal(err) + } + return nil +} + +func (r *connectorRegistry) Get(name string) NewConnector { + if v := r.registry.Get(name); v != nil { + return v.(NewConnector) + } + return nil +} diff --git a/pkg/registry/dialer.go b/pkg/registry/dialer.go new file mode 100644 index 0000000..9bc77ec --- /dev/null +++ b/pkg/registry/dialer.go @@ -0,0 +1,26 @@ +package registry + +import ( + "github.com/go-gost/gost/pkg/dialer" + "github.com/go-gost/gost/pkg/logger" +) + +type NewDialer func(opts ...dialer.Option) dialer.Dialer + +type dialerRegistry struct { + registry +} + +func (r *dialerRegistry) Register(name string, v NewDialer) error { + if err := r.registry.Register(name, v); err != nil { + logger.Default().Fatal(err) + } + return nil +} + +func (r *dialerRegistry) Get(name string) NewDialer { + if v := r.registry.Get(name); v != nil { + return v.(NewDialer) + } + return nil +} diff --git a/pkg/registry/handler.go b/pkg/registry/handler.go new file mode 100644 index 0000000..168dc74 --- /dev/null +++ b/pkg/registry/handler.go @@ -0,0 +1,26 @@ +package registry + +import ( + "github.com/go-gost/gost/pkg/handler" + "github.com/go-gost/gost/pkg/logger" +) + +type NewHandler func(opts ...handler.Option) handler.Handler + +type handlerRegistry struct { + registry +} + +func (r *handlerRegistry) Register(name string, v NewHandler) error { + if err := r.registry.Register(name, v); err != nil { + logger.Default().Fatal(err) + } + return nil +} + +func (r *handlerRegistry) Get(name string) NewHandler { + if v := r.registry.Get(name); v != nil { + return v.(NewHandler) + } + return nil +} diff --git a/pkg/registry/hosts.go b/pkg/registry/hosts.go index f1817e7..36a8856 100644 --- a/pkg/registry/hosts.go +++ b/pkg/registry/hosts.go @@ -2,52 +2,27 @@ package registry import ( "net" - "sync" "github.com/go-gost/gost/pkg/hosts" ) -var ( - hostsReg = &hostsRegistry{} -) - -func Hosts() *hostsRegistry { - return hostsReg -} - type hostsRegistry struct { - m sync.Map + registry } -func (r *hostsRegistry) Register(name string, hosts hosts.HostMapper) error { - if name == "" || hosts == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, hosts); loaded { - return ErrDup - } - - return nil -} - -func (r *hostsRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *hostsRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *hostsRegistry) Register(name string, v hosts.HostMapper) error { + return r.registry.Register(name, v) } func (r *hostsRegistry) Get(name string) hosts.HostMapper { - if name == "" { - return nil + if name != "" { + return &hostsWrapper{name: name, r: r} } - return &hostsWrapper{name: name} + return nil } func (r *hostsRegistry) get(name string) hosts.HostMapper { - if v, ok := r.m.Load(name); ok { + if v := r.registry.Get(name); v != nil { return v.(hosts.HostMapper) } return nil @@ -55,10 +30,11 @@ func (r *hostsRegistry) get(name string) hosts.HostMapper { type hostsWrapper struct { name string + r *hostsRegistry } func (w *hostsWrapper) Lookup(network, host string) ([]net.IP, bool) { - v := Hosts().get(w.name) + v := w.r.get(w.name) if v == nil { return nil, false } diff --git a/pkg/registry/listener.go b/pkg/registry/listener.go new file mode 100644 index 0000000..0e1b99b --- /dev/null +++ b/pkg/registry/listener.go @@ -0,0 +1,26 @@ +package registry + +import ( + "github.com/go-gost/gost/pkg/listener" + "github.com/go-gost/gost/pkg/logger" +) + +type NewListener func(opts ...listener.Option) listener.Listener + +type listenerRegistry struct { + registry +} + +func (r *listenerRegistry) Register(name string, v NewListener) error { + if err := r.registry.Register(name, v); err != nil { + logger.Default().Fatal(err) + } + return nil +} + +func (r *listenerRegistry) Get(name string) NewListener { + if v := r.registry.Get(name); v != nil { + return v.(NewListener) + } + return nil +} diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go index 5c0f494..8014446 100644 --- a/pkg/registry/registry.go +++ b/pkg/registry/registry.go @@ -2,70 +2,115 @@ package registry import ( "errors" + "sync" - "github.com/go-gost/gost/pkg/connector" - "github.com/go-gost/gost/pkg/dialer" - "github.com/go-gost/gost/pkg/handler" - "github.com/go-gost/gost/pkg/listener" - "github.com/go-gost/gost/pkg/logger" + "github.com/go-gost/gost/pkg/admission" + "github.com/go-gost/gost/pkg/auth" + "github.com/go-gost/gost/pkg/bypass" + "github.com/go-gost/gost/pkg/chain" + "github.com/go-gost/gost/pkg/hosts" + "github.com/go-gost/gost/pkg/resolver" + "github.com/go-gost/gost/pkg/service" ) var ( - ErrDup = errors.New("registry: duplicate instance") + ErrDup = errors.New("registry: duplicate object") ) -type NewListener func(opts ...listener.Option) listener.Listener -type NewHandler func(opts ...handler.Option) handler.Handler -type NewDialer func(opts ...dialer.Option) dialer.Dialer -type NewConnector func(opts ...connector.Option) connector.Connector - var ( - listeners = make(map[string]NewListener) - handlers = make(map[string]NewHandler) - dialers = make(map[string]NewDialer) - connectors = make(map[string]NewConnector) + listenerReg Registry[NewListener] = &listenerRegistry{} + handlerReg Registry[NewHandler] = &handlerRegistry{} + dialerReg Registry[NewDialer] = &dialerRegistry{} + connectorReg Registry[NewConnector] = &connectorRegistry{} + + serviceReg Registry[service.Service] = &serviceRegistry{} + chainReg Registry[chain.Chainer] = &chainRegistry{} + autherReg Registry[auth.Authenticator] = &autherRegistry{} + admissionReg Registry[admission.Admission] = &admissionRegistry{} + bypassReg Registry[bypass.Bypass] = &bypassRegistry{} + resolverReg Registry[resolver.Resolver] = &resolverRegistry{} + hostsReg Registry[hosts.HostMapper] = &hostsRegistry{} ) -func RegisterListener(name string, newf NewListener) { - if listeners[name] != nil { - logger.Default().Fatalf("register duplicate listener: %s", name) +type Registry[T any] interface { + Register(name string, v T) error + Unregister(name string) + IsRegistered(name string) bool + Get(name string) T +} + +type registry struct { + m sync.Map +} + +func (r *registry) Register(name string, v any) error { + if name == "" || v == nil { + return nil } - listeners[name] = newf -} - -func GetListener(name string) NewListener { - return listeners[name] -} - -func RegisterHandler(name string, newf NewHandler) { - if handlers[name] != nil { - logger.Default().Fatalf("register duplicate handler: %s", name) + if _, loaded := r.m.LoadOrStore(name, v); loaded { + return ErrDup } - handlers[name] = newf + + return nil } -func GetHandler(name string) NewHandler { - return handlers[name] +func (r *registry) Unregister(name string) { + r.m.Delete(name) } -func RegisterDialer(name string, newf NewDialer) { - if dialers[name] != nil { - logger.Default().Fatalf("register duplicate dialer: %s", name) +func (r *registry) IsRegistered(name string) bool { + _, ok := r.m.Load(name) + return ok +} + +func (r *registry) Get(name string) any { + if name == "" { + return nil } - dialers[name] = newf + v, _ := r.m.Load(name) + return v } -func GetDialer(name string) NewDialer { - return dialers[name] +func ListenerRegistry() Registry[NewListener] { + return listenerReg } -func RegiserConnector(name string, newf NewConnector) { - if connectors[name] != nil { - logger.Default().Fatalf("register duplicate connector: %s", name) - } - connectors[name] = newf +func HandlerRegistry() Registry[NewHandler] { + return handlerReg } -func GetConnector(name string) NewConnector { - return connectors[name] +func DialerRegistry() Registry[NewDialer] { + return dialerReg +} + +func ConnectorRegistry() Registry[NewConnector] { + return connectorReg +} + +func ServiceRegistry() Registry[service.Service] { + return serviceReg +} + +func ChainRegistry() Registry[chain.Chainer] { + return chainReg +} + +func AutherRegistry() Registry[auth.Authenticator] { + return autherReg +} + +func AdmissionRegistry() Registry[admission.Admission] { + return admissionReg +} + +func BypassRegistry() Registry[bypass.Bypass] { + return bypassReg +} + +func ResolverRegistry() Registry[resolver.Resolver] { + return resolverReg +} + +func HostsRegistry() Registry[hosts.HostMapper] { + return hostsReg } diff --git a/pkg/registry/resolver.go b/pkg/registry/resolver.go index 26c16f0..0ffa306 100644 --- a/pkg/registry/resolver.go +++ b/pkg/registry/resolver.go @@ -3,52 +3,27 @@ package registry import ( "context" "net" - "sync" "github.com/go-gost/gost/pkg/resolver" ) -var ( - resolverReg = &resolverRegistry{} -) - -func Resolver() *resolverRegistry { - return resolverReg -} - type resolverRegistry struct { - m sync.Map + registry } -func (r *resolverRegistry) Register(name string, resolver resolver.Resolver) error { - if name == "" || resolver == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, resolver); loaded { - return ErrDup - } - - return nil -} - -func (r *resolverRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *resolverRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *resolverRegistry) Register(name string, v resolver.Resolver) error { + return r.registry.Register(name, v) } func (r *resolverRegistry) Get(name string) resolver.Resolver { - if name == "" { - return nil + if name != "" { + return &resolverWrapper{name: name, r: r} } - return &resolverWrapper{name: name} + return nil } func (r *resolverRegistry) get(name string) resolver.Resolver { - if v, ok := r.m.Load(name); ok { + if v := r.registry.Get(name); v != nil { return v.(resolver.Resolver) } return nil @@ -56,10 +31,11 @@ func (r *resolverRegistry) get(name string) resolver.Resolver { type resolverWrapper struct { name string + r *resolverRegistry } func (w *resolverWrapper) Resolve(ctx context.Context, network, host string) ([]net.IP, error) { - r := Resolver().get(w.name) + r := w.r.get(w.name) if r == nil { return nil, resolver.ErrInvalid } diff --git a/pkg/registry/service.go b/pkg/registry/service.go index cf5e667..2e2ddd2 100644 --- a/pkg/registry/service.go +++ b/pkg/registry/service.go @@ -1,50 +1,20 @@ package registry import ( - "sync" - "github.com/go-gost/gost/pkg/service" ) -var ( - svcReg = &serviceRegistry{} -) - -func Service() *serviceRegistry { - return svcReg -} - type serviceRegistry struct { - m sync.Map + registry } -func (r *serviceRegistry) Register(name string, svc service.Service) error { - if name == "" || svc == nil { - return nil - } - if _, loaded := r.m.LoadOrStore(name, svc); loaded { - return ErrDup - } - - return nil -} - -func (r *serviceRegistry) Unregister(name string) { - r.m.Delete(name) -} - -func (r *serviceRegistry) IsRegistered(name string) bool { - _, ok := r.m.Load(name) - return ok +func (r *serviceRegistry) Register(name string, v service.Service) error { + return r.registry.Register(name, v) } func (r *serviceRegistry) Get(name string) service.Service { - if name == "" { - return nil + if v := r.registry.Get(name); v != nil { + return v.(service.Service) } - v, ok := r.m.Load(name) - if !ok { - return nil - } - return v.(service.Service) + return nil }