mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-19 00:31:02 -04:00
44 lines
955 B
Go
44 lines
955 B
Go
|
package listeners
|
||
|
|
||
|
import (
|
||
|
"crypto/tls"
|
||
|
"fmt"
|
||
|
"net"
|
||
|
"os"
|
||
|
|
||
|
"github.com/docker/go-connections/sockets"
|
||
|
"github.com/sirupsen/logrus"
|
||
|
)
|
||
|
|
||
|
// Init creates new listeners for the server.
|
||
|
func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) (ls []net.Listener, err error) {
|
||
|
switch proto {
|
||
|
case "tcp":
|
||
|
l, err := sockets.NewTCPSocket(addr, tlsConfig)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
ls = append(ls, l)
|
||
|
case "unix":
|
||
|
gid, err := lookupGID(socketGroup)
|
||
|
if err != nil {
|
||
|
if socketGroup != "" {
|
||
|
if socketGroup != defaultSocketGroup {
|
||
|
return nil, err
|
||
|
}
|
||
|
logrus.Warnf("could not change group %s to %s: %v", addr, defaultSocketGroup, err)
|
||
|
}
|
||
|
gid = os.Getgid()
|
||
|
}
|
||
|
l, err := sockets.NewUnixSocket(addr, gid)
|
||
|
if err != nil {
|
||
|
return nil, fmt.Errorf("can't create unix socket %s: %v", addr, err)
|
||
|
}
|
||
|
ls = append(ls, l)
|
||
|
default:
|
||
|
return nil, fmt.Errorf("Invalid protocol format: %q", proto)
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|