proxy

package
Version: v0.0.0-...-fbeb2ab Latest Latest
Warning

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

Go to latest
Published: Mar 2, 2019 License: LGPL-3.0 Imports: 15 Imported by: 0

Documentation

Overview

Package proxy provides support for a variety of protocols to proxy network data.

Package proxy safe map Code generated by mapgen (https://github.com/ammario/mapgen), DO NOT EDIT.

Index

Constants

This section is empty.

Variables

View Source
var Direct = direct{}

Direct is a direct proxy: one that makes network connections directly.

View Source
var ErrBlockedHost = errors.New("host is blocked")
View Source
var ErrNonHijackableWriter = errors.New("failed to acquire raw client connection: writer is not hijackable")

ErrNonHijackableWriter is an error that is returned when the connection cannot be hijacked.

Functions

func RegisterDialerType

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

RegisterDialerType takes a URL scheme and a function to generate Dialers from a URL with that scheme and a forwarding Dialer. Registered schemes are used by FromURL.

Types

type Auth

type Auth struct {
	User, Password string
}

Auth contains authentication parameters that specific Dialers may require.

type Dialer

type Dialer interface {
	// Dial connects to the given address via the proxy.
	Dial(network, addr string) (c net.Conn, err error)
}

A Dialer is a means to establish a connection.

func FromEnvironment

func FromEnvironment() Dialer

FromEnvironment returns the dialer specified by the proxy related variables in the environment.

func FromURL

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

FromURL returns a Dialer given a URL specification and an underlying Dialer for it to make network requests.

func SOCKS5

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

SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given address with an optional username and password. See RFC 1928.

type HTTPProxyHandler

type HTTPProxyHandler struct {
	// Dialer is the dialer for connecting to the SOCKS5 proxy.
	Dialer    proxy.Dialer
	UserAgent string
}

HTTPProxyHandler is a proxy handler that passes on request to a SOCKS5 proxy server.

func (*HTTPProxyHandler) ServeHTTP

func (h *HTTPProxyHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request)

type PerHost

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

A PerHost directs connections to a default Dialer unless the hostname requested matches one of a number of exceptions.

func NewPerHost

func NewPerHost(defaultDialer, bypass Dialer) *PerHost

NewPerHost returns a PerHost Dialer that directs connections to either defaultDialer or bypass, depending on whether the connection matches one of the configured rules.

func (*PerHost) AddCIDR

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

AddCIDR specifies an IP address that will use the bypass proxy. Note that this will only take effect if a literal IP address is dialed. A connection to a named host will never match an IP.

func (*PerHost) AddDOMAIN

func (p *PerHost) AddDOMAIN(domain string)

AddDOMAIN specifies an IP address that will use the bypass proxy. Note that this will only take effect if a literal IP address is dialed. A connection to a named host will never match an IP.

func (*PerHost) AddFromString

func (p *PerHost) AddFromString(s string)

AddFromString parses a string that contains comma-separated values specifying hosts that should use the bypass proxy. Each value is either an IP address, a CIDR range, a zone (*.example.com) or a hostname (localhost). A best effort is made to parse the string and errors are ignored.

func (*PerHost) AddIP

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

AddIP specifies an IP address that will use the bypass proxy. Note that this will only take effect if a literal IP address is dialed. A connection to a named host will never match an IP.

func (*PerHost) AddKEYWORD

func (p *PerHost) AddKEYWORD(keyword string)

AddKEYWORD specifies an IP address that will use the bypass proxy. Note that this will only take effect if a literal IP address is dialed. A connection to a named host will never match an IP.

func (*PerHost) AddSUFFIX

func (p *PerHost) AddSUFFIX(suffix string)

AddSUFFIX specifies an IP address that will use the bypass proxy. Note that this will only take effect if a literal IP address is dialed. A connection to a named host will never match an IP.

func (*PerHost) Dial

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

Dial connects to the address addr on the given network through either defaultDialer or bypass.

type StringBoolMap

type StringBoolMap struct {
	sync.RWMutex

	// M contains the underlying map.
	// Goroutines which access M directly should hold
	// the mutex.
	M map[string]bool
}

StringBoolMap is a generated thread safe map with key string and value bool

func NewStringBoolMap

func NewStringBoolMap() *StringBoolMap

NewStringBoolMap returns an instantiated thread safe map with key string and value bool

func (*StringBoolMap) Copy

func (m *StringBoolMap) Copy() (c map[string]bool)

Copy generates a copy of the map.

func (*StringBoolMap) Delete

func (m *StringBoolMap) Delete(key string)

Delete removes a key from the map

func (*StringBoolMap) Exists

func (m *StringBoolMap) Exists(key string) bool

Exists returns if a key exists

func (*StringBoolMap) Get

func (m *StringBoolMap) Get(key string) bool

Get retrieves a key from the map

func (*StringBoolMap) GetEx

func (m *StringBoolMap) GetEx(key string) (bool, bool)

GetEx retrieves a key from the map and whether it exists

func (*StringBoolMap) Len

func (m *StringBoolMap) Len() int

Len returns the length of the map

func (*StringBoolMap) Open

func (m *StringBoolMap) Open(f func())

Open allows a closure to safely operate on the map

func (*StringBoolMap) Set

func (m *StringBoolMap) Set(key string, val bool)

Set sets a key on the map

func (*StringBoolMap) SetIfNotExist

func (m *StringBoolMap) SetIfNotExist(key string, val bool) bool

SetIfNotExist sets a key on the map if it doesn't exist. It returns the value which is set.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL