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  }