github.com/naphatkrit/deis@v1.12.3/client/cmd/certs.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "strings" 7 8 "github.com/deis/deis/pkg/prettyprint" 9 10 "github.com/deis/deis/client/controller/client" 11 "github.com/deis/deis/client/controller/models/certs" 12 ) 13 14 // CertsList lists certs registered with the controller. 15 func CertsList(results int) error { 16 c, err := client.New() 17 18 if err != nil { 19 return err 20 } 21 22 if results == defaultLimit { 23 results = c.ResponseLimit 24 } 25 26 certList, _, err := certs.List(c, results) 27 28 if err != nil { 29 return err 30 } 31 32 if len(certList) == 0 { 33 fmt.Println("No certs") 34 return nil 35 } 36 37 certMap := make(map[string]string) 38 nameMax := 0 39 expiresMax := 0 40 for _, cert := range certList { 41 certMap[cert.Name] = cert.Expires 42 43 if len(cert.Name) > nameMax { 44 nameMax = len(cert.Name) 45 } 46 if len(cert.Expires) > nameMax { 47 expiresMax = len(cert.Expires) 48 } 49 } 50 51 nameHeader := "Common Name" 52 expiresHeader := "Expires" 53 tabSpaces := 5 54 bufferSpaces := tabSpaces 55 56 if nameMax < len(nameHeader) { 57 tabSpaces += len(nameHeader) - nameMax 58 nameMax = len(nameHeader) 59 } else { 60 bufferSpaces += nameMax - len(nameHeader) 61 } 62 63 if expiresMax < len(expiresHeader) { 64 expiresMax = len(expiresHeader) 65 } 66 67 fmt.Printf("%s%s%s\n", nameHeader, strings.Repeat(" ", bufferSpaces), expiresHeader) 68 fmt.Printf("%s%s%s\n", strings.Repeat("-", nameMax), strings.Repeat(" ", 5), 69 strings.Repeat("-", expiresMax)) 70 fmt.Print(prettyprint.PrettyTabs(certMap, tabSpaces)) 71 return nil 72 } 73 74 // CertAdd adds a cert to the controller. 75 func CertAdd(cert, key, commonName, sans string) error { 76 c, err := client.New() 77 78 if err != nil { 79 return err 80 } 81 82 fmt.Print("Adding SSL endpoint... ") 83 quit := progress() 84 err = processCertsAdd(c, cert, key, commonName, sans) 85 quit <- true 86 <-quit 87 88 if err != nil { 89 return err 90 } 91 92 fmt.Println("done") 93 return nil 94 } 95 96 func processCertsAdd(c *client.Client, cert, key, commonName, sans string) error { 97 if sans != "" { 98 for _, san := range strings.Split(sans, ",") { 99 if err := doCertAdd(c, cert, key, san); err != nil { 100 return err 101 } 102 } 103 return nil 104 } 105 106 return doCertAdd(c, cert, key, commonName) 107 } 108 109 func doCertAdd(c *client.Client, cert string, key string, commonName string) error { 110 certFile, err := ioutil.ReadFile(cert) 111 112 if err != nil { 113 return err 114 } 115 116 keyFile, err := ioutil.ReadFile(key) 117 118 if err != nil { 119 return err 120 } 121 122 _, err = certs.New(c, string(certFile), string(keyFile), commonName) 123 return err 124 } 125 126 // CertRemove deletes a cert from the controller. 127 func CertRemove(commonName string) error { 128 c, err := client.New() 129 130 if err != nil { 131 return err 132 } 133 134 fmt.Printf("Removing %s... ", commonName) 135 quit := progress() 136 137 certs.Delete(c, commonName) 138 139 quit <- true 140 <-quit 141 142 if err == nil { 143 fmt.Println("done") 144 } 145 146 return err 147 }