@@ -9,47 +9,55 @@ import (
99
1010 "github.com/sagernet/sing-box/adapter"
1111 "github.com/sagernet/sing-box/adapter/inbound"
12- boxDialer "github.com/sagernet/sing-box/common/dialer"
12+ "github.com/sagernet/sing-box/common/dialer"
1313 C "github.com/sagernet/sing-box/constant"
1414 "github.com/sagernet/sing-box/log"
1515 "github.com/sagernet/sing-box/option"
1616 "github.com/sagernet/sing-box/route/rule"
17- cloudflared "github.com/sagernet/sing-cloudflared"
18- tun "github.com/sagernet/sing-tun"
17+ "github.com/sagernet/sing-cloudflared"
18+ "github.com/sagernet/sing-tun"
1919 "github.com/sagernet/sing/common/bufio"
2020 E "github.com/sagernet/sing/common/exceptions"
2121 M "github.com/sagernet/sing/common/metadata"
2222 N "github.com/sagernet/sing/common/network"
2323 "github.com/sagernet/sing/common/pipe"
24+ "github.com/sagernet/sing/service"
2425)
2526
2627func RegisterInbound (registry * inbound.Registry ) {
2728 inbound .Register [option.CloudflaredInboundOptions ](registry , C .TypeCloudflared , NewInbound )
2829}
2930
3031func NewInbound (ctx context.Context , router adapter.Router , logger log.ContextLogger , tag string , options option.CloudflaredInboundOptions ) (adapter.Inbound , error ) {
31- controlDialer , err := boxDialer .NewWithOptions (boxDialer.Options {
32- Context : ctx ,
33- Options : options .ControlDialer ,
34- RemoteIsDomain : true ,
32+ controlDialer , err := dialer .NewWithOptions (dialer.Options {
33+ Context : ctx ,
34+ Options : options .ControlDialer ,
35+ RemoteIsDomain : true ,
36+ ResolverOnDetour : true ,
3537 })
3638 if err != nil {
3739 return nil , E .Cause (err , "build cloudflared control dialer" )
3840 }
39- tunnelDialer , err := boxDialer .NewWithOptions (boxDialer.Options {
40- Context : ctx ,
41- Options : options .TunnelDialer ,
42- RemoteIsDomain : true ,
41+ tunnelDialer , err := dialer .NewWithOptions (dialer.Options {
42+ Context : ctx ,
43+ Options : options .TunnelDialer ,
44+ RemoteIsDomain : true ,
45+ ResolverOnDetour : true ,
4346 })
4447 if err != nil {
4548 return nil , E .Cause (err , "build cloudflared tunnel dialer" )
4649 }
50+ dnsRouter := service.FromContext [adapter.DNSRouter ](ctx )
51+ controlResolver := newRouterResolver (dnsRouter , controlDialer .(dialer.ResolveDialer ).QueryOptions ())
52+ tunnelResolver := newRouterResolver (dnsRouter , tunnelDialer .(dialer.ResolveDialer ).QueryOptions ())
4753
4854 service , err := cloudflared .NewService (cloudflared.ServiceOptions {
4955 Logger : logger ,
5056 ConnectionDialer : & routerDialer {router : router , tag : tag },
5157 ControlDialer : controlDialer ,
5258 TunnelDialer : tunnelDialer ,
59+ ControlResolver : controlResolver ,
60+ TunnelResolver : tunnelResolver ,
5361 ICMPHandler : & icmpRouterHandler {router : router , logger : logger , tag : tag },
5462 ConnContext : func (connCtx context.Context ) context.Context {
5563 return adapter .WithContext (connCtx , & adapter.InboundContext {
0 commit comments