X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=refresh.go;h=b97d2becfac6b71ee10c8466179f496533211910;hb=60bbf40bfc8b720f176faef55b5403986db86f8c;hp=092bd0125fa9ae555cb8a18b14c89ffd1440967f;hpb=60834a0713d5dcc6a9911511cb8618ce7358c824;p=gocheese.git diff --git a/refresh.go b/refresh.go index 092bd01..b97d2be 100644 --- a/refresh.go +++ b/refresh.go @@ -85,11 +85,11 @@ func refreshDir( pkgName, filenameGet string, gpgUpdate bool, ) bool { - if _, err := os.Stat(filepath.Join(*Root, pkgName, InternalFlag)); err == nil { + if _, err := os.Stat(filepath.Join(Root, pkgName, InternalFlag)); err == nil { return true } c := http.Client{Transport: &PyPIHTTPTransport} - dirPath := filepath.Join(*Root, pkgName) + dirPath := filepath.Join(Root, pkgName) now := time.Now() var allReleases map[string][]*PkgReleaseInfo @@ -378,6 +378,7 @@ func refreshDir( } hasher := hasherNew() hasherSHA256 := sha256.New() + hasherBLAKE2b256 := blake2b256New() dst, err := TempFile(dirPath) if err != nil { log.Println("error", r.RemoteAddr, "pypi", filename, err) @@ -389,6 +390,9 @@ func refreshDir( if hashAlgo != HashAlgoSHA256 { wrs = append(wrs, hasherSHA256) } + if hashAlgo != HashAlgoBLAKE2b256 { + wrs = append(wrs, hasherBLAKE2b256) + } wr := io.MultiWriter(wrs...) if _, err = io.Copy(wr, resp.Body); err != nil { os.Remove(dst.Name()) @@ -439,13 +443,45 @@ func refreshDir( http.Error(w, err.Error(), http.StatusInternalServerError) return false } - if hashAlgo != HashAlgoSHA256 { - hashAlgo = HashAlgoSHA256 - digest = hasherSHA256.Sum(nil) - for _, algo := range KnownHashAlgos[1:] { - os.Remove(path + "." + algo) - } + + var digestSHA256 []byte + var digestBLAKE2b256 []byte + if hashAlgo == HashAlgoSHA256 { + digestSHA256 = hasher.Sum(nil) + } else { + digestSHA256 = hasherSHA256.Sum(nil) + } + if hashAlgo == HashAlgoBLAKE2b256 { + digestBLAKE2b256 = hasher.Sum(nil) + } else { + digestBLAKE2b256 = hasherBLAKE2b256.Sum(nil) + } + if err = WriteFileSync( + dirPath, path+"."+HashAlgoSHA256, + digestSHA256, mtime, + ); err != nil { + log.Println( + "error", r.RemoteAddr, "pypi", + path+"."+HashAlgoSHA256, err, + ) + http.Error(w, err.Error(), http.StatusInternalServerError) + return false + } + if err = WriteFileSync( + dirPath, path+"."+HashAlgoBLAKE2b256, + digestBLAKE2b256, mtime, + ); err != nil { + log.Println( + "error", r.RemoteAddr, "pypi", + path+"."+HashAlgoBLAKE2b256, err, + ) + http.Error(w, err.Error(), http.StatusInternalServerError) + return false + } + for _, algo := range KnownHashAlgos[2:] { + os.Remove(path + "." + algo) } + digest = nil } if mtimeExists { stat, err := os.Stat(path) @@ -498,6 +534,9 @@ func refreshDir( } GPGSigSkip: + if digest == nil { + continue + } path = path + "." + hashAlgo stat, err := os.Stat(path) if err == nil &&