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