package proxy

import "code.google.com/p/go.net/proxy"

proxy包提供了多种代理网络的协议。

Index

Variables

var Direct = direct{}

Direct是一个直接的代理:它直接建立网络连接。

type Auth

type Auth struct {
    User, Password string
}

Auth包含认证的参数,特定的Dialer可能会需要这些参数。

type Dialer

type Dialer interface {
    // Dial方法通过代理与指定地址建立连接
    Dial(network, addr string) (c net.Conn, err error)
}

Dialer代表一个创建连接的途径。

func FromEnvironment

func FromEnvironment() Dialer

FromEnvironment返回一个由与代理相关的环境变量指定的Dialer。

func FromURL

func FromURL(u *url.URL, forward Dialer) (Dialer, error)

FromURL返回一个使用指定的网址和下层Dialer创建网络连接的Dialer。

func SOCKS5

func SOCKS5(network, addr string, auth *Auth, forward Dialer) (Dialer, error)

SOCKS5返回一个使用下层Dialer、可选的用户名和密码、与指定地址建立Socks5连接的Dialer,参见RFC 1928

type PerHost

type PerHost struct {
    // 内含隐藏或非导出字段
}

PerHost定向连接到一个默认的Dialer,除非请求的域名匹配一系列例外。

func NewPerHost

func NewPerHost(defaultDialer, bypass Dialer) *PerHost

NewPerHost返回一个PerHost,该PerHost根据连接是否匹配配置的规则的某一条,将连接重定向到defaultDialer或bypass。

func (*PerHost) AddIP

func (p *PerHost) AddIP(ip net.IP)

AddIP指定一个会使用bypass的IP地址。注意只有呼叫一个字面的IP地址时,该规则才生效。采用命名域名的连接,永远不会匹配IP。

func (*PerHost) AddNetwork

func (p *PerHost) AddNetwork(net *net.IPNet)

AddNetwork指定一个会使用bypass的IP范围(IP子网)。 注意只有呼叫一个字面的IP地址时,该规则才生效。采用命名域名的连接,永远不会匹配IP。

func (*PerHost) AddHost

func (p *PerHost) AddHost(host string)

AddHost指定一个会使用bypass的域名。

func (*PerHost) AddZone

func (p *PerHost) AddZone(zone string)

AddZone指定一个会使用bypass的DNS后缀。zone为"example.com" 会匹配"example.com" 及其所有子域名。

func (*PerHost) AddFromString

func (p *PerHost) AddFromString(s string)

AddFromString解析一个包含逗号分隔的值、指定将使用bypass代理的域名的字符串。每个值可以是IP地址、CIDR范围、DNS后缀(*.example.com)或者域名(localhost)。

func (*PerHost) Dial

func (p *PerHost) Dial(network, addr string) (c net.Conn, err error)

Dial在指定的网络network上通过defaultDialer或者bypass连接地址addr。

func RegisterDialerType

func RegisterDialerType(scheme string, f func(*url.URL, Dialer) (Dialer, error))

RegisterDialerType接受一个URL协议和一个从采用该协议的URL和下层Dialer生成Dialer的函数。注册的协议会被FromURL函数使用。