Skip to content

Domain tools: check 1,306 of 1,437 endings with WHOIS fallback and verified RDAP overrides - #50

Merged
RaviTejaKNTS merged 6 commits into
mainfrom
fix/domain-extension-support
Oct 14, 2026
Merged

RaviTejaKNTS merged 6 commits into
mainfrom
fix/domain-extension-support

Conversation

@RaviTejaKNTS

Copy link
Copy Markdown
Collaborator

What changes

The domain tools only used RDAP, so .so, .co, .me, .sh, .it, .eu, .jp, .gg and about 230 other endings returned "cannot check". This PR raises coverage from 1,203 to 1,306 of 1,437 root-zone endings.

Source Endings
IANA RDAP directory (refreshed) 1,203
Hand-verified RDAP overrides 26 (23 new: .so, .co, .me, .sh, .ch, .li, .ac, …)
Verified WHOIS fallback 77 (.it, .eu, .jp, .gg, .be, .se, .nz, .at, …)
Still uncovered 131 (mostly small ccTLDs with no public service, or a WHOIS server that failed verification)

Backend (Sol)

  • lib/domain/whois*.ts: port-43 client with timeouts, size bound, abort, label validation before any socket. Three parser families map WHOIS text into the same normalized registration as RDAP.
  • data/whois-reviewed.json: each profile is verified with a real domain and a made-up one. Only an anchored not-found pattern can return not_registered. Quota, conflicting, reserved, or empty responses are non-answers. Privacy placeholders are suppressed, and fields not clearly stated stay unknown.
  • throttle.ts: 60/min host ceiling with a 20/min share per TLD, so one busy ending on Identity Digital (451 TLDs, including .ai and .io) can't starve the rest. The breaker is shorter (60 s), and Retry-After is honored, capped at 1 h.
  • Transfer readiness: policyApplies. WHOIS and ccTLD checks that rely on a missing status stay unknown.
  • Refresh scripts collect IANA WHOIS servers serially and never enable an unverified one.

Pages and copy (Opus)

  • Tool wording says "no lookup service" instead of "no RDAP service". The report labels Registry WHOIS vs RDAP. Owner and registrar views no longer ask people to "retry" for WHOIS endings, which have no registrar hop.
  • TLD directory: new "Via WHOIS" label, plus updated lookups and sources sections.
  • Domain lookup and domain tools catalog articles explain the RDAP-first, WHOIS-fallback behavior.
  • Multi-TLD: adds .so, .sh, .gg, .to, .eu as choices and drops the stale "No RDAP service" flags on .co and .me.

Review

Sol reviewed this over five rounds. Rounds 1 to 4 blocked on parser edge cases, all fixed with regression tests. Round 5 approved, with one note: a hypothetical inline-heading WHOIS layout isn't handled, and no reviewed profile uses it.

Checks

  • npm run quality: TypeScript and 79/79 core tests.
  • Domain suite: 129/129. All 77 captured WHOIS registered/not-found pairs replay correctly.
  • Real pages checked in headless Chrome at desktop and mobile widths: lookup (google.it, example.aq, invalid input), multi-TLD (.so/.gg/.eu/.sh live), report, transfer readiness, owner (europa.eu), registrar, availability (.jp not found), and the TLD directory.

Before release

  • Verify outbound TCP port 43 from the OVH application container. If it's blocked, WHOIS endings show "Check failed" (a non-answer), never a wrong answer.
  • The domain lookup H1 and SEO title still say "RDAP" (database fields). Consider a title update through the tool publisher.

🤖 Generated with Claude Code

RaviTejaKNTS and others added 6 commits October 14, 2026 11:27
…ttle

Domain tools now check 1,306 of 1,437 root-zone endings, up from 1,203.
Adds 23 verified RDAP overrides (.so, .co, .me, .sh, .ch and others),
77 verified WHOIS profiles for endings without RDAP, a refreshed IANA
snapshot, and per-TLD shares inside each registry host's request budget.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… .sk sections, transfer unknowns, query validation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…holders

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@RaviTejaKNTS
RaviTejaKNTS merged commit 2f8c7c6 into main Oct 14, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
production — 538e6185 Deployed Oct 14, 2026 by RaviTejaKNTS via verify-production-build #49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant