Skip to content

Commit

Permalink
Merge pull request #914 from zonedb/ydnar/iana-special
Browse files Browse the repository at this point in the history
Fetch SUDNs from IANA
  • Loading branch information
ydnar committed May 3, 2023
2 parents 7b488f7 + 02a6ffc commit 4b83372
Show file tree
Hide file tree
Showing 52 changed files with 3,637 additions and 3,060 deletions.
9 changes: 9 additions & 0 deletions cmd/zonedb/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ func main() {
updateRubyWhois := flag.Bool("update-ruby-whois", false, "query Ruby Whois for whois servers")
updateWhois := flag.Bool("update-whois", false, "query whois-servers.net for whois servers")
updateIANA := flag.Bool("update-iana", false, "query IANA for metadata")
updateIANASpecial := flag.Bool("update-iana-special", false, "query IANA for special domains")
updateICANN := flag.Bool("update-icann", false, "query ICANN for metadata")
updateIDN := flag.Bool("update-idn", false, "query IANA for IDN tables")
updateRDAP := flag.Bool("update-rdap", false, "query IANA for RDAP URLs")
Expand Down Expand Up @@ -250,6 +251,14 @@ func main() {
}
}

if *updateIANASpecial || *updateAll {
err := build.FetchSpecialUseDomainsFromIANA(workZones, addNew)
if err != nil {
errs = append(errs, err)
build.LogError(err)
}
}

if *updateNS || *updateAll {
err := build.FetchNameServers(workZones, zones)
if err != nil {
Expand Down
94 changes: 94 additions & 0 deletions internal/build/iana_special.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package build

import (
"encoding/csv"
"io"
"os"
"strings"

"github.com/wsxiaoys/terminal/color"
)

const (
// https://www.iana.org/assignments/special-use-domain-names/special-use-domain-names.xhtml
ianaSpecialUseURL = "https://www.iana.org/assignments/special-use-domain-names/special-use-domain.csv"
ietfDataTrackerBaseURL = "https://datatracker.ietf.org/doc/"
)

// FetchSpecialUseDomainsFromIANA fetches special use domains from the IANA website.
func FetchSpecialUseDomainsFromIANA(zones map[string]*Zone, addNew bool) error {
res, err := Fetch(ianaSpecialUseURL)
if err != nil {
return err
}
defer res.Body.Close()
r := csv.NewReader(res.Body)

cols, err := r.Read()
if err != nil {
return err
}

var zonesAdded, zonesModified int
for {
row, err := r.Read()
if err == io.EOF {
break
} else if err != nil {
return err
}

rec := make(map[string]string)
for i := range cols {
rec[cols[i]] = row[i]
}

// Mangle reference into IETF data tracker URL
ref := strings.Trim(rec["Reference"], "[]")
ref = strings.Replace(ref, "RFC-ietf-", "draft-", 1)
infoURL := ietfDataTrackerBaseURL + strings.ToLower(ref)

domain := Normalize(rec["Name"])
d := domain
for d != "" {
var added, modified bool
z := zones[d]
if z == nil {
z = &Zone{Domain: d}
if addNew {
zones[d] = z
added = true
}
}

// Fix up metadata
if !z.HasMetadata() || z.ParentDomain() != "" {
if z.RegistryOperator != "IANA" {
z.RegistryOperator = "IANA"
modified = true
}
if z.InfoURL != infoURL && d == domain {
z.InfoURL = infoURL
modified = true
}
if z.AddTags("infrastructure", "closed") != 0 {
modified = true
}
}

if added {
zonesAdded++
color.Fprintf(os.Stderr, "@{g}New zone @{g!}%s@{.}\t%s\n", d, infoURL)
} else if modified {
zonesModified++
color.Fprintf(os.Stderr, "@{y}Modified @{y!}%s@{.}\t%s\n", d, infoURL)
}

d = z.ParentDomain()
}
}

color.Fprintf(os.Stderr, "@{.}Added %d and modified %d special domain (infrastructure) zone(s)\n", zonesAdded, zonesModified)

return nil
}
8 changes: 8 additions & 0 deletions metadata/0.0.192.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"domain": "0.0.192.in-addr.arpa",
"registryOperator": "IANA",
"tags": [
"closed",
"infrastructure"
]
}
8 changes: 8 additions & 0 deletions metadata/0.192.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"domain": "0.192.in-addr.arpa",
"registryOperator": "IANA",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/10.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "10.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/16.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "16.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/168.192.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "168.192.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
8 changes: 8 additions & 0 deletions metadata/169.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"domain": "169.in-addr.arpa",
"registryOperator": "IANA",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/17.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "17.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/170.0.0.192.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "170.0.0.192.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc8880",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/171.0.0.192.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "171.0.0.192.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc8880",
"tags": [
"closed",
"infrastructure"
]
}
8 changes: 8 additions & 0 deletions metadata/172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"domain": "172.in-addr.arpa",
"registryOperator": "IANA",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/18.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "18.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/19.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "19.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
8 changes: 8 additions & 0 deletions metadata/192.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"domain": "192.in-addr.arpa",
"registryOperator": "IANA",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/20.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "20.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/21.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "21.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/22.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "22.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/23.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "23.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/24.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "24.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/25.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "25.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/254.169.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "254.169.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6762",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/26.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "26.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/27.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "27.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/28.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "28.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/29.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "29.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/30.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "30.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/31.172.in-addr.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "31.172.in-addr.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6761",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/6tisch.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "6tisch.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc9031",
"tags": [
"closed",
"infrastructure"
]
}
9 changes: 9 additions & 0 deletions metadata/8.e.f.ip6.arpa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"domain": "8.e.f.ip6.arpa",
"registryOperator": "IANA",
"infoURL": "https://datatracker.ietf.org/doc/rfc6762",
"tags": [
"closed",
"infrastructure"
]
}

0 comments on commit 4b83372

Please sign in to comment.