add notls option for SOCKS5
This commit is contained in:
parent
c5fc56d151
commit
d1043cff83
@ -243,6 +243,7 @@ type ConnectOptions struct {
|
||||
User *url.Userinfo
|
||||
Selector gosocks5.Selector
|
||||
UserAgent string
|
||||
NoTLS bool
|
||||
}
|
||||
|
||||
// ConnectOption allows a common way to set ConnectOptions.
|
||||
@ -282,3 +283,10 @@ func UserAgentConnectOption(ua string) ConnectOption {
|
||||
opts.UserAgent = ua
|
||||
}
|
||||
}
|
||||
|
||||
// NoTLSConnectOption specifies the SOCKS5 method without TLS.
|
||||
func NoTLSConnectOption(b bool) ConnectOption {
|
||||
return func(opts *ConnectOptions) {
|
||||
opts.NoTLS = b
|
||||
}
|
||||
}
|
||||
|
@ -220,6 +220,7 @@ func parseChainNode(ns string) (nodes []gost.Node, err error) {
|
||||
|
||||
node.ConnectOptions = []gost.ConnectOption{
|
||||
gost.UserAgentConnectOption(node.Get("agent")),
|
||||
gost.NoTLSConnectOption(node.GetBool("notls")),
|
||||
}
|
||||
|
||||
if host == "" {
|
||||
|
26
socks.go
26
socks.go
@ -42,6 +42,9 @@ type clientSelector struct {
|
||||
}
|
||||
|
||||
func (selector *clientSelector) Methods() []uint8 {
|
||||
if Debug {
|
||||
log.Log("[socks5] methods:", selector.methods)
|
||||
}
|
||||
return selector.methods
|
||||
}
|
||||
|
||||
@ -54,6 +57,9 @@ func (selector *clientSelector) Select(methods ...uint8) (method uint8) {
|
||||
}
|
||||
|
||||
func (selector *clientSelector) OnSelected(method uint8, conn net.Conn) (net.Conn, error) {
|
||||
if Debug {
|
||||
log.Log("[socks5] method selected:", method)
|
||||
}
|
||||
switch method {
|
||||
case MethodTLS:
|
||||
conn = tls.Client(conn, selector.TLSConfig)
|
||||
@ -215,7 +221,9 @@ func (c *socks5Connector) Connect(conn net.Conn, addr string, options ...Connect
|
||||
}
|
||||
cc, err := socks5Handshake(conn,
|
||||
selectorSocks5HandshakeOption(opts.Selector),
|
||||
userSocks5HandshakeOption(user))
|
||||
userSocks5HandshakeOption(user),
|
||||
noTLSSocks5HandshakeOption(opts.NoTLS),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -285,7 +293,9 @@ func (c *socks5BindConnector) Connect(conn net.Conn, addr string, options ...Con
|
||||
}
|
||||
cc, err := socks5Handshake(conn,
|
||||
selectorSocks5HandshakeOption(opts.Selector),
|
||||
userSocks5HandshakeOption(user))
|
||||
userSocks5HandshakeOption(user),
|
||||
noTLSSocks5HandshakeOption(opts.NoTLS),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -435,7 +445,9 @@ func (tr *socks5MuxBindTransporter) initSession(conn net.Conn, addr string, opts
|
||||
opts = &HandshakeOptions{}
|
||||
}
|
||||
|
||||
cc, err := socks5Handshake(conn, userSocks5HandshakeOption(opts.User))
|
||||
cc, err := socks5Handshake(conn,
|
||||
userSocks5HandshakeOption(opts.User),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -521,7 +533,9 @@ func (c *socks5UDPConnector) Connect(conn net.Conn, addr string, options ...Conn
|
||||
}
|
||||
cc, err := socks5Handshake(conn,
|
||||
selectorSocks5HandshakeOption(opts.Selector),
|
||||
userSocks5HandshakeOption(user))
|
||||
userSocks5HandshakeOption(user),
|
||||
noTLSSocks5HandshakeOption(opts.NoTLS),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -602,7 +616,9 @@ func (c *socks5UDPTunConnector) Connect(conn net.Conn, addr string, options ...C
|
||||
}
|
||||
cc, err := socks5Handshake(conn,
|
||||
selectorSocks5HandshakeOption(opts.Selector),
|
||||
userSocks5HandshakeOption(user))
|
||||
userSocks5HandshakeOption(user),
|
||||
noTLSSocks5HandshakeOption(opts.NoTLS),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user