Extracted RDAP query execution logic from useLookup hook into dedicated rdap-query.ts service, improving code organization and reusability. Created type-detection.ts service to centralize target type detection and validation logic. Added HttpSecurityError class for better error handling of HTTP security warnings. Reduced debounce delay from 150ms to 75ms for improved responsiveness.
rdap
A private RDAP query client built with React & Next.js.
Usage
This project uses Next.js (SSG only) and React. Install Node.js and Yarn, then run the following commands:
# install dependencies
yarn
# run the development server
yarn dev
# or build and run the production server
yarn build && yarn start
The project is also hosted on my website.
Why?
Built for personal use, this project is an RDAP client; a tool that lets you execute RDAP queries on any entities that are associated with an RDAP server. In more simpler terms, it's a tool that lets you look up information about IP addresses, domain names, and autonomous systems (a network of controlled IP addresses), and a little more.
The tool hosted by rdap.org is fantastic, but it's too simple, and isn't as overly-complicated and annoying as I want it to be. So, I built my own. Mine has dark mode.
But in all seriousness, my project does intend to have more features:
- Proxying: Some RDAP servers are inaccessible over the browser, and so proxying requests through a server is necessary.
- Self Hosting: For those worried about privacy, the project can be self-hosted.
- No Tracking: The project can't track you, because it's a static site. And in terms of the proxy, you can self-host if you're worried about that.
- Better UI: I'm not a designer, but I can try.
- Dark Mode: The blistering white of the original RDAP client is painful to look at.
- Shareable Links: Each search produces a unique URL that can be shared with others to view the same query.
- Whois: RDAP is a newer protocol that is meant to replace Whois, but some servers still use Whois. I might add support for that.
- Punycode: Some domain names use punycode, which is a way to represent Unicode characters in ASCII. I might add support for working with these domains.
- Better Error Handling: The original RDAP client doesn't handle errors very well, or tell you what went wrong. I want to fix that.
- For example, when querying a TLD that does not have a RDAP server, or one that does not exist, the original client doesn't explain this very well.
- RDAP Schema Adherence: RDAP servers are supposed to follow a schema, but it appears a large number simply don't. I intend to provide handling for this.
- Essentially, two separate schemas will be available: one for basic type checking, and one for the RFC-compliant schema.
- If the server doesn't follow the RFC-compliant schema, the basic schema will be used instead.
- It's hard to tell at this moment if Typescript can handle this well, but I'll try.