From f74a6c15f560b410efa5a3266c7b456301b4d2d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 28 Sep 2023 15:23:34 +0800 Subject: [PATCH 1/4] Update dependencies --- shadowaead/protocol.go | 6 +++--- shadowaead_2022/protocol.go | 6 +++--- shadowaead_2022/relay.go | 4 ++-- shadowstream/protocol.go | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/shadowaead/protocol.go b/shadowaead/protocol.go index 12da043..213b818 100644 --- a/shadowaead/protocol.go +++ b/shadowaead/protocol.go @@ -7,15 +7,15 @@ import ( "io" "net" + "golang.org/x/crypto/chacha20poly1305" + "golang.org/x/crypto/hkdf" + "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing/common" "github.com/sagernet/sing/common/buf" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/rw" - - "golang.org/x/crypto/chacha20poly1305" - "golang.org/x/crypto/hkdf" ) var List = []string{ diff --git a/shadowaead_2022/protocol.go b/shadowaead_2022/protocol.go index 2686354..d554b68 100644 --- a/shadowaead_2022/protocol.go +++ b/shadowaead_2022/protocol.go @@ -17,6 +17,9 @@ import ( "sync/atomic" "time" + "golang.org/x/crypto/chacha20poly1305" + "lukechampine.com/blake3" + "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing-shadowsocks/shadowaead" "github.com/sagernet/sing/common" @@ -27,9 +30,6 @@ import ( N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/random" "github.com/sagernet/sing/common/rw" - - "golang.org/x/crypto/chacha20poly1305" - "lukechampine.com/blake3" ) const ( diff --git a/shadowaead_2022/relay.go b/shadowaead_2022/relay.go index bf01f97..df692cf 100644 --- a/shadowaead_2022/relay.go +++ b/shadowaead_2022/relay.go @@ -9,6 +9,8 @@ import ( "net" "os" + "lukechampine.com/blake3" + "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing-shadowsocks/shadowaead" "github.com/sagernet/sing/common/auth" @@ -18,8 +20,6 @@ import ( M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/udpnat" - - "lukechampine.com/blake3" ) var _ shadowsocks.Service = (*RelayService[int])(nil) diff --git a/shadowstream/protocol.go b/shadowstream/protocol.go index e1df300..5db31e2 100644 --- a/shadowstream/protocol.go +++ b/shadowstream/protocol.go @@ -10,13 +10,13 @@ import ( "net" "os" + "golang.org/x/crypto/chacha20" + "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing/common" "github.com/sagernet/sing/common/buf" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" - - "golang.org/x/crypto/chacha20" ) var List = []string{ From cb11676d2c4be2254cd1406e51dcd220f6a1cc67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 28 Sep 2023 15:24:14 +0800 Subject: [PATCH 2/4] Update dependencies --- shadowaead/protocol.go | 6 +++--- shadowaead_2022/protocol.go | 6 +++--- shadowaead_2022/relay.go | 4 ++-- shadowstream/protocol.go | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/shadowaead/protocol.go b/shadowaead/protocol.go index 213b818..12da043 100644 --- a/shadowaead/protocol.go +++ b/shadowaead/protocol.go @@ -7,15 +7,15 @@ import ( "io" "net" - "golang.org/x/crypto/chacha20poly1305" - "golang.org/x/crypto/hkdf" - "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing/common" "github.com/sagernet/sing/common/buf" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/rw" + + "golang.org/x/crypto/chacha20poly1305" + "golang.org/x/crypto/hkdf" ) var List = []string{ diff --git a/shadowaead_2022/protocol.go b/shadowaead_2022/protocol.go index d554b68..2686354 100644 --- a/shadowaead_2022/protocol.go +++ b/shadowaead_2022/protocol.go @@ -17,9 +17,6 @@ import ( "sync/atomic" "time" - "golang.org/x/crypto/chacha20poly1305" - "lukechampine.com/blake3" - "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing-shadowsocks/shadowaead" "github.com/sagernet/sing/common" @@ -30,6 +27,9 @@ import ( N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/random" "github.com/sagernet/sing/common/rw" + + "golang.org/x/crypto/chacha20poly1305" + "lukechampine.com/blake3" ) const ( diff --git a/shadowaead_2022/relay.go b/shadowaead_2022/relay.go index df692cf..bf01f97 100644 --- a/shadowaead_2022/relay.go +++ b/shadowaead_2022/relay.go @@ -9,8 +9,6 @@ import ( "net" "os" - "lukechampine.com/blake3" - "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing-shadowsocks/shadowaead" "github.com/sagernet/sing/common/auth" @@ -20,6 +18,8 @@ import ( M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" "github.com/sagernet/sing/common/udpnat" + + "lukechampine.com/blake3" ) var _ shadowsocks.Service = (*RelayService[int])(nil) diff --git a/shadowstream/protocol.go b/shadowstream/protocol.go index 5db31e2..e1df300 100644 --- a/shadowstream/protocol.go +++ b/shadowstream/protocol.go @@ -10,13 +10,13 @@ import ( "net" "os" - "golang.org/x/crypto/chacha20" - "github.com/sagernet/sing-shadowsocks" "github.com/sagernet/sing/common" "github.com/sagernet/sing/common/buf" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" + + "golang.org/x/crypto/chacha20" ) var List = []string{ From a05d8cf8750ae21ba0efa57ab94512e439b16ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 28 Sep 2023 15:24:29 +0800 Subject: [PATCH 3/4] Add service.NewConnection0 stub func --- shadowaead_2022/service.go | 5 +++-- shadowaead_2022/service_multi.go | 21 +++++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/shadowaead_2022/service.go b/shadowaead_2022/service.go index d751c9c..4dfdf97 100644 --- a/shadowaead_2022/service.go +++ b/shadowaead_2022/service.go @@ -31,8 +31,9 @@ import ( ) var ( - ErrNoPadding = E.New("bad request: missing payload or padding") - ErrBadPadding = E.New("bad request: damaged padding") + ErrInvalidRequest = E.New("invalid request") + ErrNoPadding = E.New("bad request: missing payload or padding") + ErrBadPadding = E.New("bad request: damaged padding") ) var _ shadowsocks.Service = (*Service)(nil) diff --git a/shadowaead_2022/service_multi.go b/shadowaead_2022/service_multi.go index 49351e3..bb635ce 100644 --- a/shadowaead_2022/service_multi.go +++ b/shadowaead_2022/service_multi.go @@ -7,6 +7,7 @@ import ( "crypto/rand" "encoding/base64" "encoding/binary" + "io" "math" "net" "os" @@ -115,16 +116,24 @@ func (s *MultiService[U]) UpdateUsersWithPasswords(userList []U, passwordList [] } func (s *MultiService[U]) NewConnection(ctx context.Context, conn net.Conn, metadata M.Metadata) error { - err := s.newConnection(ctx, conn, metadata) + err := s.NewConnection0(ctx, conn, metadata, conn, nil) if err != nil { err = &shadowsocks.ServerConnError{Conn: conn, Source: metadata.Source, Cause: err} } return err } -func (s *MultiService[U]) newConnection(ctx context.Context, conn net.Conn, metadata M.Metadata) error { +func (s *MultiService[U]) NewConnection0(ctx context.Context, conn net.Conn, metadata M.Metadata, handshakeReader io.Reader, handshakeSuccess func()) error { requestHeader := make([]byte, s.keySaltLength+aes.BlockSize+shadowaead.Overhead+RequestHeaderFixedChunkLength) - n, err := conn.Read(requestHeader) + var ( + n int + err error + ) + if handshakeSuccess != nil { + n, err = io.ReadFull(handshakeReader, requestHeader) + } else { + n, err = handshakeReader.Read(requestHeader) + } if err != nil { return err } else if n < len(requestHeader) { @@ -158,7 +167,11 @@ func (s *MultiService[U]) newConnection(ctx context.Context, conn net.Conn, meta user = u uPSK = s.uPSK[u] } else { - return E.New("invalid request") + return ErrInvalidRequest + } + + if handshakeSuccess != nil { + handshakeSuccess() } requestKey := SessionKey(uPSK, requestSalt, s.keySaltLength) From 14ec78fb5a7fcce62c2c8f01fb09d8d80c719829 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 21:35:01 +0000 Subject: [PATCH 4/4] Bump github.com/sagernet/sing from 0.2.11 to 0.2.12 Bumps [github.com/sagernet/sing](https://github.com/sagernet/sing) from 0.2.11 to 0.2.12. - [Commits](https://github.com/sagernet/sing/compare/v0.2.11...v0.2.12) --- updated-dependencies: - dependency-name: github.com/sagernet/sing dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d6bf151..adeac40 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/sagernet/sing-shadowsocks go 1.18 require ( - github.com/sagernet/sing v0.2.11 + github.com/sagernet/sing v0.2.12 golang.org/x/crypto v0.13.0 lukechampine.com/blake3 v1.2.1 ) diff --git a/go.sum b/go.sum index 0e0abdf..a9399f2 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/sagernet/sing v0.2.11 h1:mu0S6d8y/xSVxilOqRd32Fmire5SZz9nT3t9NEHwUMY= -github.com/sagernet/sing v0.2.11/go.mod h1:GQ673iPfUnkbK/dIPkfd1Xh1MjOGo36gkl/mkiHY7Jg= +github.com/sagernet/sing v0.2.12 h1:wwdLm3c4qvU4hW8tNtadh60V5z2FGlDZSYYGRzHhD74= +github.com/sagernet/sing v0.2.12/go.mod h1:GQ673iPfUnkbK/dIPkfd1Xh1MjOGo36gkl/mkiHY7Jg= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=