warranty = flag.Bool("warranty", false, "Print warranty information")
killed bool
+
+ normalizationRe *regexp.Regexp = regexp.MustCompilePOSIX("[-_.]+")
)
func mkdirForPkg(w http.ResponseWriter, r *http.Request, dir string) bool {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
+ pkgNames, exists := r.MultipartForm.Value["name"]
+ if !exists || len(pkgNames) != 1 {
+ http.Error(w, "name is expected in request", http.StatusBadRequest)
+ return
+ }
+ dir := normalizationRe.ReplaceAllString(pkgNames[0], "-")
+ dirPath := filepath.Join(*root, dir)
var digestExpected []byte
if digestExpectedHex, exists := r.MultipartForm.Value["sha256_digest"]; exists {
digestExpected, err = hex.DecodeString(digestExpectedHex[0])
filename := file.Filename
gpgSigsExpected[filename+GPGSigExt] = struct{}{}
log.Println(r.RemoteAddr, "put", filename, "by", username)
- dir := filename[:strings.LastIndex(filename, "-")]
- dirPath := filepath.Join(*root, dir)
path := filepath.Join(dirPath, filename)
if _, err = os.Stat(path); err == nil {
log.Println(r.RemoteAddr, "already exists", filename)
}
delete(gpgSigsExpected, filename)
log.Println(r.RemoteAddr, "put", filename, "by", username)
- dir := filename[:strings.LastIndex(filename, "-")]
- dirPath := filepath.Join(*root, dir)
path := filepath.Join(dirPath, filename)
if _, err = os.Stat(path); err == nil {
log.Println(r.RemoteAddr, "already exists", filename)
@itemize
@item proxying and caching of missing packages, including GPG signatures
+@item @url{https://pythonwheels.com/, Wheel} uploading support
@item atomic packages store on filesystem
@item SHA256-checksummed packages: storing checksums, giving them back,
verifying stored files integrity, verifying checksum of uploaded