package starnet import ( "context" "crypto/tls" "net" "time" ) // SetTimeout 设置请求总超时时间 // timeout > 0: 为本次请求注入 context 超时 // timeout = 0: 不额外设置请求总超时 // timeout < 0: 禁用 starnet 默认总超时 func (r *Request) SetTimeout(timeout time.Duration) *Request { return r.applyMutation(mutateTimeout(timeout)) } // SetDialTimeout 设置连接超时时间 func (r *Request) SetDialTimeout(timeout time.Duration) *Request { return r.applyMutation(mutateDialTimeout(timeout)) } // SetProxy 设置代理 func (r *Request) SetProxy(proxy string) *Request { return r.applyMutation(mutateProxy(proxy)) } // SetDialFunc 设置自定义 Dial 函数 func (r *Request) SetDialFunc(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Request { return r.applyMutation(mutateDialFunc(fn)) } // SetTLSConfig 设置 TLS 配置 func (r *Request) SetTLSConfig(tlsConfig *tls.Config) *Request { return r.applyMutation(mutateTLSConfig(tlsConfig)) } // SetTLSServerName 设置显式 TLS ServerName/SNI。 func (r *Request) SetTLSServerName(serverName string) *Request { return r.applyMutation(mutateTLSServerName(serverName)) } // SetSkipTLSVerify 设置是否跳过 TLS 验证 func (r *Request) SetSkipTLSVerify(skip bool) *Request { return r.applyMutation(mutateSkipTLSVerify(skip)) } // SetCustomIP 设置自定义 IP(直接指定 IP,跳过 DNS) func (r *Request) SetCustomIP(ips []string) *Request { return r.applyMutation(mutateCustomIP(ips)) } // AddCustomIP 添加自定义 IP func (r *Request) AddCustomIP(ip string) *Request { return r.applyMutation(mutateAddCustomIP(ip)) } // SetCustomDNS 设置自定义 DNS 服务器 func (r *Request) SetCustomDNS(dnsServers []string) *Request { return r.applyMutation(mutateCustomDNS(dnsServers)) } // AddCustomDNS 添加自定义 DNS 服务器 func (r *Request) AddCustomDNS(dns string) *Request { return r.applyMutation(mutateAddCustomDNS(dns)) } // SetLookupFunc 设置自定义 DNS 解析函数 func (r *Request) SetLookupFunc(fn func(ctx context.Context, host string) ([]net.IPAddr, error)) *Request { return r.applyMutation(mutateLookupFunc(fn)) }