whois-parser-next 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +34 -6
- data/README.md +20 -15
- data/RELEASING.md +2 -2
- data/lib/whois/parser/version.rb +1 -1
- data/lib/whois/parsers/whois.nic.africa.rb +23 -0
- data/lib/whois/parsers/whois.sr.rb +44 -0
- data/lib/whois/parsers/whois.tld.mu.rb +20 -0
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4dd7f05a922301b74d2dccf983d9712ac9611198244bb84bf7da9d3106eb6985
|
|
4
|
+
data.tar.gz: 474233b88fad6dad201ca87d0d5c91e5a15a8abab76904192710d644a74420db
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0f041533d14ae1f57dfe6ea92e1967bb1ef5fdfb40379f4eea079c2bf37c58adadf53e8ed0685e0e55076ba9df44341b5a91f9115e59478a67f1c178d66fae76
|
|
7
|
+
data.tar.gz: 762d431b3ec1aa9b967a68b74f346ed41fbb37adbbb4f5304fb8e615dec298308f5f276f54a06e57da5b8a1bc217f6dd4b5f57c0df5e62c6142f1202d1069c41
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
This project uses [Semantic Versioning 2.0.0](http://semver.org/).
|
|
4
4
|
|
|
5
|
+
#### Release 0.3.2 (2026-09-25)
|
|
6
|
+
|
|
7
|
+
- ADDED: Added host-keyed parsers for the current IANA-listed WHOIS hosts for
|
|
8
|
+
`.mu` (`whois.tld.mu`), `.africa` (`whois.nic.africa`), and `.sr`
|
|
9
|
+
(`whois.sr`). These parsers recognize the documented current registered and
|
|
10
|
+
authoritative-absence response shapes, while empty, denied, throttled, and
|
|
11
|
+
ambiguous responses remain non-positive.
|
|
12
|
+
- LIMITATION: The pinned `whois` 6.0.3 client routes `.mu` and `.africa` to
|
|
13
|
+
different hosts and has no `.sr` mapping. The new parsers are selected only
|
|
14
|
+
for response parts keyed to their IANA-listed hosts; this release does not
|
|
15
|
+
add default-client routing or claim effective application coverage for
|
|
16
|
+
these TLDs.
|
|
17
|
+
- CORRECTION (2026-09-25): The corrected top-1,000 scorecard retracts the
|
|
18
|
+
previously published 175-pair total. Its bounded rowwise crosswalk
|
|
19
|
+
reproduces 130 directly traceable report-pair observations, with 31 package
|
|
20
|
+
rows remaining detail-insufficient. The later `.top`, `.uz`, and `.sa`
|
|
21
|
+
scorecard follow-ups, and the `.mu`, `.africa`, and `.sr` host-specific
|
|
22
|
+
reports in this release, remain outside that pinned baseline. These are
|
|
23
|
+
audit-evidence counts, not parser coverage or an effective-coverage rate.
|
|
24
|
+
- EVIDENCE: [`.mu` and `.africa` current-host report](docs/audits/top-201-250-current-host-followup-2026-09-25.md),
|
|
25
|
+
[`.sr` current-host report](docs/audits/topdomains-251-275-sr-followup-2026-09-25.md),
|
|
26
|
+
and [corrected scorecard](docs/audits/top-1000-effective-coverage-scorecard-2026-09-25.md).
|
|
27
|
+
|
|
5
28
|
#### Release 0.3.1 (2026-09-25)
|
|
6
29
|
|
|
7
30
|
- ADDED: Added paired registered and exact authoritative-absence parsing for
|
|
@@ -35,12 +58,17 @@ This project uses [Semantic Versioning 2.0.0](http://semver.org/).
|
|
|
35
58
|
added unavailable-only handling for explicit unsupported responses from
|
|
36
59
|
`.digital`, `.email`, `.live`, `.media`, `.network`, and `.services`.
|
|
37
60
|
- DOCS: Added a scorecard for 1,000 observed TLD strings from the ICANN DNS
|
|
38
|
-
Magnitude snapshot dated 2026-09-12.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
1,000 effective WHOIS integrations or a single
|
|
42
|
-
|
|
43
|
-
|
|
61
|
+
Magnitude snapshot dated 2026-09-12. The original scorecard stated 175
|
|
62
|
+
paired rows and excluded the Top 100, whose summary labels do not expose
|
|
63
|
+
row-level evidence pairs. See the dated correction below; the scorecard
|
|
64
|
+
does not claim 1,000 effective WHOIS integrations or a single
|
|
65
|
+
effective-coverage rate.
|
|
66
|
+
- CORRECTION (2026-09-25): A rowwise crosswalk could not reproduce the
|
|
67
|
+
originally published 175-pair claim. The corrected scorecard and bounded
|
|
68
|
+
evidence ledger identify 130 directly traceable snapshot pair observations
|
|
69
|
+
and 31 package rows with insufficient row-level detail; later `.top`,
|
|
70
|
+
`.uz`, and `.sa` pairs are recorded separately. These are report evidence
|
|
71
|
+
counts, not effective parser coverage.
|
|
44
72
|
- SOURCES: The audit notes link to the [ICANN DNS Magnitude
|
|
45
73
|
snapshot](https://magnitude.research.icann.org/historic/20260912.full.html),
|
|
46
74
|
[IANA `.top`](https://www.iana.org/domains/root/db/top.html),
|
data/README.md
CHANGED
|
@@ -38,7 +38,7 @@ of current WHOIS responses, explicit unknown states, registry-specific
|
|
|
38
38
|
fixtures, and safe handling of malformed, rate-limited, retired, or changed
|
|
39
39
|
server responses.
|
|
40
40
|
|
|
41
|
-
The current source version is `0.3.
|
|
41
|
+
The current source version is `0.3.2`. Check the [RubyGems project
|
|
42
42
|
page](https://rubygems.org/gems/whois-parser-next) for its publication status
|
|
43
43
|
and the latest published version.
|
|
44
44
|
|
|
@@ -54,10 +54,10 @@ Whois::Parser
|
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
Existing applications can retain `require "whois-parser"` and their
|
|
57
|
-
`Whois::Parser` integrations. To install version 0.3.
|
|
57
|
+
`Whois::Parser` integrations. To install version 0.3.2, pin it as follows:
|
|
58
58
|
|
|
59
59
|
```ruby
|
|
60
|
-
gem "whois-parser-next", "= 0.3.
|
|
60
|
+
gem "whois-parser-next", "= 0.3.2", require: "whois-parser"
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
## Requirements
|
|
@@ -86,18 +86,23 @@ The [2026-09-25 scorecard](docs/audits/top-1000-effective-coverage-scorecard-202
|
|
|
86
86
|
summarizes evidence for 1,000 observed TLD strings from the
|
|
87
87
|
[ICANN DNS Magnitude snapshot dated 2026-09-12](https://magnitude.research.icann.org/historic/20260912.full.html).
|
|
88
88
|
These strings are not 1,000 guaranteed working WHOIS registries or
|
|
89
|
-
domain-availability results.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
89
|
+
domain-availability results. A dated correction retracts the previously
|
|
90
|
+
published 175 paired count: the hand-audited report crosswalk reproduces 130
|
|
91
|
+
direct row-pair observations (61 at ranks 101–300 and 69 at 301–1000), with 31
|
|
92
|
+
package rows remaining detail-insufficient. Three later pairs (`.top`, `.uz`,
|
|
93
|
+
`.sa`) are tracked separately from that pinned baseline. See the [corrected
|
|
94
|
+
scorecard](docs/audits/top-1000-effective-coverage-scorecard-2026-09-25.md),
|
|
95
|
+
[methodology](docs/audits/top1000-evidence-ledger-methodology-2026-09-25.md),
|
|
96
|
+
and [bounded machine-readable subset](docs/audits/data/whois-parser-top1000-evidence-ledger-subset-2026-09-25.csv).
|
|
97
|
+
No effective-coverage percentage is asserted. Summary-only, unsupported,
|
|
98
|
+
unknown, one-sided, and classification-only evidence is not promoted to a
|
|
99
|
+
pair. The `.pk` parser does not make the default `whois` 6.0.3 Web adapter use
|
|
100
|
+
port 43; `Whois::Client` host configuration does not override that adapter.
|
|
101
|
+
The `.ge` parser targets IANA's `whois.nic.ge`, while the default `whois` route
|
|
102
|
+
is `whois.registration.ge`. The `.mu` and `.africa` parsers also target IANA
|
|
103
|
+
hosts that differ from the default `whois` 6.0.3 mappings, and `.sr` has no
|
|
104
|
+
default mapping. These host-keyed parsers require separately verified routing
|
|
105
|
+
before an application can count them as effective coverage.
|
|
101
106
|
|
|
102
107
|
Start with the [source verification report](docs/audits/top-1000-source-verification-2026-09-19.md),
|
|
103
108
|
the [Top 20 review](docs/audits/top-20-tlds-2026-09-19.md), and the [Top 100
|
data/RELEASING.md
CHANGED
|
@@ -21,8 +21,8 @@ RubyGems API key to the repository or its Actions secrets.
|
|
|
21
21
|
Create and push the annotated release tag only after the checks above pass:
|
|
22
22
|
|
|
23
23
|
```shell
|
|
24
|
-
git tag -a v0.3.
|
|
25
|
-
git push origin v0.3.
|
|
24
|
+
git tag -a v0.3.2 -m "whois-parser-next 0.3.2"
|
|
25
|
+
git push origin v0.3.2
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
The release workflow repeats the full suite and package smoke test before it
|
data/lib/whois/parser/version.rb
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require_relative 'base_icann_compliant'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# Parser for IANA's current .africa WHOIS endpoint, whois.nic.africa.
|
|
6
|
+
#
|
|
7
|
+
# The registry's exact `No information was found matching that query.`
|
|
8
|
+
# response is treated as absence. Other unrecognised responses remain
|
|
9
|
+
# unknown, and inherited response-safety checks preserve denials and
|
|
10
|
+
# throttling as errors.
|
|
11
|
+
class WhoisNicAfrica < BaseIcannCompliant
|
|
12
|
+
property_supported :available? do
|
|
13
|
+
content_for_scanner.match?(
|
|
14
|
+
/^[ \t]*No information was found matching that query\.[ \t]*$/i
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
property_supported :expires_on do
|
|
19
|
+
node("Registry Expiry Date") { |value| parse_time(value) }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require_relative 'base_top1000_icann'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# Parser for the IANA-listed WHOIS server for .SR.
|
|
6
|
+
#
|
|
7
|
+
# IANA's delegation record and current server responses were checked on
|
|
8
|
+
# 2026-09-25. The generated-name response uses an exact Message marker;
|
|
9
|
+
# other incomplete responses must remain unknown.
|
|
10
|
+
class WhoisSr < BaseTop1000Icann
|
|
11
|
+
property_supported :domain do
|
|
12
|
+
node("Domain", &:downcase)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
property_supported :status do
|
|
16
|
+
if reserved?
|
|
17
|
+
:reserved
|
|
18
|
+
elsif available?
|
|
19
|
+
:available
|
|
20
|
+
elsif !node("Domain").to_s.strip.empty? &&
|
|
21
|
+
node("Status").to_s.casecmp("active").zero? &&
|
|
22
|
+
!node("Creation Date").to_s.strip.empty?
|
|
23
|
+
:registered
|
|
24
|
+
else
|
|
25
|
+
:unknown
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
property_supported :available? do
|
|
30
|
+
content_for_scanner.match?(/^Message: No Object Found\s*$/i)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
property_supported :registered? do
|
|
34
|
+
status == :registered
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
property_supported :nameservers do
|
|
38
|
+
Array.wrap(node("Name server")).reject(&:empty?).map do |name|
|
|
39
|
+
Parser::Nameserver.new(name: name.downcase)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require_relative 'base_icann_compliant'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# Parser for the IANA-listed .mu WHOIS server, whois.tld.mu.
|
|
6
|
+
#
|
|
7
|
+
# Captures from 2026-09-25 expose ICANN-style records and the exact
|
|
8
|
+
# `Domain not found.` absence marker. This host is distinct from the
|
|
9
|
+
# legacy whois.nic.mu mapping in whois 6.0.3.
|
|
10
|
+
class WhoisTldMu < BaseIcannCompliant
|
|
11
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
12
|
+
pattern_available: /^[ \t]*Domain not found\.[ \t]*$/i,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
property_supported :expires_on do
|
|
16
|
+
node("Registry Expiry Date") { |value| parse_time(value) }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: whois-parser-next
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simone Carletti
|
|
@@ -299,6 +299,7 @@ files:
|
|
|
299
299
|
- lib/whois/parsers/whois.nic.accountant.rb
|
|
300
300
|
- lib/whois/parsers/whois.nic.actor.rb
|
|
301
301
|
- lib/whois/parsers/whois.nic.af.rb
|
|
302
|
+
- lib/whois/parsers/whois.nic.africa.rb
|
|
302
303
|
- lib/whois/parsers/whois.nic.ag.rb
|
|
303
304
|
- lib/whois/parsers/whois.nic.agency.rb
|
|
304
305
|
- lib/whois/parsers/whois.nic.ai.rb
|
|
@@ -701,12 +702,14 @@ files:
|
|
|
701
702
|
- lib/whois/parsers/whois.sgnic.sg.rb
|
|
702
703
|
- lib/whois/parsers/whois.sk-nic.sk.rb
|
|
703
704
|
- lib/whois/parsers/whois.smallregistry.net.rb
|
|
705
|
+
- lib/whois/parsers/whois.sr.rb
|
|
704
706
|
- lib/whois/parsers/whois.srs.net.nz.rb
|
|
705
707
|
- lib/whois/parsers/whois.sx.rb
|
|
706
708
|
- lib/whois/parsers/whois.tcinet.ru.rb
|
|
707
709
|
- lib/whois/parsers/whois.teleinfo.cn.rb
|
|
708
710
|
- lib/whois/parsers/whois.thnic.co.th.rb
|
|
709
711
|
- lib/whois/parsers/whois.tld.ee.rb
|
|
712
|
+
- lib/whois/parsers/whois.tld.mu.rb
|
|
710
713
|
- lib/whois/parsers/whois.tld.sy.rb
|
|
711
714
|
- lib/whois/parsers/whois.tonic.to.rb
|
|
712
715
|
- lib/whois/parsers/whois.tonicregistry.to.rb
|