From 38b34030bc0664b958f9226a51d9400258e5d852 Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Fri, 26 Jun 2026 00:58:58 +0800 Subject: [PATCH] chore: use Go1.26 --- Dockerfile | 2 +- dns/message.go | 2 +- proxy/anytls/padding.go | 2 +- proxy/anytls/settings.go | 2 +- proxy/anytls/stream.go | 5 +---- proxy/conn.go | 6 ++---- proxy/obfs/tls.go | 5 +---- proxy/ss/cipher/shadowstream/stream.go | 5 +---- proxy/vmess/aead.go | 5 +---- proxy/vmess/chunk.go | 10 ++-------- proxy/ws/frame.go | 5 +---- 11 files changed, 13 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index e3231d8..10dbebb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build Stage -FROM golang:1.24-alpine AS build-env +FROM golang:1.26-alpine AS build-env ADD . /src RUN apk --no-cache add git \ && cd /src && go build -v -ldflags "-s -w" diff --git a/dns/message.go b/dns/message.go index ec53613..863f987 100644 --- a/dns/message.go +++ b/dns/message.go @@ -443,7 +443,7 @@ func (m *Message) UnmarshalRR(start int, rr *RR) (n int, err error) { // MarshalDomainTo marshals domain string struct to []byte and write to w. func MarshalDomainTo(w io.Writer, domain string) (n int, err error) { nn := 0 - for _, seg := range strings.Split(domain, ".") { + for seg := range strings.SplitSeq(domain, ".") { nn, err = w.Write([]byte{byte(len(seg))}) if err != nil { return diff --git a/proxy/anytls/padding.go b/proxy/anytls/padding.go index c636612..40ea50b 100644 --- a/proxy/anytls/padding.go +++ b/proxy/anytls/padding.go @@ -20,7 +20,7 @@ func parsePaddingScheme(raw string) (paddingScheme, error) { raw = defaultPaddingScheme } ps := paddingScheme{raw: raw, authRange: [2]int{0, 0}} - for _, line := range strings.Split(raw, "\n") { + for line := range strings.SplitSeq(raw, "\n") { line = strings.TrimSpace(line) if line == "" { continue diff --git a/proxy/anytls/settings.go b/proxy/anytls/settings.go index 917d305..d1e6af5 100644 --- a/proxy/anytls/settings.go +++ b/proxy/anytls/settings.go @@ -26,7 +26,7 @@ func encodeSettings(m map[string]string) []byte { func parseSettings(data []byte) map[string]string { out := map[string]string{} - for _, line := range strings.Split(string(data), "\n") { + for line := range strings.SplitSeq(string(data), "\n") { if line == "" { continue } diff --git a/proxy/anytls/stream.go b/proxy/anytls/stream.go index 4490e2b..cb74e28 100644 --- a/proxy/anytls/stream.go +++ b/proxy/anytls/stream.go @@ -49,10 +49,7 @@ func (st *stream) Write(p []byte) (int, error) { } written := 0 for len(p) > 0 { - n := len(p) - if n > maxFrameData { - n = maxFrameData - } + n := min(len(p), maxFrameData) if err := st.s.writeFrame(frame{command: cmdPSH, streamID: st.id, data: p[:n]}); err != nil { return written, err } diff --git a/proxy/conn.go b/proxy/conn.go index 841d580..ad5b975 100644 --- a/proxy/conn.go +++ b/proxy/conn.go @@ -57,12 +57,10 @@ func Relay(left, right net.Conn) error { var wg sync.WaitGroup var wait = 5 * time.Second - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { _, err1 = Copy(right, left) right.SetReadDeadline(time.Now().Add(wait)) // unblock read on right - }() + }) _, err = Copy(left, right) left.SetReadDeadline(time.Now().Add(wait)) // unblock read on left diff --git a/proxy/obfs/tls.go b/proxy/obfs/tls.go index 9548964..dce5398 100644 --- a/proxy/obfs/tls.go +++ b/proxy/obfs/tls.go @@ -104,10 +104,7 @@ func (c *TLSObfsConn) Read(b []byte) (int, error) { c.leftBytes = int(binary.BigEndian.Uint16(c.buf[:lenSize])) } - readLen := len(b) - if readLen > c.leftBytes { - readLen = c.leftBytes - } + readLen := min(len(b), c.leftBytes) m, err := c.reader.Read(b[:readLen]) if err != nil { diff --git a/proxy/ss/cipher/shadowstream/stream.go b/proxy/ss/cipher/shadowstream/stream.go index 6d5dde8..f04b3fe 100644 --- a/proxy/ss/cipher/shadowstream/stream.go +++ b/proxy/ss/cipher/shadowstream/stream.go @@ -24,10 +24,7 @@ func (w *writer) Write(p []byte) (n int, err error) { defer pool.PutBuffer(buf) for nw := 0; n < len(p) && err == nil; n += nw { - end := n + len(buf) - if end > len(p) { - end = len(p) - } + end := min(n+len(buf), len(p)) w.XORKeyStream(buf, p[n:end]) nw, err = w.Writer.Write(buf[:end-n]) } diff --git a/proxy/vmess/aead.go b/proxy/vmess/aead.go index acd6b0e..fc9d3b7 100644 --- a/proxy/vmess/aead.go +++ b/proxy/vmess/aead.go @@ -39,10 +39,7 @@ func (w *aeadWriter) Write(b []byte) (n int, err error) { nonce := w.nonce[:w.NonceSize()] for left := len(b); left != 0; { - writeLen = left + w.Overhead() - if writeLen > chunkSize { - writeLen = chunkSize - } + writeLen = min(left+w.Overhead(), chunkSize) dataLen = writeLen - w.Overhead() w.chunkSizeEncoder.Encode(uint16(writeLen), lenBuf) diff --git a/proxy/vmess/chunk.go b/proxy/vmess/chunk.go index bfb3849..41d2f5e 100644 --- a/proxy/vmess/chunk.go +++ b/proxy/vmess/chunk.go @@ -23,10 +23,7 @@ func ChunkedWriter(w io.Writer, chunkSizeEncoder ChunkSizeEncoder) io.Writer { func (w *chunkedWriter) Write(p []byte) (n int, err error) { var dataLen int for left := len(p); left != 0; { - dataLen = left - if dataLen > chunkSize { - dataLen = chunkSize - } + dataLen = min(left, chunkSize) w.chunkSizeEncoder.Encode(uint16(dataLen), w.buf) if _, err = (&net.Buffers{w.buf[:], p[n : n+dataLen]}).WriteTo(w.Writer); err != nil { break @@ -69,10 +66,7 @@ func (r *chunkedReader) Read(p []byte) (int, error) { } } - readLen := len(p) - if readLen > r.left { - readLen = r.left - } + readLen := min(len(p), r.left) n, err := r.Reader.Read(p[:readLen]) if err != nil { diff --git a/proxy/ws/frame.go b/proxy/ws/frame.go index ba982f9..d901d8e 100644 --- a/proxy/ws/frame.go +++ b/proxy/ws/frame.go @@ -151,10 +151,7 @@ func (r *frameReader) Read(b []byte) (int, error) { } } - readLen := int64(len(b)) - if readLen > r.left { - readLen = r.left - } + readLen := min(int64(len(b)), r.left) m, err := io.ReadFull(r.Reader, b[:readLen]) if err != nil {