diff --git a/nip05.js b/nip05.js index 840436c..8721c26 100644 --- a/nip05.js +++ b/nip05.js @@ -1,52 +1,26 @@ -import {Buffer} from 'buffer' -import dnsPacket from 'dns-packet' - -const dohProviders = [ - 'cloudflare-dns.com', - 'fi.doh.dns.snopyta.org', - 'basic.bravedns.com', - 'hydra.plan9-ns1.com', - 'doh.pl.ahadns.net', - 'dns.flatuslifir.is', - 'doh.dns.sb', - 'doh.li' -] - -let counter = 0 - -export async function keyFromDomain(domain) { - let host = dohProviders[counter % dohProviders.length] - - let buf = dnsPacket.encode({ - type: 'query', - id: Math.floor(Math.random() * 65534), - flags: dnsPacket.RECURSION_DESIRED, - questions: [ - { - type: 'TXT', - name: `_nostrkey.${domain}` - } - ] - }) - - let fetching = fetch(`https://${host}/dns-query`, { - method: 'POST', - headers: { - 'Content-Type': 'application/dns-message', - 'Content-Length': Buffer.byteLength(buf) - }, - body: buf - }) - - counter++ +import fetch from 'cross-fetch' +export async function searchDomain(domain, query = '') { try { - let response = Buffer.from(await (await fetching).arrayBuffer()) - let {answers} = dnsPacket.decode(response) - if (answers.length === 0) return null - return Buffer.from(answers[0].data[0]).toString() - } catch (err) { - console.log(`error querying DNS for ${domain} on ${host}`, err) + let res = await ( + await fetch(`https://${domain}/.well-known/nostr.json?name=${query}`) + ).json() + + return res.names + } catch (_) { + return [] + } +} + +export async function queryName(fullname) { + try { + let [name, domain] = fullname.split('@') + let res = await ( + await fetch(`https://${domain}/.well-known/nostr.json?name=${name}`) + ).json() + + return res.names && res.names[name] + } catch (_) { return null } } diff --git a/package.json b/package.json index 7ef5cfc..291086a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nostr-tools", - "version": "0.19.0", + "version": "0.20.0", "description": "Tools for making a Nostr client.", "repository": { "type": "git", @@ -12,7 +12,7 @@ "browserify-cipher": ">=1", "buffer": ">=5", "create-hash": "^1.2.0", - "dns-packet": "^5.2.4", + "cross-fetch": "^3.1.4", "micro-bip32": "^0.1.0", "micro-bip39": "^0.1.3", "websocket-polyfill": "^0.0.3"