update go-nostr keyer interface and make req --auth work again.

This commit is contained in:
fiatjaf 2024-09-22 19:21:41 -03:00
parent 43fe41df5d
commit d7c0ff2bb7
7 changed files with 22 additions and 14 deletions

View File

@ -239,7 +239,7 @@ example:
return err return err
} }
} else { } else {
evt.PubKey = kr.GetPublicKey(ctx) evt.PubKey, _ = kr.GetPublicKey(ctx)
} }
// try to generate work with this difficulty -- runs forever // try to generate work with this difficulty -- runs forever
@ -302,7 +302,8 @@ example:
// error publishing // error publishing
if strings.HasPrefix(err.Error(), "msg: auth-required:") && (sec != "" || bunker != nil) && doAuth { if strings.HasPrefix(err.Error(), "msg: auth-required:") && (sec != "" || bunker != nil) && doAuth {
// if the relay is requesting auth and we can auth, let's do it // if the relay is requesting auth and we can auth, let's do it
log("performing auth as %s... ", kr.GetPublicKey(ctx)) pk, _ := kr.GetPublicKey(ctx)
log("performing auth as %s... ", pk)
if err := relay.Auth(ctx, func(authEvent *nostr.Event) error { if err := relay.Auth(ctx, func(authEvent *nostr.Event) error {
return kr.SignEvent(ctx, authEvent) return kr.SignEvent(ctx, authEvent)
}); err == nil { }); err == nil {

2
go.mod
View File

@ -13,7 +13,7 @@ require (
github.com/fiatjaf/khatru v0.7.5 github.com/fiatjaf/khatru v0.7.5
github.com/mailru/easyjson v0.7.7 github.com/mailru/easyjson v0.7.7
github.com/markusmobius/go-dateparser v1.2.3 github.com/markusmobius/go-dateparser v1.2.3
github.com/nbd-wtf/go-nostr v0.36.3 github.com/nbd-wtf/go-nostr v0.37.2
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0
) )

4
go.sum
View File

@ -113,8 +113,8 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 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 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/nbd-wtf/go-nostr v0.36.3 h1:50fNFO8vQNMEIZ+6qUq0M5hlqEtA13WrtrKcz10eg9k= github.com/nbd-wtf/go-nostr v0.37.2 h1:42rriFqqz07EdydERwYeQnewl+Rah1Gq46I+Wh0KYYg=
github.com/nbd-wtf/go-nostr v0.36.3/go.mod h1:TGKGj00BmJRXvRe0LlpDN3KKbELhhPXgBwUEhzu3Oq0= github.com/nbd-wtf/go-nostr v0.37.2/go.mod h1:TGKGj00BmJRXvRe0LlpDN3KKbELhhPXgBwUEhzu3Oq0=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

View File

@ -119,6 +119,13 @@ func connectToAllRelays(
forcePreAuth bool, forcePreAuth bool,
opts ...nostr.PoolOption, opts ...nostr.PoolOption,
) []*nostr.Relay { ) []*nostr.Relay {
sys.Pool = nostr.NewSimplePool(context.Background(),
append(opts,
nostr.WithEventMiddleware(sys.TrackEventHints),
nostr.WithPenaltyBox(),
)...,
)
relays := make([]*nostr.Relay, 0, len(relayUrls)) relays := make([]*nostr.Relay, 0, len(relayUrls))
relayLoop: relayLoop:
for _, url := range relayUrls { for _, url := range relayUrls {
@ -137,7 +144,7 @@ relayLoop:
if (*challengeTag)[1] == "" { if (*challengeTag)[1] == "" {
return fmt.Errorf("auth not received yet *****") return fmt.Errorf("auth not received yet *****")
} }
return signer(authEvent) return signer(ctx, nostr.RelayEvent{Event: authEvent, Relay: relay})
}); err == nil { }); err == nil {
// auth succeeded // auth succeeded
break challengeWaitLoop break challengeWaitLoop

View File

@ -48,10 +48,10 @@ func gatherKeyerFromArguments(ctx context.Context, c *cli.Command) (keyer.Keyer,
if bunker != nil { if bunker != nil {
kr = keyer.NewBunkerSignerFromBunkerClient(bunker) kr = keyer.NewBunkerSignerFromBunkerClient(bunker)
} else { } else {
kr = keyer.NewPlainKeySigner(key) kr, err = keyer.NewPlainKeySigner(key)
} }
return kr, nil return kr, err
} }
func gatherSecretKeyOrBunkerFromArguments(ctx context.Context, c *cli.Command) (string, *nip46.BunkerClient, error) { func gatherSecretKeyOrBunkerFromArguments(ctx context.Context, c *cli.Command) (string, *nip46.BunkerClient, error) {

View File

@ -12,8 +12,8 @@ import (
func paginateWithParams( func paginateWithParams(
interval time.Duration, interval time.Duration,
globalLimit uint64, globalLimit uint64,
) func(ctx context.Context, urls []string, filters nostr.Filters) chan nostr.IncomingEvent { ) func(ctx context.Context, urls []string, filters nostr.Filters) chan nostr.RelayEvent {
return func(ctx context.Context, urls []string, filters nostr.Filters) chan nostr.IncomingEvent { return func(ctx context.Context, urls []string, filters nostr.Filters) chan nostr.RelayEvent {
// filters will always be just one // filters will always be just one
filter := filters[0] filter := filters[0]
@ -29,7 +29,7 @@ func paginateWithParams(
} }
} }
var globalCount uint64 = 0 var globalCount uint64 = 0
globalCh := make(chan nostr.IncomingEvent) globalCh := make(chan nostr.RelayEvent)
repeatedCache := make([]string, 0, 300) repeatedCache := make([]string, 0, 300)
nextRepeatedCache := make([]string, 0, 300) nextRepeatedCache := make([]string, 0, 300)

6
req.go
View File

@ -76,7 +76,7 @@ example:
relayUrls, relayUrls,
c.Bool("force-pre-auth"), c.Bool("force-pre-auth"),
nostr.WithAuthHandler( nostr.WithAuthHandler(
func(authEvent *nostr.Event) error { func(ctx context.Context, authEvent nostr.RelayEvent) error {
if !c.Bool("auth") && !c.Bool("force-pre-auth") { if !c.Bool("auth") && !c.Bool("force-pre-auth") {
return fmt.Errorf("auth not authorized") return fmt.Errorf("auth not authorized")
} }
@ -85,10 +85,10 @@ example:
return err return err
} }
pk := kr.GetPublicKey(ctx) pk, _ := kr.GetPublicKey(ctx)
log("performing auth as %s... ", pk) log("performing auth as %s... ", pk)
return kr.SignEvent(ctx, authEvent) return kr.SignEvent(ctx, authEvent.Event)
}, },
), ),
) )