From aa250979b8259e973e70093b85fb2ffc6870f6a9 Mon Sep 17 00:00:00 2001 From: nbari Date: Sat, 1 Oct 2016 13:43:42 +0200 Subject: [PATCH] save cache --- cache.go | 36 ++++++++++++++---------------------- getkey.go | 1 + 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/cache.go b/cache.go index 6842ed8..9d4f2ed 100644 --- a/cache.go +++ b/cache.go @@ -13,6 +13,7 @@ type cache struct { dir string } +// Cache creates ~/.ssh-vault func Cache() *cache { usr, _ := user.Current() sv := filepath.Join(usr.HomeDir, ".ssh-vault", "keys") @@ -22,29 +23,20 @@ func Cache() *cache { return &cache{sv} } +// Get return ssh-key func (c *cache) Get(u string) (string, error) { - uKey := fmt.Sprintf("%s/%s.key", c.dir, u) - if c.isFile(uKey) { - // read from file and return - } - key, err := GetKey(u) + keyPath := fmt.Sprintf("%s/%s.key", c.dir, u) + key, err := ioutil.ReadFile(keyPath) if err != nil { - return "", err + key, err := GetKey(u) + if err != nil { + return "", err + } + err = ioutil.WriteFile(keyPath, []byte(key), 0644) + if err != nil { + log.Println(err) + } + return key, nil } - err = ioutil.WriteFile(uKey, []byte(key), 0644) - if err != nil { - log.Println(err) - } - return key, nil -} - -func (c *cache) isFile(path string) bool { - f, err := os.Stat(path) - if err != nil { - return false - } - if m := f.Mode(); !m.IsDir() && m.IsRegular() && m&400 != 0 { - return true - } - return false + return string(key), err } diff --git a/getkey.go b/getkey.go index 4668c4b..080c159 100644 --- a/getkey.go +++ b/getkey.go @@ -10,6 +10,7 @@ import ( const GITHUB = "https://github.com" +// GetKey fetches ssh-key from url func GetKey(u string) (string, error) { client := &http.Client{} // create a new request