Make WHOIS domain query return conform to ICANN CL&D policy

ICANN's policy can be found here:
https://www.icann.org/resources/pages/rdds-labeling-policy-2017-02-01-en

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=155375811
This commit is contained in:
jianglai 2017-05-08 07:17:23 -07:00 committed by Ben McIlwain
parent 2846f9c6b9
commit 8892656722
21 changed files with 175 additions and 138 deletions

View file

@ -24,6 +24,7 @@ import com.google.common.base.Function;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.googlecode.objectify.Key; import com.googlecode.objectify.Key;
import google.registry.model.contact.ContactPhoneNumber; import google.registry.model.contact.ContactPhoneNumber;
import google.registry.model.contact.ContactResource; import google.registry.model.contact.ContactResource;
@ -34,8 +35,10 @@ import google.registry.model.domain.DomainResource;
import google.registry.model.domain.GracePeriod; import google.registry.model.domain.GracePeriod;
import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppcommon.StatusValue;
import google.registry.model.registrar.Registrar; import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.RegistrarContact;
import google.registry.model.translators.EnumToAttributeAdapter.EppEnum; import google.registry.model.translators.EnumToAttributeAdapter.EppEnum;
import google.registry.util.FormattingLogger; import google.registry.util.FormattingLogger;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.joda.time.DateTime; import org.joda.time.DateTime;
@ -64,39 +67,60 @@ final class DomainWhoisResponse extends WhoisResponseImpl {
@Override @Override
public WhoisResponseResults getResponse(final boolean preferUnicode, String disclaimer) { public WhoisResponseResults getResponse(final boolean preferUnicode, String disclaimer) {
Registrar registrar = getRegistrar(domain.getCurrentSponsorClientId()); Registrar registrar = getRegistrar(domain.getCurrentSponsorClientId());
String plaintext = new DomainEmitter() Optional<RegistrarContact> abuseContact =
.emitField( Iterables.tryFind(
"Domain Name", maybeFormatHostname(domain.getFullyQualifiedDomainName(), preferUnicode)) registrar.getContacts(),
.emitField("Domain ID", domain.getRepoId()) new Predicate<RegistrarContact>() {
.emitField("WHOIS Server", registrar.getWhoisServer())
.emitField("Referral URL", registrar.getReferralUrl())
.emitField("Updated Date", getFormattedString(domain.getLastEppUpdateTime()))
.emitField("Creation Date", getFormattedString(domain.getCreationTime()))
.emitField(
"Registry Expiry Date", getFormattedString(domain.getRegistrationExpirationTime()))
.emitField("Sponsoring Registrar", registrar.getRegistrarName())
.emitField(
"Sponsoring Registrar IANA ID",
registrar.getIanaIdentifier() == null ? null : registrar.getIanaIdentifier().toString())
.emitStatusValues(domain.getStatusValues(), domain.getGracePeriods())
.emitContact("Registrant", domain.getRegistrant(), preferUnicode)
.emitContact("Admin", getContactReference(Type.ADMIN), preferUnicode)
.emitContact("Tech", getContactReference(Type.TECH), preferUnicode)
.emitContact("Billing", getContactReference(Type.BILLING), preferUnicode)
.emitSet(
"Name Server",
domain.loadNameserverFullyQualifiedHostNames(),
new Function<String, String>() {
@Override @Override
public String apply(String hostName) { public boolean apply(@Nullable RegistrarContact contact) {
return maybeFormatHostname(hostName, preferUnicode); return contact.getVisibleInDomainWhoisAsAbuse();
} }
}) });
.emitField("DNSSEC", isNullOrEmpty(domain.getDsData()) ? "unsigned" : "signedDelegation") String plaintext =
.emitLastUpdated(getTimestamp()) new DomainEmitter()
.emitAwipMessage() .emitField(
.emitFooter(disclaimer) "Domain Name",
.toString(); maybeFormatHostname(domain.getFullyQualifiedDomainName(), preferUnicode))
.emitField("Registry Domain ID", domain.getRepoId())
.emitField("Registrar WHOIS Server", registrar.getWhoisServer())
.emitField("Registrar URL", registrar.getReferralUrl())
.emitField("Updated Date", getFormattedString(domain.getLastEppUpdateTime()))
.emitField("Creation Date", getFormattedString(domain.getCreationTime()))
.emitField(
"Registry Expiry Date", getFormattedString(domain.getRegistrationExpirationTime()))
.emitField("Registrar", registrar.getRegistrarName())
.emitField(
"Registrar IANA ID",
Objects.toString(registrar.getIanaIdentifier(), ""))
// Email address is a required field for registrar contacts. Therefore as long as there
// is an abuse contact, we can get an email address from it.
.emitField(
"Registrar Abuse Contact Email",
abuseContact.isPresent() ? abuseContact.get().getEmailAddress() : null)
.emitField(
"Registrar Abuse Contact Phone",
abuseContact.isPresent() ? abuseContact.get().getPhoneNumber() : null)
.emitStatusValues(domain.getStatusValues(), domain.getGracePeriods())
.emitContact("Registrant", domain.getRegistrant(), preferUnicode)
.emitContact("Admin", getContactReference(Type.ADMIN), preferUnicode)
.emitContact("Tech", getContactReference(Type.TECH), preferUnicode)
.emitContact("Billing", getContactReference(Type.BILLING), preferUnicode)
.emitSet(
"Name Server",
domain.loadNameserverFullyQualifiedHostNames(),
new Function<String, String>() {
@Override
public String apply(String hostName) {
return maybeFormatHostname(hostName, preferUnicode);
}
})
.emitField(
"DNSSEC", isNullOrEmpty(domain.getDsData()) ? "unsigned" : "signedDelegation")
.emitWicfLink()
.emitLastUpdated(getTimestamp())
.emitAwipMessage()
.emitFooter(disclaimer)
.toString();
return WhoisResponseResults.create(plaintext, 1); return WhoisResponseResults.create(plaintext, 1);
} }
@ -139,7 +163,7 @@ final class DomainWhoisResponse extends WhoisResponseImpl {
domain.getFullyQualifiedDomainName(), contact); domain.getFullyQualifiedDomainName(), contact);
return this; return this;
} }
emitField(contactType, "ID", contactResource.getContactId()); emitField("Registry", contactType, "ID", contactResource.getContactId());
PostalInfo postalInfo = chooseByUnicodePreference( PostalInfo postalInfo = chooseByUnicodePreference(
preferUnicode, preferUnicode,
contactResource.getLocalizedPostalInfo(), contactResource.getLocalizedPostalInfo(),

View file

@ -55,17 +55,20 @@ final class NameserverWhoisResponse extends WhoisResponseImpl {
: host.getPersistedCurrentSponsorClientId(); : host.getPersistedCurrentSponsorClientId();
Registrar registrar = getRegistrar(clientId); Registrar registrar = getRegistrar(clientId);
emitter emitter
.emitField("Server Name", maybeFormatHostname( .emitField(
host.getFullyQualifiedHostName(), preferUnicode)) "Server Name", maybeFormatHostname(host.getFullyQualifiedHostName(), preferUnicode))
.emitSet("IP Address", host.getInetAddresses(), .emitSet(
"IP Address",
host.getInetAddresses(),
new Function<InetAddress, String>() { new Function<InetAddress, String>() {
@Override @Override
public String apply(InetAddress addr) { public String apply(InetAddress addr) {
return InetAddresses.toAddrString(addr); return InetAddresses.toAddrString(addr);
}}) }
})
.emitField("Registrar", registrar.getRegistrarName()) .emitField("Registrar", registrar.getRegistrarName())
.emitField("WHOIS Server", registrar.getWhoisServer()) .emitField("Registrar WHOIS Server", registrar.getWhoisServer())
.emitField("Referral URL", registrar.getReferralUrl()); .emitField("Registrar URL", registrar.getReferralUrl());
if (i < hosts.size() - 1) { if (i < hosts.size() - 1) {
emitter.emitNewline(); emitter.emitNewline();
} }

View file

@ -45,23 +45,24 @@ class RegistrarWhoisResponse extends WhoisResponseImpl {
@Override @Override
public WhoisResponseResults getResponse(boolean preferUnicode, String disclaimer) { public WhoisResponseResults getResponse(boolean preferUnicode, String disclaimer) {
Set<RegistrarContact> contacts = registrar.getContacts(); Set<RegistrarContact> contacts = registrar.getContacts();
String plaintext = new RegistrarEmitter() String plaintext =
.emitField("Registrar Name", registrar.getRegistrarName()) new RegistrarEmitter()
.emitAddress( .emitField("Registrar", registrar.getRegistrarName())
null, .emitAddress(
chooseByUnicodePreference( null,
preferUnicode, chooseByUnicodePreference(
registrar.getLocalizedAddress(), preferUnicode,
registrar.getInternationalizedAddress())) registrar.getLocalizedAddress(),
.emitPhonesAndEmail( registrar.getInternationalizedAddress()))
registrar.getPhoneNumber(), registrar.getFaxNumber(), registrar.getEmailAddress()) .emitPhonesAndEmail(
.emitField("WHOIS Server", registrar.getWhoisServer()) registrar.getPhoneNumber(), registrar.getFaxNumber(), registrar.getEmailAddress())
.emitField("Referral URL", registrar.getReferralUrl()) .emitField("Registrar WHOIS Server", registrar.getWhoisServer())
.emitRegistrarContacts("Admin", contacts, AdminOrTech.ADMIN) .emitField("Registrar URL", registrar.getReferralUrl())
.emitRegistrarContacts("Technical", contacts, AdminOrTech.TECH) .emitRegistrarContacts("Admin", contacts, AdminOrTech.ADMIN)
.emitLastUpdated(getTimestamp()) .emitRegistrarContacts("Technical", contacts, AdminOrTech.TECH)
.emitFooter(disclaimer) .emitLastUpdated(getTimestamp())
.toString(); .emitFooter(disclaimer)
.toString();
return WhoisResponseResults.create(plaintext, 1); return WhoisResponseResults.create(plaintext, 1);
} }

View file

@ -40,10 +40,10 @@ abstract class WhoisResponseImpl implements WhoisResponse {
/** Field name for ICANN problem reporting URL appended to all WHOIS responses. */ /** Field name for ICANN problem reporting URL appended to all WHOIS responses. */
private static final String ICANN_REPORTING_URL_FIELD = private static final String ICANN_REPORTING_URL_FIELD =
"URL of the ICANN WHOIS Data Problem Reporting System"; "URL of the ICANN Whois Inaccuracy Complaint Form";
/** ICANN problem reporting URL appended to all WHOIS responses. */ /** ICANN problem reporting URL appended to all WHOIS responses. */
private static final String ICANN_REPORTING_URL = "http://wdprs.internic.net/"; private static final String ICANN_REPORTING_URL = "https://www.icann.org/wicf/";
private static final Registrar EMPTY_REGISTRAR = new Supplier<Registrar>() { private static final Registrar EMPTY_REGISTRAR = new Supplier<Registrar>() {
@Override @Override
@ -147,6 +147,12 @@ abstract class WhoisResponseImpl implements WhoisResponse {
return thisCastToDerived(); return thisCastToDerived();
} }
/** Emit Whois Inaccuracy Complaint Form link. Only used for domain queries. */
E emitWicfLink() {
emitField(ICANN_REPORTING_URL_FIELD, ICANN_REPORTING_URL);
return thisCastToDerived();
}
/** Returns raw text that should be appended to the end of ALL WHOIS responses. */ /** Returns raw text that should be appended to the end of ALL WHOIS responses. */
E emitLastUpdated(DateTime timestamp) { E emitLastUpdated(DateTime timestamp) {
// We are assuming that our WHOIS database is always completely up to date, since it's // We are assuming that our WHOIS database is always completely up to date, since it's
@ -160,8 +166,7 @@ abstract class WhoisResponseImpl implements WhoisResponse {
/** Returns raw text that should be appended to the end of ALL WHOIS responses. */ /** Returns raw text that should be appended to the end of ALL WHOIS responses. */
E emitFooter(String disclaimer) { E emitFooter(String disclaimer) {
emitField(ICANN_REPORTING_URL_FIELD, ICANN_REPORTING_URL); stringBuilder.append(disclaimer).append("\r\n");
stringBuilder.append("\r\n").append(disclaimer).append("\r\n");
return thisCastToDerived(); return thisCastToDerived();
} }

View file

@ -99,7 +99,7 @@ public final class FullFieldsTestEntityHelper {
.setVisibleInWhoisAsAdmin(false) .setVisibleInWhoisAsAdmin(false)
.setVisibleInWhoisAsTech(true) .setVisibleInWhoisAsTech(true)
.build(), .build(),
new RegistrarContact.Builder() new RegistrarContact.Builder()
.setParent(registrar) .setParent(registrar)
.setName("Jane Doe") .setName("Jane Doe")
.setEmailAddress("janedoe@example.com") .setEmailAddress("janedoe@example.com")
@ -110,7 +110,15 @@ public final class FullFieldsTestEntityHelper {
// distinction to make sure we're not relying on it. Sigh. // distinction to make sure we're not relying on it. Sigh.
.setVisibleInWhoisAsAdmin(true) .setVisibleInWhoisAsAdmin(true)
.setVisibleInWhoisAsTech(false) .setVisibleInWhoisAsTech(false)
.build()); .build(),
new RegistrarContact.Builder()
.setParent(registrar)
.setName("Jake Doe")
.setEmailAddress("jakedoe@example.com")
.setPhoneNumber("+1.2125551216")
.setFaxNumber("+1.2125551216")
.setVisibleInDomainWhoisAsAbuse(true)
.build());
} }
public static HostResource makeHostResource(String fqhn, String ip) { public static HostResource makeHostResource(String fqhn, String ip) {

View file

@ -35,6 +35,7 @@ import google.registry.model.domain.secdns.DelegationSignerData;
import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppcommon.StatusValue;
import google.registry.model.host.HostResource; import google.registry.model.host.HostResource;
import google.registry.model.registrar.Registrar; import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.RegistrarContact;
import google.registry.testing.AppEngineRule; import google.registry.testing.AppEngineRule;
import google.registry.testing.FakeClock; import google.registry.testing.FakeClock;
import google.registry.whois.WhoisResponse.WhoisResponseResults; import google.registry.whois.WhoisResponse.WhoisResponseResults;
@ -66,8 +67,21 @@ public class DomainWhoisResponseTest {
@Before @Before
public void setUp() { public void setUp() {
// Update the registrar to have an IANA ID. // Update the registrar to have an IANA ID.
Registrar registrar =
persistResource(
Registrar.loadByClientId("NewRegistrar")
.asBuilder()
.setIanaIdentifier(5555555L)
.build());
persistResource( persistResource(
Registrar.loadByClientId("NewRegistrar").asBuilder().setIanaIdentifier(5555555L).build()); new RegistrarContact.Builder()
.setParent(registrar)
.setName("Jake Doe")
.setEmailAddress("jakedoe@theregistrar.com")
.setPhoneNumber("+1.2125551216")
.setVisibleInDomainWhoisAsAbuse(true)
.build());
createTld("tld"); createTld("tld");

View file

@ -1,19 +1,21 @@
Domain Name: example.tld Domain Name: example.tld
Domain ID: 3-TLD Registry Domain ID: 3-TLD
WHOIS Server: whois.nic.fakewhois.example Registrar WHOIS Server: whois.nic.fakewhois.example
Referral URL: http://www.referral.example/path Registrar URL: http://www.referral.example/path
Updated Date: 2009-05-29T20:13:00Z Updated Date: 2009-05-29T20:13:00Z
Creation Date: 2000-10-08T00:45:00Z Creation Date: 2000-10-08T00:45:00Z
Registry Expiry Date: 2010-10-08T00:44:59Z Registry Expiry Date: 2010-10-08T00:44:59Z
Sponsoring Registrar: New Registrar Registrar: New Registrar
Sponsoring Registrar IANA ID: 5555555 Registrar IANA ID: 5555555
Registrar Abuse Contact Email: jakedoe@theregistrar.com
Registrar Abuse Contact Phone: +1.2125551216
Domain Status: addPeriod https://icann.org/epp#addPeriod Domain Status: addPeriod https://icann.org/epp#addPeriod
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Domain Status: transferPeriod https://icann.org/epp#transferPeriod Domain Status: transferPeriod https://icann.org/epp#transferPeriod
Registrant ID: 5372808-ERL Registry Registrant ID: 5372808-ERL
Registrant Name: EXAMPLE REGISTRANT Registrant Name: EXAMPLE REGISTRANT
Registrant Organization: EXAMPLE ORGANIZATION Registrant Organization: EXAMPLE ORGANIZATION
Registrant Street: 123 EXAMPLE STREET Registrant Street: 123 EXAMPLE STREET
@ -26,7 +28,7 @@ Registrant Phone Ext: 1234
Registrant Fax: +1.5555551213 Registrant Fax: +1.5555551213
Registrant Fax Ext: 4321 Registrant Fax Ext: 4321
Registrant Email: EMAIL@EXAMPLE.tld Registrant Email: EMAIL@EXAMPLE.tld
Admin ID: 5372809-ERL Registry Admin ID: 5372809-ERL
Admin Name: EXAMPLE REGISTRANT ADMINISTRATIVE Admin Name: EXAMPLE REGISTRANT ADMINISTRATIVE
Admin Organization: EXAMPLE REGISTRANT ORGANIZATION Admin Organization: EXAMPLE REGISTRANT ORGANIZATION
Admin Street: 123 EXAMPLE STREET Admin Street: 123 EXAMPLE STREET
@ -39,7 +41,7 @@ Admin Phone Ext: 1234
Admin Fax: +1.5555551213 Admin Fax: +1.5555551213
Admin Fax Ext: Admin Fax Ext:
Admin Email: EMAIL@EXAMPLE.tld Admin Email: EMAIL@EXAMPLE.tld
Tech ID: 5372811-ERL Registry Tech ID: 5372811-ERL
Tech Name: EXAMPLE REGISTRAR TECHNICAL Tech Name: EXAMPLE REGISTRAR TECHNICAL
Tech Organization: EXAMPLE REGISTRAR LLC Tech Organization: EXAMPLE REGISTRAR LLC
Tech Street: 123 EXAMPLE STREET Tech Street: 123 EXAMPLE STREET
@ -55,10 +57,9 @@ Tech Email: EMAIL@EXAMPLE.tld
Name Server: ns01.exampleregistrar.tld Name Server: ns01.exampleregistrar.tld
Name Server: ns02.exampleregistrar.tld Name Server: ns02.exampleregistrar.tld
DNSSEC: signedDelegation DNSSEC: signedDelegation
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<< >>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<<
For more information on Whois status codes, please visit https://icann.org/epp For more information on Whois status codes, please visit https://icann.org/epp
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -2,17 +2,15 @@ Server Name: ns1.example.tld
IP Address: 192.0.2.123 IP Address: 192.0.2.123
IP Address: 2001:db8::1 IP Address: 2001:db8::1
Registrar: Example Registrar, Inc. Registrar: Example Registrar, Inc.
WHOIS Server: whois.nic.fakewhois.example Registrar WHOIS Server: whois.nic.fakewhois.example
Referral URL: http://www.referral.example/path Registrar URL: http://www.referral.example/path
Server Name: ns2.example.tld Server Name: ns2.example.tld
IP Address: 192.0.2.123 IP Address: 192.0.2.123
IP Address: 2001:db8::1 IP Address: 2001:db8::1
Registrar: Example Registrar, Inc. Registrar: Example Registrar, Inc.
WHOIS Server: whois.nic.fakewhois.example Registrar WHOIS Server: whois.nic.fakewhois.example
Referral URL: http://www.referral.example/path Registrar URL: http://www.referral.example/path
>>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<< >>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -2,10 +2,8 @@ Server Name: ns1.example.tld
IP Address: 192.0.2.123 IP Address: 192.0.2.123
IP Address: 2001:db8::1 IP Address: 2001:db8::1
Registrar: Example Registrar, Inc. Registrar: Example Registrar, Inc.
WHOIS Server: whois.nic.fakewhois.example Registrar WHOIS Server: whois.nic.fakewhois.example
Referral URL: http://www.referral.example/path Registrar URL: http://www.referral.example/path
>>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<< >>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,4 +1,4 @@
Registrar Name: Example Registrar, Inc. Registrar: Example Registrar, Inc.
Street: 1234 Admiralty Way Street: 1234 Admiralty Way
City: Marina del Rey City: Marina del Rey
State/Province: CA State/Province: CA
@ -7,8 +7,8 @@ Country: US
Phone Number: +1.3105551212 Phone Number: +1.3105551212
Fax Number: +1.3105551213 Fax Number: +1.3105551213
Email: registrar@example.tld Email: registrar@example.tld
WHOIS Server: whois.example-registrar.tld Registrar WHOIS Server: whois.example-registrar.tld
Referral URL: http://www.example-registrar.tld Registrar URL: http://www.example-registrar.tld
Admin Contact: Jane Registrar Admin Contact: Jane Registrar
Phone Number: +1.3105551214 Phone Number: +1.3105551214
Fax Number: +1.3105551213 Fax Number: +1.3105551213
@ -23,6 +23,4 @@ Fax Number: +1.3105551216
Email: johngeek@example-registrar.tld Email: johngeek@example-registrar.tld
>>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<< >>> Last update of WHOIS database: 2009-05-29T20:15:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,17 +1,19 @@
Domain Name: cat.lol Domain Name: cat.lol
Domain ID: 9-LOL Registry Domain ID: 9-LOL
WHOIS Server: whois.example.com Registrar WHOIS Server: whois.example.com
Referral URL: http://www.example.com Registrar URL: http://www.example.com
Updated Date: 2009-05-29T20:13:00Z Updated Date: 2009-05-29T20:13:00Z
Creation Date: 2000-10-08T00:45:00Z Creation Date: 2000-10-08T00:45:00Z
Registry Expiry Date: 2110-10-08T00:44:59Z Registry Expiry Date: 2110-10-08T00:44:59Z
Sponsoring Registrar: Yes Virginia &lt;script&gt; Registrar: Yes Virginia &lt;script&gt;
Sponsoring Registrar IANA ID: 1 Registrar IANA ID: 1
Registrar Abuse Contact Email: jakedoe@example.com
Registrar Abuse Contact Phone: +1.2125551216
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registrant ID: 5372808-ERL Registry Registrant ID: 5372808-ERL
Registrant Name: Goblin Market Registrant Name: Goblin Market
Registrant Organization: GOOGLE INCORPORATED &lt;script&gt; Registrant Organization: GOOGLE INCORPORATED &lt;script&gt;
Registrant Street: 123 Example Boulevard &lt;script&gt; Registrant Street: 123 Example Boulevard &lt;script&gt;
@ -24,7 +26,7 @@ Registrant Phone Ext:
Registrant Fax: +1.2126660420 Registrant Fax: +1.2126660420
Registrant Fax Ext: Registrant Fax Ext:
Registrant Email: lol@cat.lol Registrant Email: lol@cat.lol
Admin ID: 5372808-IRL Registry Admin ID: 5372808-IRL
Admin Name: Santa Claus Admin Name: Santa Claus
Admin Organization: GOOGLE INCORPORATED &lt;script&gt; Admin Organization: GOOGLE INCORPORATED &lt;script&gt;
Admin Street: 123 Example Boulevard &lt;script&gt; Admin Street: 123 Example Boulevard &lt;script&gt;
@ -37,7 +39,7 @@ Admin Phone Ext:
Admin Fax: +1.2126660420 Admin Fax: +1.2126660420
Admin Fax Ext: Admin Fax Ext:
Admin Email: BOFH@cat.lol Admin Email: BOFH@cat.lol
Tech ID: 5372808-TRL Registry Tech ID: 5372808-TRL
Tech Name: The Raven Tech Name: The Raven
Tech Organization: GOOGLE INCORPORATED &lt;script&gt; Tech Organization: GOOGLE INCORPORATED &lt;script&gt;
Tech Street: 123 Example Boulevard &lt;script&gt; Tech Street: 123 Example Boulevard &lt;script&gt;
@ -53,10 +55,9 @@ Tech Email: bog@cat.lol
Name Server: ns1.cat.lol Name Server: ns1.cat.lol
Name Server: ns2.cat.lol Name Server: ns2.cat.lol
DNSSEC: signedDelegation DNSSEC: signedDelegation
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
For more information on Whois status codes, please visit https://icann.org/epp For more information on Whois status codes, please visit https://icann.org/epp
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,6 +1,4 @@
Domain not found. Domain not found.
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,17 +1,19 @@
Domain Name: cat.xn--q9jyb4c Domain Name: cat.xn--q9jyb4c
Domain ID: 9-Q9JYB4C Registry Domain ID: 9-Q9JYB4C
WHOIS Server: whois.example.com Registrar WHOIS Server: whois.example.com
Referral URL: http://www.example.com Registrar URL: http://www.example.com
Updated Date: 2009-05-29T20:13:00Z Updated Date: 2009-05-29T20:13:00Z
Creation Date: 2000-10-08T00:45:00Z Creation Date: 2000-10-08T00:45:00Z
Registry Expiry Date: 2110-10-08T00:44:59Z Registry Expiry Date: 2110-10-08T00:44:59Z
Sponsoring Registrar: Yes Virginia &lt;script&gt; Registrar: Yes Virginia &lt;script&gt;
Sponsoring Registrar IANA ID: 1 Registrar IANA ID: 1
Registrar Abuse Contact Email: jakedoe@example.com
Registrar Abuse Contact Phone: +1.2125551216
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registrant ID: 5372808-ERL Registry Registrant ID: 5372808-ERL
Registrant Name: (◕‿◕) Registrant Name: (◕‿◕)
Registrant Organization: GOOGLE INCORPORATED &lt;script&gt; Registrant Organization: GOOGLE INCORPORATED &lt;script&gt;
Registrant Street: 123 Example Boulevard &lt;script&gt; Registrant Street: 123 Example Boulevard &lt;script&gt;
@ -24,7 +26,7 @@ Registrant Phone Ext:
Registrant Fax: +1.2126660420 Registrant Fax: +1.2126660420
Registrant Fax Ext: Registrant Fax Ext:
Registrant Email: lol@cat.みんな Registrant Email: lol@cat.みんな
Admin ID: 5372808-IRL Registry Admin ID: 5372808-IRL
Admin Name: Santa Claus Admin Name: Santa Claus
Admin Organization: GOOGLE INCORPORATED &lt;script&gt; Admin Organization: GOOGLE INCORPORATED &lt;script&gt;
Admin Street: 123 Example Boulevard &lt;script&gt; Admin Street: 123 Example Boulevard &lt;script&gt;
@ -37,7 +39,7 @@ Admin Phone Ext:
Admin Fax: +1.2126660420 Admin Fax: +1.2126660420
Admin Fax Ext: Admin Fax Ext:
Admin Email: BOFH@cat.みんな Admin Email: BOFH@cat.みんな
Tech ID: 5372808-TRL Registry Tech ID: 5372808-TRL
Tech Name: The Raven Tech Name: The Raven
Tech Organization: GOOGLE INCORPORATED &lt;script&gt; Tech Organization: GOOGLE INCORPORATED &lt;script&gt;
Tech Street: 123 Example Boulevard &lt;script&gt; Tech Street: 123 Example Boulevard &lt;script&gt;
@ -53,10 +55,9 @@ Tech Email: bog@cat.みんな
Name Server: ns1.cat.xn--q9jyb4c Name Server: ns1.cat.xn--q9jyb4c
Name Server: ns2.cat.xn--q9jyb4c Name Server: ns2.cat.xn--q9jyb4c
DNSSEC: signedDelegation DNSSEC: signedDelegation
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
For more information on Whois status codes, please visit https://icann.org/epp For more information on Whois status codes, please visit https://icann.org/epp
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,17 +1,19 @@
Domain Name: cat.みんな Domain Name: cat.みんな
Domain ID: 9-Q9JYB4C Registry Domain ID: 9-Q9JYB4C
WHOIS Server: whois.example.com Registrar WHOIS Server: whois.example.com
Referral URL: http://www.example.com Registrar URL: http://www.example.com
Updated Date: 2009-05-29T20:13:00Z Updated Date: 2009-05-29T20:13:00Z
Creation Date: 2000-10-08T00:45:00Z Creation Date: 2000-10-08T00:45:00Z
Registry Expiry Date: 2110-10-08T00:44:59Z Registry Expiry Date: 2110-10-08T00:44:59Z
Sponsoring Registrar: Yes Virginia &lt;script&gt; Registrar: Yes Virginia &lt;script&gt;
Sponsoring Registrar IANA ID: 1 Registrar IANA ID: 1
Registrar Abuse Contact Email: jakedoe@example.com
Registrar Abuse Contact Phone: +1.2125551216
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registrant ID: 5372808-ERL Registry Registrant ID: 5372808-ERL
Registrant Name: (◕‿◕) Registrant Name: (◕‿◕)
Registrant Organization: GOOGLE INCORPORATED &lt;script&gt; Registrant Organization: GOOGLE INCORPORATED &lt;script&gt;
Registrant Street: 123 Example Boulevard &lt;script&gt; Registrant Street: 123 Example Boulevard &lt;script&gt;
@ -24,7 +26,7 @@ Registrant Phone Ext:
Registrant Fax: +1.2126660420 Registrant Fax: +1.2126660420
Registrant Fax Ext: Registrant Fax Ext:
Registrant Email: lol@cat.みんな Registrant Email: lol@cat.みんな
Admin ID: 5372808-IRL Registry Admin ID: 5372808-IRL
Admin Name: Santa Claus Admin Name: Santa Claus
Admin Organization: GOOGLE INCORPORATED &lt;script&gt; Admin Organization: GOOGLE INCORPORATED &lt;script&gt;
Admin Street: 123 Example Boulevard &lt;script&gt; Admin Street: 123 Example Boulevard &lt;script&gt;
@ -37,7 +39,7 @@ Admin Phone Ext:
Admin Fax: +1.2126660420 Admin Fax: +1.2126660420
Admin Fax Ext: Admin Fax Ext:
Admin Email: BOFH@cat.みんな Admin Email: BOFH@cat.みんな
Tech ID: 5372808-TRL Registry Tech ID: 5372808-TRL
Tech Name: The Raven Tech Name: The Raven
Tech Organization: GOOGLE INCORPORATED &lt;script&gt; Tech Organization: GOOGLE INCORPORATED &lt;script&gt;
Tech Street: 123 Example Boulevard &lt;script&gt; Tech Street: 123 Example Boulevard &lt;script&gt;
@ -53,10 +55,9 @@ Tech Email: bog@cat.みんな
Name Server: ns1.cat.みんな Name Server: ns1.cat.みんな
Name Server: ns2.cat.みんな Name Server: ns2.cat.みんな
DNSSEC: signedDelegation DNSSEC: signedDelegation
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
For more information on Whois status codes, please visit https://icann.org/epp For more information on Whois status codes, please visit https://icann.org/epp
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,6 +1,4 @@
No nameservers found. No nameservers found.
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,6 +1,4 @@
Malformed path query. Malformed path query.
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,10 +1,8 @@
Server Name: ns1.cat.lol Server Name: ns1.cat.lol
IP Address: 1.2.3.4 IP Address: 1.2.3.4
Registrar: Registrar:
WHOIS Server: whois.nic.fakewhois.example Registrar WHOIS Server: whois.nic.fakewhois.example
Referral URL: http://www.referral.example/path Registrar URL: http://www.referral.example/path
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,6 +1,4 @@
Nameserver not found. Nameserver not found.
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,6 +1,4 @@
No WHOIS command specified. No WHOIS command specified.
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,4 +1,4 @@
Registrar Name: Example Registrar, Inc. Registrar: Example Registrar, Inc.
Street: 123 Example Boulevard &lt;script&gt; Street: 123 Example Boulevard &lt;script&gt;
City: Williamsburg &lt;script&gt; City: Williamsburg &lt;script&gt;
State/Province: NY State/Province: NY
@ -7,8 +7,8 @@ Country: US
Phone Number: +1.2125551212 Phone Number: +1.2125551212
Fax Number: +1.2125551213 Fax Number: +1.2125551213
Email: contact-us@example.com Email: contact-us@example.com
WHOIS Server: whois.example.com Registrar WHOIS Server: whois.example.com
Referral URL: http://www.example.com Registrar URL: http://www.example.com
Admin Contact: Jane Doe Admin Contact: Jane Doe
Phone Number: +1.2125551215 Phone Number: +1.2125551215
Fax Number: +1.2125551216 Fax Number: +1.2125551216
@ -19,6 +19,4 @@ Fax Number: +1.2125551213
Email: johndoe@example.com Email: johndoe@example.com
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer

View file

@ -1,6 +1,4 @@
No registrar found. No registrar found.
>>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<< >>> Last update of WHOIS database: 2009-06-29T20:13:00Z <<<
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
Doodle Disclaimer Doodle Disclaimer