mirror of
https://github.com/SagerNet/sing-box.git
synced 2025-09-09 13:04:06 +08:00
use client config
This commit is contained in:
parent
740c1f305c
commit
9d81d8a2b9
@ -64,12 +64,15 @@ func NewWSC(ctx context.Context, router adapter.Router, logger log.ContextLogger
|
||||
}
|
||||
}
|
||||
|
||||
outbound.client = &wsc.Client{
|
||||
outbound.client, err = wsc.NewClient(wsc.ClientConfig{
|
||||
Auth: options.Auth,
|
||||
Host: serverAddr.String(),
|
||||
Path: options.Path,
|
||||
TLS: outbound.tlsConfig,
|
||||
Dialer: outbound.dialer,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return outbound, nil
|
||||
|
@ -16,6 +16,14 @@ import (
|
||||
var _ adapter.WSCClientTransport = &Client{}
|
||||
|
||||
type Client struct {
|
||||
auth string
|
||||
host string
|
||||
path string
|
||||
tls tls.Config
|
||||
dialer N.Dialer
|
||||
}
|
||||
|
||||
type ClientConfig struct {
|
||||
Auth string
|
||||
Host string
|
||||
Path string
|
||||
@ -23,6 +31,16 @@ type Client struct {
|
||||
Dialer N.Dialer
|
||||
}
|
||||
|
||||
func NewClient(params ClientConfig) (*Client, error) {
|
||||
return &Client{
|
||||
auth: params.Auth,
|
||||
host: params.Host,
|
||||
path: params.Path,
|
||||
tls: params.TLS,
|
||||
dialer: params.Dialer,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (cli *Client) DialContext(ctx context.Context, network string, endpoint string) (net.Conn, error) {
|
||||
return cli.newConn(ctx, network, endpoint)
|
||||
}
|
||||
@ -43,13 +61,13 @@ func (cli *Client) newWSConn(ctx context.Context, network string, endpoint strin
|
||||
|
||||
dialer := ws.Dialer{
|
||||
NetDial: func(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||
conn, err := cli.Dialer.DialContext(ctx, N.NetworkTCP, metadata.ParseSocksaddr(addr))
|
||||
conn, err := cli.dialer.DialContext(ctx, N.NetworkTCP, metadata.ParseSocksaddr(addr))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if cli.TLS != nil {
|
||||
conn, err = tls.ClientHandshake(ctx, conn, cli.TLS)
|
||||
if cli.tls != nil {
|
||||
conn, err = tls.ClientHandshake(ctx, conn, cli.tls)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -76,7 +94,7 @@ func (cli *Client) cleanup(ctx context.Context) error {
|
||||
Transport: &http.Transport{
|
||||
TLSClientConfig: tlsConfig,
|
||||
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||
return cli.Dialer.DialContext(ctx, network, metadata.ParseSocksaddr(addr))
|
||||
return cli.dialer.DialContext(ctx, network, metadata.ParseSocksaddr(addr))
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -97,27 +115,27 @@ func (cli *Client) cleanup(ctx context.Context) error {
|
||||
|
||||
func (cli *Client) newURL(scheme string, path string, endpoint string, network string) (url.URL, *tls.STDConfig, error) {
|
||||
var tlsConfig *tls.STDConfig = nil
|
||||
if cli.TLS != nil {
|
||||
if cli.tls != nil {
|
||||
scheme += "s"
|
||||
var err error
|
||||
tlsConfig, err = cli.TLS.Config()
|
||||
tlsConfig, err = cli.tls.Config()
|
||||
if err != nil {
|
||||
return url.URL{}, nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if path == "" {
|
||||
path = cli.Path
|
||||
path = cli.path
|
||||
}
|
||||
|
||||
pURL := url.URL{
|
||||
Scheme: scheme,
|
||||
Host: cli.Host,
|
||||
Host: cli.host,
|
||||
Path: path,
|
||||
RawQuery: "",
|
||||
}
|
||||
pQuery := pURL.Query()
|
||||
pQuery.Set("auth", cli.Auth)
|
||||
pQuery.Set("auth", cli.auth)
|
||||
if endpoint != "" {
|
||||
pQuery.Set("ep", endpoint)
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import (
|
||||
)
|
||||
|
||||
func TestPacketPayload(t *testing.T) {
|
||||
text := "salam chetori?"
|
||||
text := "TEST DATA"
|
||||
|
||||
payload := packetConnPayload{
|
||||
addrPort: netip.MustParseAddrPort("9.9.9.9:53"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user