Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/scaffoldly/soans
Find NS records in the DNS Hierarchy by discovering and directly querying SOA records.
https://github.com/scaffoldly/soans
dns lookup nslookup scaffoldly typescript
Last synced: about 1 month ago
JSON representation
Find NS records in the DNS Hierarchy by discovering and directly querying SOA records.
- Host: GitHub
- URL: https://github.com/scaffoldly/soans
- Owner: scaffoldly
- License: mit
- Created: 2021-11-08T20:00:46.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-06T18:24:49.000Z (almost 2 years ago)
- Last Synced: 2024-10-15T02:01:16.077Z (2 months ago)
- Topics: dns, lookup, nslookup, scaffoldly, typescript
- Language: TypeScript
- Homepage: https://npmjs.org/package/soans
- Size: 257 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# soans (SOA-based NS Lookup)
Find NS records in the DNS Hierarchy by discovering and directly querying SOA
records.**Note**: This library uses direct UDP/TCP communications to the Authorities so DNS
caching is avoided and results are provided nearly immediately after records
are added.This library will take a given domain and walk through each of the subdomains
finding `SOA` records ("authorities") then check each authority for the
existence of an `NS` record.For example, a domain of `foo.bar.baz.scaffold.ly` will do the following:
- Find `SOA` (if any) on:
- `bar.baz.scaffold.ly`
- `baz.scaffold.ly`
- `scaffold.ly`
- `ly` (TLDs fetch `NS` records)
- Then for each valid `SOA`, find the first with `NS` records.
- In the event the `SOA` record reports NS records (e.g. records have been added but the zone doesn't exist yet) return those NS records## CLI
```sh
$ npx soans scaffold.ly
ns-1014.awsdns-62.net
ns-1219.awsdns-24.org
ns-1914.awsdns-47.co.uk
ns-234.awsdns-29.com
```## Installation
yarn:
```sh
yarn add soans
```npm:
```sh
npm install --save soans
```## Usage
```typescript
import { NsLookup } from 'soans';(await NsLookup('facebook.com')).addresses;
// ["a.ns.facebook.com","b.ns.facebook.com","d.ns.facebook.com","c.ns.facebook.com"](await NsLookup('asdf.facebook.com')).addresses;
// Throws NoNameserversError(await NsLookup('doesnotexist.doesnotexist')).addresses;
// Throws NoAuthoritiesError(await NsLookup('facebook.com', { proto: 'tcp', defaultDns: '8.8.8.8' })).addresses;
// ["a.ns.facebook.com","b.ns.facebook.com","d.ns.facebook.com","c.ns.facebook.com"]
```## Options
### **`proto`**:
Set the default protocol, either `tcp` or `udp`. If `tcp` fails, fall back to `udp`.
_Default_: `udp`
### **`defaultDns`**:
Set the default DNS to use for authoratitive lookups.
_Default_: `one.one.one.one`
## Issues
Create an issue in GitHub issues for this repostiory.
## Authors
[Christian Nuss](https://github.com/cnuss)
## Sponsored By
[Scaffoldly](https://scaffold.ly)
## License
MIT