Documentation ¶
Overview ¶
Based on net/http/internal
Index ¶
- Constants
- Variables
- type ChunkedReader
- type Config
- type ErrNoSuchImage
- type MalformedHostHeaderOverride
- type MalformedHostHeaderOverrideConn
- type Proxy
- func (proxy *Proxy) AttachExistingContainers()
- func (proxy *Proxy) ContainerDestroyed(ident string)
- func (proxy *Proxy) ContainerDied(ident string)
- func (proxy *Proxy) ContainerStarted(ident string)
- func (proxy *Proxy) Dial() (net.Conn, error)
- func (proxy *Proxy) Intercept(i interceptor, w http.ResponseWriter, r *http.Request)
- func (proxy *Proxy) Listen() []net.Listener
- func (proxy *Proxy) RewriteEtcHosts(hostsPath, fqdn string, ips []*net.IPNet, extraHosts []string) error
- func (proxy *Proxy) Serve(listeners []net.Listener, ready func())
- func (proxy *Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (proxy *Proxy) StatusHTTP(w http.ResponseWriter, r *http.Request)
- func (proxy *Proxy) Stop()
- type Status
- type TLSConfig
- type UnmarshalWrongTypeError
Constants ¶
const MaxDockerHostname = 64
Variables ¶
var ( ErrLineTooLong = errors.New("header line too long") ErrInvalidChunkLength = errors.New("invalid byte in chunk length") )
var ( ErrWeaveCIDRNone = errors.New("the container was created with the '-e WEAVE_CIDR=none' option") ErrNoDefaultIPAM = errors.New("the container was created without specifying an IP address with '-e WEAVE_CIDR=...' and the proxy was started with the '--no-default-ipalloc' option") )
var (
ErrNoCommandSpecified = errors.New("No command specified")
)
var (
Log = common.Log
)
Functions ¶
This section is empty.
Types ¶
type ChunkedReader ¶ added in v1.1.0
type ChunkedReader struct {
// contains filtered or unexported fields
}
func NewChunkedReader ¶ added in v1.1.0
func NewChunkedReader(r io.Reader) *ChunkedReader
Unlike net/http/internal.chunkedReader, this has an interface where we can handle individual chunks. The interface is based on database/sql.Rows.
func (*ChunkedReader) Chunk ¶ added in v1.1.0
func (cr *ChunkedReader) Chunk() io.Reader
Chunk returns the io.Reader of the current chunk. On each call, this returns the same io.Reader for a given chunk.
func (*ChunkedReader) Err ¶ added in v1.1.0
func (cr *ChunkedReader) Err() error
Err returns the error, if any, that was encountered during iteration.
func (*ChunkedReader) Next ¶ added in v1.1.0
func (cr *ChunkedReader) Next() bool
Next prepares the next chunk for reading. It returns true on success, or false if there is no next chunk or an error happened while preparing it. Err should be consulted to distinguish between the two cases.
Every call to Chunk, even the first one, must be preceded by a call to Next.
Calls to Next will discard any unread bytes in the current Chunk.
type Config ¶ added in v1.0.0
type Config struct { Enabled bool HostnameFromLabel string HostnameMatch string HostnameReplacement string Image string ListenAddrs []string RewriteInspect bool NoDefaultIPAM bool NoRewriteHosts bool TLSConfig TLSConfig WithoutDNS bool NoMulticastRoute bool KeepTXOn bool DockerBridge string DockerHost string }
type ErrNoSuchImage ¶ added in v1.0.1
type ErrNoSuchImage struct {
Name string
}
ErrNoSuchImage replaces docker.NoSuchImage, which does not contain the image name, which in turn breaks docker clients post 1.7.0 since they expect the image name to be present in errors.
func (*ErrNoSuchImage) Error ¶ added in v1.0.1
func (err *ErrNoSuchImage) Error() string
type MalformedHostHeaderOverride ¶ added in v1.9.0
MalformedHostHeaderOverride is a wrapper to be able to overcome the 400 Bad request coming from old docker clients that send an invalid Host header.
type MalformedHostHeaderOverrideConn ¶ added in v1.9.0
MalformedHostHeaderOverrideConn wraps the underlying unix connection and keeps track of the first read from http.Server which just reads the headers.
func (*MalformedHostHeaderOverrideConn) Read ¶ added in v1.9.0
func (l *MalformedHostHeaderOverrideConn) Read(b []byte) (n int, err error)
Read reads the first *read* request from http.Server to inspect the Host header. If the Host starts with / then we're talking to an old docker client which send an invalid Host header. To not error out in http.Server we rewrite the first bytes of the request to sanitize the Host header itself. In case we're not dealing with old docker clients the data is just passed to the server w/o modification.
type Proxy ¶
func (*Proxy) AttachExistingContainers ¶ added in v1.2.0
func (proxy *Proxy) AttachExistingContainers()
func (*Proxy) ContainerDestroyed ¶ added in v1.5.0
func (*Proxy) ContainerDied ¶ added in v1.2.0
func (*Proxy) ContainerStarted ¶ added in v1.2.0
weavedocker.ContainerObserver interface
func (*Proxy) Intercept ¶ added in v1.0.0
func (proxy *Proxy) Intercept(i interceptor, w http.ResponseWriter, r *http.Request)
func (*Proxy) RewriteEtcHosts ¶
func (proxy *Proxy) RewriteEtcHosts(hostsPath, fqdn string, ips []*net.IPNet, extraHosts []string) error
rewrite /etc/hosts, unlinking the file (so Docker does not modify it again) but leaving it with valid contents...
func (*Proxy) StatusHTTP ¶ added in v1.2.0
func (proxy *Proxy) StatusHTTP(w http.ResponseWriter, r *http.Request)
type TLSConfig ¶ added in v1.0.0
type UnmarshalWrongTypeError ¶ added in v1.1.0
type UnmarshalWrongTypeError struct {
Field, Expected string
Got interface{}
}
func (*UnmarshalWrongTypeError) Error ¶ added in v1.1.0
func (e *UnmarshalWrongTypeError) Error() string