mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-07-02 17:58:46 +00:00
feat: add browserDialer under sockopt and wire transports
Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/56665ec5-84ea-4bc3-a812-2e699e0e880d Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
b4f08981be
commit
c2116bb869
@@ -15,6 +15,7 @@ import (
|
||||
// BrowserDialerClient implements splithttp.DialerClient in terms of browser dialer
|
||||
type BrowserDialerClient struct {
|
||||
transportConfig *Config
|
||||
browserDialer string
|
||||
}
|
||||
|
||||
func (c *BrowserDialerClient) IsClosed() bool {
|
||||
@@ -33,7 +34,7 @@ func (c *BrowserDialerClient) OpenStream(ctx context.Context, url string, sessio
|
||||
|
||||
c.transportConfig.FillStreamRequest(request, sessionId, "")
|
||||
|
||||
conn, err := browser_dialer.DialGet(request.URL.String(), request.Header, request.Cookies())
|
||||
conn, err := browser_dialer.DialGetWithAddress(c.browserDialer, request.URL.String(), request.Header, request.Cookies())
|
||||
dummyAddr := &net.IPAddr{}
|
||||
if err != nil {
|
||||
return nil, dummyAddr, dummyAddr, err
|
||||
@@ -62,7 +63,7 @@ func (c *BrowserDialerClient) PostPacket(ctx context.Context, url string, sessio
|
||||
}
|
||||
}
|
||||
|
||||
err = browser_dialer.DialPacket(method, request.URL.String(), request.Header, request.Cookies(), bytes)
|
||||
err = browser_dialer.DialPacketWithAddress(c.browserDialer, method, request.URL.String(), request.Header, request.Cookies(), bytes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -47,9 +47,16 @@ var (
|
||||
|
||||
func getHTTPClient(ctx context.Context, dest net.Destination, streamSettings *internet.MemoryStreamConfig) (DialerClient, *XmuxClient) {
|
||||
realityConfig := reality.ConfigFromStreamSettings(streamSettings)
|
||||
browserDialer := ""
|
||||
if streamSettings.SocketSettings != nil {
|
||||
browserDialer = streamSettings.SocketSettings.BrowserDialer
|
||||
}
|
||||
|
||||
if browser_dialer.HasBrowserDialer() && realityConfig == nil {
|
||||
return &BrowserDialerClient{transportConfig: streamSettings.ProtocolSettings.(*Config)}, nil
|
||||
if browser_dialer.HasBrowserDialerWithAddress(browserDialer) && realityConfig == nil {
|
||||
return &BrowserDialerClient{
|
||||
transportConfig: streamSettings.ProtocolSettings.(*Config),
|
||||
browserDialer: browserDialer,
|
||||
}, nil
|
||||
}
|
||||
|
||||
globalDialerAccess.Lock()
|
||||
|
||||
Reference in New Issue
Block a user