common.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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/docker/vendor/src/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. )
  19. func ValidateHost(val string) (string, error) {
  20. host, err := parsers.ParseHost(DEFAULTHTTPHOST, DEFAULTUNIXSOCKET, val)
  21. if err != nil {
  22. return val, err
  23. }
  24. return host, nil
  25. }
  26. //TODO remove, used on < 1.5 in getContainersJSON
  27. func DisplayablePorts(ports *engine.Table) string {
  28. result := []string{}
  29. ports.SetKey("PublicPort")
  30. ports.Sort()
  31. for _, port := range ports.Data {
  32. if port.Get("IP") == "" {
  33. result = append(result, fmt.Sprintf("%d/%s", port.GetInt("PrivatePort"), port.Get("Type")))
  34. } else {
  35. result = append(result, fmt.Sprintf("%s:%d->%d/%s", port.Get("IP"), port.GetInt("PublicPort"), port.GetInt("PrivatePort"), port.Get("Type")))
  36. }
  37. }
  38. return strings.Join(result, ", ")
  39. }
  40. func MatchesContentType(contentType, expectedType string) bool {
  41. mimetype, _, err := mime.ParseMediaType(contentType)
  42. if err != nil {
  43. log.Errorf("Error parsing media type: %s error: %s", contentType, err.Error())
  44. }
  45. return err == nil && mimetype == expectedType
  46. }
  47. // LoadOrCreateTrustKey attempts to load the libtrust key at the given path,
  48. // otherwise generates a new one
  49. func LoadOrCreateTrustKey(trustKeyPath string) (libtrust.PrivateKey, error) {
  50. err := os.MkdirAll(path.Dir(trustKeyPath), 0700)
  51. if err != nil {
  52. return nil, err
  53. }
  54. trustKey, err := libtrust.LoadKeyFile(trustKeyPath)
  55. if err == libtrust.ErrKeyFileDoesNotExist {
  56. trustKey, err = libtrust.GenerateECP256PrivateKey()
  57. if err != nil {
  58. return nil, fmt.Errorf("Error generating key: %s", err)
  59. }
  60. if err := libtrust.SaveKey(trustKeyPath, trustKey); err != nil {
  61. return nil, fmt.Errorf("Error saving key file: %s", err)
  62. }
  63. } else if err != nil {
  64. log.Fatalf("Error loading key file: %s", err)
  65. }
  66. return trustKey, nil
  67. }