Skip to content

Commit 3ed547c

Browse files
committed
A json response is sent back by server in case of folder encrypt procedure.
1 parent ec8818f commit 3ed547c

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

S_DES/DESEncryptor.go

+27-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"io/ioutil"
88
"log"
99
"os"
10+
"runtime"
1011
"sync"
1112
"time"
1213
)
@@ -326,6 +327,14 @@ func (engine *DesEncryptor) runDecryption(filename string) {
326327
// fmt.Println("Encryption filename:", engine.encryptionFilename)
327328
}
328329

330+
/**
331+
copied from stackoverflow.
332+
*/
333+
func memory_usage(m *runtime.MemStats) string {
334+
runtime.ReadMemStats(m)
335+
return fmt.Sprintf("system memory: %dMB; heap alloc: %dMB; heap idle-released: %dMB", int((m.Sys/1024)/1024), int((m.HeapAlloc/1024)/1024), int(((m.HeapIdle-m.HeapReleased)/1024)/1024))
336+
}
337+
329338
/**
330339
public File-encryption API.
331340
@return: boolean value. True if encryption is successful and encrypted file
@@ -335,6 +344,8 @@ func (encryptor *DesEncryptor) EncryptFile(filename string) bool {
335344
log.Println("file for encryption:", filename)
336345
log.Println("File-Encryption procedure started...")
337346

347+
fmt.Println("Memory stats before encryption: ", memory_usage(&runtime.MemStats{}))
348+
338349
encryptor.filename = filename
339350
encryptor.encryptionFilename = filename + ".enc"
340351
encryptor.runEncryption(filename)
@@ -370,18 +381,23 @@ func (encryptor *DesEncryptor) EncryptFile(filename string) bool {
370381
public API for encrypting folder.
371382
@return: boolean value. True if encryption is successful. Otherwise false is returned.
372383
*/
373-
func (encryptor *DesEncryptor) EncryptFolder(foldername string, isRecursive bool) {
384+
func (encryptor *DesEncryptor) EncryptFolder(foldername string, isRecursive bool) map[string]bool {
374385
log.Println("Encryption started for folder -", foldername)
375-
encryptor.executeFolderEncryption(foldername, isRecursive)
386+
executionStart := time.Now()
387+
resultMap := encryptor.executeFolderEncryption(foldername, isRecursive)
388+
executionElapsed := time.Since(executionStart)
376389
log.Println("Folder - ", foldername, " encrypted successfully...")
390+
log.Println("Total time required for folder encryption - ", executionElapsed)
391+
return resultMap
377392
}
378393

379394
/**
380395
Concurrently encrypts files of the folder
381396
*/
382-
func (encryptor *DesEncryptor) executeFolderEncryption(foldername string, isRecursive bool) {
397+
func (encryptor *DesEncryptor) executeFolderEncryption(foldername string, isRecursive bool) map[string]bool {
383398
fileList, err := encryptor.getFileList(foldername)
384399
folderList, err := encryptor.getFolderList(foldername)
400+
var folderFileEncryptionResult = make(map[string]bool)
385401

386402
fmt.Println("fileList:", fileList)
387403
fmt.Println("folderList:", folderList)
@@ -398,14 +414,20 @@ func (encryptor *DesEncryptor) executeFolderEncryption(foldername string, isRecu
398414
}
399415
filename := foldername + "/" + fileList[i]
400416
log.Println("Encrypting file: ", fileList[i])
401-
encryptor.EncryptFile(filename)
417+
res := encryptor.EncryptFile(filename)
418+
folderFileEncryptionResult[filename] = res
402419
}
403420
// List of folders are encrypted sequentially.
404421
if isRecursive {
405422
for _, directory := range folderList {
406-
encryptor.executeFolderEncryption(foldername+"/"+directory, isRecursive)
423+
nestedFolderResultMap := encryptor.executeFolderEncryption(foldername+"/"+directory, isRecursive)
424+
for nestedFileName, result := range nestedFolderResultMap {
425+
folderFileEncryptionResult[nestedFileName] = result
426+
}
407427
}
408428
}
429+
430+
return folderFileEncryptionResult
409431
}
410432

411433
/**
@@ -473,8 +495,6 @@ func (engine *DesEncryptor) DecryptFile(filename string) bool {
473495
permissions := 0644
474496
engine.decryptionFileConnector, err =
475497
os.OpenFile(engine.decryptionFilename, os.O_APPEND|os.O_WRONLY, (os.FileMode)(permissions))
476-
// file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, (os.FileMode)(permissions))
477-
// engine.cipher.Init("des_input.txt")
478498
engine.runDecryption(filename)
479499
engine.decryptionFileConnector.Close()
480500

fesserver/server.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ func decryptFile(w http.ResponseWriter, r *http.Request) {
7373
}
7474

7575
func encryptFolder(w http.ResponseWriter, r *http.Request) {
76-
// var response OperationResponse
7776
var isRecursive bool
7877
foldername, ok := r.URL.Query()["foldername"]
7978
if !ok {
@@ -85,7 +84,15 @@ func encryptFolder(w http.ResponseWriter, r *http.Request) {
8584
} else {
8685
isRecursive = false
8786
}
88-
prop.Fesengine.EncryptFolder(foldername[0], isRecursive)
87+
resultMap := prop.Fesengine.EncryptFolder(foldername[0], isRecursive)
88+
jsonResponse, err := json.Marshal(resultMap)
89+
if err != nil {
90+
log.Println("Problem sending back response. Folder encryption might be successful. Check the folder contents.")
91+
}
92+
w.Header().Set("Content-type", "application/json")
93+
w.WriteHeader(http.StatusCreated)
94+
json.NewEncoder(w).Encode(resultMap)
95+
w.Write(jsonResponse)
8996
}
9097

9198
func decryptFolder(w http.ResponseWriter, r *http.Request) {

0 commit comments

Comments
 (0)