Skip to content

Feature: RDAP improvements - #3642

Merged
mergify[bot] merged 11 commits into
mainfrom
feature/rdap-auto-type
Oct 21, 2026
Merged

mergify[bot] merged 11 commits into
mainfrom
feature/rdap-auto-type

Conversation

@BornToBeRoot

Copy link
Copy Markdown
Owner

Query type and validation

  • New query type Auto as the default for settings, new profiles and imported profiles; it detects domain, TLD, IP/CIDR, AS number or entity handle from the input.
  • New query type Nameserver (RFC 9082 3.1.4), resolved via the registry of the nameserver's TLD; the details show the host name and IP addresses.
  • Stricter parsing:
    • All-numeric TLDs are rejected, so 8.8.8.8 is no longer a valid domain or 13335 a valid TLD.
    • Entity handles need a service-provider tag (e.g. -RIPE).
  • Profiles: with Inherit host, the inherited host is now validated against the selected type. A mismatch marks the RDAP tab and disables Save.
  • The watermark follows the selected type in both the tool and the profile dialog, via the new RDAPQueryTypeToWatermarkConverter.

Querying

  • If a domain isn't found (e.g. a host name like www.borntoberoot.net), the parent domain is queried, up to 3 levels. The status line shows which domain is displayed.
  • A running query can be cancelled (Query/Cancel button, Esc), and closing the tab stops it.
  • Timeouts have their own error type: the next server is still tried, and the message is translatable.

Results

  • Networks and AS numbers of an organization (e.g. from RIPE, APNIC, ARIN) are shown in two new tables and included in the TXT export.
  • Copy context menu for the Events, Nameservers, DNSSEC, Networks, AS numbers and Contacts tables; with several rows selected, only Export is offered.
  • null entries in server responses are skipped instead of failing the whole query, so a broken registrar response no longer hides the registry result.

Bootstrap files (IANA)

  • A file that was never downloaded is tried again with every query, instead of being blocked for an hour after one failed attempt.
  • A cached file that can't be read is downloaded again within the same query.

Related issue(s)

To-Do

Contributing

By submitting this pull request, I confirm the following:

BornToBeRoot and others added 7 commits October 21, 2026 15:09
- New query type "Auto" (default) that detects the type from the query.
- The inherited host of a profile is validated against the query type.
- Numeric TLDs (e.g. "8.8.8.8" as domain) and entity handles without a
  service provider tag are rejected.
- Watermark per query type in the profile dialog (shared converter).
- Imported profiles use the type "Auto".

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

- A bootstrap file that has not been downloaded yet is tried again with
  every query instead of being blocked for an hour after a failure.
- A cached bootstrap file that can't be parsed is downloaded again
  (unconditional request) with the same query.
- Null items in response arrays (links, entities, events, ...) are
  skipped instead of failing the whole query.
- Docs: retry behaviour and the fixed timeout of the bootstrap files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A running query can be canceled (button switches to Cancel, Esc) and
  is stopped when the tab is closed.
- Timeouts have their own error kind (next server is tried) and a
  localized message instead of a hard-coded English text.
- Copy context menu for the events, nameservers, DNSSEC and contacts
  grids (single row), Export for multiple rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New query type "Nameserver" (RFC 9082 3.1.4), resolved via the
  registry of the nameserver's TLD. IP addresses of a nameserver are
  shown in the details.
- Networks and AS numbers of an entity (RFC 9083 5.1, e.g. sent by
  RIPE, APNIC and ARIN for an organization) are shown in two new tables
  with copy context menu and included in the text export.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- If the referral goes through the system proxy, the host name is not
  resolved locally (the proxy resolves it), so referrals work in
  networks where only the proxy resolves public names. IP addresses in
  the URL are still checked.
- The private address check also covers IPv6 addresses that contain an
  IPv4 address (NAT64 64:ff9b::/96, 6to4 2002::/16), the rest of
  64:ff9b::/32 (local-use NAT64), 192.0.0.0/24 and 198.18.0.0/15.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New context menu item "RDAP" in IP Scanner (result) and Traceroute
(hop) that opens a new RDAP tab with the IP address. Disabled for hops
that timed out (no IP address).

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

- IP Scanner and Traceroute: "RDAP..." submenu like "DNS Lookup..." with
  IP address and hostname; Traceroute also with the AS number of the IP
  geolocation. Entries without data are disabled.
- If a domain is not found (e.g. a hostname like www.borntoberoot.net),
  its parent domain is queried (up to 3 levels), since registries only
  know registered domains. The status shows which domain is displayed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 21, 2026 13:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@mergify

mergify Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

This pull request does not currently match the merge queue conditions, so it cannot be queued from here. The box comes back if it matches again.

BornToBeRoot and others added 4 commits October 21, 2026 15:50
- Parent domain lookup also on 400 Bad Request (PIR, Identity Digital,
  SWITCH and auDA answer a subdomain with 400, not 404).
- IP Scanner: RDAP > Hostname only for hostnames with a domain (not for
  NetBIOS names like "PC-01").
- Text export: the handle of a network is left out if it is the range.
- Docs: only RIPE organizations can be queried with their networks; AS
  numbers only from Traceroute.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A hostname is queried as its registered domain, determined with the
  public suffix list (ICANN section, MPL-2.0, generated by
  Scripts/Create-PublicSuffixListFromWeb.ps1). Replaces the parent
  domain lookup, which stopped after 3 levels and could show a public
  suffix like co.uk (a registry object) for an unregistered domain.
- A missing bootstrap file is retried after 1 minute instead of with
  every query; bootstrap files are parsed once per query.
- Tabs opened from other tools or the run command use the type Auto.
- Traceroute: RDAP > Hostname only for hostnames with a domain.
- Public suffix list listed in About > Resources.

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

- The cached bootstrap files are read once per session and again only
  if a file changed, so a corrupt dns.json with an unreachable IANA is
  retried with the regular wait time instead of with every query.
- Error messages and "Open in Whois" use the registered domain that was
  queried (e.g. foo.com for www.foo.com).
- The referral target is always checked locally; only if it can't be
  resolved locally and a proxy is used, it is followed without the
  check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mergify
mergify Bot merged commit 8fe100a into main Oct 21, 2026
5 checks passed
@mergify
mergify Bot deleted the feature/rdap-auto-type branch October 21, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants