From e2f791ab85f5ab11dfd1ce15b350e4f4bcfed940 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 2 Jun 2026 21:27:38 -0300 Subject: [PATCH] fetch: support --auth. --- fetch.go | 34 ++++++++++++++++++++++++++++------ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/fetch.go b/fetch.go index 189b496..f0ff489 100644 --- a/fetch.go +++ b/fetch.go @@ -3,11 +3,14 @@ package main import ( "context" "fmt" + "strings" "fiatjaf.com/nostr" "fiatjaf.com/nostr/nip05" "fiatjaf.com/nostr/nip19" + "fiatjaf.com/nostr/nip42" "fiatjaf.com/nostr/sdk/hints" + "github.com/fatih/color" "github.com/urfave/cli/v3" ) @@ -18,12 +21,18 @@ var fetch = &cli.Command{ nak fetch nevent1qqsxrwm0hd3s3fddh4jc2574z3xzufq6qwuyz2rvv3n087zvym3dpaqprpmhxue69uhhqatzd35kxtnjv4kxz7tfdenju6t0xpnej4 echo npub1h8spmtw9m2huyv6v2j2qd5zv956z2zdugl6mgx02f2upffwpm3nqv0j4ps | nak fetch --relay wss://relay.nostr.band`, DisableSliceFlagSeparator: true, - Flags: append(reqFilterFlags, - &cli.StringSliceFlag{ - Name: "relay", - Aliases: []string{"r"}, - Usage: "also use these relays to fetch from", - }, + Flags: append(defaultKeyFlags, + append(reqFilterFlags, + &cli.StringSliceFlag{ + Name: "relay", + Aliases: []string{"r"}, + Usage: "also use these relays to fetch from", + }, + &cli.BoolFlag{ + Name: "auth", + Usage: "always perform nip42 \"AUTH\" when facing an \"auth-required: \" rejection and try again", + }, + )..., ), ArgsUsage: "[nip05_or_nip19_code]", Action: func(ctx context.Context, c *cli.Command) error { @@ -106,6 +115,19 @@ var fetch = &cli.Command{ continue } + sys.Pool.AuthRequiredHandler = func(ctx context.Context, authEvent *nostr.Event) error { + return authSigner(ctx, c, func(s string, args ...any) { + if strings.HasPrefix(s, "authenticating as") { + cleanUrl, _ := strings.CutPrefix( + nip42.GetRelayURLFromAuthEvent(*authEvent), + "wss://", + ) + s = "authenticating to " + color.CyanString(cleanUrl) + " as" + s[len("authenticating as"):] + } + log(s+"\n", args...) + }, authEvent) + } + found := false for ie := range sys.Pool.FetchMany(ctx, relays, filter, nostr.SubscriptionOptions{ Label: "nak-fetch", diff --git a/go.mod b/go.mod index 7a07340..decdbc1 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/fiatjaf/nak go 1.25 require ( - fiatjaf.com/nostr v0.0.0-20260508155207-03a55cc0b816 + fiatjaf.com/nostr v0.0.0-20260602223326-015842e96d86 github.com/AlecAivazis/survey/v2 v2.3.7 github.com/bep/debounce v1.2.1 github.com/btcsuite/btcd/btcec/v2 v2.3.6 diff --git a/go.sum b/go.sum index 3c8091e..ca6a0e0 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ fiatjaf.com/lib v0.3.7 h1:mXZOn7NrUcjSdy4oNvwQyAmes7Ueb+Zr5hjqMIe2dxI= fiatjaf.com/lib v0.3.7/go.mod h1:UlHaZvPHj25PtKLh9GjZkUHRmQ2xZ8Jkoa4VRaLeeQ8= -fiatjaf.com/nostr v0.0.0-20260508155207-03a55cc0b816 h1:96hiRZUwfiL1Nf3yp0G2TBM85EVZ0deJLl/bVrJy2Gs= -fiatjaf.com/nostr v0.0.0-20260508155207-03a55cc0b816/go.mod h1:b1EIUDnd133Ie8Pg8O/biaKdFyCMz28aD4n64g1GqvM= +fiatjaf.com/nostr v0.0.0-20260602223326-015842e96d86 h1:p3HnX1UDT/CfiMvTc4yTcxHQm08ri7DM32P1uKkFNKg= +fiatjaf.com/nostr v0.0.0-20260602223326-015842e96d86/go.mod h1:b1EIUDnd133Ie8Pg8O/biaKdFyCMz28aD4n64g1GqvM= github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= github.com/FastFilter/xorfilter v0.2.1 h1:lbdeLG9BdpquK64ZsleBS8B4xO/QW1IM0gMzF7KaBKc=