зеркало из https://github.com/microsoft/docker.git
Merge pull request #27860 from vdemeester/update-go-connections-vendor
Update go-connections vendoring
This commit is contained in:
Коммит
f391f9c3b9
|
@ -64,7 +64,7 @@ clone git github.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3
|
||||||
clone git golang.org/x/net 2beffdc2e92c8a3027590f898fe88f69af48a3f8 https://github.com/tonistiigi/net.git
|
clone git golang.org/x/net 2beffdc2e92c8a3027590f898fe88f69af48a3f8 https://github.com/tonistiigi/net.git
|
||||||
clone git golang.org/x/sys eb2c74142fd19a79b3f237334c7384d5167b1b46 https://github.com/golang/sys.git
|
clone git golang.org/x/sys eb2c74142fd19a79b3f237334c7384d5167b1b46 https://github.com/golang/sys.git
|
||||||
clone git github.com/docker/go-units 8a7beacffa3009a9ac66bad506b18ffdd110cf97
|
clone git github.com/docker/go-units 8a7beacffa3009a9ac66bad506b18ffdd110cf97
|
||||||
clone git github.com/docker/go-connections 988efe982fdecb46f01d53465878ff1f2ff411ce
|
clone git github.com/docker/go-connections 1494b6df4050e60923d68cd8cc6a19e7af9f1c01
|
||||||
|
|
||||||
clone git github.com/RackSec/srslog 365bf33cd9acc21ae1c355209865f17228ca534e
|
clone git github.com/RackSec/srslog 365bf33cd9acc21ae1c355209865f17228ca534e
|
||||||
clone git github.com/imdario/mergo 0.2.1
|
clone git github.com/imdario/mergo 0.2.1
|
||||||
|
|
|
@ -155,33 +155,36 @@ type PortMapping struct {
|
||||||
Binding PortBinding
|
Binding PortBinding
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func splitParts(rawport string) (string, string, string) {
|
||||||
|
parts := strings.Split(rawport, ":")
|
||||||
|
n := len(parts)
|
||||||
|
containerport := parts[n-1]
|
||||||
|
|
||||||
|
switch n {
|
||||||
|
case 1:
|
||||||
|
return "", "", containerport
|
||||||
|
case 2:
|
||||||
|
return "", parts[0], containerport
|
||||||
|
case 3:
|
||||||
|
return parts[0], parts[1], containerport
|
||||||
|
default:
|
||||||
|
return strings.Join(parts[:n-2], ":"), parts[n-2], containerport
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ParsePortSpec parses a port specification string into a slice of PortMappings
|
// ParsePortSpec parses a port specification string into a slice of PortMappings
|
||||||
func ParsePortSpec(rawPort string) ([]PortMapping, error) {
|
func ParsePortSpec(rawPort string) ([]PortMapping, error) {
|
||||||
proto := "tcp"
|
var proto string
|
||||||
|
rawIP, hostPort, containerPort := splitParts(rawPort)
|
||||||
|
proto, containerPort = SplitProtoPort(containerPort)
|
||||||
|
|
||||||
if i := strings.LastIndex(rawPort, "/"); i != -1 {
|
// Strip [] from IPV6 addresses
|
||||||
proto = rawPort[i+1:]
|
ip, _, err := net.SplitHostPort(rawIP + ":")
|
||||||
rawPort = rawPort[:i]
|
|
||||||
}
|
|
||||||
if !strings.Contains(rawPort, ":") {
|
|
||||||
rawPort = fmt.Sprintf("::%s", rawPort)
|
|
||||||
} else if len(strings.Split(rawPort, ":")) == 2 {
|
|
||||||
rawPort = fmt.Sprintf(":%s", rawPort)
|
|
||||||
}
|
|
||||||
|
|
||||||
parts, err := PartParser(portSpecTemplate, rawPort)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("Invalid ip address %v: %s", rawIP, err)
|
||||||
}
|
}
|
||||||
|
if ip != "" && net.ParseIP(ip) == nil {
|
||||||
var (
|
return nil, fmt.Errorf("Invalid ip address: %s", ip)
|
||||||
containerPort = parts["containerPort"]
|
|
||||||
rawIP = parts["ip"]
|
|
||||||
hostPort = parts["hostPort"]
|
|
||||||
)
|
|
||||||
|
|
||||||
if rawIP != "" && net.ParseIP(rawIP) == nil {
|
|
||||||
return nil, fmt.Errorf("Invalid ip address: %s", rawIP)
|
|
||||||
}
|
}
|
||||||
if containerPort == "" {
|
if containerPort == "" {
|
||||||
return nil, fmt.Errorf("No port specified: %s<empty>", rawPort)
|
return nil, fmt.Errorf("No port specified: %s<empty>", rawPort)
|
||||||
|
@ -230,7 +233,7 @@ func ParsePortSpec(rawPort string) ([]PortMapping, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
binding := PortBinding{
|
binding := PortBinding{
|
||||||
HostIP: rawIP,
|
HostIP: ip,
|
||||||
HostPort: hostPort,
|
HostPort: hostPort,
|
||||||
}
|
}
|
||||||
ports = append(ports, PortMapping{Port: port, Binding: binding})
|
ports = append(ports, PortMapping{Port: port, Binding: binding})
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
// PartParser parses and validates the specified string (data) using the specified template
|
// PartParser parses and validates the specified string (data) using the specified template
|
||||||
// e.g. ip:public:private -> 192.168.0.1:80:8000
|
// e.g. ip:public:private -> 192.168.0.1:80:8000
|
||||||
|
// DEPRECATED: do not use, this function may be removed in a future version
|
||||||
func PartParser(template, data string) (map[string]string, error) {
|
func PartParser(template, data string) (map[string]string, error) {
|
||||||
// ip:public:private
|
// ip:public:private
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewTCPSocket creates a TCP socket listener with the specified address and
|
// NewTCPSocket creates a TCP socket listener with the specified address and
|
||||||
// and the specified tls configuration. If TLSConfig is set, will encapsulate the
|
// the specified tls configuration. If TLSConfig is set, will encapsulate the
|
||||||
// TCP listener inside a TLS one.
|
// TCP listener inside a TLS one.
|
||||||
func NewTCPSocket(addr string, tlsConfig *tls.Config) (net.Listener, error) {
|
func NewTCPSocket(addr string, tlsConfig *tls.Config) (net.Listener, error) {
|
||||||
l, err := net.Listen("tcp", addr)
|
l, err := net.Listen("tcp", addr)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче