listeners_solaris.go 955 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package listeners
  2. import (
  3. "crypto/tls"
  4. "fmt"
  5. "net"
  6. "os"
  7. "github.com/Sirupsen/logrus"
  8. "github.com/docker/go-connections/sockets"
  9. )
  10. // Init creates new listeners for the server.
  11. func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) (ls []net.Listener, err error) {
  12. switch proto {
  13. case "tcp":
  14. l, err := sockets.NewTCPSocket(addr, tlsConfig)
  15. if err != nil {
  16. return nil, err
  17. }
  18. ls = append(ls, l)
  19. case "unix":
  20. gid, err := lookupGID(socketGroup)
  21. if err != nil {
  22. if socketGroup != "" {
  23. if socketGroup != defaultSocketGroup {
  24. return nil, err
  25. }
  26. logrus.Warnf("could not change group %s to %s: %v", addr, defaultSocketGroup, err)
  27. }
  28. gid = os.Getgid()
  29. }
  30. l, err := sockets.NewUnixSocket(addr, gid)
  31. if err != nil {
  32. return nil, fmt.Errorf("can't create unix socket %s: %v", addr, err)
  33. }
  34. ls = append(ls, l)
  35. default:
  36. return nil, fmt.Errorf("Invalid protocol format: %q", proto)
  37. }
  38. return
  39. }