@@ -8,11 +8,97 @@ import (
8
8
"fmt"
9
9
"os"
10
10
"os/exec"
11
+ "os/signal"
11
12
"path/filepath"
12
13
"strconv"
13
14
"strings"
15
+ "syscall"
14
16
)
15
17
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
+
16
102
// Print the current active database path
17
103
func showActiveDatabasePath () error {
18
104
@@ -133,19 +219,6 @@ func addNewEntry() error {
133
219
var notes string
134
220
var passwd string
135
221
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
- }
149
222
150
223
if err = checkActiveDatabase (); err != nil {
151
224
return err
@@ -194,11 +267,6 @@ func addNewEntry() error {
194
267
fmt .Printf ("Error adding entry - \" %s\" \n " , err .Error ())
195
268
}
196
269
197
- // If max krypt on - then autodecrypt on call and auto encrypt after call
198
- if maxKrypt {
199
- err = encryptDatabase (defaultDB , & encPasswd )
200
- }
201
-
202
270
return err
203
271
}
204
272
@@ -212,21 +280,8 @@ func editCurrentEntry(idString string) error {
212
280
var passwd string
213
281
var err error
214
282
var entry * Entry
215
- var maxKrypt bool
216
- var defaultDB string
217
- var encPasswd string
218
283
var id int
219
284
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
-
230
285
if err = checkActiveDatabase (); err != nil {
231
286
return err
232
287
}
@@ -273,11 +328,6 @@ func editCurrentEntry(idString string) error {
273
328
fmt .Printf ("Error updating entry - \" %s\" \n " , err .Error ())
274
329
}
275
330
276
- // If max krypt on - then autodecrypt on call and auto encrypt after call
277
- if maxKrypt {
278
- err = encryptDatabase (defaultDB , & encPasswd )
279
- }
280
-
281
331
return err
282
332
}
283
333
@@ -287,19 +337,6 @@ func listCurrentEntry(idString string) error {
287
337
var id int
288
338
var err error
289
339
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
- }
303
340
304
341
if err = checkActiveDatabase (); err != nil {
305
342
return err
@@ -316,11 +353,6 @@ func listCurrentEntry(idString string) error {
316
353
317
354
err = printEntry (entry , true )
318
355
319
- // If max krypt on - then autodecrypt on call and auto encrypt after call
320
- if maxKrypt {
321
- err = encryptDatabase (defaultDB , & passwd )
322
- }
323
-
324
356
return err
325
357
}
326
358
@@ -383,19 +415,6 @@ func findCurrentEntry(term string) error {
383
415
384
416
var err error
385
417
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
- }
399
418
400
419
if err = checkActiveDatabase (); err != nil {
401
420
return err
@@ -419,11 +438,6 @@ func findCurrentEntry(term string) error {
419
438
}
420
439
}
421
440
422
- // If max krypt on - then autodecrypt on call and auto encrypt after call
423
- if maxKrypt {
424
- err = encryptDatabase (defaultDB , & passwd )
425
- }
426
-
427
441
return err
428
442
}
429
443
@@ -433,19 +447,6 @@ func removeCurrentEntry(idString string) error {
433
447
var err error
434
448
var entry * Entry
435
449
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
- }
449
450
450
451
if err = checkActiveDatabase (); err != nil {
451
452
return err
@@ -465,11 +466,6 @@ func removeCurrentEntry(idString string) error {
465
466
fmt .Printf ("Entry with id %d was removed from the database\n " , id )
466
467
}
467
468
468
- // If max krypt on - then autodecrypt on call and auto encrypt after call
469
- if maxKrypt {
470
- err = encryptDatabase (defaultDB , & passwd )
471
- }
472
-
473
469
return err
474
470
}
475
471
@@ -479,19 +475,6 @@ func copyCurrentEntry(idString string) error {
479
475
var err error
480
476
var entry * Entry
481
477
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
- }
495
478
496
479
if err = checkActiveDatabase (); err != nil {
497
480
return err
@@ -511,11 +494,6 @@ func copyCurrentEntry(idString string) error {
511
494
return err
512
495
}
513
496
514
- // If max krypt on - then autodecrypt on call and auto encrypt after call
515
- if maxKrypt {
516
- err = encryptDatabase (defaultDB , & passwd )
517
- }
518
-
519
497
return err
520
498
}
521
499
@@ -638,10 +616,10 @@ func exportToFile(fileName string) error {
638
616
var defaultDB string
639
617
var passwd string
640
618
641
- maxKrypt , defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn ()
642
-
643
619
ext := strings .ToLower (filepath .Ext (fileName ))
644
620
621
+ maxKrypt , defaultDB = isActiveDatabaseEncryptedAndMaxKryptOn ()
622
+
645
623
if ext == ".csv" || ext == ".md" || ext == ".html" || ext == ".pdf" {
646
624
// If max krypt on - then autodecrypt on call and auto encrypt after call
647
625
if maxKrypt {
@@ -662,6 +640,7 @@ func exportToFile(fileName string) error {
662
640
case ".pdf" :
663
641
err = exportToPDF (fileName )
664
642
default :
643
+ fmt .Printf ("Error - extn %s not supported\n " , ext )
665
644
return fmt .Errorf ("format %s not supported" , ext )
666
645
}
667
646
0 commit comments