From: Sergey Matveev <stargrave@stargrave.org>
Date: Fri, 31 May 2019 09:13:25 +0000 (+0300)
Subject: Keep original filename
X-Git-Tag: v1.0.0~3
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=6aae3509e422e5033321f51ea54e1615da78099d;p=uploader.git

Keep original filename
---

diff --git a/src/uploader/main.go b/src/uploader/main.go
index 036b6cb..116c402 100644
--- a/src/uploader/main.go
+++ b/src/uploader/main.go
@@ -61,7 +61,7 @@ var (
 	NotifyToAddr   *string
 )
 
-func notify(timestamp string, size int64, comment string) {
+func notify(filename, timestamp string, size int64, comment string) {
 	if *NotifyToAddr == "" {
 		return
 	}
@@ -79,7 +79,7 @@ Content-Transfer-Encoding: base64
 			*NotifyFromAddr,
 			*NotifyToAddr,
 			mime.BEncoding.Encode("UTF-8", fmt.Sprintf(
-				"%s (%d KiB)", timestamp, size/1024,
+				"%s (%d KiB)", filename, size/1024,
 			)),
 		)),
 		strings.NewReader(base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf(
@@ -119,51 +119,52 @@ func upload(w http.ResponseWriter, r *http.Request) {
 		panic(err)
 	}
 	fn := time.Now().Format(time.RFC3339Nano)
+	fnOrig := p.FileName()
 	fd, err := os.OpenFile(fn+".part", os.O_WRONLY|os.O_CREATE, 0600)
 	if err != nil {
-		log.Println(r.RemoteAddr, fn, p.FileName(), err)
+		log.Println(r.RemoteAddr, fn, fnOrig, err)
 		return
 	}
 	fdBuf := bufio.NewWriterSize(fd, WriteBufSize)
 	mw := io.MultiWriter(fdBuf, h)
 	n, err := io.Copy(mw, p)
 	if err != nil {
-		log.Println(r.RemoteAddr, fn, p.FileName(), err)
+		log.Println(r.RemoteAddr, fn, fnOrig, err)
 		fd.Close()
 		return
 	}
 	if n == 0 {
-		log.Println(r.RemoteAddr, fn, p.FileName(), "empty")
+		log.Println(r.RemoteAddr, fn, fnOrig, "empty")
 		os.Remove(fn + ".part")
 		fd.Close()
 		fmt.Fprintf(w, "Empty file")
 		return
 	}
 	if err = fdBuf.Flush(); err != nil {
-		log.Println(r.RemoteAddr, fn, p.FileName(), err)
+		log.Println(r.RemoteAddr, fn, fnOrig, err)
 		fd.Close()
 		return
 	}
 	fd.Close()
 	sum := hex.EncodeToString(h.Sum(nil))
 	if err = os.Rename(fn+".part", fn); err != nil {
-		log.Println(r.RemoteAddr, fn, p.FileName(), n, sum, err)
+		log.Println(r.RemoteAddr, fn, fnOrig, n, sum, err)
 		return
 	}
 	fmt.Fprintf(w, "Timestamp: %s\nBytes: %d\nBLAKE2b: %s\n", fn, n, sum)
-	log.Println(r.RemoteAddr, fn, p.FileName(), n, sum)
+	log.Println(r.RemoteAddr, fn, fnOrig, n, sum)
 	p, err = mr.NextPart()
 	if err != nil || p.FormName() != CommentFieldName {
-		go notify(fn, n, "")
+		go notify(fnOrig, fn, n, "")
 		return
 	}
 	comment, err := ioutil.ReadAll(p)
 	if err != nil || len(comment) == 0 {
-		go notify(fn, n, "")
+		go notify(fnOrig, fn, n, "")
 		return
 	}
 	ioutil.WriteFile(fn+".txt", comment, os.FileMode(0600))
-	go notify(fn, n, string(comment))
+	go notify(fnOrig, fn, n, string(comment))
 }
 
 func main() {