publicsuffix: strip generated comments; automatically scrape git version.

Also follow the "go generate" convention, and have the generation
command be a bare "go run gen.go" without any need for explicit flags.

Stripping the for-debugging comments shrinks the generated table.go file
from 538K to 139K.

Also update table to latest list from publicsuffix.org:
revision ea9f4f9c51f5bfc5c85a41a5637ab671c07c542a
(2016-05-31T18:30:56Z)

Change-Id: Ib59366106e0142fd65a2102e73d6a9a29e53930e
Reviewed-on: https://go-review.googlesource.com/23930
Reviewed-by: Andrew Gerrand <adg@golang.org>
This commit is contained in:
Nigel Tao
2016-06-09 14:57:12 +10:00
parent 313cf39d4a
commit 3f122ce3db
4 changed files with 9268 additions and 8771 deletions

View File

@@ -6,19 +6,17 @@
package main
// This program generates table.go and table_test.go.
// Invoke as:
// This program generates table.go and table_test.go based on the authoritative
// public suffix list at https://publicsuffix.org/list/effective_tld_names.dat
//
// go run gen.go -version "xxx" >table.go
// go run gen.go -version "xxx" -test >table_test.go
//
// Pass -v to print verbose progress information.
//
// The version is derived from information found at
// The version is derived from
// https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat
// and a human-readable form is at
// https://github.com/publicsuffix/list/commits/master/public_suffix_list.dat
//
// To fetch a particular git revision, such as 5c70ccd250, pass
// -url "https://raw.githubusercontent.com/publicsuffix/list/5c70ccd250/public_suffix_list.dat"
// and -version "an explicit version string".
import (
"bufio"
@@ -27,6 +25,7 @@ import (
"fmt"
"go/format"
"io"
"io/ioutil"
"net/http"
"os"
"regexp"
@@ -91,24 +90,30 @@ func nodeTypeStr(n int) string {
panic("unreachable")
}
const (
defaultURL = "https://publicsuffix.org/list/effective_tld_names.dat"
gitCommitURL = "https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat"
)
var (
labelEncoding = map[string]uint32{}
labelsList = []string{}
labelsMap = map[string]bool{}
rules = []string{}
// validSuffix is used to check that the entries in the public suffix list
// are in canonical form (after Punycode encoding). Specifically, capital
// letters are not allowed.
validSuffix = regexp.MustCompile(`^[a-z0-9_\!\*\-\.]+$`)
// validSuffixRE is used to check that the entries in the public suffix
// list are in canonical form (after Punycode encoding). Specifically,
// capital letters are not allowed.
validSuffixRE = regexp.MustCompile(`^[a-z0-9_\!\*\-\.]+$`)
subset = flag.Bool("subset", false, "generate only a subset of the full table, for debugging")
url = flag.String("url",
"https://publicsuffix.org/list/effective_tld_names.dat",
"URL of the publicsuffix.org list. If empty, stdin is read instead")
v = flag.Bool("v", false, "verbose output (to stderr)")
version = flag.String("version", "", "the effective_tld_names.dat version")
test = flag.Bool("test", false, "generate table_test.go")
shaRE = regexp.MustCompile(`"sha":"([^"]+)"`)
dateRE = regexp.MustCompile(`"committer":{[^{]+"date":"([^"]+)"`)
comments = flag.Bool("comments", false, "generate table.go comments, for debugging")
subset = flag.Bool("subset", false, "generate only a subset of the full table, for debugging")
url = flag.String("url", defaultURL, "URL of the publicsuffix.org list. If empty, stdin is read instead")
v = flag.Bool("v", false, "verbose output (to stderr)")
version = flag.String("version", "", "the effective_tld_names.dat version")
)
func main() {
@@ -127,7 +132,14 @@ func main1() error {
return fmt.Errorf("not enough bits to encode the children table")
}
if *version == "" {
return fmt.Errorf("-version was not specified")
if *url != defaultURL {
return fmt.Errorf("-version was not specified, and the -url is not the default one")
}
sha, date, err := gitCommit()
if err != nil {
return err
}
*version = fmt.Sprintf("publicsuffix.org's public_suffix_list.dat, git revision %s (%s)", sha, date)
}
var r io.Reader = os.Stdin
if *url != "" {
@@ -144,7 +156,6 @@ func main1() error {
var root node
icann := false
buf := new(bytes.Buffer)
br := bufio.NewReader(r)
for {
s, err := br.ReadString('\n')
@@ -170,7 +181,7 @@ func main1() error {
if err != nil {
return err
}
if !validSuffix.MatchString(s) {
if !validSuffixRE.MatchString(s) {
return fmt.Errorf("bad publicsuffix.org list data: %q", s)
}
@@ -228,20 +239,50 @@ func main1() error {
}
sort.Strings(labelsList)
p := printReal
if *test {
p = printTest
}
if err := p(buf, &root); err != nil {
if err := generate(printReal, &root, "table.go"); err != nil {
return err
}
if err := generate(printTest, &root, "table_test.go"); err != nil {
return err
}
return nil
}
func generate(p func(io.Writer, *node) error, root *node, filename string) error {
buf := new(bytes.Buffer)
if err := p(buf, root); err != nil {
return err
}
b, err := format.Source(buf.Bytes())
if err != nil {
return err
}
_, err = os.Stdout.Write(b)
return err
return ioutil.WriteFile(filename, b, 0644)
}
func gitCommit() (sha, date string, retErr error) {
res, err := http.Get(gitCommitURL)
if err != nil {
return "", "", err
}
if res.StatusCode != http.StatusOK {
return "", "", fmt.Errorf("bad GET status for %s: %d", gitCommitURL, res.Status)
}
defer res.Body.Close()
b, err := ioutil.ReadAll(res.Body)
if err != nil {
return "", "", err
}
if m := shaRE.FindSubmatch(b); m != nil {
sha = string(m[1])
}
if m := dateRE.FindSubmatch(b); m != nil {
date = string(m[1])
}
if sha == "" || date == "" {
retErr = fmt.Errorf("could not find commit SHA and date in %s", gitCommitURL)
}
return sha, date, retErr
}
func printTest(w io.Writer, n *node) error {
@@ -330,8 +371,9 @@ const numTLD = %d
// encodes the node's children, wildcard bit and node type (as an index into
// the children array), ICANN bit and text.
//
// In the //-comment after each node's data, the nodes indexes of the children
// are formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The
// If the table was generated with the -comments flag, there is a //-comment
// after each node's data. In it is the nodes-array indexes of the children,
// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The
// nodeType is printed as + for normal, ! for exception, and o for parent-only
// nodes that have children but don't match a domain label in their own right.
// An I denotes an ICANN domain.
@@ -374,8 +416,12 @@ var children=[...]uint32{
}
nodeType := int(c>>(childrenBitsLo+childrenBitsHi)) & (1<<childrenBitsNodeType - 1)
wildcard := c>>(childrenBitsLo+childrenBitsHi+childrenBitsNodeType) != 0
fmt.Fprintf(w, "0x%08x, // c0x%04x (%s)%s %s\n",
c, i, s, wildcardStr(wildcard), nodeTypeStr(nodeType))
if *comments {
fmt.Fprintf(w, "0x%08x, // c0x%04x (%s)%s %s\n",
c, i, s, wildcardStr(wildcard), nodeTypeStr(nodeType))
} else {
fmt.Fprintf(w, "0x%08x,\n", c)
}
}
fmt.Fprintf(w, "}\n\n")
fmt.Fprintf(w, "// max children %d (capacity %d)\n", maxChildren, 1<<nodesBitsChildren-1)
@@ -508,10 +554,14 @@ func printNode(w io.Writer, n *node) error {
encoding |= 1 << (nodesBitsTextLength + nodesBitsTextOffset)
}
encoding |= uint32(c.childrenIndex) << (nodesBitsTextLength + nodesBitsTextOffset + nodesBitsICANN)
fmt.Fprintf(w, "0x%08x, // n0x%04x c0x%04x (%s)%s %s %s %s\n",
encoding, c.nodesIndex, c.childrenIndex, s, wildcardStr(c.wildcard),
nodeTypeStr(c.nodeType), icannStr(c.icann), c.label,
)
if *comments {
fmt.Fprintf(w, "0x%08x, // n0x%04x c0x%04x (%s)%s %s %s %s\n",
encoding, c.nodesIndex, c.childrenIndex, s, wildcardStr(c.wildcard),
nodeTypeStr(c.nodeType), icannStr(c.icann), c.label,
)
} else {
fmt.Fprintf(w, "0x%08x,\n", encoding)
}
}
return nil
}

View File

@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:generate go run gen.go
// Package publicsuffix provides a public suffix list based on data from
// http://publicsuffix.org/. A public suffix is one under which Internet users
// can directly register names.

File diff suppressed because it is too large Load Diff

View File

@@ -2300,7 +2300,6 @@ var rules = [...]string{
"kakuda.miyagi.jp",
"kami.miyagi.jp",
"kawasaki.miyagi.jp",
"kesennuma.miyagi.jp",
"marumori.miyagi.jp",
"matsushima.miyagi.jp",
"minamisanriku.miyagi.jp",
@@ -5975,6 +5974,7 @@ var rules = [...]string{
"xn--fiqz9s",
"xn--lgbbat1ad8j",
"xn--wgbh1c",
"xn--e1a4c",
"xn--node",
"xn--qxam",
"xn--j6w193g",
@@ -6047,7 +6047,18 @@ var rules = [...]string{
"school.za",
"tm.za",
"web.za",
"*.zm",
"zm",
"ac.zm",
"biz.zm",
"co.zm",
"com.zm",
"edu.zm",
"gov.zm",
"info.zm",
"mil.zm",
"net.zm",
"org.zm",
"sch.zm",
"*.zw",
"aaa",
"aarp",
@@ -6110,6 +6121,7 @@ var rules = [...]string{
"aramco",
"archi",
"army",
"art",
"arte",
"asda",
"associates",
@@ -6208,6 +6220,7 @@ var rules = [...]string{
"cal",
"call",
"calvinklein",
"cam",
"camera",
"camp",
"cancerresearch",
@@ -6423,6 +6436,7 @@ var rules = [...]string{
"flsmidth",
"fly",
"foo",
"food",
"foodnetwork",
"football",
"ford",
@@ -6530,6 +6544,7 @@ var rules = [...]string{
"hosting",
"hot",
"hoteles",
"hotels",
"hotmail",
"house",
"how",
@@ -6956,6 +6971,8 @@ var rules = [...]string{
"shia",
"shiksha",
"shoes",
"shop",
"shopping",
"shouji",
"show",
"showtime",
@@ -7269,6 +7286,8 @@ var rules = [...]string{
"zippo",
"zone",
"zuerich",
"*.compute.estate",
"*.alces.network",
"cloudfront.net",
"ap-northeast-1.compute.amazonaws.com",
"ap-northeast-2.compute.amazonaws.com",
@@ -7306,6 +7325,8 @@ var rules = [...]string{
"s3.ap-northeast-2.amazonaws.com",
"s3.cn-north-1.amazonaws.com.cn",
"s3.eu-central-1.amazonaws.com",
"on-aptible.com",
"myfritz.net",
"betainabox.com",
"ae.org",
"ar.com",
@@ -7336,12 +7357,12 @@ var rules = [...]string{
"za.bz",
"za.com",
"africa.com",
"xenapponazure.com",
"gr.com",
"in.net",
"us.org",
"co.com",
"c.la",
"xenapponazure.com",
"cloudcontrolled.com",
"cloudcontrolapp.com",
"co.ca",
@@ -7355,9 +7376,21 @@ var rules = [...]string{
"co.no",
"*.platform.sh",
"cupcake.is",
"cyon.link",
"cyon.site",
"daplie.me",
"biz.dk",
"co.dk",
"firm.dk",
"reg.dk",
"store.dk",
"dedyn.io",
"dnshome.de",
"dreamhosters.com",
"mydrobo.com",
"duckdns.org",
"dy.fi",
"tunk.org",
"dyndns-at-home.com",
"dyndns-at-work.com",
"dyndns-blog.com",
@@ -7638,6 +7671,7 @@ var rules = [...]string{
"worse-than.tv",
"writesthisblog.com",
"dynv6.net",
"e4.cz",
"eu.org",
"al.eu.org",
"asso.eu.org",
@@ -7702,6 +7736,12 @@ var rules = [...]string{
"global.prod.fastly.net",
"firebaseapp.com",
"flynnhub.com",
"freebox-os.com",
"freeboxos.com",
"fbx-os.fr",
"fbxos.fr",
"freebox-os.fr",
"freeboxos.fr",
"service.gov.uk",
"github.io",
"githubusercontent.com",
@@ -7711,6 +7751,8 @@ var rules = [...]string{
"gist.githubcloud.com",
"*.githubcloudusercontent.com",
"ro.com",
"goip.de",
"*.0emm.com",
"appspot.com",
"blogspot.ae",
"blogspot.al",
@@ -7807,10 +7849,100 @@ var rules = [...]string{
"4u.com",
"ngrok.io",
"nfshost.com",
"nsupdate.info",
"nerdpol.ovh",
"blogsyte.com",
"brasilia.me",
"cable-modem.org",
"ciscofreak.com",
"collegefan.org",
"couchpotatofries.org",
"damnserver.com",
"ddns.me",
"ditchyourip.com",
"dnsfor.me",
"dnsiskinky.com",
"dvrcam.info",
"dynns.com",
"eating-organic.net",
"fantasyleague.cc",
"geekgalaxy.com",
"golffan.us",
"health-carereform.com",
"homesecuritymac.com",
"homesecuritypc.com",
"hopto.me",
"ilovecollege.info",
"loginto.me",
"mlbfan.org",
"mmafan.biz",
"myactivedirectory.com",
"mydissent.net",
"myeffect.net",
"mymediapc.net",
"mypsx.net",
"mysecuritycamera.com",
"mysecuritycamera.net",
"mysecuritycamera.org",
"net-freaks.com",
"nflfan.org",
"nhlfan.net",
"no-ip.ca",
"no-ip.co.uk",
"no-ip.net",
"noip.us",
"onthewifi.com",
"pgafan.net",
"point2this.com",
"pointto.us",
"privatizehealthinsurance.net",
"quicksytes.com",
"read-books.org",
"securitytactics.com",
"serveexchange.com",
"servehumour.com",
"servep2p.com",
"servesarcasm.com",
"stufftoread.com",
"ufcfan.org",
"unusualperson.com",
"workisboring.com",
"3utilities.com",
"bounceme.net",
"ddns.net",
"ddnsking.com",
"gotdns.ch",
"hopto.org",
"myftp.biz",
"myftp.org",
"myvnc.com",
"no-ip.biz",
"no-ip.info",
"no-ip.org",
"noip.me",
"redirectme.net",
"servebeer.com",
"serveblog.net",
"servecounterstrike.com",
"serveftp.com",
"servegame.com",
"servehalflife.com",
"servehttp.com",
"serveirc.com",
"serveminecraft.net",
"servemp3.com",
"servepics.com",
"servequake.com",
"sytes.net",
"webhop.me",
"zapto.org",
"nyc.mn",
"nid.io",
"operaunite.com",
"outsystemscloud.com",
"ownprovider.com",
"oy.lc",
"pgfog.com",
"pagefrontapp.com",
"art.pl",
"gliwice.pl",
@@ -7818,14 +7950,17 @@ var rules = [...]string{
"poznan.pl",
"wroc.pl",
"zakopane.pl",
"pantheon.io",
"pantheonsite.io",
"gotpantheon.com",
"mypep.link",
"xen.prgmr.com",
"priv.at",
"chirurgiens-dentistes-en-france.fr",
"qa2.com",
"rackmaze.com",
"rackmaze.net",
"rhcloud.com",
"hzc.io",
"sandcats.io",
"biz.ua",
"co.ua",
@@ -7833,6 +7968,10 @@ var rules = [...]string{
"sinaapp.com",
"vipsinaapp.com",
"1kapp.com",
"bounty-full.com",
"alpha.bounty-full.com",
"beta.bounty-full.com",
"spacekit.io",
"diskstation.me",
"dscloud.biz",
"dscloud.me",
@@ -7851,10 +7990,13 @@ var rules = [...]string{
"gdynia.pl",
"med.pl",
"sopot.pl",
"bloxcms.com",
"townnews-staging.com",
"hk.com",
"hk.org",
"ltd.hk",
"inc.hk",
"router.management",
"yolasite.com",
"za.net",
"za.org",
@@ -7935,6 +8077,7 @@ var nodeLabels = [...]string{
"archi",
"army",
"arpa",
"art",
"arte",
"as",
"asda",
@@ -8061,6 +8204,7 @@ var nodeLabels = [...]string{
"cal",
"call",
"calvinklein",
"cam",
"camera",
"camp",
"cancerresearch",
@@ -8316,6 +8460,7 @@ var nodeLabels = [...]string{
"fm",
"fo",
"foo",
"food",
"foodnetwork",
"football",
"ford",
@@ -8447,6 +8592,7 @@ var nodeLabels = [...]string{
"hosting",
"hot",
"hoteles",
"hotels",
"hotmail",
"house",
"how",
@@ -8985,6 +9131,8 @@ var nodeLabels = [...]string{
"shia",
"shiksha",
"shoes",
"shop",
"shopping",
"shouji",
"show",
"showtime",
@@ -9275,6 +9423,7 @@ var nodeLabels = [...]string{
"xn--czru2d",
"xn--d1acj3b",
"xn--d1alf",
"xn--e1a4c",
"xn--eckvdtc9d",
"xn--efvy88h",
"xn--estv75g",
@@ -9683,6 +9832,9 @@ var nodeLabels = [...]string{
"for-more",
"for-some",
"for-the",
"mmafan",
"myftp",
"no-ip",
"selfip",
"webhop",
"asso",
@@ -9806,6 +9958,7 @@ var nodeLabels = [...]string{
"nb",
"nf",
"nl",
"no-ip",
"ns",
"nt",
"nu",
@@ -9814,6 +9967,7 @@ var nodeLabels = [...]string{
"qc",
"sk",
"yk",
"fantasyleague",
"ftpaccess",
"game-server",
"myphotos",
@@ -9821,6 +9975,7 @@ var nodeLabels = [...]string{
"gov",
"blogspot",
"blogspot",
"gotdns",
"ac",
"asso",
"co",
@@ -9910,7 +10065,9 @@ var nodeLabels = [...]string{
"rec",
"web",
"blogspot",
"0emm",
"1kapp",
"3utilities",
"4u",
"africa",
"amazonaws",
@@ -9919,16 +10076,24 @@ var nodeLabels = [...]string{
"betainabox",
"blogdns",
"blogspot",
"blogsyte",
"bloxcms",
"bounty-full",
"br",
"cechire",
"ciscofreak",
"cloudcontrolapp",
"cloudcontrolled",
"cn",
"co",
"codespot",
"damnserver",
"ddnsking",
"de",
"ditchyourip",
"dnsalias",
"dnsdojo",
"dnsiskinky",
"doesntexist",
"dontexist",
"doomdns",
@@ -9950,6 +10115,7 @@ var nodeLabels = [...]string{
"dyndns-web",
"dyndns-wiki",
"dyndns-work",
"dynns",
"elasticbeanstalk",
"est-a-la-maison",
"est-a-la-masion",
@@ -9960,6 +10126,8 @@ var nodeLabels = [...]string{
"fbsbx",
"firebaseapp",
"flynnhub",
"freebox-os",
"freeboxos",
"from-ak",
"from-al",
"from-ar",
@@ -10008,6 +10176,7 @@ var nodeLabels = [...]string{
"from-wv",
"from-wy",
"gb",
"geekgalaxy",
"getmyip",
"githubcloud",
"githubcloudusercontent",
@@ -10017,11 +10186,14 @@ var nodeLabels = [...]string{
"gotdns",
"gotpantheon",
"gr",
"health-carereform",
"herokuapp",
"herokussl",
"hk",
"hobby-site",
"homelinux",
"homesecuritymac",
"homesecuritypc",
"homeunix",
"hu",
"iamallama",
@@ -10088,17 +10260,27 @@ var nodeLabels = [...]string{
"likes-pie",
"likescandy",
"mex",
"myactivedirectory",
"mydrobo",
"mysecuritycamera",
"myvnc",
"neat-url",
"net-freaks",
"nfshost",
"no",
"on-aptible",
"onthewifi",
"operaunite",
"outsystemscloud",
"ownprovider",
"pagefrontapp",
"pagespeedmobilizer",
"pgfog",
"point2this",
"prgmr",
"qa2",
"qc",
"quicksytes",
"rackmaze",
"rhcloud",
"ro",
@@ -10106,20 +10288,39 @@ var nodeLabels = [...]string{
"sa",
"saves-the-whales",
"se",
"securitytactics",
"selfip",
"sells-for-less",
"sells-for-u",
"servebbs",
"servebeer",
"servecounterstrike",
"serveexchange",
"serveftp",
"servegame",
"servehalflife",
"servehttp",
"servehumour",
"serveirc",
"servemp3",
"servep2p",
"servepics",
"servequake",
"servesarcasm",
"simple-url",
"sinaapp",
"space-to-rent",
"stufftoread",
"teaches-yoga",
"townnews-staging",
"uk",
"unusualperson",
"us",
"uy",
"vipsinaapp",
"withgoogle",
"withyoutube",
"workisboring",
"writesthisblog",
"xenapponazure",
"yolasite",
@@ -10158,6 +10359,8 @@ var nodeLabels = [...]string{
"z-1",
"z-2",
"s3",
"alpha",
"beta",
"apps",
"api",
"ext",
@@ -10199,15 +10402,23 @@ var nodeLabels = [...]string{
"blogspot",
"blogspot",
"co",
"e4",
"blogspot",
"com",
"dnshome",
"fuettertdasnetz",
"goip",
"isteingeek",
"istmein",
"lebtimnetz",
"leitungsen",
"traeumtgerade",
"biz",
"blogspot",
"co",
"firm",
"reg",
"store",
"com",
"edu",
"gov",
@@ -10270,6 +10481,7 @@ var nodeLabels = [...]string{
"nom",
"org",
"blogspot",
"compute",
"biz",
"com",
"edu",
@@ -10280,6 +10492,7 @@ var nodeLabels = [...]string{
"org",
"aland",
"blogspot",
"dy",
"iki",
"aeroport",
"assedic",
@@ -10290,8 +10503,13 @@ var nodeLabels = [...]string{
"cci",
"chambagri",
"chirurgiens-dentistes",
"chirurgiens-dentistes-en-france",
"com",
"experts-comptables",
"fbx-os",
"fbxos",
"freebox-os",
"freeboxos",
"geometre-expert",
"gouv",
"greta",
@@ -10493,21 +10711,28 @@ var nodeLabels = [...]string{
"res",
"barrel-of-knowledge",
"barrell-of-knowledge",
"dvrcam",
"dyndns",
"for-our",
"groks-the",
"groks-this",
"here-for-more",
"ilovecollege",
"knowsitall",
"no-ip",
"nsupdate",
"selfip",
"webhop",
"eu",
"com",
"dedyn",
"github",
"hzc",
"ngrok",
"nid",
"pantheon",
"pantheonsite",
"sandcats",
"spacekit",
"com",
"edu",
"gov",
@@ -11917,7 +12142,6 @@ var nodeLabels = [...]string{
"kakuda",
"kami",
"kawasaki",
"kesennuma",
"marumori",
"matsushima",
"minamisanriku",
@@ -12809,7 +13033,10 @@ var nodeLabels = [...]string{
"gov",
"net",
"org",
"oy",
"blogspot",
"cyon",
"mypep",
"ac",
"assn",
"com",
@@ -12859,22 +13086,31 @@ var nodeLabels = [...]string{
"net",
"org",
"press",
"router",
"asso",
"tm",
"blogspot",
"ac",
"brasilia",
"co",
"daplie",
"ddns",
"diskstation",
"dnsfor",
"dscloud",
"edu",
"gov",
"hopto",
"i234",
"its",
"loginto",
"myds",
"net",
"noip",
"org",
"priv",
"synology",
"webhop",
"co",
"com",
"edu",
@@ -13542,6 +13778,7 @@ var nodeLabels = [...]string{
"azure-mobile",
"azurewebsites",
"blogdns",
"bounceme",
"broke-it",
"buyshouses",
"cdn77",
@@ -13549,6 +13786,7 @@ var nodeLabels = [...]string{
"cloudapp",
"cloudfront",
"cloudfunctions",
"ddns",
"dnsalias",
"dnsdojo",
"does-it",
@@ -13557,6 +13795,7 @@ var nodeLabels = [...]string{
"dynalias",
"dynathome",
"dynv6",
"eating-organic",
"endofinternet",
"familyds",
"fastly",
@@ -13579,15 +13818,29 @@ var nodeLabels = [...]string{
"isa-geek",
"jp",
"kicks-ass",
"mydissent",
"myeffect",
"myfritz",
"mymediapc",
"mypsx",
"mysecuritycamera",
"nhlfan",
"no-ip",
"office-on-the",
"pgafan",
"podzone",
"privatizehealthinsurance",
"rackmaze",
"redirectme",
"scrapper-site",
"se",
"selfip",
"sells-it",
"servebbs",
"serveblog",
"serveftp",
"serveminecraft",
"sytes",
"thruhere",
"uk",
"webhop",
@@ -13600,6 +13853,7 @@ var nodeLabels = [...]string{
"a",
"b",
"global",
"alces",
"arts",
"com",
"firm",
@@ -14445,8 +14699,11 @@ var nodeLabels = [...]string{
"blogsite",
"bmoattachments",
"boldlygoingnowhere",
"cable-modem",
"cdn77",
"cdn77-secure",
"collegefan",
"couchpotatofries",
"dnsalias",
"dnsdojo",
"doesntexist",
@@ -14470,6 +14727,7 @@ var nodeLabels = [...]string{
"homeftp",
"homelinux",
"homeunix",
"hopto",
"is-a-bruinsfan",
"is-a-candidate",
"is-a-celticsfan",
@@ -14490,7 +14748,13 @@ var nodeLabels = [...]string{
"isa-geek",
"kicks-ass",
"misconfused",
"mlbfan",
"myftp",
"mysecuritycamera",
"nflfan",
"no-ip",
"podzone",
"read-books",
"readmyblog",
"selfip",
"sellsyourhome",
@@ -14498,9 +14762,12 @@ var nodeLabels = [...]string{
"serveftp",
"servegame",
"stuff-4-sale",
"tunk",
"ufcfan",
"us",
"webhop",
"za",
"zapto",
"c",
"rsc",
"origin",
@@ -14562,6 +14829,7 @@ var nodeLabels = [...]string{
"tr",
"uk",
"us",
"nerdpol",
"abo",
"ac",
"com",
@@ -15130,6 +15398,7 @@ var nodeLabels = [...]string{
"org",
"platform",
"blogspot",
"cyon",
"blogspot",
"com",
"edu",
@@ -15434,6 +15703,7 @@ var nodeLabels = [...]string{
"police",
"sch",
"blogspot",
"no-ip",
"service",
"ak",
"al",
@@ -15449,6 +15719,7 @@ var nodeLabels = [...]string{
"fed",
"fl",
"ga",
"golffan",
"gu",
"hi",
"ia",
@@ -15476,6 +15747,7 @@ var nodeLabels = [...]string{
"nh",
"nj",
"nm",
"noip",
"nsn",
"nv",
"ny",
@@ -15483,6 +15755,7 @@ var nodeLabels = [...]string{
"ok",
"or",
"pa",
"pointto",
"pr",
"ri",
"sc",
@@ -15748,4 +16021,15 @@ var nodeLabels = [...]string{
"tm",
"web",
"blogspot",
"ac",
"biz",
"co",
"com",
"edu",
"gov",
"info",
"mil",
"net",
"org",
"sch",
}