From 1fd3c77194c6b675f2faefe099b848f23a375b68 Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Tue, 13 Nov 2018 19:03:08 +0100 Subject: [PATCH] Password script --- scripts/generatePassword/generatePassword.go | 58 ++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 scripts/generatePassword/generatePassword.go diff --git a/scripts/generatePassword/generatePassword.go b/scripts/generatePassword/generatePassword.go new file mode 100644 index 0000000..5b68c09 --- /dev/null +++ b/scripts/generatePassword/generatePassword.go @@ -0,0 +1,58 @@ +package main + +import ( + "bufio" + "fmt" + "multitenantStack/services/tokenTools" + "os" + "os/exec" +) + +func raw(start bool) error { + r := "raw" + if !start { + r = "-raw" + } + + rawMode := exec.Command("stty", r) + rawMode.Stdin = os.Stdin + err := rawMode.Run() + if err != nil { + return err + } + + return rawMode.Wait() +} + +// http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html +func main() { + fmt.Println("Enter a password and press enter:") + var rs []rune + raw(true) + for { + inp := bufio.NewReader(os.Stdin) + r, _, err := inp.ReadRune() + if err != nil { + raw(false) + panic(err) + } + + if r == '\x03' { // ctrl+c + break + } else if r == '\r' { // enter + raw(false) + //fmt.Print(string(rs), "\n\r") + fmt.Println(tokenTools.HashPassword(string(rs))) + //rs = []rune{} + os.Exit(0) + continue + } else if r == '\u007f' { // backspace + fmt.Printf("\033[1D\033[K") + continue + } + + rs = append(rs, r) + } + + raw(false) +}