common.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package api
  2. import (
  3. "fmt"
  4. "mime"
  5. "os"
  6. "path"
  7. "strings"
  8. log "github.com/Sirupsen/logrus"
  9. "github.com/docker/docker/engine"
  10. "github.com/docker/docker/pkg/parsers"
  11. "github.com/docker/docker/pkg/version"
  12. "github.com/docker/libtrust"
  13. )
  14. const (
  15. APIVERSION version.Version = "1.16"
  16. DEFAULTHTTPHOST = "127.0.0.1"
  17. DEFAULTUNIXSOCKET = "/var/run/docker.sock"
  18. DefaultDockerfileName string = "Dockerfile"
  19. )
  20. func ValidateHost(val string) (string, error) {
  21. host, err := parsers.ParseHost(DEFAULTHTTPHOST, DEFAULTUNIXSOCKET, val)
  22. if err != nil {
  23. return val, err
  24. }
  25. return host, nil
  26. }
  27. //TODO remove, used on < 1.5 in getContainersJSON
  28. func DisplayablePorts(ports *engine.Table) string {
  29. result := []string{}
  30. ports.SetKey("PublicPort")
  31. ports.Sort()
  32. for _, port := range ports.Data {
  33. if port.Get("IP") == "" {
  34. result = append(result, fmt.Sprintf("%d/%s", port.GetInt("PrivatePort"), port.Get("Type")))
  35. } else {
  36. result = append(result, fmt.Sprintf("%s:%d->%d/%s", port.Get("IP"), port.GetInt("PublicPort"), port.GetInt("PrivatePort"), port.Get("Type")))
  37. }
  38. }
  39. return strings.Join(result, ", ")
  40. }
  41. func MatchesContentType(contentType, expectedType string) bool {
  42. mimetype, _, err := mime.ParseMediaType(contentType)
  43. if err != nil {
  44. log.Errorf("Error parsing media type: %s error: %s", contentType, err.Error())
  45. }
  46. return err == nil && mimetype == expectedType
  47. }
  48. // LoadOrCreateTrustKey attempts to load the libtrust key at the given path,
  49. // otherwise generates a new one
  50. func LoadOrCreateTrustKey(trustKeyPath string) (libtrust.PrivateKey, error) {
  51. err := os.MkdirAll(path.Dir(trustKeyPath), 0700)
  52. if err != nil {
  53. return nil, err
  54. }
  55. trustKey, err := libtrust.LoadKeyFile(trustKeyPath)
  56. if err == libtrust.ErrKeyFileDoesNotExist {
  57. trustKey, err = libtrust.GenerateECP256PrivateKey()
  58. if err != nil {
  59. return nil, fmt.Errorf("Error generating key: %s", err)
  60. }
  61. if err := libtrust.SaveKey(trustKeyPath, trustKey); err != nil {
  62. return nil, fmt.Errorf("Error saving key file: %s", err)
  63. }
  64. } else if err != nil {
  65. return nil, fmt.Errorf("Error loading key file: %s", err)
  66. }
  67. return trustKey, nil
  68. }