examples/client: Disable echo for sensitive input

This commit is contained in:
adnano 2020-09-28 14:20:19 -04:00
parent 10760a256f
commit f785ed12fd
5 changed files with 26 additions and 6 deletions

View File

@ -6,7 +6,7 @@ import (
"log"
"time"
gmi "git.sr.ht/~adnano/go-gemini"
"git.sr.ht/~adnano/go-gemini"
)
func main() {

View File

@ -8,9 +8,11 @@ import (
"crypto/x509"
"fmt"
"os"
"syscall"
"time"
gmi "git.sr.ht/~adnano/go-gemini"
"git.sr.ht/~adnano/go-gemini"
"golang.org/x/crypto/ssh/terminal"
)
var (
@ -76,8 +78,16 @@ func sendRequest(req *gmi.Request) error {
switch resp.Status / 10 {
case gmi.StatusClassInput:
fmt.Printf("%s: ", resp.Meta)
scanner.Scan()
req.URL.RawQuery = scanner.Text()
if resp.Status == gmi.StatusSensitiveInput {
input, err := terminal.ReadPassword(int(syscall.Stdin))
if err != nil {
return err
}
req.URL.RawQuery = string(input)
} else {
scanner.Scan()
req.URL.RawQuery = scanner.Text()
}
return sendRequest(req)
case gmi.StatusClassSuccess:
fmt.Print(string(resp.Body))
@ -135,7 +145,7 @@ func trustCertificate(cert *x509.Certificate) trust {
func main() {
if len(os.Args) < 2 {
fmt.Println("usage: %s gemini://...", os.Args[0])
fmt.Printf("usage: %s gemini://...", os.Args[0])
os.Exit(1)
}

View File

@ -32,7 +32,7 @@ func TestServeMuxEntryOrder(t *testing.T) {
for _, s := range a {
mux.Handle(s, nil)
}
for i, e := range mux.entries {
for i, e := range mux.es {
s := e.u.String()
if s != expected[i] {
t.Errorf("wrong order of mux entries: expected %s, got %s", expected[i], s)

2
go.mod
View File

@ -1,3 +1,5 @@
module git.sr.ht/~adnano/go-gemini
go 1.15
require golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a

8
go.sum Normal file
View File

@ -0,0 +1,8 @@
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=