lockbox

password manager
Log | Files | Refs | README | LICENSE

commit a056729ea4e1120aad9af942fd5c5747f52e3e4a
parent c6bec61a984ebe1dd61b5bacc3e826d7d58fd742
Author: Sean Enck <sean@ttypty.com>
Date:   Wed, 26 Jul 2023 20:56:11 -0400

more string value conversions for env management

Diffstat:
Minternal/backend/actions.go | 2+-
Minternal/inputs/vars.go | 41+++++++++++++++++++----------------------
2 files changed, 20 insertions(+), 23 deletions(-)

diff --git a/internal/backend/actions.go b/internal/backend/actions.go @@ -21,7 +21,7 @@ func (t *Transaction) act(cb action) error { return err } k := string(key) - file := inputs.EnvironOrDefault(inputs.KeyFileEnv, "") + file := inputs.EnvKeyFile.Get() if !t.exists { if err := create(t.file, k, file); err != nil { return err diff --git a/internal/inputs/vars.go b/internal/inputs/vars.go @@ -14,14 +14,10 @@ import ( ) const ( - prefixKey = "LOCKBOX_" - fieldTOTPEnv = prefixKey + "TOTP" - clipBaseEnv = prefixKey + "CLIP_" - formatTOTPEnv = fieldTOTPEnv + "_FORMAT" - keyModeEnv = prefixKey + "KEYMODE" - keyEnv = prefixKey + "KEY" - // KeyFileEnv is an OPTIONAL keyfile for the database - KeyFileEnv = prefixKey + "KEYFILE" + prefixKey = "LOCKBOX_" + fieldTOTPEnv = prefixKey + "TOTP" + clipBaseEnv = prefixKey + "CLIP_" + formatTOTPEnv = fieldTOTPEnv + "_FORMAT" plainKeyMode = "plaintext" commandKeyMode = "command" defaultTOTPField = "totp" @@ -74,6 +70,10 @@ var ( EnvClipPaste = EnvironmentCommand{environmentBase: environmentBase{key: clipBaseEnv + "PASTE"}} // EnvColorBetween handles terminal coloring for TOTP windows (seconds) EnvColorBetween = EnvironmentString{environmentBase: environmentBase{key: fieldTOTPEnv + "_BETWEEN"}, canDefault: true, defaultValue: TOTPDefaultBetween} + // EnvKeyFile is an OPTIONAL keyfile for the database + EnvKeyFile = EnvironmentString{environmentBase: environmentBase{key: prefixKey + "KEYFILE"}, canDefault: true, defaultValue: ""} + envKeyMode = EnvironmentString{environmentBase: environmentBase{key: prefixKey + "KEYMODE"}, canDefault: true, defaultValue: commandKeyMode} + envKey = EnvironmentString{environmentBase: environmentBase{key: prefixKey + "KEY"}, canDefault: false} ) type ( @@ -95,10 +95,10 @@ func GetReKey(args []string) ([]string, error) { return nil, err } mapped := map[string]string{ - keyModeEnv: *keyMode, - keyEnv: *key, - KeyFileEnv: *keyFile, - EnvStore.key: *store, + envKeyMode.key: *keyMode, + envKey.key: *key, + EnvKeyFile.key: *keyFile, + EnvStore.key: *store, } hasStore := false hasKey := false @@ -109,9 +109,9 @@ func GetReKey(args []string) ([]string, error) { switch k { case EnvStore.key: hasStore = true - case keyEnv: + case envKey.key: hasKey = true - case KeyFileEnv: + case EnvKeyFile.key: hasKeyFile = true } } @@ -126,11 +126,8 @@ func GetReKey(args []string) ([]string, error) { // GetKey will get the encryption key setup for lb func GetKey() ([]byte, error) { - useKeyMode := os.Getenv(keyModeEnv) - if useKeyMode == "" { - useKeyMode = commandKeyMode - } - useKey := os.Getenv(keyEnv) + useKeyMode := envKeyMode.Get() + useKey := envKey.Get() if useKey == "" { return nil, errors.New("no key given") } @@ -176,8 +173,8 @@ func ListEnvironmentVariables(showValues bool) []string { e := environmentOutput{showValues: showValues} var results []string results = append(results, e.formatEnvironmentVariable(true, EnvStore.key, "", "directory to the database file", []string{"file"})) - results = append(results, e.formatEnvironmentVariable(true, keyModeEnv, commandKeyMode, "how to retrieve the database store password", []string{commandKeyMode, plainKeyMode})) - results = append(results, e.formatEnvironmentVariable(true, keyEnv, "", fmt.Sprintf("the database key ('%s' mode) or command to run ('%s' mode)\nto retrieve the database password", plainKeyMode, commandKeyMode), []string{commandArgsExample, "password"})) + results = append(results, e.formatEnvironmentVariable(true, envKeyMode.key, commandKeyMode, "how to retrieve the database store password", []string{commandKeyMode, plainKeyMode})) + results = append(results, e.formatEnvironmentVariable(true, envKey.key, "", fmt.Sprintf("the database key ('%s' mode) or command to run ('%s' mode)\nto retrieve the database password", plainKeyMode, commandKeyMode), []string{commandArgsExample, "password"})) results = append(results, e.formatEnvironmentVariable(false, EnvNoClip.key, no, "disable clipboard operations", isYesNoArgs)) results = append(results, e.formatEnvironmentVariable(false, EnvNoColor.key, no, "disable terminal colors", isYesNoArgs)) results = append(results, e.formatEnvironmentVariable(false, EnvInteractive.key, yes, "enable interactive mode", isYesNoArgs)) @@ -193,7 +190,7 @@ func ListEnvironmentVariables(showValues bool) []string { results = append(results, e.formatEnvironmentVariable(false, EnvNoTOTP.key, no, "disable TOTP integrations", isYesNoArgs)) results = append(results, e.formatEnvironmentVariable(false, EnvHookDir.key, "", "the path to hooks to execute on actions against the database", []string{"directory"})) results = append(results, e.formatEnvironmentVariable(false, EnvClipOSC52.key, no, "enable OSC52 clipboard mode", isYesNoArgs)) - results = append(results, e.formatEnvironmentVariable(false, KeyFileEnv, "", "additional keyfile to access/protect the database", []string{"keyfile"})) + results = append(results, e.formatEnvironmentVariable(false, EnvKeyFile.key, "", "additional keyfile to access/protect the database", []string{"keyfile"})) results = append(results, e.formatEnvironmentVariable(false, ModTimeEnv, ModTimeFormat, fmt.Sprintf("input modification time to set for the entry\n(expected format: %s)", ModTimeFormat), []string{"modtime"})) results = append(results, e.formatEnvironmentVariable(false, JSONDataOutputEnv, string(JSONDataOutputHash), fmt.Sprintf("changes what the data field in JSON outputs will contain\nuse '%s' with CAUTION", JSONDataOutputRaw), []string{string(JSONDataOutputRaw), string(JSONDataOutputHash), string(JSONDataOutputBlank)})) results = append(results, e.formatEnvironmentVariable(false, EnvHashLength.key, fmt.Sprintf("%d", EnvHashLength.defaultValue), fmt.Sprintf("maximum hash length the JSON output should contain\nwhen '%s' mode is set for JSON output", JSONDataOutputHash), intArgs))