From 971b1ac8fcc5f93d3a24cf72e9d297cd1fb2e8ed Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Sat, 23 May 2026 00:33:45 +0300 Subject: [PATCH] =?UTF-8?q?chore:=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= =?UTF-8?q?=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/client/main.go | 24 ++++++++++---------- cmd/server/main.go | 2 +- internal/client/dnsdial/doh.go | 6 ++--- internal/config/config.go | 14 ++++++------ internal/logx/logx.go | 2 +- internal/proxy/bondclient/bondclient.go | 4 +++- internal/proxy/bondserver/bondserver.go | 4 +++- internal/proxy/tcpfwd/tcpfwd.go | 15 ++++++------ internal/proxy/tcpfwdserver/tcpfwdserver.go | 1 - internal/proxy/udprelay/run.go | 10 ++++---- internal/stats/stats.go | 1 - internal/transport/turndial/turndial.go | 2 +- internal/transport/turndial/turndial_test.go | 2 +- 13 files changed, 44 insertions(+), 43 deletions(-) diff --git a/cmd/client/main.go b/cmd/client/main.go index 21558be..b381371 100644 --- a/cmd/client/main.go +++ b/cmd/client/main.go @@ -122,14 +122,14 @@ func main() { BondHandler: bondH.Handle, } tcpParams := &tcpfwd.Params{ - Host: cfg.TURN.Host, - Port: cfg.TURN.Port, - Link: cfg.VK.Link, + Host: cfg.TURN.Host, + Port: cfg.TURN.Port, + Link: cfg.VK.Link, TransportUDP: cfg.TURN.TransportUDP, - ObfKey: cfg.Obf.Key, - GetCreds: tcpfwd.GetCredsFunc(vkAuth.GetCredentials), - KCPProfile: cfg.KCP.Profile, - KCPFEC: cfg.KCP.FEC, + ObfKey: cfg.Obf.Key, + GetCreds: tcpfwd.GetCredsFunc(vkAuth.GetCredentials), + KCPProfile: cfg.KCP.Profile, + KCPFEC: cfg.KCP.FEC, } if err := tcpfwd.Run(ctx, tcpDeps, tcpParams, peer, cfg.Proxy.Listen, cfg.TURN.N, cfg.Proxy.Mode == config.ProxyModeTCPFwdBond); err != nil { logger.Errorf("tcpfwd: %v", err) @@ -143,12 +143,12 @@ func main() { HandshakeSem: make(chan struct{}, dtlsHandshakeConcurrency), } udpParams := &udprelay.Params{ - Host: cfg.TURN.Host, - Port: cfg.TURN.Port, - Link: cfg.VK.Link, + Host: cfg.TURN.Host, + Port: cfg.TURN.Port, + Link: cfg.VK.Link, TransportUDP: cfg.TURN.TransportUDP, - ObfKey: cfg.Obf.Key, - GetCreds: udprelay.GetCredsFunc(vkAuth.GetCredentials), + ObfKey: cfg.Obf.Key, + GetCreds: udprelay.GetCredsFunc(vkAuth.GetCredentials), } if err := udprelay.Run(ctx, udpDtlsDialer, vkAuth, logger, &connectedStreams, udpParams, peer, cfg.Proxy.Listen, cfg.TURN.N); err != nil { if errors.Is(err, udprelay.ErrFatal) { diff --git a/cmd/server/main.go b/cmd/server/main.go index 9ee9900..9b81e93 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -11,6 +11,7 @@ import ( "syscall" "time" + "github.com/pion/dtls/v3" "github.com/samosvalishe/btp/internal/config" "github.com/samosvalishe/btp/internal/logx" "github.com/samosvalishe/btp/internal/proxy/bondserver" @@ -18,7 +19,6 @@ import ( "github.com/samosvalishe/btp/internal/proxy/udpserver" "github.com/samosvalishe/btp/internal/transport/dtlsdial" "github.com/samosvalishe/btp/internal/wire/srtpmimicry" - "github.com/pion/dtls/v3" ) // version is populated at build time via -ldflags "-X main.version=...". diff --git a/internal/client/dnsdial/doh.go b/internal/client/dnsdial/doh.go index b2c607b..cd6d0de 100644 --- a/internal/client/dnsdial/doh.go +++ b/internal/client/dnsdial/doh.go @@ -364,9 +364,9 @@ func dohForwarderDial(r *DohResolver) dialFunc { } const ( - DNSModePlain = "plain" - DNSModeDoH = "doh" - DNSModeAuto = "auto" + DNSModePlain = "plain" + DNSModeDoH = "doh" + DNSModeAuto = "auto" ) var udpDNSServersPtr atomic.Pointer[[]string] diff --git a/internal/config/config.go b/internal/config/config.go index a91e368..431c639 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -20,7 +20,7 @@ import ( ) const ( - dnsModePlain = "plain" + dnsModePlain = "plain" dnsModeDoH = "doh" dnsModeAuto = "auto" defaultStreamsPerCache = 10 @@ -39,10 +39,10 @@ const ( // TURNOpts — опции TURN-сервера (куда и как подключаться). type TURNOpts struct { - Host string // -turn: переопределить IP/host TURN-сервера - Port string // -port: переопределить порт TURN + Host string // -turn: переопределить IP/host TURN-сервера + Port string // -port: переопределить порт TURN TransportUDP bool // -transport udp: подключение к TURN по UDP (по умолчанию TCP/TLS) - N int // -n: число TURN-потоков (только клиент) + N int // -n: число TURN-потоков (только клиент) } // ObfOpts — опции обфускации TURN-payload (SRTP-mimicry). @@ -135,10 +135,10 @@ func ParseClient(args []string, errOut io.Writer) (*Client, error) { c := &Client{ TURN: TURNOpts{ - Host: *host, - Port: *port, + Host: *host, + Port: *port, TransportUDP: *transportFlag == "udp", - N: *n, + N: *n, }, Obf: ObfOpts{ Mode: *wrapMode, diff --git a/internal/logx/logx.go b/internal/logx/logx.go index a0d691c..16e7360 100644 --- a/internal/logx/logx.go +++ b/internal/logx/logx.go @@ -38,7 +38,7 @@ func (l *stdLogger) Debugf(format string, v ...any) { func (*stdLogger) Infof(format string, v ...any) { log.Printf("[INFO] "+format, v...) } func (*stdLogger) Warnf(format string, v ...any) { log.Printf("[WARN] "+format, v...) } func (*stdLogger) Errorf(format string, v ...any) { log.Printf("[ERROR] "+format, v...) } -func (l *stdLogger) DebugEnabled() bool { return l.debug } +func (l *stdLogger) DebugEnabled() bool { return l.debug } // OrNop возвращает l, если он не nil, иначе Nop. Используется в конструкторах // пакетов, принимающих nullable Logger. diff --git a/internal/proxy/bondclient/bondclient.go b/internal/proxy/bondclient/bondclient.go index e6e47e4..b2f731a 100644 --- a/internal/proxy/bondclient/bondclient.go +++ b/internal/proxy/bondclient/bondclient.go @@ -234,7 +234,9 @@ func writeBondFrameToNextLane(ctx context.Context, lanes []*lane, typ byte, seq func (h *Handler) copyBondToTCP(ctx context.Context, connID uint64, tcpConn net.Conn, recvCh <-chan bondframe.Frame) { chunks := bondframe.Reorder(ctx, tcpConn, recvCh, bondframe.ReorderHooks{ - OnOverflow: func(_ int) { h.Deps.log().Errorf("[bond %d] pending map overflow (>%d), closing", connID, bondframe.PendingCap) }, + OnOverflow: func(_ int) { + h.Deps.log().Errorf("[bond %d] pending map overflow (>%d), closing", connID, bondframe.PendingCap) + }, OnUnknownType: func(typ byte) { h.Deps.log().Errorf("[bond %d] unknown frame type %d", connID, typ) }, OnWriteError: func(err error) { h.Deps.log().Errorf("[bond %d] local TCP write error: %v", connID, err) }, OnCloseWrite: h.Deps.log().Debugf, diff --git a/internal/proxy/bondserver/bondserver.go b/internal/proxy/bondserver/bondserver.go index 088cea4..23ab3bf 100644 --- a/internal/proxy/bondserver/bondserver.go +++ b/internal/proxy/bondserver/bondserver.go @@ -266,7 +266,9 @@ func (c *serverConn) run() { func (c *serverConn) copyBondToBackend(backendConn net.Conn) { chunks := bondframe.Reorder(c.ctx, backendConn, c.recvCh, bondframe.ReorderHooks{ - OnOverflow: func(_ int) { c.deps.log().Errorf("[bond %d] pending map overflow (>%d), closing", c.id, bondframe.PendingCap) }, + OnOverflow: func(_ int) { + c.deps.log().Errorf("[bond %d] pending map overflow (>%d), closing", c.id, bondframe.PendingCap) + }, OnUnknownType: func(typ byte) { c.deps.log().Errorf("[bond %d] unknown frame type %d", c.id, typ) }, OnWriteError: func(err error) { c.deps.log().Errorf("[bond %d] backend write error: %v", c.id, err) }, OnCloseWrite: c.deps.log().Debugf, diff --git a/internal/proxy/tcpfwd/tcpfwd.go b/internal/proxy/tcpfwd/tcpfwd.go index 31f70a3..72a0c56 100644 --- a/internal/proxy/tcpfwd/tcpfwd.go +++ b/internal/proxy/tcpfwd/tcpfwd.go @@ -23,14 +23,14 @@ type GetCredsFunc = common.GetCredsFunc // Params — конфигурация TURN/wrap для пула. type Params struct { - Host string - Port string - Link string + Host string + Port string + Link string TransportUDP bool - ObfKey []byte - GetCreds GetCredsFunc - KCPProfile kcptun.Profile - KCPFEC kcptun.FEC + ObfKey []byte + GetCreds GetCredsFunc + KCPProfile kcptun.Profile + KCPFEC kcptun.FEC } // BondHandler распределяет одно принятое TCP-соединение по всем активным сессиям пула. @@ -278,4 +278,3 @@ func createSmuxSession(ctx context.Context, deps *Deps, params *Params, peer *ne return smuxSess, cleanup, nil } - diff --git a/internal/proxy/tcpfwdserver/tcpfwdserver.go b/internal/proxy/tcpfwdserver/tcpfwdserver.go index cc90883..592abab 100644 --- a/internal/proxy/tcpfwdserver/tcpfwdserver.go +++ b/internal/proxy/tcpfwdserver/tcpfwdserver.go @@ -129,4 +129,3 @@ func (c *prefixedConn) Read(p []byte) (int, error) { } return c.Conn.Read(p) } - diff --git a/internal/proxy/udprelay/run.go b/internal/proxy/udprelay/run.go index 4239ff2..47b9235 100644 --- a/internal/proxy/udprelay/run.go +++ b/internal/proxy/udprelay/run.go @@ -33,12 +33,12 @@ type AuthHandler interface { // Params — per-stream конфигурация TURN/wrap, общая для DTLS и TURN циклов. type Params struct { - Host string - Port string - Link string + Host string + Port string + Link string TransportUDP bool - ObfKey []byte - GetCreds GetCredsFunc + ObfKey []byte + GetCreds GetCredsFunc } // ErrFatal возвращается из Run, когда поток встречает условие, требующее diff --git a/internal/stats/stats.go b/internal/stats/stats.go index 946da29..3e988fe 100644 --- a/internal/stats/stats.go +++ b/internal/stats/stats.go @@ -121,7 +121,6 @@ func (c *CountingConn) Read(p []byte) (int, error) { return n, err } - func (c *CountingConn) Write(p []byte) (int, error) { n, err := c.Conn.Write(p) c.Stats.AddTx(n) diff --git a/internal/transport/turndial/turndial.go b/internal/transport/turndial/turndial.go index f871487..1bb62db 100644 --- a/internal/transport/turndial/turndial.go +++ b/internal/transport/turndial/turndial.go @@ -13,9 +13,9 @@ import ( "net" "time" - "github.com/samosvalishe/btp/internal/netconn" "github.com/pion/logging" "github.com/pion/turn/v5" + "github.com/samosvalishe/btp/internal/netconn" ) // Config конфигурирует один вызов Open. diff --git a/internal/transport/turndial/turndial_test.go b/internal/transport/turndial/turndial_test.go index 017fde1..6137f99 100644 --- a/internal/transport/turndial/turndial_test.go +++ b/internal/transport/turndial/turndial_test.go @@ -26,7 +26,7 @@ func TestOpen_HostOverrideApplied(t *testing.T) { peer := &net.UDPAddr{IP: net.ParseIP("1.2.3.4"), Port: 1} ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) defer cancel() - _, err := Open(ctx, Config{HostOverride: "127.0.0.1", PortOverride: "1", TransportUDP: false,DialTimeout: 200 * time.Millisecond}, peer, "u", "p", "8.8.8.8:443") + _, err := Open(ctx, Config{HostOverride: "127.0.0.1", PortOverride: "1", TransportUDP: false, DialTimeout: 200 * time.Millisecond}, peer, "u", "p", "8.8.8.8:443") if err == nil { t.Fatal("expected dial error against unreachable :1") }