update config
This commit is contained in:
@ -5,6 +5,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
@ -21,6 +22,7 @@ func init() {
|
||||
}
|
||||
|
||||
type socks4Connector struct {
|
||||
user *url.Userinfo
|
||||
md metadata
|
||||
logger logger.Logger
|
||||
}
|
||||
@ -32,6 +34,7 @@ func NewConnector(opts ...connector.Option) connector.Connector {
|
||||
}
|
||||
|
||||
return &socks4Connector{
|
||||
user: options.User,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
@ -96,7 +99,11 @@ func (c *socks4Connector) Connect(ctx context.Context, conn net.Conn, network, a
|
||||
defer conn.SetDeadline(time.Time{})
|
||||
}
|
||||
|
||||
req := gosocks4.NewRequest(gosocks4.CmdConnect, addr, nil)
|
||||
var userid []byte
|
||||
if c.user != nil && c.user.Username() != "" {
|
||||
userid = []byte(c.user.Username())
|
||||
}
|
||||
req := gosocks4.NewRequest(gosocks4.CmdConnect, addr, userid)
|
||||
if err := req.Write(conn); err != nil {
|
||||
c.logger.Error(err)
|
||||
return nil, err
|
||||
|
@ -1,7 +1,6 @@
|
||||
package v4
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
mdata "github.com/go-gost/gost/pkg/metadata"
|
||||
@ -9,20 +8,15 @@ import (
|
||||
|
||||
type metadata struct {
|
||||
connectTimeout time.Duration
|
||||
User *url.Userinfo
|
||||
disable4a bool
|
||||
}
|
||||
|
||||
func (c *socks4Connector) parseMetadata(md mdata.Metadata) (err error) {
|
||||
const (
|
||||
connectTimeout = "timeout"
|
||||
user = "user"
|
||||
disable4a = "disable4a"
|
||||
)
|
||||
|
||||
if v := mdata.GetString(md, user); v != "" {
|
||||
c.md.User = url.User(v)
|
||||
}
|
||||
c.md.connectTimeout = mdata.GetDuration(md, connectTimeout)
|
||||
c.md.disable4a = mdata.GetBool(md, disable4a)
|
||||
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/gosocks5"
|
||||
@ -23,6 +24,7 @@ func init() {
|
||||
|
||||
type socks5Connector struct {
|
||||
selector gosocks5.Selector
|
||||
user *url.Userinfo
|
||||
logger logger.Logger
|
||||
md metadata
|
||||
}
|
||||
@ -34,6 +36,7 @@ func NewConnector(opts ...connector.Option) connector.Connector {
|
||||
}
|
||||
|
||||
return &socks5Connector{
|
||||
user: options.User,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
@ -49,7 +52,7 @@ func (c *socks5Connector) Init(md md.Metadata) (err error) {
|
||||
gosocks5.MethodUserPass,
|
||||
},
|
||||
logger: c.logger,
|
||||
User: c.md.User,
|
||||
User: c.user,
|
||||
TLSConfig: c.md.tlsConfig,
|
||||
}
|
||||
if !c.md.noTLS {
|
||||
|
@ -2,8 +2,6 @@ package v5
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
mdata "github.com/go-gost/gost/pkg/metadata"
|
||||
@ -11,7 +9,6 @@ import (
|
||||
|
||||
type metadata struct {
|
||||
connectTimeout time.Duration
|
||||
User *url.Userinfo
|
||||
tlsConfig *tls.Config
|
||||
noTLS bool
|
||||
}
|
||||
@ -19,19 +16,9 @@ type metadata struct {
|
||||
func (c *socks5Connector) parseMetadata(md mdata.Metadata) (err error) {
|
||||
const (
|
||||
connectTimeout = "timeout"
|
||||
user = "user"
|
||||
noTLS = "notls"
|
||||
)
|
||||
|
||||
if v := mdata.GetString(md, user); v != "" {
|
||||
ss := strings.SplitN(v, ":", 2)
|
||||
if len(ss) == 1 {
|
||||
c.md.User = url.User(ss[0])
|
||||
} else {
|
||||
c.md.User = url.UserPassword(ss[0], ss[1])
|
||||
}
|
||||
}
|
||||
|
||||
c.md.connectTimeout = mdata.GetDuration(md, connectTimeout)
|
||||
c.md.noTLS = mdata.GetBool(md, noTLS)
|
||||
|
||||
|
Reference in New Issue
Block a user