See hyper-dns for similar functionality.
More info on active projects and modules at dat-ecosystem.org
Issue DNS lookups for Dat archives using HTTPS requests to the target host. Keeps an in-memory cache of recent lookups.
vardatDns=require('dat-dns')()// or, if you have a custom protocolvardatDns=require('dat-dns')({recordName: /* name of .well-known file */protocolRegex: /* RegExp object for custom protocol */,hashRegex: /* RegExp object for custom hash i.e. */,txtRegex: /* RegExp object for DNS TXT record of custom protocol */,})// example: varcabalDns=require('dat-dns')({recordName: 'cabal',hashRegex: /^[0-9a-f]{64}?$/i,protocolRegex: /^cabal:\/\/([0-9a-f]{64})/i,txtRegex: /^"?cabalkey=([0-9a-f]{64})"?$/i})// resolve a name: pass the hostname by itselfdatDns.resolveName('foo.com',function(err,key){ ... })datDns.resolveName('foo.com').then(key=> ...)// dont use cached 'misses'datDns.resolveName('foo.com',{ignoreCachedMiss: true})// dont use the cache at alldatDns.resolveName('foo.com',{ignoreCache: true})// dont use dns-over-httpsdatDns.resolveName('foo.com',{noDnsOverHttps: true})// dont use .well-known/datdatDns.resolveName('foo.com',{noWellknownDat: true})// list all entries in the cachedatDns.listCache()// clear the cachedatDns.flushCache()// configure the DNS-over-HTTPS host usedvardatDns=require('dat-dns')({dnsHost: 'dns.google.com',dnsPath: '/resolve'})// use a persistent fallback cache// (this is handy for persistent dns data when offline)vardatDns=require('dat-dns')({persistentCache: {read: async(name,err)=>{// try lookup// if failed, you can throw the original error:throwerr},write: async(name,key,ttl)=>{// write to your cache}}})// emits some events, mainly useful for logging/debuggingdatDns.on('resolved',({method, name, key})=>{...})datDns.on('failed',({method, name, err})=>{...})datDns.on('cache-flushed',()=>{...})Option 1 (DNS-over-HTTPS). Create a DNS TXT record witht he following schema:
datkey={key}
Option 2 (.well-known/dat). Place a file at /.well-known/dat with the following schema:
{dat-url}
TTL={time in seconds}
TTL is optional and will default to 3600 (one hour). If set to 0, the entry is not cached.