From 1ca20e5b7a5fa803aced63ddaedf52d1064ce43a Mon Sep 17 00:00:00 2001
From: Niall Sheridan <nsheridan@gmail.com>
Date: Sun, 22 May 2016 00:52:06 +0100
Subject: [PATCH] Open the browser automatically

---
 client/main.go          | 11 ++++++++---
 server/signer/signer.go |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/client/main.go b/client/main.go
index 1b35d28b..355f229f 100644
--- a/client/main.go
+++ b/client/main.go
@@ -13,13 +13,14 @@ import (
 	"time"
 
 	"github.com/nsheridan/cashier/lib"
+	"github.com/pkg/browser"
 	"golang.org/x/crypto/ssh"
 	"golang.org/x/crypto/ssh/agent"
 )
 
 var (
-	url      = flag.String("url", "http://localhost:10000/sign", "Signing URL")
-	keybits  = flag.Int("bits", 4096, "Key size")
+	ca       = flag.String("ca", "http://localhost:10000", "CA server")
+	keybits  = flag.Int("bits", 4096, "Key size. Ignored for ed25519 keys")
 	validity = flag.Duration("validity", time.Hour*24, "Key validity")
 	keytype  = flag.String("key_type", "rsa", "Type of private key to generate - rsa, ecdsa or ed25519")
 )
@@ -37,7 +38,7 @@ func installCert(a agent.Agent, cert *ssh.Certificate, key key) error {
 }
 
 func send(s []byte, token string) (*lib.SignResponse, error) {
-	req, err := http.NewRequest("POST", *url, bytes.NewReader(s))
+	req, err := http.NewRequest("POST", *ca+"/sign", bytes.NewReader(s))
 	if err != nil {
 		return nil, err
 	}
@@ -95,6 +96,10 @@ func sign(pub ssh.PublicKey, token string) (*ssh.Certificate, error) {
 func main() {
 	flag.Parse()
 
+	fmt.Printf("Your browser has been opened to visit %s\n", *ca)
+	if err := browser.OpenURL(*ca); err != nil {
+		fmt.Println("Error launching web browser. Go to the link in your web browser")
+	}
 	priv, pub, err := generateKey(*keytype, *keybits)
 	if err != nil {
 		log.Fatalln("Error generating key pair: ", err)
diff --git a/server/signer/signer.go b/server/signer/signer.go
index 566ca986..8be5cad4 100644
--- a/server/signer/signer.go
+++ b/server/signer/signer.go
@@ -48,7 +48,7 @@ func (s *KeySigner) SignUserKey(req *lib.SignRequest) (string, error) {
 	marshaled := ssh.MarshalAuthorizedKey(cert)
 	// Remove the trailing newline.
 	marshaled = marshaled[:len(marshaled)-1]
-	log.Printf("Issued cert %s principals: %s fp: %s valid until: %s\n", cert.KeyId, cert.ValidPrincipals, fingerprint(pubkey), time.Unix(int64(cert.ValidBefore), 0).UTC())
+	log.Printf("Issued cert id: %s principals: %s fp: %s valid until: %s\n", cert.KeyId, cert.ValidPrincipals, fingerprint(pubkey), time.Unix(int64(cert.ValidBefore), 0).UTC())
 	return string(marshaled), nil
 }
 
-- 
GitLab