71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
`fmt`
|
|
`log`
|
|
`os`
|
|
|
|
`update_vault_totp/internal`
|
|
|
|
"golang.org/x/term"
|
|
"r00t2.io/sysutils/envs"
|
|
)
|
|
|
|
func getToken() (tok string, err error) {
|
|
|
|
var p1 []byte
|
|
var oldState *term.State
|
|
|
|
if envs.HasEnv(internal.VaultTokEnv) {
|
|
tok = os.Getenv(internal.VaultTokEnv)
|
|
return
|
|
}
|
|
|
|
// Prompt for it instead
|
|
fmt.Println("Vault token needed.\nVault token (will not be echoed back):")
|
|
if oldState, err = term.GetState(internal.TermFd); err != nil {
|
|
return
|
|
}
|
|
defer func() {
|
|
if err = term.Restore(internal.TermFd, oldState); err != nil {
|
|
log.Println("restore failed:", err)
|
|
}
|
|
}()
|
|
|
|
if p1, err = term.ReadPassword(internal.TermFd); err != nil {
|
|
return
|
|
}
|
|
tok = string(p1)
|
|
|
|
return
|
|
}
|
|
|
|
func main() {
|
|
|
|
var err error
|
|
var errs []error
|
|
var tok string
|
|
var c *internal.Client
|
|
|
|
if tok, err = getToken(); err != nil {
|
|
log.Panicln(err)
|
|
}
|
|
|
|
if c, err = internal.New(tok, internal.DefAddr, internal.TgtMnt, internal.CollNm); err != nil {
|
|
log.Panicln(err)
|
|
}
|
|
|
|
c.DeleteAllVaultKeys()
|
|
|
|
if err = c.Close(); err != nil {
|
|
log.Println(err)
|
|
}
|
|
if errs = c.Errors(); len(errs) > 0 {
|
|
for _, err = range errs {
|
|
log.Println(err)
|
|
}
|
|
}
|
|
|
|
log.Println("Done.")
|
|
}
|