72 lines
2.1 KiB
Go
72 lines
2.1 KiB
Go
|
|
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))
|
|||
|
|
}
|