From 8f38ca5d38495097ed87b105022da37bfbedede4 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Sat, 23 Jul 2016 20:44:59 +0200
Subject: print size and sha256 hash of finished upload


diff --git a/src/rhimportd/uploadWeb.go b/src/rhimportd/uploadWeb.go
index 9d16e92..d60fb22 100644
--- a/src/rhimportd/uploadWeb.go
+++ b/src/rhimportd/uploadWeb.go
@@ -25,6 +25,8 @@
 package main
 
 import (
+	"crypto/sha256"
+	"encoding/hex"
 	"encoding/json"
 	"io"
 	"net/http"
@@ -89,12 +91,16 @@ func webUploadHandler(conf *rhimport.Config, db *rddb.DBChan, sessions *rhimport
 	defer close(attachmentChan)
 
 	rhl.Printf("WebUploadHandler: starting file upload for '%s/%s'", username, sessionid)
+	sizeTotal := uint64(0)
+	hash := sha256.New()
+	body := io.TeeReader(r.Body, hash)
 	for {
 		chunk := rhimport.AttachmentChunk{}
 
 		var data [128 * 1024]byte
-		n, err := r.Body.Read(data[:])
+		n, err := body.Read(data[:])
 		if n > 0 {
+			sizeTotal += uint64(n)
 			chunk.Data = data[:n]
 			if err == io.EOF {
 				err = nil
@@ -102,7 +108,8 @@ func webUploadHandler(conf *rhimport.Config, db *rddb.DBChan, sessions *rhimport
 		}
 		chunk.Error = err
 		if err == io.EOF {
-			rhl.Printf("WebUploadHandler: file upload for '%s/%s' finished", username, sessionid)
+			hashStr := hex.EncodeToString(hash.Sum(nil))
+			rhl.Printf("WebUploadHandler: file upload for '%s/%s' finished (%d bytes, SHA256: %s)", username, sessionid, sizeTotal, hashStr)
 			webUploadSuccessResponse(w)
 			return
 		}
-- 
cgit v0.10.2