From 5dd5a7c6992a461937aae4e00d136297ea04dd17 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 12 Feb 2024 15:39:13 -0300 Subject: [PATCH] bunker: better colors and prompts. --- bunker.go | 56 ++++++++++++++++++++++++++++++------------------------ go.mod | 5 +++-- go.sum | 7 ++----- helpers.go | 3 --- 4 files changed, 36 insertions(+), 35 deletions(-) diff --git a/bunker.go b/bunker.go index b8e25bd..1a0d24a 100644 --- a/bunker.go +++ b/bunker.go @@ -6,7 +6,7 @@ import ( "net/url" "os" - "github.com/manifoldco/promptui" + "github.com/fatih/color" "github.com/nbd-wtf/go-nostr" "github.com/nbd-wtf/go-nostr/nip19" "github.com/nbd-wtf/go-nostr/nip46" @@ -65,12 +65,12 @@ var bunker = &cli.Command{ return err } npub, _ := nip19.EncodePublicKey(pubkey) - log("listening at %s%v%s:\n %spubkey:%s %s\n %snpub:%s %s\n %sconnection code:%s %s\n %sbunker:%s %s\n\n", - BOLD_ON, relayURLs, BOLD_OFF, - BOLD_ON, BOLD_OFF, pubkey, - BOLD_ON, BOLD_OFF, npub, - BOLD_ON, BOLD_OFF, fmt.Sprintf("%s#secret?%s", npub, qs.Encode()), - BOLD_ON, BOLD_OFF, fmt.Sprintf("bunker://%s?%s", pubkey, qs.Encode()), + bold := color.New(color.Bold).Sprint + log("listening at %v:\n pubkey: %s \n npub: %s\n bunker: %s\n\n", + bold(relayURLs), + bold(pubkey), + bold(npub), + bold(fmt.Sprintf("bunker://%s?%s", pubkey, qs.Encode())), ) alwaysYes := c.Bool("yes") @@ -93,15 +93,19 @@ var bunker = &cli.Command{ } jreq, _ := json.MarshalIndent(req, " ", " ") - log("- got request from '%s': %s\n", ie.Event.PubKey, string(jreq)) + log("- got request from '%s': %s\n", color.New(color.Bold, color.FgBlue).Sprint(ie.Event.PubKey), string(jreq)) jresp, _ := json.MarshalIndent(resp, " ", " ") log("~ responding with %s\n", string(jresp)) if alwaysYes || harmless || askProceed(ie.Event.PubKey) { - if err := ie.Relay.Publish(c.Context, eventResponse); err == nil { - log("* sent response!\n") - } else { - log("* failed to send response: %s\n", err) + for _, relayURL := range relayURLs { + if relay, _ := pool.EnsureRelay(relayURL); relay != nil { + if err := relay.Publish(c.Context, eventResponse); err == nil { + log("* sent response through %s\n", relay.URL) + } else { + log("* failed to send response: %s\n", err) + } + } } } } @@ -117,21 +121,23 @@ func askProceed(source string) bool { return true } - prompt := promptui.Select{ - Label: "proceed?", - Items: []string{ - "no", - "yes", - "always from this source", - }, - } - n, _, _ := prompt.Run() - switch n { - case 0: + fmt.Fprintf(os.Stderr, "request from %s:\n", color.New(color.Bold, color.FgBlue).Sprint(source)) + res, err := ask(" proceed to fulfill this request? (yes/no/always from this) (y/n/a): ", "", + func(answer string) bool { + if answer != "y" && answer != "n" && answer != "a" { + return true + } + return false + }) + if err != nil { return false - case 1: + } + switch res { + case "n": + return false + case "y": return true - case 2: + case "a": allowedSources = append(allowedSources, source) return true } diff --git a/go.mod b/go.mod index cd4fe2d..f1b2328 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,7 @@ require ( github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e github.com/fatih/color v1.16.0 github.com/mailru/easyjson v0.7.7 - github.com/manifoldco/promptui v0.9.0 - github.com/nbd-wtf/go-nostr v0.28.4 + github.com/nbd-wtf/go-nostr v0.28.6 github.com/nbd-wtf/nostr-sdk v0.0.5 github.com/urfave/cli/v2 v2.25.7 golang.org/x/exp v0.0.0-20231006140011-7918f672742d @@ -19,6 +18,8 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/btcutil v1.1.3 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect + github.com/chzyer/logex v1.1.10 // indirect + github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect diff --git a/go.sum b/go.sum index 659e784..a23cf72 100644 --- a/go.sum +++ b/go.sum @@ -74,15 +74,13 @@ github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlT github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= -github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/nbd-wtf/go-nostr v0.28.4 h1:chGBpdCQvM9aInf/vVDishY8GHapgqFc/RLl2WDnHQM= -github.com/nbd-wtf/go-nostr v0.28.4/go.mod h1:l9NRRaHPN+QwkqrjNKhnfYjQ0+nKP1xZrVxePPGUs+A= +github.com/nbd-wtf/go-nostr v0.28.6 h1:iOyzk+6ReG0lvyRAar7w7omFmUk5mnXDyFYkJ+zEjiw= +github.com/nbd-wtf/go-nostr v0.28.6/go.mod h1:aFcp8NO3erHg+glzBfh4wpaMrV1/ahcUPAgITdptxwA= github.com/nbd-wtf/nostr-sdk v0.0.5 h1:rec+FcDizDVO0W25PX0lgYMXvP7zNNOgI3Fu9UCm4BY= github.com/nbd-wtf/nostr-sdk v0.0.5/go.mod h1:iJJsikesCGLNFZ9dLqhLPDzdt924EagUmdQxT3w2Lmk= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -129,7 +127,6 @@ golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/helpers.go b/helpers.go index 9a7e27e..858f6a4 100644 --- a/helpers.go +++ b/helpers.go @@ -20,9 +20,6 @@ import ( const ( LINE_PROCESSING_ERROR = iota - - BOLD_ON = "\033[1m" - BOLD_OFF = "\033[21m" ) var log = func(msg string, args ...any) {