Skip to content

Commit 79f3057

Browse files
committed
Migrate shadowsocks-2022 to protocol library
1 parent c375b14 commit 79f3057

File tree

8 files changed

+39
-72
lines changed

8 files changed

+39
-72
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@ require (
1616
github.com/pelletier/go-toml v1.9.5
1717
github.com/pires/go-proxyproto v0.6.2
1818
github.com/refraction-networking/utls v1.1.0
19-
github.com/sagernet/sing v0.0.0-20220523024450-2216901ec429
19+
github.com/sagernet/sing v0.0.0-20220525123305-5b49366f6e34
20+
github.com/sagernet/sing-shadowsocks v0.0.0-20220525123814-48809b0a9949
2021
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb
2122
github.com/stretchr/testify v1.7.1
2223
github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e
2324
github.com/xtls/go v0.0.0-20210920065950-d4af136d3672
2425
go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd
2526
golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898
26-
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2
27-
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
27+
golang.org/x/net v0.0.0-20220524220425-1d687d428aca
28+
golang.org/x/sync v0.0.0-20220513210516-0976fa681c29
2829
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a
2930
google.golang.org/grpc v1.46.2
3031
google.golang.org/protobuf v1.28.0

go.sum

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,12 @@ github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr
174174
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3/go.mod h1:HgjTstvQsPGkxUsCd2KWxErBblirPizecHcpD3ffK+s=
175175
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
176176
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
177-
github.com/sagernet/sing v0.0.0-20220523024450-2216901ec429 h1:31vx64WHtycaqw0bGLl6ImJvmHsXqHoPzkuwKmTqbx8=
178-
github.com/sagernet/sing v0.0.0-20220523024450-2216901ec429/go.mod h1:7aFl1bLxdWLIhptc1DwhMWpRfT62rJYzKPYuYlzYs5w=
177+
github.com/sagernet/sing v0.0.0-20220525123305-5b49366f6e34 h1:/FfHfteLZo5mOtZbYOx/9ymDEYxlwBuM5iHO9reVe/E=
178+
github.com/sagernet/sing v0.0.0-20220525123305-5b49366f6e34/go.mod h1:w2HnJzXKHpD6F5Z/9XlSD4qbcpHY2RSZuQnFzqgELMg=
179+
github.com/sagernet/sing-shadowsocks v0.0.0-20220525121912-9e43a1c42021 h1:pPIc8xricCQNMuAoOlblcGcrMYmc/pfcY1fwK62iSmo=
180+
github.com/sagernet/sing-shadowsocks v0.0.0-20220525121912-9e43a1c42021/go.mod h1:aaKmw93taQ3PwzZA7RWNnFH9CmUme2PU/1E4/srxs0k=
181+
github.com/sagernet/sing-shadowsocks v0.0.0-20220525123814-48809b0a9949 h1:zVl44h3nvP9w8La5BAmFwhuCvWT/Mfx9sVpuv+A/fe4=
182+
github.com/sagernet/sing-shadowsocks v0.0.0-20220525123814-48809b0a9949/go.mod h1:kc9GdaD70dle09qJLrOjkX1fw6rVVGdouV4uzMMNlmc=
179183
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb h1:XfLJSPIOUX+osiMraVgIrMR27uMXnRJWGm1+GL8/63U=
180184
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg=
181185
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@@ -260,8 +264,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
260264
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
261265
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
262266
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
263-
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 h1:NWy5+hlRbC7HK+PmcXVUmW1IMyFce7to56IUvhUFm7Y=
264-
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
267+
golang.org/x/net v0.0.0-20220524220425-1d687d428aca h1:xTaFYiPROfpPhqrfTIDXj0ri1SpfueYT951s4bAuDO8=
268+
golang.org/x/net v0.0.0-20220524220425-1d687d428aca/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
265269
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
266270
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
267271
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -274,8 +278,9 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
274278
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
275279
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
276280
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
277-
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
278281
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
282+
golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 h1:w8s32wxx3sY+OjLlv9qltkLU5yvJzxjjgiHWLjdIcw4=
283+
golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
279284
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
280285
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
281286
golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=

infra/conf/shadowsocks.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import (
44
"strings"
55

66
"github.com/golang/protobuf/proto"
7+
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
78
C "github.com/sagernet/sing/common"
8-
"github.com/sagernet/sing/protocol/shadowsocks/shadowaead_2022"
99
"github.com/xtls/xray-core/common/protocol"
1010
"github.com/xtls/xray-core/common/serial"
1111
"github.com/xtls/xray-core/proxy/shadowsocks"

proxy/shadowsocks_2022/config.pb.go

Lines changed: 14 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

proxy/shadowsocks_2022/config.proto

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,4 @@ message ClientConfig {
3535
uint32 port = 2;
3636
string method = 3;
3737
string key = 4;
38-
bool reduced_iv_head_entropy = 5;
3938
}

proxy/shadowsocks_2022/inbound.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@ package shadowsocks_2022
22

33
import (
44
"context"
5-
"encoding/base64"
65

6+
"github.com/sagernet/sing-shadowsocks"
7+
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
78
C "github.com/sagernet/sing/common"
89
B "github.com/sagernet/sing/common/buf"
910
"github.com/sagernet/sing/common/bufio"
1011
M "github.com/sagernet/sing/common/metadata"
1112
N "github.com/sagernet/sing/common/network"
12-
"github.com/sagernet/sing/common/random"
13-
"github.com/sagernet/sing/protocol/shadowsocks"
14-
"github.com/sagernet/sing/protocol/shadowsocks/shadowaead_2022"
1513
"github.com/xtls/xray-core/common"
1614
"github.com/xtls/xray-core/common/buf"
1715
"github.com/xtls/xray-core/common/log"
@@ -51,14 +49,7 @@ func NewServer(ctx context.Context, config *ServerConfig) (*Inbound, error) {
5149
if !C.Contains(shadowaead_2022.List, config.Method) {
5250
return nil, newError("unsupported method ", config.Method)
5351
}
54-
if config.Key == "" {
55-
return nil, newError("missing key")
56-
}
57-
psk, err := base64.StdEncoding.DecodeString(config.Key)
58-
if err != nil {
59-
return nil, newError("parse config").Base(err)
60-
}
61-
service, err := shadowaead_2022.NewService(config.Method, psk, "", random.Default, 500, inbound)
52+
service, err := shadowaead_2022.NewServiceWithPassword(config.Method, config.Key, 500, inbound)
6253
if err != nil {
6354
return nil, newError("create service").Base(err)
6455
}

proxy/shadowsocks_2022/inbound_multi.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import (
44
"context"
55
"encoding/base64"
66

7+
"github.com/sagernet/sing-shadowsocks"
8+
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
79
B "github.com/sagernet/sing/common/buf"
810
"github.com/sagernet/sing/common/bufio"
911
M "github.com/sagernet/sing/common/metadata"
1012
N "github.com/sagernet/sing/common/network"
11-
"github.com/sagernet/sing/common/random"
12-
"github.com/sagernet/sing/protocol/shadowsocks"
13-
"github.com/sagernet/sing/protocol/shadowsocks/shadowaead_2022"
1413
"github.com/xtls/xray-core/common"
1514
"github.com/xtls/xray-core/common/buf"
1615
"github.com/xtls/xray-core/common/log"
@@ -44,6 +43,7 @@ func NewMultiServer(ctx context.Context, config *MultiUserServerConfig) (*MultiU
4443
}
4544
inbound := &MultiUserInbound{
4645
networks: networks,
46+
users: config.Users,
4747
}
4848
if config.Key == "" {
4949
return nil, newError("missing key")
@@ -52,7 +52,7 @@ func NewMultiServer(ctx context.Context, config *MultiUserServerConfig) (*MultiU
5252
if err != nil {
5353
return nil, newError("parse config").Base(err)
5454
}
55-
service, err := shadowaead_2022.NewMultiService[int](config.Method, psk, random.Default, 500, inbound)
55+
service, err := shadowaead_2022.NewMultiService[int](config.Method, psk, 500, inbound)
5656
if err != nil {
5757
return nil, newError("create service").Base(err)
5858
}

proxy/shadowsocks_2022/outbound.go

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,16 @@ package shadowsocks_2022
22

33
import (
44
"context"
5-
"encoding/base64"
65
"io"
76
"runtime"
8-
"strings"
97
"time"
108

9+
"github.com/sagernet/sing-shadowsocks"
10+
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
1111
C "github.com/sagernet/sing/common"
1212
B "github.com/sagernet/sing/common/buf"
1313
"github.com/sagernet/sing/common/bufio"
1414
N "github.com/sagernet/sing/common/network"
15-
"github.com/sagernet/sing/common/random"
16-
"github.com/sagernet/sing/protocol/shadowsocks"
17-
"github.com/sagernet/sing/protocol/shadowsocks/shadowaead_2022"
1815
"github.com/xtls/xray-core/common"
1916
"github.com/xtls/xray-core/common/buf"
2017
"github.com/xtls/xray-core/common/net"
@@ -48,21 +45,7 @@ func NewClient(ctx context.Context, config *ClientConfig) (*Outbound, error) {
4845
if config.Key == "" {
4946
return nil, newError("missing psk")
5047
}
51-
var pskList [][]byte
52-
for _, ks := range strings.Split(config.Key, ":") {
53-
psk, err := base64.StdEncoding.DecodeString(ks)
54-
if err != nil {
55-
return nil, newError("decode key ", ks).Base(err)
56-
}
57-
pskList = append(pskList, psk)
58-
}
59-
var rng io.Reader = random.Default
60-
if config.ReducedIvHeadEntropy {
61-
rng = &shadowsocks.ReducedEntropyReader{
62-
Reader: rng,
63-
}
64-
}
65-
method, err := shadowaead_2022.New(config.Method, pskList, "", rng)
48+
method, err := shadowaead_2022.NewWithPassword(config.Method, config.Key)
6649
if err != nil {
6750
return nil, newError("create method").Base(err)
6851
}

0 commit comments

Comments
 (0)