From 0cab13e6d8834f3ddfdfd3ab7aee5a17620177b5 Mon Sep 17 00:00:00 2001 From: mountford Date: Thu, 11 Aug 2016 12:23:39 -0700 Subject: [PATCH] RDAP: Remove port43 element from JSON output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to Gustavo Lozano of ICANN: "In the case of the RDAP profile (gTLD space), the “port43” element is not expected to be used, because Whois/43 tcp will be deprecated in the future." So it sounds like we should not include the port43 element for the moment. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=130017966 --- java/google/registry/config/ConfigModule.java | 10 +++++++--- java/google/registry/rdap/RdapActionBase.java | 3 ++- .../google/registry/rdap/RdapDomainActionTest.java | 5 +---- .../registry/rdap/RdapDomainSearchActionTest.java | 2 +- .../google/registry/rdap/RdapEntityActionTest.java | 5 +---- .../registry/rdap/RdapEntitySearchActionTest.java | 2 +- javatests/google/registry/rdap/RdapHelpActionTest.java | 2 +- .../google/registry/rdap/RdapJsonFormatterTest.java | 3 ++- .../google/registry/rdap/RdapNameserverActionTest.java | 5 +---- .../registry/rdap/RdapNameserverSearchActionTest.java | 2 +- .../google/registry/rdap/testdata/rdap_contact.json | 3 +-- .../google/registry/rdap/testdata/rdap_domain.json | 3 +-- .../registry/rdap/testdata/rdap_domain_unicode.json | 3 +-- javatests/google/registry/rdap/testdata/rdap_host.json | 3 +-- .../registry/rdap/testdata/rdap_host_external.json | 3 +-- .../registry/rdap/testdata/rdap_host_unicode.json | 3 +-- .../registry/rdap/testdata/rdap_multiple_contacts.json | 6 ++---- .../registry/rdap/testdata/rdap_multiple_domains.json | 6 ++---- .../registry/rdap/testdata/rdap_multiple_hosts.json | 6 ++---- .../google/registry/rdap/testdata/rdap_registrar.json | 3 +-- .../registry/rdap/testdata/rdapjson_admincontact.json | 3 +-- .../registry/rdap/testdata/rdapjson_domain_full.json | 3 +-- .../rdap/testdata/rdapjson_domain_no_nameservers.json | 3 +-- .../registry/rdap/testdata/rdapjson_host_both.json | 3 +-- .../registry/rdap/testdata/rdapjson_host_ipv4.json | 3 +-- .../registry/rdap/testdata/rdapjson_host_ipv6.json | 3 +-- .../rdap/testdata/rdapjson_host_no_addresses.json | 3 +-- .../registry/rdap/testdata/rdapjson_registrant.json | 3 +-- .../rdap/testdata/rdapjson_registrant_nobase.json | 3 +-- .../registry/rdap/testdata/rdapjson_registrar.json | 3 +-- .../rdap/testdata/rdapjson_rolelesscontact.json | 3 +-- .../registry/rdap/testdata/rdapjson_techcontact.json | 3 +-- 32 files changed, 43 insertions(+), 71 deletions(-) diff --git a/java/google/registry/config/ConfigModule.java b/java/google/registry/config/ConfigModule.java index 66adc7c12..c354d11e2 100644 --- a/java/google/registry/config/ConfigModule.java +++ b/java/google/registry/config/ConfigModule.java @@ -23,6 +23,7 @@ import dagger.Provides; import java.lang.annotation.Documented; import java.net.URI; import java.net.URL; +import javax.annotation.Nullable; import javax.inject.Qualifier; import org.joda.money.CurrencyUnit; import org.joda.time.DateTimeConstants; @@ -319,7 +320,7 @@ public final class ConfigModule { */ @Provides @Config("rdeImportBucket") - public String provideRdeImportBucket(@Config("projectId") String projectId) { + public static String provideRdeImportBucket(@Config("projectId") String projectId) { return projectId + "-rde-import"; } @@ -533,14 +534,17 @@ public final class ConfigModule { } /** - * WHOIS server displayed in RDAP query responses. + * WHOIS server displayed in RDAP query responses. As per Gustavo Lozano of ICANN, this should be + * omitted, but the ICANN operational profile doesn't actually say that, so it's good to have the + * ability to reinstate this field if necessary. * * @see google.registry.rdap.RdapActionBase */ + @Nullable @Provides @Config("rdapWhoisServer") public static String provideRdapWhoisServer() { - return "whois.nic.google"; + return null; } /** Returns Braintree Merchant Account IDs for each supported currency. */ diff --git a/java/google/registry/rdap/RdapActionBase.java b/java/google/registry/rdap/RdapActionBase.java index c4acefbec..aa7ac4d89 100644 --- a/java/google/registry/rdap/RdapActionBase.java +++ b/java/google/registry/rdap/RdapActionBase.java @@ -43,6 +43,7 @@ import google.registry.request.Response; import google.registry.util.FormattingLogger; import java.net.URI; import java.net.URISyntaxException; +import javax.annotation.Nullable; import javax.inject.Inject; import org.json.simple.JSONValue; @@ -68,7 +69,7 @@ public abstract class RdapActionBase implements Runnable { @Inject @RequestMethod Action.Method requestMethod; @Inject @RequestPath String requestPath; @Inject @Config("rdapLinkBase") String rdapLinkBase; - @Inject @Config("rdapWhoisServer") String rdapWhoisServer; + @Inject @Config("rdapWhoisServer") @Nullable String rdapWhoisServer; /** Returns a string like "domain name" or "nameserver", used for error strings. */ abstract String getHumanReadableObjectTypeName(); diff --git a/javatests/google/registry/rdap/RdapDomainActionTest.java b/javatests/google/registry/rdap/RdapDomainActionTest.java index 18bc2b617..0ac9014e5 100644 --- a/javatests/google/registry/rdap/RdapDomainActionTest.java +++ b/javatests/google/registry/rdap/RdapDomainActionTest.java @@ -124,7 +124,7 @@ public class RdapDomainActionTest { action.clock = clock; action.response = response; action.rdapLinkBase = "https://example.com/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; // history entries persistResource( @@ -199,9 +199,6 @@ public class RdapDomainActionTest { if (!map.containsKey("remarks")) { RdapTestHelper.addDomainBoilerplateRemarks(builder); } - if (!map.containsKey("port43")) { - builder.put("port43", "whois.example.com"); - } obj = builder.build(); } return obj; diff --git a/javatests/google/registry/rdap/RdapDomainSearchActionTest.java b/javatests/google/registry/rdap/RdapDomainSearchActionTest.java index 026a2ed06..9b1d41ee5 100644 --- a/javatests/google/registry/rdap/RdapDomainSearchActionTest.java +++ b/javatests/google/registry/rdap/RdapDomainSearchActionTest.java @@ -274,7 +274,7 @@ public class RdapDomainSearchActionTest { action.clock = clock; action.response = response; action.rdapLinkBase = "https://example.com/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; } private Object generateExpectedJson(String expectedOutputFile) { diff --git a/javatests/google/registry/rdap/RdapEntityActionTest.java b/javatests/google/registry/rdap/RdapEntityActionTest.java index 2b70de2dd..597c04067 100644 --- a/javatests/google/registry/rdap/RdapEntityActionTest.java +++ b/javatests/google/registry/rdap/RdapEntityActionTest.java @@ -145,7 +145,7 @@ public class RdapEntityActionTest { action.clock = clock; action.response = response; action.rdapLinkBase = "https://example.com/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; } private Object generateActualJson(String name) { @@ -180,9 +180,6 @@ public class RdapEntityActionTest { if (!map.containsKey("rdapConformance")) { builder.put("rdapConformance", ImmutableList.of("rdap_level_0")); } - if (!map.containsKey("port43")) { - builder.put("port43", "whois.example.tld"); - } if (!map.containsKey("notices")) { RdapTestHelper.addTermsOfServiceNotice(builder, "https://example.com/rdap/"); } diff --git a/javatests/google/registry/rdap/RdapEntitySearchActionTest.java b/javatests/google/registry/rdap/RdapEntitySearchActionTest.java index 46a6db06f..13fbb6d26 100644 --- a/javatests/google/registry/rdap/RdapEntitySearchActionTest.java +++ b/javatests/google/registry/rdap/RdapEntitySearchActionTest.java @@ -115,7 +115,7 @@ public class RdapEntitySearchActionTest { action.response = response; action.rdapResultSetMaxSize = 100; action.rdapLinkBase = "https://example.com/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; action.fnParam = Optional.absent(); action.handleParam = Optional.absent(); } diff --git a/javatests/google/registry/rdap/RdapHelpActionTest.java b/javatests/google/registry/rdap/RdapHelpActionTest.java index 17f6c21cd..2fb07c19a 100644 --- a/javatests/google/registry/rdap/RdapHelpActionTest.java +++ b/javatests/google/registry/rdap/RdapHelpActionTest.java @@ -50,7 +50,7 @@ public class RdapHelpActionTest { action.clock = clock; action.response = response; action.rdapLinkBase = "https://example.tld/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; } private Object generateActualJson(String helpPath) { diff --git a/javatests/google/registry/rdap/RdapJsonFormatterTest.java b/javatests/google/registry/rdap/RdapJsonFormatterTest.java index 498c37e78..1226b85d1 100644 --- a/javatests/google/registry/rdap/RdapJsonFormatterTest.java +++ b/javatests/google/registry/rdap/RdapJsonFormatterTest.java @@ -77,7 +77,8 @@ public class RdapJsonFormatterTest { private static final String LINK_BASE = "http://myserver.google.com/"; private static final String LINK_BASE_NO_TRAILING_SLASH = "http://myserver.google.com"; - private static final String WHOIS_SERVER = "whois.google.com"; + // Do not set a port43 whois server, as per Gustavo Lozano. + private static final String WHOIS_SERVER = null; @Before public void setUp() throws Exception { diff --git a/javatests/google/registry/rdap/RdapNameserverActionTest.java b/javatests/google/registry/rdap/RdapNameserverActionTest.java index 482219a46..0777ba36c 100644 --- a/javatests/google/registry/rdap/RdapNameserverActionTest.java +++ b/javatests/google/registry/rdap/RdapNameserverActionTest.java @@ -76,7 +76,7 @@ public class RdapNameserverActionTest { action.response = response; action.requestPath = RdapNameserverAction.PATH.concat(input); action.rdapLinkBase = "https://example.tld/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; return action; } @@ -121,9 +121,6 @@ public class RdapNameserverActionTest { if (!map.containsKey("rdapConformance")) { builder.put("rdapConformance", ImmutableList.of("rdap_level_0")); } - if (!map.containsKey("port43")) { - builder.put("port43", "whois.example.tld"); - } if (!map.containsKey("notices")) { RdapTestHelper.addTermsOfServiceNotice(builder, "https://example.tld/rdap/"); } diff --git a/javatests/google/registry/rdap/RdapNameserverSearchActionTest.java b/javatests/google/registry/rdap/RdapNameserverSearchActionTest.java index 104087b68..e9e3fec26 100644 --- a/javatests/google/registry/rdap/RdapNameserverSearchActionTest.java +++ b/javatests/google/registry/rdap/RdapNameserverSearchActionTest.java @@ -131,7 +131,7 @@ public class RdapNameserverSearchActionTest { action.response = response; action.rdapResultSetMaxSize = 100; action.rdapLinkBase = "https://example.tld/rdap/"; - action.rdapWhoisServer = "whois.example.tld"; + action.rdapWhoisServer = null; action.ipParam = Optional.absent(); action.nameParam = Optional.absent(); } diff --git a/javatests/google/registry/rdap/testdata/rdap_contact.json b/javatests/google/registry/rdap/testdata/rdap_contact.json index 296f3b61a..dd60d4e44 100644 --- a/javatests/google/registry/rdap/testdata/rdap_contact.json +++ b/javatests/google/registry/rdap/testdata/rdap_contact.json @@ -40,7 +40,6 @@ ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"], ["email", {}, "text", "%EMAIL%"] ] - ], - "port43": "whois.example.tld" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdap_domain.json b/javatests/google/registry/rdap/testdata/rdap_domain.json index c8441b57e..ca94d4fa4 100644 --- a/javatests/google/registry/rdap/testdata/rdap_domain.json +++ b/javatests/google/registry/rdap/testdata/rdap_domain.json @@ -354,6 +354,5 @@ ] } ], - "objectClassName": "domain", - "port43": "whois.example.tld" + "objectClassName": "domain" } diff --git a/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json b/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json index e6787e609..270ce1b68 100644 --- a/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json +++ b/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json @@ -355,6 +355,5 @@ ] } ], - "objectClassName": "domain", - "port43": "whois.example.tld" + "objectClassName": "domain" } diff --git a/javatests/google/registry/rdap/testdata/rdap_host.json b/javatests/google/registry/rdap/testdata/rdap_host.json index fc15d5eb1..da6384db4 100644 --- a/javatests/google/registry/rdap/testdata/rdap_host.json +++ b/javatests/google/registry/rdap/testdata/rdap_host.json @@ -24,6 +24,5 @@ "eventDate": "1999-01-01T00:00:00.000Z" }, ], - "objectClassName": "nameserver", - "port43": "whois.example.tld" + "objectClassName": "nameserver" } diff --git a/javatests/google/registry/rdap/testdata/rdap_host_external.json b/javatests/google/registry/rdap/testdata/rdap_host_external.json index d2b9cd8ec..fd5766e6b 100644 --- a/javatests/google/registry/rdap/testdata/rdap_host_external.json +++ b/javatests/google/registry/rdap/testdata/rdap_host_external.json @@ -19,6 +19,5 @@ "eventDate": "1999-01-01T00:00:00.000Z" }, ], - "objectClassName": "nameserver", - "port43": "whois.example.tld" + "objectClassName": "nameserver" } diff --git a/javatests/google/registry/rdap/testdata/rdap_host_unicode.json b/javatests/google/registry/rdap/testdata/rdap_host_unicode.json index edaca12c9..b3c63ff89 100644 --- a/javatests/google/registry/rdap/testdata/rdap_host_unicode.json +++ b/javatests/google/registry/rdap/testdata/rdap_host_unicode.json @@ -25,6 +25,5 @@ "eventDate": "1999-01-01T00:00:00.000Z" }, ], - "objectClassName": "nameserver", - "port43": "whois.example.tld" + "objectClassName": "nameserver" } diff --git a/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json b/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json index c21f6560d..1f9c4fe73 100644 --- a/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json +++ b/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json @@ -43,8 +43,7 @@ ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"], ["email", {}, "text", "blinky@b.tld"] ] - ], - "port43": "whois.example.tld" + ] }, { "objectClassName" : "entity", @@ -130,8 +129,7 @@ ] ], } - ], - "port43": "whois.example.tld" + ] } ], "rdapConformance": [ "rdap_level_0" ], diff --git a/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json b/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json index 35b480286..176daa073 100644 --- a/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json +++ b/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json @@ -356,8 +356,7 @@ ] } ], - "objectClassName": "domain", - "port43": "whois.example.tld" + "objectClassName": "domain" }, { "status": [ @@ -715,8 +714,7 @@ ] } ], - "objectClassName": "domain", - "port43": "whois.example.tld" + "objectClassName": "domain" } ], "rdapConformance": [ diff --git a/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json b/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json index 7d10e045c..3e2f63fbb 100644 --- a/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json +++ b/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json @@ -25,8 +25,7 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" } - ], - "port43": "whois.example.tld" + ] }, { "objectClassName" : "nameserver", @@ -53,8 +52,7 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" } - ], - "port43": "whois.example.tld" + ] } ], "rdapConformance" : ["rdap_level_0"], diff --git a/javatests/google/registry/rdap/testdata/rdap_registrar.json b/javatests/google/registry/rdap/testdata/rdap_registrar.json index 99741b11a..895d0252d 100644 --- a/javatests/google/registry/rdap/testdata/rdap_registrar.json +++ b/javatests/google/registry/rdap/testdata/rdap_registrar.json @@ -82,6 +82,5 @@ ] ], } - ], - "port43": "whois.example.tld" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json b/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json index 908bd9a3e..33e8f83a8 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json @@ -41,6 +41,5 @@ ["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"], ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"] ] - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json b/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json index 6befaae8e..f2d0fdcd1 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json @@ -217,6 +217,5 @@ ] ] } - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json b/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json index fe91a0ee7..4b8ee1ff6 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json @@ -161,6 +161,5 @@ ] ] } - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_both.json b/javatests/google/registry/rdap/testdata/rdapjson_host_both.json index d17eaf25e..87769dd4d 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_both.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_both.json @@ -24,6 +24,5 @@ { "v4" : ["1.2.3.4"], "v6" : ["bad:f00d:cafe::15:beef"] - }, - "port43": "whois.google.com" + } } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json index 0bae04a56..a1fabd2ee 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json @@ -23,6 +23,5 @@ "ipAddresses" : { "v4" : ["1.2.3.4"] - }, - "port43": "whois.google.com" + } } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json index 896194339..db8ebe9ce 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json @@ -23,6 +23,5 @@ "ipAddresses" : { "v6" : ["bad:f00d:cafe::15:beef"] - }, - "port43": "whois.google.com" + } } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json b/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json index 63951b2ba..e407e73a8 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json @@ -19,6 +19,5 @@ "eventActor": "foo", "eventDate": "1996-01-01T00:00:00.000Z" }, - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_registrant.json b/javatests/google/registry/rdap/testdata/rdapjson_registrant.json index 4b044e51b..979cd98ce 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_registrant.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_registrant.json @@ -30,6 +30,5 @@ ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"], ["email", {}, "text", "lol@cat.みんな"] ] - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json b/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json index c1f815aec..bb7a4ecda 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json @@ -30,6 +30,5 @@ ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"], ["email", {}, "text", "lol@cat.みんな"] ] - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_registrar.json b/javatests/google/registry/rdap/testdata/rdapjson_registrar.json index 35076de59..7ba657cee 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_registrar.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_registrar.json @@ -97,6 +97,5 @@ ] ], } - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json b/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json index b0dfa46af..caad16636 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json @@ -40,6 +40,5 @@ ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"], ["email", {}, "text", "bog@cat.みんな"] ] - ], - "port43": "whois.google.com" + ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json b/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json index 51877d225..613773087 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json @@ -41,6 +41,5 @@ ["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"], ["email", {}, "text", "bog@cat.みんな"] ] - ], - "port43": "whois.google.com" + ] }