6
6
"net/url"
7
7
"os"
8
8
9
- "github.com/manifoldco/promptui "
9
+ "github.com/fatih/color "
10
10
"github.com/nbd-wtf/go-nostr"
11
11
"github.com/nbd-wtf/go-nostr/nip19"
12
12
"github.com/nbd-wtf/go-nostr/nip46"
@@ -65,12 +65,12 @@ var bunker = &cli.Command{
65
65
return err
66
66
}
67
67
npub , _ := nip19 .EncodePublicKey (pubkey )
68
- 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 " ,
69
- BOLD_ON , relayURLs , BOLD_OFF ,
70
- BOLD_ON , BOLD_OFF , pubkey ,
71
- BOLD_ON , BOLD_OFF , npub ,
72
- BOLD_ON , BOLD_OFF , fmt . Sprintf ( "%s#secret?%s" , npub , qs . Encode () ),
73
- BOLD_ON , BOLD_OFF , fmt .Sprintf ("bunker://%s?%s" , pubkey , qs .Encode ()),
68
+ bold := color . New ( color . Bold ). Sprint
69
+ log ( "listening at %v: \n pubkey: %s \n npub: %s \n bunker: %s \n \n " ,
70
+ bold ( relayURLs ) ,
71
+ bold ( pubkey ) ,
72
+ bold ( npub ),
73
+ bold ( fmt .Sprintf ("bunker://%s?%s" , pubkey , qs .Encode () )),
74
74
)
75
75
76
76
alwaysYes := c .Bool ("yes" )
@@ -93,15 +93,19 @@ var bunker = &cli.Command{
93
93
}
94
94
95
95
jreq , _ := json .MarshalIndent (req , " " , " " )
96
- log ("- got request from '%s': %s\n " , ie .Event .PubKey , string (jreq ))
96
+ log ("- got request from '%s': %s\n " , color . New ( color . Bold , color . FgBlue ). Sprint ( ie .Event .PubKey ) , string (jreq ))
97
97
jresp , _ := json .MarshalIndent (resp , " " , " " )
98
98
log ("~ responding with %s\n " , string (jresp ))
99
99
100
100
if alwaysYes || harmless || askProceed (ie .Event .PubKey ) {
101
- if err := ie .Relay .Publish (c .Context , eventResponse ); err == nil {
102
- log ("* sent response!\n " )
103
- } else {
104
- log ("* failed to send response: %s\n " , err )
101
+ for _ , relayURL := range relayURLs {
102
+ if relay , _ := pool .EnsureRelay (relayURL ); relay != nil {
103
+ if err := relay .Publish (c .Context , eventResponse ); err == nil {
104
+ log ("* sent response through %s\n " , relay .URL )
105
+ } else {
106
+ log ("* failed to send response: %s\n " , err )
107
+ }
108
+ }
105
109
}
106
110
}
107
111
}
@@ -117,21 +121,23 @@ func askProceed(source string) bool {
117
121
return true
118
122
}
119
123
120
- prompt := promptui.Select {
121
- Label : "proceed?" ,
122
- Items : []string {
123
- "no" ,
124
- "yes" ,
125
- "always from this source" ,
126
- },
124
+ fmt .Fprintf (os .Stderr , "request from %s:\n " , color .New (color .Bold , color .FgBlue ).Sprint (source ))
125
+ res , err := ask (" proceed to fulfill this request? (yes/no/always from this) (y/n/a): " , "" ,
126
+ func (answer string ) bool {
127
+ if answer != "y" && answer != "n" && answer != "a" {
128
+ return true
129
+ }
130
+ return false
131
+ })
132
+ if err != nil {
133
+ return false
127
134
}
128
- n , _ , _ := prompt .Run ()
129
- switch n {
130
- case 0 :
135
+ switch res {
136
+ case "n" :
131
137
return false
132
- case 1 :
138
+ case "y" :
133
139
return true
134
- case 2 :
140
+ case "a" :
135
141
allowedSources = append (allowedSources , source )
136
142
return true
137
143
}
0 commit comments