]> Sergey Matveev's repositories - uploader.git/commitdiff
Keep original filename
authorSergey Matveev <stargrave@stargrave.org>
Fri, 31 May 2019 09:13:25 +0000 (12:13 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 31 May 2019 09:13:25 +0000 (12:13 +0300)
src/uploader/main.go

index 036b6cb316f9d3107aecb65a1afd3dd9deafd5c2..116c4025a95f166b52da6ab1ecb9744dc6367e70 100644 (file)
@@ -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() {