From 3a90bef48a8246ec733c7ffe7433b4e0e23834d1 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Thu, 7 Mar 2024 19:09:23 -0500 Subject: [PATCH] Allow generating new passwords for existing entries --- main.go | 7 ++++--- src/cli/edit.go | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index fdd90c7..325d4d8 100644 --- a/main.go +++ b/main.go @@ -108,16 +108,17 @@ func main() { switch args[3] { case "show", "-s": cli.AddEntry(targetLocation, false, 1) - case "update", "-u": // TODO offline.GenUpdate(targetLocation), exit after run + case "update", "-u": + cli.GenUpdate(targetLocation, true) default: cli.HelpGen() } } else if args[3] == "update" || args[3] == "-u" { switch args[4] { case "show", "-s": - cli.AddEntry(targetLocation, false, 1) + cli.GenUpdate(targetLocation, false) default: - cli.AddEntry(targetLocation, true, 1) + cli.GenUpdate(targetLocation, true) } } cli.HelpGen() diff --git a/src/cli/edit.go b/src/cli/edit.go index f4bc5b1..7745d34 100644 --- a/src/cli/edit.go +++ b/src/cli/edit.go @@ -51,3 +51,25 @@ func EditEntry(targetLocation string, hidePassword bool, field int) { os.Exit(1) } } + +// GenUpdate generates a new password for an entry at targetLocation (user input) +func GenUpdate(targetLocation string, hidePassword bool) { + // ensure targetLocation exists + offline.TargetIsFile(targetLocation, true, 2) + + // read old entry data + unencryptedEntry := offline.DecryptGPG(targetLocation) + + // generate a new password + unencryptedEntry[0] = offline.StringGen(inputInt("Password length:"), inputBinary("Generate a complex (special characters) password?"), 0.2) + + // write and preview the modified entry + if offline.EntryIsNotEmpty(unencryptedEntry) { + offline.WriteEntry(targetLocation, unencryptedEntry) + fmt.Println(ansiBold + "\nEntry Preview:" + offline.AnsiReset) + EntryReader(unencryptedEntry, hidePassword) + } else { + fmt.Println(offline.AnsiError + "No data supplied for entry" + offline.AnsiReset) + os.Exit(1) + } +}