Migrate to golang.org/x/crypto/ssh/terminal

github.com/howeyc/gopass is unmaintained.
This commit is contained in:
Simon Ser 2021-11-10 13:57:15 +01:00
parent 4c7fd88d57
commit 23d2b7f2d6
3 changed files with 27 additions and 6 deletions

View File

@ -18,7 +18,8 @@ import (
imapserver "github.com/emersion/go-imap/server" imapserver "github.com/emersion/go-imap/server"
"github.com/emersion/go-mbox" "github.com/emersion/go-mbox"
"github.com/emersion/go-smtp" "github.com/emersion/go-smtp"
"github.com/howeyc/gopass" "github.com/mattn/go-isatty"
"golang.org/x/crypto/ssh/terminal"
"github.com/emersion/hydroxide/auth" "github.com/emersion/hydroxide/auth"
"github.com/emersion/hydroxide/carddav" "github.com/emersion/hydroxide/carddav"
@ -41,6 +42,23 @@ func newClient() *protonmail.Client {
} }
} }
func askPass() ([]byte, error) {
f := os.Stdin
if !isatty.IsTerminal(f.Fd()) {
// TODO: this assumes Unix
var err error
if f, err = os.Open("/dev/tty"); err != nil {
return nil, err
}
defer f.Close()
}
b, err := terminal.ReadPassword(int(f.Fd()))
if err == nil {
fmt.Fprintf(os.Stderr, "\n")
}
return b, err
}
func listenAndServeSMTP(addr string, debug bool, authManager *auth.Manager, tlsConfig *tls.Config) error { func listenAndServeSMTP(addr string, debug bool, authManager *auth.Manager, tlsConfig *tls.Config) error {
be := smtpbackend.New(authManager) be := smtpbackend.New(authManager)
s := smtp.NewServer(be) s := smtp.NewServer(be)
@ -240,7 +258,7 @@ func main() {
var loginPassword string var loginPassword string
if a == nil { if a == nil {
fmt.Printf("Password: ") fmt.Printf("Password: ")
if pass, err := gopass.GetPasswd(); err != nil { if pass, err := askPass(); err != nil {
log.Fatal(err) log.Fatal(err)
} else { } else {
loginPassword = string(pass) loginPassword = string(pass)
@ -284,7 +302,7 @@ func main() {
} else { } else {
fmt.Printf("Password: ") fmt.Printf("Password: ")
} }
if pass, err := gopass.GetPasswd(); err != nil { if pass, err := askPass(); err != nil {
log.Fatal(err) log.Fatal(err)
} else { } else {
mailboxPassword = string(pass) mailboxPassword = string(pass)
@ -340,7 +358,7 @@ func main() {
var bridgePassword string var bridgePassword string
fmt.Printf("Bridge password: ") fmt.Printf("Bridge password: ")
if pass, err := gopass.GetPasswd(); err != nil { if pass, err := askPass(); err != nil {
log.Fatal(err) log.Fatal(err)
} else { } else {
bridgePassword = string(pass) bridgePassword = string(pass)
@ -381,7 +399,7 @@ func main() {
var bridgePassword string var bridgePassword string
fmt.Printf("Bridge password: ") fmt.Printf("Bridge password: ")
if pass, err := gopass.GetPasswd(); err != nil { if pass, err := askPass(); err != nil {
log.Fatal(err) log.Fatal(err)
} else { } else {
bridgePassword = string(pass) bridgePassword = string(pass)
@ -426,7 +444,7 @@ func main() {
var bridgePassword string var bridgePassword string
fmt.Fprintf(os.Stderr, "Bridge password: ") fmt.Fprintf(os.Stderr, "Bridge password: ")
if pass, err := gopass.GetPasswd(); err != nil { if pass, err := askPass(); err != nil {
log.Fatal(err) log.Fatal(err)
} else { } else {
bridgePassword = string(pass) bridgePassword = string(pass)

1
go.mod
View File

@ -15,6 +15,7 @@ require (
github.com/emersion/go-vcard v0.0.0-20210521075357-3445b9171995 github.com/emersion/go-vcard v0.0.0-20210521075357-3445b9171995
github.com/emersion/go-webdav v0.3.0 github.com/emersion/go-webdav v0.3.0
github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c
github.com/mattn/go-isatty v0.0.14 // indirect
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect

2
go.sum
View File

@ -32,6 +32,8 @@ github.com/emersion/go-webdav v0.3.0/go.mod h1:uSM1VveeKtogBVWaYccTksToczooJ0rrV
github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c h1:aY2hhxLhjEAbfXOx2nRJxCXezC6CO2V/yN+OCr1srtk= github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c h1:aY2hhxLhjEAbfXOx2nRJxCXezC6CO2V/yN+OCr1srtk=
github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
github.com/martinlindhe/base36 v1.1.0/go.mod h1:+AtEs8xrBpCeYgSLoY/aJ6Wf37jtBuR0s35750M27+8= github.com/martinlindhe/base36 v1.1.0/go.mod h1:+AtEs8xrBpCeYgSLoY/aJ6Wf37jtBuR0s35750M27+8=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=