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