Skip to content
This repository was archived by the owner on May 6, 2024. It is now read-only.

Commit bf28eea

Browse files
authored
refactor: update SDK (#120)
1 parent ce82343 commit bf28eea

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.18
55
require (
66
github.com/Jigsaw-Code/choir v1.0.1
77
github.com/Jigsaw-Code/getsni v1.0.0
8-
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230331001049-8dfb0a409773
8+
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230503153405-c99d818ff195
99
github.com/crazy-max/xgo v0.26.0
1010
github.com/eycorsican/go-tun2socks v1.16.11
1111
golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c

go.sum

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ github.com/Jigsaw-Code/choir v1.0.1 h1:WeRt6aTn5L+MtRNqRJ+J1RKgoO8CyXXt1dtZghy2K
22
github.com/Jigsaw-Code/choir v1.0.1/go.mod h1:c4Wd1y1PeCajZbKZV+ZmcFGMDoduyqMCEMHW5iqzWXI=
33
github.com/Jigsaw-Code/getsni v1.0.0 h1:OUTIu7wTBi/7DMX+RkZrN7XhU3UDevTEsAWK4gsqSwE=
44
github.com/Jigsaw-Code/getsni v1.0.0/go.mod h1:Ps0Ec3fVMKLyAItVbMKoQFq1lDjtFQXZ+G5nRNNh/QE=
5-
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230330230827-540cd1d1c908 h1:PJDJM4jJHEogCYj1UrnQkJxvfJf3ngppF0TT8WUYZE4=
6-
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230330230827-540cd1d1c908/go.mod h1:vxtE3esaFy5UG6TnipLyWx0esUQBy9LBXHLQx+SoER8=
7-
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230331001049-8dfb0a409773 h1:WQux6erDaNy4DpgLzHVB4mfdd2OiiKQC8HhfyelkAe0=
8-
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230331001049-8dfb0a409773/go.mod h1:vxtE3esaFy5UG6TnipLyWx0esUQBy9LBXHLQx+SoER8=
5+
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230503153405-c99d818ff195 h1:9qSHRhYNHgnxzJPFotkiAhMcJGXJFJ6j1TWZKWgHwzQ=
6+
github.com/Jigsaw-Code/outline-internal-sdk v0.0.0-20230503153405-c99d818ff195/go.mod h1:vxtE3esaFy5UG6TnipLyWx0esUQBy9LBXHLQx+SoER8=
97
github.com/crazy-max/xgo v0.26.0 h1:vK4OfeXJoDGvnjlzdTCgPbeWLKENbzj84DTpU/VRonM=
108
github.com/crazy-max/xgo v0.26.0/go.mod h1:m/aqfKaN/cYzfw+Pzk7Mk0tkmShg3/rCS4Zdhdugi4o=
119
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=

outline/shadowsocks/client.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import (
3131
"github.com/Jigsaw-Code/outline-go-tun2socks/outline/neterrors"
3232
"github.com/Jigsaw-Code/outline-internal-sdk/transport"
3333
"github.com/Jigsaw-Code/outline-internal-sdk/transport/shadowsocks"
34-
"github.com/Jigsaw-Code/outline-internal-sdk/transport/shadowsocks/client"
3534
"github.com/eycorsican/go-tun2socks/common/log"
3635
)
3736

@@ -43,7 +42,7 @@ type Client = outline.Client
4342
// Deprecated: Please use NewClientFromJSON.
4443
func NewClient(config *Config) (*Client, error) {
4544
if config == nil {
46-
return nil, fmt.Errorf("Shadowsocks configuration is required")
45+
return nil, fmt.Errorf("shadowsocks configuration is required")
4746
}
4847
return newShadowsocksClient(config.Host, config.Port, config.CipherName, config.Password, config.Prefix)
4948
}
@@ -53,12 +52,12 @@ func NewClient(config *Config) (*Client, error) {
5352
func NewClientFromJSON(configJSON string) (*Client, error) {
5453
config, err := parseConfigFromJSON(configJSON)
5554
if err != nil {
56-
return nil, fmt.Errorf("Failed to parse Shadowsocks configuration JSON: %w", err)
55+
return nil, fmt.Errorf("failed to parse Shadowsocks configuration JSON: %w", err)
5756
}
5857
var prefixBytes []byte = nil
5958
if len(config.Prefix) > 0 {
6059
if p, err := utf8.DecodeUTF8CodepointsToRawBytes(config.Prefix); err != nil {
61-
return nil, fmt.Errorf("Failed to parse prefix string: %w", err)
60+
return nil, fmt.Errorf("failed to parse prefix string: %w", err)
6261
} else {
6362
prefixBytes = p
6463
}
@@ -68,34 +67,33 @@ func NewClientFromJSON(configJSON string) (*Client, error) {
6867

6968
func newShadowsocksClient(host string, port int, cipherName, password string, prefix []byte) (*Client, error) {
7069
if err := validateConfig(host, port, cipherName, password); err != nil {
71-
return nil, fmt.Errorf("Invalid Shadowsocks configuration: %w", err)
70+
return nil, fmt.Errorf("invalid Shadowsocks configuration: %w", err)
7271
}
7372

7473
// TODO: consider using net.LookupIP to get a list of IPs, and add logic for optimal selection.
7574
proxyIP, err := net.ResolveIPAddr("ip", host)
7675
if err != nil {
77-
return nil, fmt.Errorf("Failed to resolve proxy address: %w", err)
76+
return nil, fmt.Errorf("failed to resolve proxy address: %w", err)
7877
}
79-
proxyTCPEndpoint := transport.TCPEndpoint{RemoteAddr: net.TCPAddr{IP: proxyIP.IP, Port: port}}
80-
proxyUDPEndpoint := transport.UDPEndpoint{RemoteAddr: net.UDPAddr{IP: proxyIP.IP, Port: port}}
78+
proxyAddress := net.JoinHostPort(proxyIP.String(), fmt.Sprint(port))
8179

82-
cipher, err := shadowsocks.NewCipher(cipherName, password)
80+
cryptoKey, err := shadowsocks.NewEncryptionKey(cipherName, password)
8381
if err != nil {
84-
return nil, fmt.Errorf("Failed to create Shadowsocks cipher: %w", err)
82+
return nil, fmt.Errorf("failed to create Shadowsocks cipher: %w", err)
8583
}
8684

87-
streamDialer, err := client.NewShadowsocksStreamDialer(proxyTCPEndpoint, cipher)
85+
streamDialer, err := shadowsocks.NewStreamDialer(&transport.TCPEndpoint{Address: proxyAddress}, cryptoKey)
8886
if err != nil {
89-
return nil, fmt.Errorf("Failed to create StreamDialer: %w", err)
87+
return nil, fmt.Errorf("failed to create StreamDialer: %w", err)
9088
}
9189
if len(prefix) > 0 {
9290
log.Debugf("Using salt prefix: %s", string(prefix))
93-
streamDialer.SetTCPSaltGenerator(client.NewPrefixSaltGenerator(prefix))
91+
streamDialer.SaltGenerator = shadowsocks.NewPrefixSaltGenerator(prefix)
9492
}
9593

96-
packetListener, err := client.NewShadowsocksPacketListener(proxyUDPEndpoint, cipher)
94+
packetListener, err := shadowsocks.NewPacketListener(&transport.UDPEndpoint{Address: proxyAddress}, cryptoKey)
9795
if err != nil {
98-
return nil, fmt.Errorf("Failed to create PacketListener: %w", err)
96+
return nil, fmt.Errorf("failed to create PacketListener: %w", err)
9997
}
10098

10199
return &outline.Client{StreamDialer: streamDialer, PacketListener: packetListener}, nil

0 commit comments

Comments
 (0)