From f021d8faf89d1865806ea629f01be7445edc2191 Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Tue, 19 May 2026 14:29:34 +0000 Subject: [PATCH] Fix SOCKS5_ENABLED being ignored --- internal/socks5/loop.go | 24 +++++++++++++++++++++++- internal/socks5/server.go | 4 ++++ internal/socks5/settings.go | 1 + 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/internal/socks5/loop.go b/internal/socks5/loop.go index 904cb570..ada4051f 100644 --- a/internal/socks5/loop.go +++ b/internal/socks5/loop.go @@ -4,6 +4,8 @@ import ( "context" "sync" "time" + + "github.com/qdm12/goservices" ) type Loop struct { @@ -45,7 +47,13 @@ func run(ctx context.Context, done chan<- error, settings Settings) { logger := settings.Logger for ctx.Err() == nil { - server := newServer(settings) + var server goservices.Service + if settings.Enabled { + server = newServer(settings) + } else { + server = new(noopService) + } + errorCh, err := server.Start(ctx) if err != nil { logger.Warnf("failed starting SOCKS5 server: %s", err) @@ -83,3 +91,17 @@ func waitBeforeRetry(ctx context.Context) { case <-ctx.Done(): } } + +type noopService struct{} + +func (s noopService) Start(_ context.Context) (runErr <-chan error, err error) { + return nil, nil //nolint:nilnil +} + +func (s noopService) Stop() error { + return nil +} + +func (s noopService) String() string { + return "noop service" +} diff --git a/internal/socks5/server.go b/internal/socks5/server.go index 26f6f250..3c2412d2 100644 --- a/internal/socks5/server.go +++ b/internal/socks5/server.go @@ -32,6 +32,10 @@ func newServer(settings Settings) *server { } } +func (s *server) String() string { + return "SOCKS5 server" +} + func (s *server) Start(ctx context.Context) (runErr <-chan error, err error) { s.socksConnCtx, s.socksConnCancel = context.WithCancel(context.Background()) config := &net.ListenConfig{} diff --git a/internal/socks5/settings.go b/internal/socks5/settings.go index 77b7c9ed..f88e940c 100644 --- a/internal/socks5/settings.go +++ b/internal/socks5/settings.go @@ -1,6 +1,7 @@ package socks5 type Settings struct { + Enabled bool Username string Password string Address string