12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package network
- import (
- "crypto/md5"
- "encoding/hex"
- "io/ioutil"
- "os"
- "github.com/rancher/os/log"
- )
- const (
- cacheDirectory = "/var/lib/rancher/cache/"
- )
- func locationHash(location string) string {
- sum := md5.Sum([]byte(location))
- return hex.EncodeToString(sum[:])
- }
- func cacheLookup(location string) []byte {
- cacheFile := cacheDirectory + locationHash(location)
- bytes, err := ioutil.ReadFile(cacheFile)
- if err == nil {
- log.Debugf("Using cached file: %s", cacheFile)
- return bytes
- }
- return nil
- }
- func cacheAdd(location string, data []byte) {
- tempFile, err := ioutil.TempFile(cacheDirectory, "")
- if err != nil {
- return
- }
- defer os.Remove(tempFile.Name())
- _, err = tempFile.Write(data)
- if err != nil {
- return
- }
- cacheFile := cacheDirectory + locationHash(location)
- os.Rename(tempFile.Name(), cacheFile)
- }
|