зеркало из https://github.com/golang/net.git
94 строки
2.9 KiB
Go
94 строки
2.9 KiB
Go
// Copyright 2019 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package publicsuffix_test
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"golang.org/x/net/publicsuffix"
|
|
)
|
|
|
|
// This example demonstrates looking up several domains' eTLDs (effective Top
|
|
// Level Domains) in the PSL (Public Suffix List) snapshot. For each eTLD, the
|
|
// example also determines whether the eTLD is ICANN managed, privately
|
|
// managed, or unmanaged (not explicitly in the PSL).
|
|
//
|
|
// See https://publicsuffix.org/ for the underlying PSL data.
|
|
func ExamplePublicSuffix_manager() {
|
|
domains := []string{
|
|
"amazon.co.uk",
|
|
"books.amazon.co.uk",
|
|
"www.books.amazon.co.uk",
|
|
"amazon.com",
|
|
"",
|
|
"example0.debian.net",
|
|
"example1.debian.org",
|
|
"",
|
|
"golang.dev",
|
|
"golang.net",
|
|
"play.golang.org",
|
|
"gophers.in.space.museum",
|
|
"",
|
|
"0emm.com",
|
|
"a.0emm.com",
|
|
"b.c.d.0emm.com",
|
|
"",
|
|
"there.is.no.such-tld",
|
|
"",
|
|
// Examples from the PublicSuffix function's documentation.
|
|
"foo.org",
|
|
"foo.co.uk",
|
|
"foo.dyndns.org",
|
|
"foo.blogspot.co.uk",
|
|
"cromulent",
|
|
}
|
|
|
|
for _, domain := range domains {
|
|
if domain == "" {
|
|
fmt.Println(">")
|
|
continue
|
|
}
|
|
eTLD, icann := publicsuffix.PublicSuffix(domain)
|
|
|
|
// Only ICANN managed domains can have a single label. Privately
|
|
// managed domains must have multiple labels.
|
|
manager := "Unmanaged"
|
|
if icann {
|
|
manager = "ICANN Managed"
|
|
} else if strings.IndexByte(eTLD, '.') >= 0 {
|
|
manager = "Privately Managed"
|
|
}
|
|
|
|
fmt.Printf("> %24s%16s is %s\n", domain, eTLD, manager)
|
|
}
|
|
|
|
// Output:
|
|
// > amazon.co.uk co.uk is ICANN Managed
|
|
// > books.amazon.co.uk co.uk is ICANN Managed
|
|
// > www.books.amazon.co.uk co.uk is ICANN Managed
|
|
// > amazon.com com is ICANN Managed
|
|
// >
|
|
// > example0.debian.net debian.net is Privately Managed
|
|
// > example1.debian.org org is ICANN Managed
|
|
// >
|
|
// > golang.dev dev is ICANN Managed
|
|
// > golang.net net is ICANN Managed
|
|
// > play.golang.org org is ICANN Managed
|
|
// > gophers.in.space.museum space.museum is ICANN Managed
|
|
// >
|
|
// > 0emm.com com is ICANN Managed
|
|
// > a.0emm.com a.0emm.com is Privately Managed
|
|
// > b.c.d.0emm.com d.0emm.com is Privately Managed
|
|
// >
|
|
// > there.is.no.such-tld such-tld is Unmanaged
|
|
// >
|
|
// > foo.org org is ICANN Managed
|
|
// > foo.co.uk co.uk is ICANN Managed
|
|
// > foo.dyndns.org dyndns.org is Privately Managed
|
|
// > foo.blogspot.co.uk blogspot.co.uk is Privately Managed
|
|
// > cromulent cromulent is Unmanaged
|
|
}
|