Documentation
¶
Overview ¶
docker-proxy provides a network Proxy interface and implementations for TCP and UDP.
Package proxy is used to create and register proxies that forward traffic from a port/ip combination, address, to a set of backends
Index ¶
- Constants
- Variables
- func GetKeyPairs(certPEMFile, keyPEMFile string) (certPEM, keyPEM []byte, err error)
- func ProxyLoop(client net.Conn, backend net.Conn, quit chan bool)
- func TempCertFile() (string, error)
- func TempKeyFile() (string, error)
- type DockerProxy
- type Proxy
- type ProxyAddress
- type ProxyFactory
- type ProxyRegistry
- type SCTPProxy
- type TCPMux
- type TCPProxy
- type UDPProxy
Constants ¶
const ( // UDPConnTrackTimeout is the timeout used for UDP connection tracking UDPConnTrackTimeout = 90 * time.Second // UDPBufSize is the buffer size for the UDP proxy UDPBufSize = 65507 )
Variables ¶
var ( // command to generate: openssl req -x509 -sha256 -nodes -days 1826 -newkey rsa:2048 -keyout NEW_SERVER_KEY.key -out NEW_SERVER_CERT.crt InsecureCertPEM = `` /* 1443-byte string literal not displayed */ InsecureKeyPEM = `` /* 1703-byte string literal not displayed */ )
Functions ¶
func GetKeyPairs ¶
func TempCertFile ¶
TempCertFile creates a temp file with the contents set to proxyCertPEM and returns the temp file path.
func TempKeyFile ¶
TempKeyFile creates a temp file with the contents set to proxyCertPEM and returns the temp file path.
Types ¶
type DockerProxy ¶
type DockerProxy interface {
// Run starts forwarding traffic back and forth between the front
// and back-end addresses.
Run()
// Close stops forwarding traffic and close both ends of the DockerProxy.
Close()
// FrontendAddr returns the address on which the proxy is listening.
FrontendAddr() net.Addr
// BackendAddr returns the proxied address.
BackendAddr() net.Addr
}
DockerProxy defines the behavior of a proxy. It forwards traffic back and forth between two endpoints : the frontend and the backend. It can be used to do software port-mapping between two addresses. e.g. forward all traffic between the frontend (host) 127.0.0.1:3000 to the backend (container) at 172.17.42.108:4000.
type ProxyAddress ¶
ProxyAddress is a IP and port grouping
type ProxyFactory ¶
type ProxyFactory func(protocol string, frontend ProxyAddress, backEnds ...ProxyAddress) (Proxy, error)
ProxyFactory is a function declaration for a proxy factory.
type ProxyRegistry ¶
type ProxyRegistry interface {
//CreateProxy create, registers and starts a proxy identified by key
//protocol is TCP or UDP
//frontEnd is the IP/Port to listen on
//backends are the what is being proxied, It is up to the proxy implementation on how it distributes requests to the backends
CreateProxy(key string, protocol string, frontend ProxyAddress, backEnds ...ProxyAddress) error
//RemoveProxy stops and removes proxy.
RemoveProxy(key string) (Proxy, error)
}
ProxyRegistry is an interface of a proxy registration service
func NewDefaultProxyRegistry ¶
func NewDefaultProxyRegistry() ProxyRegistry
NewDefaultProxyRegistry Create a new ProxyRegistry
func NewProxyRegistry ¶
func NewProxyRegistry(factory ProxyFactory) ProxyRegistry
NewProxyRegistry Create a new ProxyRegistry using the supplied ProxyFactory
type SCTPProxy ¶
type SCTPProxy struct {
// contains filtered or unexported fields
}
SCTPProxy is a proxy for SCTP connections. It implements the Proxy interface to handle SCTP traffic forwarding between the frontend and backend addresses.
func NewSCTPProxy ¶
NewSCTPProxy creates a new SCTPProxy.
func (*SCTPProxy) BackendAddr ¶
BackendAddr returns the SCTP proxied address.
func (*SCTPProxy) FrontendAddr ¶
FrontendAddr returns the SCTP address on which the proxy is listening.
type TCPMux ¶
type TCPMux struct {
// contains filtered or unexported fields
}
TCPMux is an implementation of tcp muxing RFC 1078.
type TCPProxy ¶
type TCPProxy struct {
// contains filtered or unexported fields
}
TCPProxy is a proxy for TCP connections. It implements the Proxy interface to handle TCP traffic forwarding between the frontend and backend addresses.
func NewTCPProxy ¶
NewTCPProxy creates a new TCPProxy.
func (*TCPProxy) BackendAddr ¶
BackendAddr returns the TCP proxied address.
func (*TCPProxy) FrontendAddr ¶
FrontendAddr returns the TCP address on which the proxy is listening.
type UDPProxy ¶
type UDPProxy struct {
// contains filtered or unexported fields
}
UDPProxy is proxy for which handles UDP datagrams. It implements the Proxy interface to handle UDP traffic forwarding between the frontend and backend addresses.
func NewUDPProxy ¶
NewUDPProxy creates a new UDPProxy.
func (*UDPProxy) BackendAddr ¶
BackendAddr returns the proxied UDP address.
func (*UDPProxy) FrontendAddr ¶
FrontendAddr returns the UDP address on which the proxy is listening.