lockbox

password manager
Log | Files | Refs | README | LICENSE

commit fce75906dbc665faaabdfaa0b8ed13d7f6006352
parent e0ec888a9a9e52f284d80e3ac2a470adfb4fc4ec
Author: Sean Enck <sean@ttypty.com>
Date:   Tue, 12 Jul 2022 18:11:48 -0400

adding hooks

Diffstat:
Mcmd/lb/main.go | 18++++++++----------
Minternal/utils.go | 3++-
Mtests/expected.log | 13++++++++++---
Mtests/run.sh | 10++++++++++
4 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/cmd/lb/main.go b/cmd/lb/main.go @@ -34,16 +34,14 @@ func hooks() { } for _, d := range dirs { if !d.IsDir() { - if d.Type() & 0111 == 011 { - name := d.Name() - cmd := exec.Command(filepath.Join(hookDir, name)) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - internal.Die(fmt.Sprintf("hook failed: %s", name), err) - } - continue - } + name := d.Name() + cmd := exec.Command(filepath.Join(hookDir, name)) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + internal.Die(fmt.Sprintf("hook failed: %s", name), err) + } + continue } internal.Die("invalid hook", internal.NewLockboxError("hook is not file and/or has wrong mode")) } diff --git a/internal/utils.go b/internal/utils.go @@ -15,8 +15,9 @@ import ( type ( // Color are terminal colors for dumb terminal coloring. Color int + // LockboxError for internal errors for lockbox operations. LockboxError struct { - message string + message string } ) diff --git a/tests/expected.log b/tests/expected.log @@ -1,10 +1,13 @@ +HOOK RAN +HOOK RAN keys/one: test keys/one2: test2 +HOOK RAN keys/one keys/one2 keys2/three @@ -12,7 +15,8 @@ uuuuuuuuuu rekeying: /keys/one.lb rekeying: /keys/one2.lb rekeying: /keys2/three.lb -remove entry? (y/N) +remove entry? (y/N) HOOK RAN + keys/one2 keys2/three keys/one2 @@ -21,11 +25,14 @@ test2 test3 test4 +HOOK RAN test XXXXXX test2 -remove entry? (y/N) -remove entry? (y/N) +remove entry? (y/N) HOOK RAN + +remove entry? (y/N) HOOK RAN + unable to decrypt (decrypt not ok) rekeying: /keys/one2.lb test2 diff --git a/tests/run.sh b/tests/run.sh @@ -11,6 +11,7 @@ export LOCKBOX_KEYMODE="plaintext" export LOCKBOX_KEY="plaintextkey" export LOCKBOX_TOTP="totp" export LOCKBOX_INTERACTIVE="no" +export LOCKBOX_HOOKDIR="$TESTS/hooks" export PWGEN_SOURCE="$PWD" export PWGEN_SPECIAL="u" export PWGEN_SED="s/[[:alnum:]]/u/g;s/\./u/g" @@ -24,6 +25,13 @@ git -C $LOCKBOX_STORE add . git -C $LOCKBOX_STORE config user.email "you@example.com" git -C $LOCKBOX_STORE config user.name "Your Name" git -C $LOCKBOX_STORE commit -am "init" +HOOK=$LOCKBOX_HOOKDIR/hook +mkdir -p $LOCKBOX_HOOKDIR + +_hook() { + echo "#!/bin/sh" + echo "echo HOOK RAN" +} _run() { echo "test" | "$BIN/lb" insert keys/one @@ -53,6 +61,8 @@ _run() { } LOG=$TESTS/lb.log +_hook > $HOOK +chmod 755 $HOOK _run 2>&1 | sed "s#$LOCKBOX_STORE##g" > $LOG if ! diff -u $LOG expected.log; then exit 1