fix(nip05): add redirect prevention docs and zap field validation
Some checks are pending
Docker Compose Actions Workflow / test (push) Waiting to run
Some checks are pending
Docker Compose Actions Workflow / test (push) Waiting to run
Gap #5: Document NIP-05 spec requirement that /.well-known/nostr.json MUST NOT return HTTP redirects. The extension already complies (always returns direct responses), but reverse proxy deployments need awareness. Gap #7: Log a warning when getLnurlPayInfo() response is missing allowsNostr or nostrPubkey fields required by NIP-57 for zap support. This surfaces misconfiguration early instead of silently breaking zaps. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
53945d7dcc
commit
17727d3e31
1 changed files with 11 additions and 0 deletions
|
|
@ -189,6 +189,12 @@ export default class Nip05Extension implements Extension {
|
||||||
* "relays": { "<pubkey hex>": ["wss://..."] }
|
* "relays": { "<pubkey hex>": ["wss://..."] }
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* NIP-05 spec: "The /.well-known/nostr.json endpoint MUST NOT return any
|
||||||
|
* HTTP redirects." This extension always returns direct 200/4xx/5xx responses.
|
||||||
|
* Deployment note: ensure reverse proxies do not add 3xx redirects on this path
|
||||||
|
* (e.g. HTTP→HTTPS or trailing-slash redirects).
|
||||||
|
*/
|
||||||
private async handleNostrJson(req: HttpRequest): Promise<HttpResponse> {
|
private async handleNostrJson(req: HttpRequest): Promise<HttpResponse> {
|
||||||
try {
|
try {
|
||||||
// Get application ID from request context
|
// Get application ID from request context
|
||||||
|
|
@ -272,6 +278,11 @@ export default class Nip05Extension implements Extension {
|
||||||
description: `Pay to ${username}`
|
description: `Pay to ${username}`
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// NIP-57: ensure zap support fields are present for wallet compatibility
|
||||||
|
if (!lnurlPayInfo.allowsNostr || !lnurlPayInfo.nostrPubkey) {
|
||||||
|
this.ctx.log('warn', `LNURL-pay response for ${username} missing zap fields (allowsNostr=${lnurlPayInfo.allowsNostr}, nostrPubkey=${!!lnurlPayInfo.nostrPubkey}). Zaps will not work.`)
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
status: 200,
|
status: 200,
|
||||||
body: lnurlPayInfo,
|
body: lnurlPayInfo,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue