dialer.go 906 B

123456789101112131415161718192021222324252627282930
  1. package dialer
  2. import (
  3. "github.com/sagernet/sing/common"
  4. N "github.com/sagernet/sing/common/network"
  5. "github.com/sagernet/sing-box/adapter"
  6. C "github.com/sagernet/sing-box/constant"
  7. "github.com/sagernet/sing-box/option"
  8. )
  9. func New(router adapter.Router, options option.DialerOptions) N.Dialer {
  10. if options.Detour == "" {
  11. return NewDefault(options)
  12. } else {
  13. return NewDetour(router, options.Detour)
  14. }
  15. }
  16. func NewOutbound(router adapter.Router, options option.OutboundDialerOptions) N.Dialer {
  17. dialer := New(router, options.DialerOptions)
  18. domainStrategy := C.DomainStrategy(options.DomainStrategy)
  19. if domainStrategy != C.DomainStrategyAsIS || options.Detour == "" && !C.CGO_ENABLED {
  20. dialer = NewResolveDialer(router, dialer, domainStrategy)
  21. }
  22. if options.OverrideOptions.IsValid() {
  23. dialer = NewOverride(dialer, common.PtrValueOrDefault(options.OverrideOptions))
  24. }
  25. return dialer
  26. }