Remove some fields from WHOIS output

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191445626
This commit is contained in:
jianglai 2018-04-03 08:45:04 -07:00 committed by Ben McIlwain
parent 377fe5f573
commit 839e4aa682
9 changed files with 34 additions and 161 deletions

View file

@ -26,8 +26,6 @@ import com.googlecode.objectify.Key;
import google.registry.model.contact.ContactPhoneNumber;
import google.registry.model.contact.ContactResource;
import google.registry.model.contact.PostalInfo;
import google.registry.model.domain.DesignatedContact;
import google.registry.model.domain.DesignatedContact.Type;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.GracePeriod;
import google.registry.model.eppcommon.StatusValue;
@ -101,9 +99,6 @@ final class DomainWhoisResponse extends WhoisResponseImpl {
abuseContact.map(RegistrarContact::getPhoneNumber).orElse(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(),
@ -118,14 +113,6 @@ final class DomainWhoisResponse extends WhoisResponseImpl {
return WhoisResponseResults.create(plaintext, 1);
}
/** Returns the contact of the given type, or null if it does not exist. */
@Nullable
private Key<ContactResource> getContactReference(final Type type) {
Optional<DesignatedContact> contactOfType =
domain.getContacts().stream().filter(d -> d.getType() == type).findFirst();
return contactOfType.map(DesignatedContact::getContactKey).orElse(null);
}
/** Output emitter with logic for domains. */
class DomainEmitter extends Emitter<DomainEmitter> {
DomainEmitter emitPhone(
@ -140,9 +127,7 @@ final class DomainWhoisResponse extends WhoisResponseImpl {
/** Emit the contact entry of the given type. */
DomainEmitter emitContact(
String contactType,
@Nullable Key<ContactResource> contact,
boolean preferUnicode) {
String contactType, @Nullable Key<ContactResource> contact, boolean preferUnicode) {
if (contact == null) {
return this;
}
@ -151,24 +136,21 @@ final class DomainWhoisResponse extends WhoisResponseImpl {
// someone's attention.
ContactResource contactResource = ofy().load().key(contact).now();
if (contactResource == null) {
logger.severefmt("(BUG) Broken reference found from domain %s to contact %s",
logger.severefmt(
"(BUG) Broken reference found from domain %s to contact %s",
domain.getFullyQualifiedDomainName(), contact);
return this;
}
// ICANN Consistent Labeling & Display policy requires that this be the ROID.
emitField(ImmutableList.of("Registry", contactType, "ID"), contactResource.getRepoId());
PostalInfo postalInfo = chooseByUnicodePreference(
preferUnicode,
contactResource.getLocalizedPostalInfo(),
contactResource.getInternationalizedPostalInfo());
PostalInfo postalInfo =
chooseByUnicodePreference(
preferUnicode,
contactResource.getLocalizedPostalInfo(),
contactResource.getInternationalizedPostalInfo());
if (postalInfo != null) {
emitFieldIfDefined(ImmutableList.of(contactType, "Name"), postalInfo.getName());
emitFieldIfDefined(ImmutableList.of(contactType, "Organization"), postalInfo.getOrg());
emitAddress(contactType, postalInfo.getAddress());
emitRegistrantAddress(contactType, postalInfo.getAddress());
}
return emitPhone(contactType, "Phone", contactResource.getVoiceNumber())
.emitPhone(contactType, "Fax", contactResource.getFaxNumber())
.emitField(ImmutableList.of(contactType, "Email"), contactResource.getEmailAddress());
return this;
}
/** Emits status values and grace periods as a set, in the AWIP format. */

View file

@ -48,7 +48,7 @@ class RegistrarWhoisResponse extends WhoisResponseImpl {
String plaintext =
new RegistrarEmitter()
.emitField("Registrar", registrar.getRegistrarName())
.emitAddress(
.emitRegistrarAddress(
null,
chooseByUnicodePreference(
preferUnicode,

View file

@ -135,8 +135,8 @@ abstract class WhoisResponseImpl implements WhoisResponse {
return emitField(Joiner.on(' ').join(nameParts), value);
}
/** Emit a contact address. */
E emitAddress(@Nullable String prefix, @Nullable Address address) {
/** Emit registrar address. */
E emitRegistrarAddress(@Nullable String prefix, @Nullable Address address) {
prefix = isNullOrEmpty(prefix) ? "" : prefix + " ";
if (address != null) {
emitList(prefix + "Street", address.getStreet());
@ -148,6 +148,16 @@ abstract class WhoisResponseImpl implements WhoisResponse {
return thisCastToDerived();
}
/** Emit registrant address. */
E emitRegistrantAddress(@Nullable String prefix, @Nullable Address address) {
prefix = isNullOrEmpty(prefix) ? "" : prefix + " ";
if (address != null) {
emitField(prefix + "State/Province", address.getState());
emitField(prefix + "Country", address.getCountryCode());
}
return thisCastToDerived();
}
/** Emit Whois Inaccuracy Complaint Form link. Only used for domain queries. */
E emitWicfLink() {
emitField(ICANN_REPORTING_URL_FIELD, ICANN_REPORTING_URL);

View file

@ -237,7 +237,6 @@ public class WhoisActionTest {
assertThat(domain1.getRepoId()).isNotEqualTo(domain2.getRepoId());
newWhoisAction("domain cat.lol\r\n").run();
assertThat(response.getStatus()).isEqualTo(200);
assertThat(response.getPayload()).contains("Dr. Pablo");
assertThat(response.getPayload()).contains("ns1.google.lol");
}

View file

@ -163,9 +163,16 @@ public class WhoisHttpActionTest {
@Test
public void testRun_wickedLineFeedForgeryInDatastore_crlfSubstitutedWithSpace() throws Exception {
String evilName = "Eric\r\nSchmidt";
ContactResource trl = persistResource(
makeContactResource("5372808-TRL", evilName, "bog@cat.みんな"));
ContactResource trl = makeContactResource("5372808-TRL", "Eric Schmidt", "bog@cat.みんな");
trl =
persistResource(
trl.asBuilder()
.setInternationalizedPostalInfo(
trl.getInternationalizedPostalInfo()
.asBuilder()
.setOrg("Galactic\r\nEmpire")
.build())
.build());
persistResource(makeDomainResource(
"cat.みんな", trl,
trl,
@ -174,7 +181,7 @@ public class WhoisHttpActionTest {
persistResource(makeHostResource("ns2.cat.みんな", "bad:f00d:cafe::15:beef")),
persistResource(makeRegistrar("example", "Example Registrar", Registrar.State.ACTIVE))));
newWhoisHttpAction("/domain/cat.みんな").run();
assertThat(response.getPayload()).contains("Eric Schmidt");
assertThat(response.getPayload()).contains("Galactic Empire");
}
@Test

View file

@ -13,39 +13,9 @@ Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibit
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registry Registrant ID: 4-ROID
Registrant Name: Goblin Market
Registrant Organization: GOOGLE INCORPORATED &lt;script&gt;
Registrant Street: 123 Example Boulevard &lt;script&gt;
Registrant City: KOKOMO
Registrant State/Province: BM
Registrant Postal Code: 31337
Registrant Country: US
Registrant Phone: +1.2126660420
Registrant Fax: +1.2126660420
Registrant Email: lol@cat.lol
Registry Admin ID: 5-ROID
Admin Name: Santa Claus
Admin Organization: GOOGLE INCORPORATED &lt;script&gt;
Admin Street: 123 Example Boulevard &lt;script&gt;
Admin City: KOKOMO
Admin State/Province: BM
Admin Postal Code: 31337
Admin Country: US
Admin Phone: +1.2126660420
Admin Fax: +1.2126660420
Admin Email: BOFH@cat.lol
Registry Tech ID: 6-ROID
Tech Name: The Raven
Tech Organization: GOOGLE INCORPORATED &lt;script&gt;
Tech Street: 123 Example Boulevard &lt;script&gt;
Tech City: KOKOMO
Tech State/Province: BM
Tech Postal Code: 31337
Tech Country: US
Tech Phone: +1.2126660420
Tech Fax: +1.2126660420
Tech Email: bog@cat.lol
Name Server: ns1.cat.lol
Name Server: ns2.cat.lol
DNSSEC: signedDelegation

View file

@ -13,39 +13,9 @@ Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibit
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registry Registrant ID: 4-ROID
Registrant Name: (◕‿◕)
Registrant Organization: GOOGLE INCORPORATED &lt;script&gt;
Registrant Street: 123 Example Boulevard &lt;script&gt;
Registrant City: KOKOMO
Registrant State/Province: BM
Registrant Postal Code: 31337
Registrant Country: US
Registrant Phone: +1.2126660420
Registrant Fax: +1.2126660420
Registrant Email: lol@cat.みんな
Registry Admin ID: 5-ROID
Admin Name: Santa Claus
Admin Organization: GOOGLE INCORPORATED &lt;script&gt;
Admin Street: 123 Example Boulevard &lt;script&gt;
Admin City: KOKOMO
Admin State/Province: BM
Admin Postal Code: 31337
Admin Country: US
Admin Phone: +1.2126660420
Admin Fax: +1.2126660420
Admin Email: BOFH@cat.みんな
Registry Tech ID: 6-ROID
Tech Name: The Raven
Tech Organization: GOOGLE INCORPORATED &lt;script&gt;
Tech Street: 123 Example Boulevard &lt;script&gt;
Tech City: KOKOMO
Tech State/Province: BM
Tech Postal Code: 31337
Tech Country: US
Tech Phone: +1.2126660420
Tech Fax: +1.2126660420
Tech Email: bog@cat.みんな
Name Server: ns1.cat.xn--q9jyb4c
Name Server: ns2.cat.xn--q9jyb4c
DNSSEC: signedDelegation

View file

@ -13,39 +13,9 @@ Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibit
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registry Registrant ID: 4-ROID
Registrant Name: (◕‿◕)
Registrant Organization: GOOGLE INCORPORATED &lt;script&gt;
Registrant Street: 123 Example Boulevard &lt;script&gt;
Registrant City: KOKOMO
Registrant State/Province: BM
Registrant Postal Code: 31337
Registrant Country: US
Registrant Phone: +1.2126660420
Registrant Fax: +1.2126660420
Registrant Email: lol@cat.みんな
Registry Admin ID: 5-ROID
Admin Name: Santa Claus
Admin Organization: GOOGLE INCORPORATED &lt;script&gt;
Admin Street: 123 Example Boulevard &lt;script&gt;
Admin City: KOKOMO
Admin State/Province: BM
Admin Postal Code: 31337
Admin Country: US
Admin Phone: +1.2126660420
Admin Fax: +1.2126660420
Admin Email: BOFH@cat.みんな
Registry Tech ID: 6-ROID
Tech Name: The Raven
Tech Organization: GOOGLE INCORPORATED &lt;script&gt;
Tech Street: 123 Example Boulevard &lt;script&gt;
Tech City: KOKOMO
Tech State/Province: BM
Tech Postal Code: 31337
Tech Country: US
Tech Phone: +1.2126660420
Tech Fax: +1.2126660420
Tech Email: bog@cat.みんな
Name Server: ns1.cat.みんな
Name Server: ns2.cat.みんな
DNSSEC: signedDelegation

View file

@ -15,44 +15,9 @@ Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Domain Status: transferPeriod https://icann.org/epp#transferPeriod
Registry Registrant ID: 4-TLD
Registrant Name: EXAMPLE REGISTRANT
Registrant Organization: EXAMPLE ORGANIZATION
Registrant Street: 123 EXAMPLE STREET
Registrant City: ANYTOWN
Registrant State/Province: AP
Registrant Postal Code: A1A1A1
Registrant Country: EX
Registrant Phone: +1.5555551212
Registrant Phone Ext: 1234
Registrant Fax: +1.5555551213
Registrant Fax Ext: 4321
Registrant Email: EMAIL@EXAMPLE.tld
Registry Admin ID: 5-TLD
Admin Name: EXAMPLE REGISTRANT ADMINISTRATIVE
Admin Organization: EXAMPLE REGISTRANT ORGANIZATION
Admin Street: 123 EXAMPLE STREET
Admin City: ANYTOWN
Admin State/Province: AP
Admin Postal Code: A1A1A1
Admin Country: EX
Admin Phone: +1.5555551212
Admin Phone Ext: 1234
Admin Fax: +1.5555551213
Admin Email: EMAIL@EXAMPLE.tld
Registry Tech ID: 6-TLD
Tech Name: EXAMPLE REGISTRAR TECHNICAL
Tech Organization: EXAMPLE REGISTRAR LLC
Tech Street: 123 EXAMPLE STREET
Tech City: ANYTOWN
Tech State/Province: AP
Tech Postal Code: A1A1A1
Tech Country: EX
Tech Phone: +1.1235551234
Tech Phone Ext: 1234
Tech Fax: +1.5555551213
Tech Fax Ext: 93
Tech Email: EMAIL@EXAMPLE.tld
Name Server: ns01.exampleregistrar.tld
Name Server: ns02.exampleregistrar.tld
DNSSEC: signedDelegation