diff options
Diffstat (limited to 'identity.go')
| -rw-r--r-- | identity.go | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/identity.go b/identity.go index 891c01b..15da94b 100644 --- a/identity.go +++ b/identity.go @@ -2,12 +2,12 @@ package main import ( "bytes" + "crypto/sha256" "crypto/tls" + "encoding/hex" "errors" "fmt" - "io" "net/url" - "os" "strings" ) @@ -43,6 +43,9 @@ func (ids Identities) Get(u *url.URL) *tls.Config { return conf } + if conf, ok := ids.ByFolder[u.Hostname()+u.Path]; ok { + return conf + } pathsegments := strings.Split(strings.TrimLeft(u.Path, "/"), "/") for len(pathsegments) > 0 { pathsegments = pathsegments[0 : len(pathsegments)-1] @@ -70,7 +73,7 @@ func IdentityCreate(state *BrowserState, name string) error { func IdentityList(state *BrowserState) error { buf := &bytes.Buffer{} for name, ident := range state.Identities.ByName { - if _, err := fmt.Fprintf(buf, "%s:\n", name); err != nil { + if _, err := fmt.Fprintf(buf, "%s (%s):\n", name, showIdent(ident)); err != nil { return err } @@ -97,8 +100,11 @@ func IdentityList(state *BrowserState) error { } } - _, err := io.Copy(os.Stdout, buf) - return err + state.Modal = buf.Bytes() + if len(state.Modal) == 0 { + state.Modal = []byte("(empty)\n") + } + return Print(state) } func IdentityDelete(state *BrowserState, name string) error { @@ -176,7 +182,7 @@ func IdentityUseFolder(state *BrowserState, name string, domain string) error { return err } - state.Identities.ByFolder[fmt.Sprintf("%s/%s", u.Hostname(), u.Path)] = ident + state.Identities.ByFolder[u.Hostname()+u.Path] = ident return saveIdentities(state.Identities) } @@ -203,3 +209,8 @@ func IdentityUsePage(state *BrowserState, name string, domain string) error { state.Identities.ByPage[u.String()] = ident return saveIdentities(state.Identities) } + +func showIdent(ident *tls.Config) string { + hash := sha256.Sum256(ident.Certificates[0].Certificate[0]) + return strings.ToUpper(hex.EncodeToString(hash[:])[:10]) +} |
