Remove usage of pkg sockets and tlsconfig.
- Use the ones provided by docker/go-connections, they are a drop in replacement. - Remove pkg/sockets from docker. - Keep pkg/tlsconfig because libnetwork still needs it and there is a circular dependency issue. Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
parent
4fef057438
commit
562ec005a6
8 changed files with 6 additions and 130 deletions
|
@ -13,7 +13,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/docker/docker/pkg/plugins"
|
"github.com/docker/docker/pkg/plugins"
|
||||||
"github.com/docker/docker/pkg/tlsconfig"
|
"github.com/docker/go-connections/tlsconfig"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
|
|
||||||
log "github.com/Sirupsen/logrus"
|
log "github.com/Sirupsen/logrus"
|
||||||
"github.com/docker/docker/pkg/discovery"
|
"github.com/docker/docker/pkg/discovery"
|
||||||
"github.com/docker/docker/pkg/tlsconfig"
|
"github.com/docker/go-connections/tlsconfig"
|
||||||
"github.com/docker/libkv"
|
"github.com/docker/libkv"
|
||||||
"github.com/docker/libkv/store"
|
"github.com/docker/libkv/store"
|
||||||
"github.com/docker/libkv/store/consul"
|
"github.com/docker/libkv/store/consul"
|
||||||
|
|
|
@ -11,8 +11,8 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
"github.com/docker/docker/pkg/sockets"
|
"github.com/docker/go-connections/sockets"
|
||||||
"github.com/docker/docker/pkg/tlsconfig"
|
"github.com/docker/go-connections/tlsconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/docker/docker/pkg/tlsconfig"
|
"github.com/docker/go-connections/tlsconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -28,7 +28,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
"github.com/docker/docker/pkg/tlsconfig"
|
"github.com/docker/go-connections/tlsconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
// Package sockets provides helper functions to create and configure Unix or TCP
|
|
||||||
// sockets.
|
|
||||||
package sockets
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/tls"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewTCPSocket creates a TCP socket listener with the specified address and
|
|
||||||
// and the specified tls configuration. If TLSConfig is set, will encapsulate the
|
|
||||||
// TCP listener inside a TLS one.
|
|
||||||
func NewTCPSocket(addr string, tlsConfig *tls.Config) (net.Listener, error) {
|
|
||||||
l, err := net.Listen("tcp", addr)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if tlsConfig != nil {
|
|
||||||
tlsConfig.NextProtos = []string{"http/1.1"}
|
|
||||||
l = tls.NewListener(l, tlsConfig)
|
|
||||||
}
|
|
||||||
return l, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConfigureTCPTransport configures the specified Transport according to the
|
|
||||||
// specified proto and addr.
|
|
||||||
// If the proto is unix (using a unix socket to communicate) the compression
|
|
||||||
// is disabled.
|
|
||||||
func ConfigureTCPTransport(tr *http.Transport, proto, addr string) {
|
|
||||||
// Why 32? See https://github.com/docker/docker/pull/8035.
|
|
||||||
timeout := 32 * time.Second
|
|
||||||
if proto == "unix" {
|
|
||||||
// No need for compression in local communications.
|
|
||||||
tr.DisableCompression = true
|
|
||||||
tr.Dial = func(_, _ string) (net.Conn, error) {
|
|
||||||
return net.DialTimeout(proto, addr, timeout)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tr.Proxy = http.ProxyFromEnvironment
|
|
||||||
tr.Dial = (&net.Dialer{Timeout: timeout}).Dial
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
// +build linux freebsd
|
|
||||||
|
|
||||||
package sockets
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net"
|
|
||||||
"os"
|
|
||||||
"strconv"
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
|
||||||
"github.com/opencontainers/runc/libcontainer/user"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewUnixSocket creates a unix socket with the specified path and group.
|
|
||||||
func NewUnixSocket(path, group string) (net.Listener, error) {
|
|
||||||
if err := syscall.Unlink(path); err != nil && !os.IsNotExist(err) {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
mask := syscall.Umask(0777)
|
|
||||||
defer syscall.Umask(mask)
|
|
||||||
l, err := net.Listen("unix", path)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if err := setSocketGroup(path, group); err != nil {
|
|
||||||
l.Close()
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if err := os.Chmod(path, 0660); err != nil {
|
|
||||||
l.Close()
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return l, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func setSocketGroup(path, group string) error {
|
|
||||||
if group == "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if err := changeGroup(path, group); err != nil {
|
|
||||||
if group != "docker" {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
logrus.Debugf("Warning: could not change group %s to docker: %v", path, err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func changeGroup(path string, nameOrGid string) error {
|
|
||||||
gid, err := lookupGidByName(nameOrGid)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
logrus.Debugf("%s group found. gid: %d", nameOrGid, gid)
|
|
||||||
return os.Chown(path, 0, gid)
|
|
||||||
}
|
|
||||||
|
|
||||||
func lookupGidByName(nameOrGid string) (int, error) {
|
|
||||||
groupFile, err := user.GetGroupPath()
|
|
||||||
if err != nil {
|
|
||||||
return -1, err
|
|
||||||
}
|
|
||||||
groups, err := user.ParseGroupFileFilter(groupFile, func(g user.Group) bool {
|
|
||||||
return g.Name == nameOrGid || strconv.Itoa(g.Gid) == nameOrGid
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return -1, err
|
|
||||||
}
|
|
||||||
if groups != nil && len(groups) > 0 {
|
|
||||||
return groups[0].Gid, nil
|
|
||||||
}
|
|
||||||
gid, err := strconv.Atoi(nameOrGid)
|
|
||||||
if err == nil {
|
|
||||||
logrus.Warnf("Could not find GID %d", gid)
|
|
||||||
return gid, nil
|
|
||||||
}
|
|
||||||
return -1, fmt.Errorf("Group %s not found", nameOrGid)
|
|
||||||
}
|
|
Loading…
Reference in a new issue