fastdialer

package
v0.0.68 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2024 License: MIT Imports: 32 Imported by: 135

Documentation

Overview

fastdialer is a dialer package containing a dns/tls cache layer

Index

Constants

View Source
const ResolverFilePath = "/etc/resolv.conf"

ResolverFilePath in unix file os

Variables

View Source
var (
	MaxDNSCacheSize int64
	MaxDNSItems     = 1024
)

option to disable ztls fallback in case of handshake error reads from env variable DISABLE_ZTLS_FALLBACK

View Source
var (
	CouldNotConnectError  = errors.New("could not connect to any address found for host")
	NoAddressFoundError   = errors.New("no address found for host")
	NoAddressAllowedError = errors.New("denied address found for host")
	NoPortSpecifiedError  = errors.New("port was not specified")
	MalformedIP6Error     = errors.New("malformed IPv6 address")
	ResolveHostError      = errors.New("could not resolve host")
	NoTLSHistoryError     = errors.New("no tls data history available")
	NoTLSDataError        = errors.New("no tls data found for the key")
	NoDNSDataError        = errors.New("no data found")
	AsciiConversionError  = errors.New("could not convert hostname to ASCII")
)
View Source
var DefaultOptions = Options{
	BaseResolvers:   DefaultResolvers,
	MaxRetries:      5,
	HostsFile:       true,
	ResolversFile:   true,
	CacheType:       Disk,
	DialerTimeout:   10 * time.Second,
	DialerKeepAlive: 10 * time.Second,
}

DefaultOptions of the cache

View Source
var DefaultResolvers = []string{
	"1.1.1.1:53",
	"1.0.0.1:53",
	"8.8.8.8:53",
	"8.8.4.4:53",
}

DefaultResolvers trusted

View Source
var (
	MaxResolverEntries = 4096
)

Functions

func AsTLSConfig added in v0.0.15

func AsTLSConfig(ztlsConfig *ztls.Config) (*tls.Config, error)

func AsZTLSConfig added in v0.0.15

func AsZTLSConfig(tlsConfig *tls.Config) (*ztls.Config, error)

func HandleResolverLine added in v0.0.9

func HandleResolverLine(raw string) (ip string)

HandleLine a resolver file line

func IsTLS13 added in v0.0.15

func IsTLS13(config interface{}) bool

Types

type CacheType added in v0.0.13

type CacheType uint8
const (
	Memory CacheType = iota
	Disk
	Hybrid
)

type ContextOption added in v0.0.16

type ContextOption string
const (
	// SniName to use in tls connection
	SniName ContextOption = "sni-name"
	IP      ContextOption = "ip"
)

type Dialer

type Dialer struct {
	// contains filtered or unexported fields
}

Dialer structure containing data information

func NewDialer

func NewDialer(options Options) (*Dialer, error)

NewDialer instance

func (*Dialer) Close

func (d *Dialer) Close()

Close instance and cleanups

func (*Dialer) Dial

func (d *Dialer) Dial(ctx context.Context, network, address string) (conn net.Conn, err error)

Dial function compatible with net/http

func (*Dialer) DialTLS added in v0.0.6

func (d *Dialer) DialTLS(ctx context.Context, network, address string) (conn net.Conn, err error)

DialTLS with encrypted connection

func (*Dialer) DialTLSWithConfig added in v0.0.13

func (d *Dialer) DialTLSWithConfig(ctx context.Context, network, address string, config *tls.Config) (conn net.Conn, err error)

DialTLS with encrypted connection

func (*Dialer) DialTLSWithConfigImpersonate added in v0.0.29

func (d *Dialer) DialTLSWithConfigImpersonate(ctx context.Context, network, address string, config *tls.Config, impersonate impersonate.Strategy, identity *impersonate.Identity) (conn net.Conn, err error)

DialTLSWithConfigImpersonate dials tls with impersonation

func (*Dialer) DialZTLS added in v0.0.15

func (d *Dialer) DialZTLS(ctx context.Context, network, address string) (conn net.Conn, err error)

DialZTLS with encrypted connection using ztls

func (*Dialer) DialZTLSWithConfig added in v0.0.15

func (d *Dialer) DialZTLSWithConfig(ctx context.Context, network, address string, config *ztls.Config) (conn net.Conn, err error)

DialZTLSWithConfig dials ztls with config

func (*Dialer) GetDNSData

func (d *Dialer) GetDNSData(hostname string) (*retryabledns.DNSData, error)

GetDNSData for the given hostname

func (*Dialer) GetDNSDataFromCache

func (d *Dialer) GetDNSDataFromCache(hostname string) (*retryabledns.DNSData, error)

GetDNSDataFromCache cached by the resolver

func (*Dialer) GetDialedIP

func (d *Dialer) GetDialedIP(hostname string) string

GetDialedIP returns the ip dialed by the HTTP client

func (*Dialer) GetTLSData added in v0.0.13

func (d *Dialer) GetTLSData(hostname string) (*cryptoutil.TLSData, error)

GetTLSData returns the tls data for a hostname

type DiskDBType added in v0.0.13

type DiskDBType uint8
const (
	LevelDB DiskDBType = iota
	Pogreb
)

type Options

type Options struct {
	BaseResolvers            []string
	MaxRetries               int
	HostsFile                bool
	ResolversFile            bool
	EnableFallback           bool
	Allow                    []string
	Deny                     []string
	AllowSchemeList          []string
	DenySchemeList           []string
	AllowPortList            []int
	DenyPortList             []int
	CacheType                CacheType
	CacheMemoryMaxItems      int // used by Memory cache type
	DiskDbType               DiskDBType
	WithDialerHistory        bool
	WithCleanup              bool
	WithTLSData              bool
	DialerTimeout            time.Duration
	DialerKeepAlive          time.Duration
	Dialer                   *net.Dialer
	ProxyDialer              *proxy.Dialer
	WithZTLS                 bool
	SNIName                  string
	OnBeforeDial             func(hostname, IP, port string)
	OnInvalidTarget          func(hostname, IP, port string)
	OnDialCallback           func(hostname, IP string)
	DisableZtlsFallback      bool
	WithNetworkPolicyOptions *networkpolicy.Options
	Logger                   *log.Logger // optional logger to log errors(like hostfile init error)
}

Directories

Path Synopsis
ja3
ja3 is a package for creating JA3 fingerprints from TLS clients.
ja3 is a package for creating JA3 fingerprints from TLS clients.
impersonate
impersonate package contains strategy to impersonate a client and define an alias for the internal client tls spefications
impersonate package contains strategy to impersonate a client and define an alias for the internal client tls spefications
metafiles are metadata files related to networking like /etc/hosts etc
metafiles are metadata files related to networking like /etc/hosts etc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL