Skip to content

Commit 098dc34

Browse files
author
Anand
committed
Using closures to wrap actions requiring maxKrypt
1 parent fbed3a1 commit 098dc34

File tree

1 file changed

+89
-110
lines changed

1 file changed

+89
-110
lines changed

actions.go

Lines changed: 89 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,97 @@ import (
88
"fmt"
99
"os"
1010
"os/exec"
11+
"os/signal"
1112
"path/filepath"
1213
"strconv"
1314
"strings"
15+
"syscall"
1416
)
1517

18+
// Wrappers (closures) for functions accepting strings as input for in/out encryption
19+
func WrapperMaxKryptStringFunc(fn actionFunc) actionFunc {
20+
21+
return func(inputStr string) error {
22+
var maxKrypt bool
23+
var defaultDB string
24+
var encPasswd string
25+
var err error
26+
27+
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
28+
29+
// If max krypt on - then autodecrypt on call and auto encrypt after call
30+
if maxKrypt {
31+
err, encPasswd = decryptDatabase(defaultDB)
32+
if err != nil {
33+
return err
34+
}
35+
36+
sigChan := make(chan os.Signal, 1)
37+
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)
38+
39+
go func() {
40+
sig := <-sigChan
41+
fmt.Println("Received signal", sig)
42+
// Reencrypt
43+
encryptDatabase(defaultDB, &encPasswd)
44+
os.Exit(1)
45+
}()
46+
}
47+
48+
err = fn(inputStr)
49+
50+
// If max krypt on - then autodecrypt on call and auto encrypt after call
51+
if maxKrypt {
52+
encryptDatabase(defaultDB, &encPasswd)
53+
}
54+
55+
return err
56+
}
57+
58+
}
59+
60+
// Wrappers (closures) for functions accepting no input for in/out encryption
61+
func WrapperMaxKryptVoidFunc(fn voidFunc) voidFunc {
62+
63+
return func() error {
64+
var maxKrypt bool
65+
var defaultDB string
66+
var encPasswd string
67+
var err error
68+
69+
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
70+
71+
// If max krypt on - then autodecrypt on call and auto encrypt after call
72+
if maxKrypt {
73+
err, encPasswd = decryptDatabase(defaultDB)
74+
if err != nil {
75+
return err
76+
}
77+
78+
sigChan := make(chan os.Signal, 1)
79+
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)
80+
81+
go func() {
82+
sig := <-sigChan
83+
fmt.Println("Received signal", sig)
84+
// Reencrypt
85+
encryptDatabase(defaultDB, &encPasswd)
86+
os.Exit(1)
87+
}()
88+
}
89+
90+
err = fn()
91+
92+
// If max krypt on - then autodecrypt on call and auto encrypt after call
93+
if maxKrypt {
94+
encryptDatabase(defaultDB, &encPasswd)
95+
}
96+
97+
return err
98+
}
99+
100+
}
101+
16102
// Print the current active database path
17103
func showActiveDatabasePath() error {
18104

@@ -133,19 +219,6 @@ func addNewEntry() error {
133219
var notes string
134220
var passwd string
135221
var err error
136-
var maxKrypt bool
137-
var encPasswd string
138-
var defaultDB string
139-
140-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
141-
142-
// If max krypt on - then autodecrypt on call and auto encrypt after call
143-
if maxKrypt {
144-
err, encPasswd = decryptDatabase(defaultDB)
145-
if err != nil {
146-
return err
147-
}
148-
}
149222

150223
if err = checkActiveDatabase(); err != nil {
151224
return err
@@ -194,11 +267,6 @@ func addNewEntry() error {
194267
fmt.Printf("Error adding entry - \"%s\"\n", err.Error())
195268
}
196269

197-
// If max krypt on - then autodecrypt on call and auto encrypt after call
198-
if maxKrypt {
199-
err = encryptDatabase(defaultDB, &encPasswd)
200-
}
201-
202270
return err
203271
}
204272

@@ -212,21 +280,8 @@ func editCurrentEntry(idString string) error {
212280
var passwd string
213281
var err error
214282
var entry *Entry
215-
var maxKrypt bool
216-
var defaultDB string
217-
var encPasswd string
218283
var id int
219284

220-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
221-
222-
// If max krypt on - then autodecrypt on call and auto encrypt after call
223-
if maxKrypt {
224-
err, encPasswd = decryptDatabase(defaultDB)
225-
if err != nil {
226-
return err
227-
}
228-
}
229-
230285
if err = checkActiveDatabase(); err != nil {
231286
return err
232287
}
@@ -273,11 +328,6 @@ func editCurrentEntry(idString string) error {
273328
fmt.Printf("Error updating entry - \"%s\"\n", err.Error())
274329
}
275330

276-
// If max krypt on - then autodecrypt on call and auto encrypt after call
277-
if maxKrypt {
278-
err = encryptDatabase(defaultDB, &encPasswd)
279-
}
280-
281331
return err
282332
}
283333

@@ -287,19 +337,6 @@ func listCurrentEntry(idString string) error {
287337
var id int
288338
var err error
289339
var entry *Entry
290-
var maxKrypt bool
291-
var defaultDB string
292-
var passwd string
293-
294-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
295-
296-
// If max krypt on - then autodecrypt on call and auto encrypt after call
297-
if maxKrypt {
298-
err, passwd = decryptDatabase(defaultDB)
299-
if err != nil {
300-
return err
301-
}
302-
}
303340

304341
if err = checkActiveDatabase(); err != nil {
305342
return err
@@ -316,11 +353,6 @@ func listCurrentEntry(idString string) error {
316353

317354
err = printEntry(entry, true)
318355

319-
// If max krypt on - then autodecrypt on call and auto encrypt after call
320-
if maxKrypt {
321-
err = encryptDatabase(defaultDB, &passwd)
322-
}
323-
324356
return err
325357
}
326358

@@ -383,19 +415,6 @@ func findCurrentEntry(term string) error {
383415

384416
var err error
385417
var entries []Entry
386-
var maxKrypt bool
387-
var defaultDB string
388-
var passwd string
389-
390-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
391-
392-
// If max krypt on - then autodecrypt on call and auto encrypt after call
393-
if maxKrypt {
394-
err, passwd = decryptDatabase(defaultDB)
395-
if err != nil {
396-
return err
397-
}
398-
}
399418

400419
if err = checkActiveDatabase(); err != nil {
401420
return err
@@ -419,11 +438,6 @@ func findCurrentEntry(term string) error {
419438
}
420439
}
421440

422-
// If max krypt on - then autodecrypt on call and auto encrypt after call
423-
if maxKrypt {
424-
err = encryptDatabase(defaultDB, &passwd)
425-
}
426-
427441
return err
428442
}
429443

@@ -433,19 +447,6 @@ func removeCurrentEntry(idString string) error {
433447
var err error
434448
var entry *Entry
435449
var id int
436-
var maxKrypt bool
437-
var defaultDB string
438-
var passwd string
439-
440-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
441-
442-
// If max krypt on - then autodecrypt on call and auto encrypt after call
443-
if maxKrypt {
444-
err, passwd = decryptDatabase(defaultDB)
445-
if err != nil {
446-
return err
447-
}
448-
}
449450

450451
if err = checkActiveDatabase(); err != nil {
451452
return err
@@ -465,11 +466,6 @@ func removeCurrentEntry(idString string) error {
465466
fmt.Printf("Entry with id %d was removed from the database\n", id)
466467
}
467468

468-
// If max krypt on - then autodecrypt on call and auto encrypt after call
469-
if maxKrypt {
470-
err = encryptDatabase(defaultDB, &passwd)
471-
}
472-
473469
return err
474470
}
475471

@@ -479,19 +475,6 @@ func copyCurrentEntry(idString string) error {
479475
var err error
480476
var entry *Entry
481477
var id int
482-
var maxKrypt bool
483-
var defaultDB string
484-
var passwd string
485-
486-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
487-
488-
// If max krypt on - then autodecrypt on call and auto encrypt after call
489-
if maxKrypt {
490-
err, passwd = decryptDatabase(defaultDB)
491-
if err != nil {
492-
return err
493-
}
494-
}
495478

496479
if err = checkActiveDatabase(); err != nil {
497480
return err
@@ -511,11 +494,6 @@ func copyCurrentEntry(idString string) error {
511494
return err
512495
}
513496

514-
// If max krypt on - then autodecrypt on call and auto encrypt after call
515-
if maxKrypt {
516-
err = encryptDatabase(defaultDB, &passwd)
517-
}
518-
519497
return err
520498
}
521499

@@ -638,10 +616,10 @@ func exportToFile(fileName string) error {
638616
var defaultDB string
639617
var passwd string
640618

641-
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
642-
643619
ext := strings.ToLower(filepath.Ext(fileName))
644620

621+
maxKrypt, defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn()
622+
645623
if ext == ".csv" || ext == ".md" || ext == ".html" || ext == ".pdf" {
646624
// If max krypt on - then autodecrypt on call and auto encrypt after call
647625
if maxKrypt {
@@ -662,6 +640,7 @@ func exportToFile(fileName string) error {
662640
case ".pdf":
663641
err = exportToPDF(fileName)
664642
default:
643+
fmt.Printf("Error - extn %s not supported\n", ext)
665644
return fmt.Errorf("format %s not supported", ext)
666645
}
667646

0 commit comments

Comments
 (0)