mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-06-29 16:33:05 +00:00
feat: add root browserDialers tags for dialerProxy integration
Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/808be5b1-7ed2-4309-87f1-18a808d6aba4 Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
97ad6cef43
commit
ca3cd5fb88
@@ -40,6 +40,20 @@ type dialerConf struct {
|
||||
*internet.MemoryStreamConfig
|
||||
}
|
||||
|
||||
type errorDialerClient struct {
|
||||
err error
|
||||
}
|
||||
|
||||
func (c *errorDialerClient) IsClosed() bool { return false }
|
||||
|
||||
func (c *errorDialerClient) OpenStream(context.Context, string, string, io.Reader, bool) (io.ReadCloser, net.Addr, net.Addr, error) {
|
||||
return nil, nil, nil, c.err
|
||||
}
|
||||
|
||||
func (c *errorDialerClient) PostPacket(context.Context, string, string, string, buf.MultiBuffer) error {
|
||||
return c.err
|
||||
}
|
||||
|
||||
var (
|
||||
globalDialerMap map[dialerConf]*XmuxManager
|
||||
globalDialerAccess sync.Mutex
|
||||
@@ -50,11 +64,22 @@ func getHTTPClient(ctx context.Context, dest net.Destination, streamSettings *in
|
||||
browserDialer := ""
|
||||
if streamSettings.SocketSettings != nil {
|
||||
browserDialer = streamSettings.SocketSettings.BrowserDialer
|
||||
if browserDialer == "" {
|
||||
if taggedDialer, ok := browser_dialer.GetAddressByTag(streamSettings.SocketSettings.DialerProxy); ok {
|
||||
browserDialer = taggedDialer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if browser_dialer.HasBrowserDialerWithAddress(browserDialer) && realityConfig == nil {
|
||||
transportConfig := streamSettings.ProtocolSettings.(*Config)
|
||||
if transportConfig.Mode != "auto" && transportConfig.Mode != "packet-up" {
|
||||
return &errorDialerClient{
|
||||
err: errors.New("dialerProxy/browserDialer with XHTTP only supports modes \"auto\" or \"packet-up\", got: \"", transportConfig.Mode, "\""),
|
||||
}, nil
|
||||
}
|
||||
return &BrowserDialerClient{
|
||||
transportConfig: streamSettings.ProtocolSettings.(*Config),
|
||||
transportConfig: transportConfig,
|
||||
browserDialer: browserDialer,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user