32 lines
659 B
Go
32 lines
659 B
Go
|
package listeners
|
||
|
|
||
|
import (
|
||
|
"crypto/tls"
|
||
|
"fmt"
|
||
|
"net"
|
||
|
|
||
|
"github.com/docker/go-connections/sockets"
|
||
|
)
|
||
|
|
||
|
// 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":
|
||
|
l, err := sockets.NewUnixSocket(addr, socketGroup)
|
||
|
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
|
||
|
}
|