- for _, file := range r.MultipartForm.File["gpg_signature"] {
- filename := file.Filename
- if _, exists := gpgSigsExpected[filename]; !exists {
- log.Println(r.RemoteAddr, filename, "unexpected GPG signature filename")
- http.Error(w, "unexpected GPG signature filename", http.StatusBadRequest)
- return
- }
- delete(gpgSigsExpected, filename)
- log.Println(r.RemoteAddr, "put", filename, "by", username)
- path := filepath.Join(dirPath, filename)
- if _, err = os.Stat(path); err == nil {
- log.Println(r.RemoteAddr, filename, "already exists")
- http.Error(w, "already exists", http.StatusBadRequest)
- return
- }
- src, err := file.Open()
- if err != nil {
- log.Println("error", r.RemoteAddr, filename, err)
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- sig, err := io.ReadAll(src)
- src.Close()
- if err != nil {
- log.Println("error", r.RemoteAddr, filename, err)
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- if err = WriteFileSync(dirPath, path, sig, now); err != nil {
- log.Println("error", r.RemoteAddr, path, err)
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- }