]> Cypherpunks.ru repositories - gocheese.git/blobdiff - refresh.go
More errors logging
[gocheese.git] / refresh.go
index 3404a37bc015a53217bdd42d124f6ebdb2872a09..4a5e962925d7b8ff2a2e7ee3ac0a58fb3ce06658 100644 (file)
@@ -48,28 +48,29 @@ func blake2b256New() hash.Hash {
 func refreshDir(
        w http.ResponseWriter,
        r *http.Request,
-       dir,
-       filenameGet string,
+       pkgName, filenameGet string,
        gpgUpdate bool,
 ) bool {
-       if _, err := os.Stat(filepath.Join(*root, dir, InternalFlag)); err == nil {
+       if _, err := os.Stat(filepath.Join(*root, pkgName, InternalFlag)); err == nil {
                return true
        }
-       resp, err := http.Get(*pypiURL + dir + "/")
+       resp, err := http.Get(*pypiURL + pkgName + "/")
        if err != nil {
+               log.Println("error", r.RemoteAddr, "refresh", pkgName, err)
                http.Error(w, err.Error(), http.StatusBadGateway)
                return false
        }
        body, err := ioutil.ReadAll(resp.Body)
        resp.Body.Close()
        if err != nil {
+               log.Println("error", r.RemoteAddr, "refresh", pkgName, err)
                http.Error(w, err.Error(), http.StatusBadGateway)
                return false
        }
-       if !mkdirForPkg(w, r, dir) {
+       if !mkdirForPkg(w, r, pkgName) {
                return false
        }
-       dirPath := filepath.Join(*root, dir)
+       dirPath := filepath.Join(*root, pkgName)
        for _, lineRaw := range bytes.Split(body, []byte("\n")) {
                submatches := pkgPyPI.FindStringSubmatch(string(lineRaw))
                if len(submatches) == 0 {
@@ -79,12 +80,13 @@ func refreshDir(
                filename := submatches[2]
                pkgURL, err := url.Parse(uri)
                if err != nil {
+                       log.Println("error", r.RemoteAddr, "refresh", uri, err)
                        http.Error(w, err.Error(), http.StatusBadGateway)
                        return false
                }
 
                if pkgURL.Fragment == "" {
-                       log.Println(r.RemoteAddr, "pypi", filename, "no digest provided")
+                       log.Println(r.RemoteAddr, "pypi", filename, "no digest")
                        http.Error(w, "no digest provided", http.StatusBadGateway)
                        return false
                }
@@ -93,12 +95,13 @@ func refreshDir(
                        // Ancient non PEP-0503 PyPIs, assume MD5
                        digestInfo = []string{"md5", digestInfo[0]}
                } else if len(digestInfo) != 2 {
-                       log.Println(r.RemoteAddr, "pypi", filename, "invalid digest provided")
+                       log.Println("error", r.RemoteAddr, "pypi", filename, "invalid digest")
                        http.Error(w, "invalid digest provided", http.StatusBadGateway)
                        return false
                }
                digest, err := hex.DecodeString(digestInfo[1])
                if err != nil {
+                       log.Println("error", r.RemoteAddr, "pypi", filename, "invalid digest")
                        http.Error(w, err.Error(), http.StatusBadGateway)
                        return false
                }
@@ -119,15 +122,12 @@ func refreshDir(
                        hasherNew = blake2b256New
                        hashSize = blake2b.Size256
                default:
-                       log.Println(
-                               r.RemoteAddr, "pypi", filename,
-                               "unknown digest algorithm", hashAlgo,
-                       )
+                       log.Println("error", r.RemoteAddr, "pypi", filename, "unknown digest", hashAlgo)
                        http.Error(w, "unknown digest algorithm", http.StatusBadGateway)
                        return false
                }
                if len(digest) != hashSize {
-                       log.Println(r.RemoteAddr, "pypi", filename, "invalid digest length")
+                       log.Println("error", r.RemoteAddr, "pypi", filename, "invalid digest length")
                        http.Error(w, "invalid digest length", http.StatusBadGateway)
                        return false
                }
@@ -146,10 +146,10 @@ func refreshDir(
                                http.Error(w, "shutting down", http.StatusInternalServerError)
                                return false
                        }
-                       log.Println(r.RemoteAddr, "pypi download", filename)
+                       log.Println(r.RemoteAddr, "pypi", filename, "download")
                        resp, err = http.Get(uri)
                        if err != nil {
-                               log.Println(r.RemoteAddr, "pypi download error:", err.Error())
+                               log.Println("error", r.RemoteAddr, "pypi", filename, "download", err)
                                http.Error(w, err.Error(), http.StatusBadGateway)
                                return false
                        }
@@ -158,6 +158,7 @@ func refreshDir(
                        hasherSHA256 := sha256.New()
                        dst, err := TempFile(dirPath)
                        if err != nil {
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
@@ -170,12 +171,14 @@ func refreshDir(
                        if _, err = io.Copy(wr, resp.Body); err != nil {
                                os.Remove(dst.Name())
                                dst.Close()
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
                        if err = dstBuf.Flush(); err != nil {
                                os.Remove(dst.Name())
                                dst.Close()
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
@@ -189,18 +192,22 @@ func refreshDir(
                        if err = dst.Sync(); err != nil {
                                os.Remove(dst.Name())
                                dst.Close()
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
                        if err = dst.Close(); err != nil {
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
                        if err = os.Rename(dst.Name(), path); err != nil {
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
                        if err = DirSync(dirPath); err != nil {
+                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
@@ -230,14 +237,15 @@ func refreshDir(
                                goto GPGSigSkip
                        }
                        if !bytes.HasPrefix(sig, []byte("-----BEGIN PGP SIGNATURE-----")) {
-                               log.Println(r.RemoteAddr, "pypi non PGP signature", filename)
+                               log.Println(r.RemoteAddr, "pypi", filename+GPGSigExt, "non PGP")
                                goto GPGSigSkip
                        }
                        if err = WriteFileSync(dirPath, path+GPGSigExt, sig); err != nil {
+                               log.Println("error", r.RemoteAddr, "pypi", filename+GPGSigExt, err)
                                http.Error(w, err.Error(), http.StatusInternalServerError)
                                return false
                        }
-                       log.Println(r.RemoteAddr, "pypi downloaded signature", filename)
+                       log.Println(r.RemoteAddr, "pypi", filename+GPGSigExt, "downloaded")
                }
        GPGSigSkip:
                path = path + "." + hashAlgo
@@ -246,11 +254,13 @@ func refreshDir(
                        continue
                }
                if !os.IsNotExist(err) {
+                       log.Println("error", r.RemoteAddr, "pypi", path, err)
                        http.Error(w, err.Error(), http.StatusInternalServerError)
                        return false
                }
-               log.Println(r.RemoteAddr, "pypi touch", filename)
+               log.Println(r.RemoteAddr, "pypi", filename, "touch")
                if err = WriteFileSync(dirPath, path, digest); err != nil {
+                       log.Println("error", r.RemoteAddr, "pypi", path, err)
                        http.Error(w, err.Error(), http.StatusInternalServerError)
                        return false
                }