From 9ee62de9a4b132fdd269c8e38f5b606b106a2eb9 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 18:15:55 -0600 Subject: [PATCH 01/23] Update maven-pmd-plugin to 3.14.0, which uses PMD 6.29.0 --- traffic_router/connector/pom.xml | 2 +- traffic_router/core/pom.xml | 2 +- traffic_router/shared/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/traffic_router/connector/pom.xml b/traffic_router/connector/pom.xml index 78e92270b0..c0eebda653 100644 --- a/traffic_router/connector/pom.xml +++ b/traffic_router/connector/pom.xml @@ -28,7 +28,7 @@ maven-pmd-plugin - 3.6 + 3.14.0 PMD diff --git a/traffic_router/core/pom.xml b/traffic_router/core/pom.xml index 8f3b728d9d..edde30c551 100644 --- a/traffic_router/core/pom.xml +++ b/traffic_router/core/pom.xml @@ -86,7 +86,7 @@ maven-pmd-plugin - 3.6 + 3.14.0 PMD diff --git a/traffic_router/shared/pom.xml b/traffic_router/shared/pom.xml index d13bcbea39..f2ec586e72 100644 --- a/traffic_router/shared/pom.xml +++ b/traffic_router/shared/pom.xml @@ -35,7 +35,7 @@ under the License. maven-pmd-plugin - 3.6 + 3.14.0 PMD From f7b95da6b31314eb33cf53da8a946f239af286f6 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 18:16:50 -0600 Subject: [PATCH 02/23] Update Java PMD rule names to their PMD 6 equivalents --- .../connector/build/pmd/ruleset.xml | 331 +++++++++-------- traffic_router/core/build/pmd/ruleset.xml | 337 +++++++++--------- traffic_router/shared/build/pmd/ruleset.xml | 335 +++++++++-------- 3 files changed, 496 insertions(+), 507 deletions(-) diff --git a/traffic_router/connector/build/pmd/ruleset.xml b/traffic_router/connector/build/pmd/ruleset.xml index 2ecc748a86..6f352c492b 100644 --- a/traffic_router/connector/build/pmd/ruleset.xml +++ b/traffic_router/connector/build/pmd/ruleset.xml @@ -13,191 +13,190 @@ See the License for the specific language governing permissions and limitations under the License. --> - Overpass PMD Ruleset .*/src/test/.* - - - - - - - - - - - + + + + + + + + + + 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/traffic_router/core/build/pmd/ruleset.xml b/traffic_router/core/build/pmd/ruleset.xml index dcbc791721..270679e3ed 100644 --- a/traffic_router/core/build/pmd/ruleset.xml +++ b/traffic_router/core/build/pmd/ruleset.xml @@ -13,196 +13,191 @@ See the License for the specific language governing permissions and limitations under the License. --> - Overpass PMD Ruleset .*/src/test/.* - - - - - - - - - - - + + + + + + + + + + 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/traffic_router/shared/build/pmd/ruleset.xml b/traffic_router/shared/build/pmd/ruleset.xml index 807dc0f8ac..211ea14a6b 100644 --- a/traffic_router/shared/build/pmd/ruleset.xml +++ b/traffic_router/shared/build/pmd/ruleset.xml @@ -13,195 +13,190 @@ See the License for the specific language governing permissions and limitations under the License. --> - Overpass PMD Ruleset .*/src/test/.* - - - - - - - - - - - + + + + + + + + + + 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + From 9fbf45c4bbde7e9ba0da180746dc001a4c97675f Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 18:45:35 -0600 Subject: [PATCH 03/23] Unlist rules that are scheduled for removal in PMD 7 --- .../connector/build/pmd/ruleset.xml | 20 ------------------- traffic_router/core/build/pmd/ruleset.xml | 20 ------------------- traffic_router/shared/build/pmd/ruleset.xml | 20 ------------------- 3 files changed, 60 deletions(-) diff --git a/traffic_router/connector/build/pmd/ruleset.xml b/traffic_router/connector/build/pmd/ruleset.xml index 6f352c492b..f025986cbf 100644 --- a/traffic_router/connector/build/pmd/ruleset.xml +++ b/traffic_router/connector/build/pmd/ruleset.xml @@ -39,7 +39,6 @@ - @@ -57,13 +56,8 @@ - - - - - @@ -71,9 +65,6 @@ - - - @@ -107,9 +98,7 @@ - - @@ -123,16 +112,11 @@ - - - - - @@ -144,17 +128,14 @@ - - - @@ -163,7 +144,6 @@ - diff --git a/traffic_router/core/build/pmd/ruleset.xml b/traffic_router/core/build/pmd/ruleset.xml index 270679e3ed..2ed0b2aa7f 100644 --- a/traffic_router/core/build/pmd/ruleset.xml +++ b/traffic_router/core/build/pmd/ruleset.xml @@ -39,7 +39,6 @@ - @@ -57,13 +56,8 @@ - - - - - @@ -71,9 +65,6 @@ - - - @@ -108,9 +99,7 @@ - - @@ -124,16 +113,11 @@ - - - - - @@ -145,17 +129,14 @@ - - - @@ -164,7 +145,6 @@ - diff --git a/traffic_router/shared/build/pmd/ruleset.xml b/traffic_router/shared/build/pmd/ruleset.xml index 211ea14a6b..48b269f450 100644 --- a/traffic_router/shared/build/pmd/ruleset.xml +++ b/traffic_router/shared/build/pmd/ruleset.xml @@ -39,7 +39,6 @@ - @@ -57,13 +56,8 @@ - - - - - @@ -71,9 +65,6 @@ - - - @@ -107,9 +98,7 @@ - - @@ -123,16 +112,11 @@ - - - - - @@ -144,17 +128,14 @@ - - - @@ -163,7 +144,6 @@ - From 6f67c87d6bb68f5e263e54927c2f37fd43fd3407 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 20:51:04 -0600 Subject: [PATCH 04/23] Suppress PMD.CyclomaticComplexity and PMD.NPathComplexity --- .../traffic_router/core/config/ConfigHandler.java | 2 +- .../traffic_control/traffic_router/core/dns/NameServer.java | 2 +- .../traffic_router/core/dns/SignatureManager.java | 2 +- .../traffic_control/traffic_router/core/dns/ZoneManager.java | 1 + .../traffic_control/traffic_router/core/ds/DeliveryService.java | 1 + .../traffic_router/core/router/TrafficRouter.java | 2 +- .../traffic_control/traffic_router/core/util/CidrAddress.java | 1 + 7 files changed, 7 insertions(+), 4 deletions(-) diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java index d30f84d760..5dabad2ce9 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java @@ -71,7 +71,7 @@ import org.apache.traffic_control.traffic_router.core.loc.AnonymousIpConfigUpdater; import org.apache.traffic_control.traffic_router.core.loc.AnonymousIpDatabaseUpdater; -@SuppressWarnings("PMD.TooManyFields") +@SuppressWarnings({"PMD.TooManyFields", "PMD.CyclomaticComplexity"}) public class ConfigHandler { private static final Logger LOGGER = Logger.getLogger(ConfigHandler.class); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServer.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServer.java index 73f2242b44..4b9d574805 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServer.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServer.java @@ -39,7 +39,7 @@ import org.apache.traffic_control.traffic_router.core.ds.DeliveryService; import org.apache.traffic_control.traffic_router.core.router.TrafficRouterManager; - +@SuppressWarnings("PMD.CyclomaticComplexity") public class NameServer { private static final int MAX_SUPPORTED_EDNS_VERS = 0; private static final int MAX_ITERATIONS = 6; diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java index db71f00264..80c0ebb2a9 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java @@ -50,7 +50,7 @@ import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils; import org.apache.traffic_control.traffic_router.core.util.ProtectedFetcher; - +@SuppressWarnings("PMD.CyclomaticComplexity") public final class SignatureManager { private static final Logger LOGGER = Logger.getLogger(SignatureManager.class); private int expirationMultiplier; diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java index 674b8cf464..526ce0cbb1 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java @@ -95,6 +95,7 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFutureTask; +@SuppressWarnings("PMD.CyclomaticComplexity") public class ZoneManager extends Resolver { private static final Logger LOGGER = Logger.getLogger(ZoneManager.class); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java index b9f6648494..b4e28e95d0 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java @@ -118,6 +118,7 @@ public enum DeepCachingType { ALWAYS } + @SuppressWarnings("PMD.NPathComplexity") public DeliveryService(final String id, final JsonNode dsJo) throws JsonUtilsException { this.id = id; this.props = dsJo; diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java index 79b0a8deee..fb47828699 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java @@ -86,7 +86,7 @@ /** * TrafficRouter is the main router class that handles Traffic Router logic. */ -@SuppressWarnings({"PMD.TooManyFields", "PMD.ExcessivePublicCount"}) +@SuppressWarnings({"PMD.TooManyFields", "PMD.ExcessivePublicCount", "PMD.CyclomaticComplexity"}) public class TrafficRouter { public static final Logger LOGGER = Logger.getLogger(TrafficRouter.class); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/CidrAddress.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/CidrAddress.java index 91bdc19ba7..fdc43dce18 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/CidrAddress.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/CidrAddress.java @@ -59,6 +59,7 @@ public CidrAddress(final InetAddress address) throws NetworkNodeException { this(address, address.getAddress().length * 8); } + @SuppressWarnings("PMD.CyclomaticComplexity") public CidrAddress(final InetAddress address, final int netmaskLength) throws NetworkNodeException { this.netmaskLength = netmaskLength; this.address = address; From 6e76abb31b8b8fe38c1e1ff23e2ffaa4a32fa568 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 20:24:08 -0600 Subject: [PATCH 05/23] Fix PMD warnings --- .../secure/CertificateDataConverter.java | 2 +- .../secure/CertificateRegistry.java | 6 +- .../core/config/ConfigHandler.java | 2 +- .../core/dns/DNSAccessEventBuilder.java | 8 +- .../core/dns/NameServerMain.java | 3 +- .../traffic_router/core/dns/ZoneManager.java | 20 ++--- .../traffic_router/core/dns/ZoneUtils.java | 6 +- .../core/dns/protocol/Protocol.java | 2 +- .../core/dns/protocol/SocketHandler.java | 4 +- .../traffic_router/core/dns/protocol/TCP.java | 14 ++-- .../core/ds/DeliveryService.java | 4 +- .../ds/LetsEncryptDnsChallengeWatcher.java | 1 + .../core/hash/NumberSearcher.java | 1 + .../core/http/HTTPAccessEventBuilder.java | 1 + .../core/loc/AbstractServiceUpdater.java | 27 +++---- .../core/loc/AnonymousIpDatabaseService.java | 5 +- .../core/loc/AnonymousIpWhitelist.java | 4 +- .../core/loc/MaxmindGeolocationService.java | 5 +- .../core/loc/RegionalGeoResult.java | 2 +- .../core/loc/RegionalGeoRule.java | 5 +- .../core/monitor/TrafficMonitorWatcher.java | 4 +- .../core/router/RouteResult.java | 2 +- .../core/router/StatTracker.java | 4 +- .../core/router/TrafficRouter.java | 2 +- .../core/secure/CertificatesClient.java | 2 +- .../core/secure/CertificatesPoller.java | 2 +- .../core/util/AbstractResourceWatcher.java | 9 +-- .../core/util/ComparableTreeSet.java | 1 + .../traffic_router/core/util/Config.java | 1 + .../core/util/DataExporter.java | 2 +- .../traffic_router/core/util/Fetcher.java | 73 ++++++++----------- .../core/util/JsonUtilsException.java | 1 + .../core/util/PeriodicResourceUpdater.java | 17 +++-- .../traffic_router/core/util/ResourceUrl.java | 2 +- 34 files changed, 117 insertions(+), 127 deletions(-) diff --git a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateDataConverter.java b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateDataConverter.java index dacd17c4b4..4b9e7c55d3 100644 --- a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateDataConverter.java +++ b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateDataConverter.java @@ -59,7 +59,7 @@ public HandshakeData toHandshakeData(final CertificateData certificateData) { } if (hostMatch && modMatch) { return new HandshakeData(certificateData.getDeliveryservice(), certificateData.getHostname(), - x509Chain.toArray(new X509Certificate[x509Chain.size()]), privateKey); + x509Chain.toArray(new X509Certificate[0]), privateKey); } else if (!hostMatch) { log.warn("Service name doesn't match the subject of the certificate = "+certificateData.getHostname()); diff --git a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateRegistry.java b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateRegistry.java index 942c46c8a5..21fe6f6321 100644 --- a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateRegistry.java +++ b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/secure/CertificateRegistry.java @@ -156,9 +156,9 @@ private HandshakeData createApiDefaultSsl() { final String selfSignedKeystoreFile = httpsProperties.get("https.certificate.location"); if (new File(selfSignedKeystoreFile).exists()) { final String password = httpsProperties.get("https.password"); - final InputStream readStream = new FileInputStream(selfSignedKeystoreFile); - ks.load(readStream, password.toCharArray()); - readStream.close(); + try (InputStream readStream = new FileInputStream(selfSignedKeystoreFile)) { + ks.load(readStream, password.toCharArray()); + } final Certificate[] certs = ks.getCertificateChain(defaultAlias); final List x509certs = new ArrayList<>(); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java index 5dabad2ce9..2b6a6975df 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/config/ConfigHandler.java @@ -592,7 +592,7 @@ private void initGeoFailedRedirect(final Map dsMap, fin ds.setGeoRedirectFile(url.getFile()); //try select the ds by the redirect fake HTTPRequest final DeliveryService rds = cacheRegister.getDeliveryService(req); - if (rds == null || rds.getId() != ds.getId()) { + if (rds == null || !Objects.equals(rds.getId(), ds.getId())) { //the redirect url not belongs to this ds ds.setGeoRedirectUrlType("NOT_DS_URL"); continue; diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java index 11ccdc8e9d..1fa18d1fbc 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java @@ -122,12 +122,12 @@ public static String create(final DNSAccessRecord dnsAccessRecord, final WirePar .append(" rdtl=-") .append(" rerr=\"") .append(rerr) - .append("\"") + .append('\"') .append(" ttl=\"-\"") .append(" ans=\"-\"") .append(" svc=\"") .append(dsID) - .append("\"") + .append('\"') .toString(); } @@ -145,12 +145,12 @@ public static String create(final DNSAccessRecord dnsAccessRecord, final Excepti .append(" rdtl=-") .append(" rerr=\"") .append(rerr) - .append("\"") + .append('\"') .append(" ttl=\"-\"") .append(" ans=\"-\"") .append(" svc=\"") .append(dsID) - .append("\"").toString(); + .append('\"').toString(); } private static String createQuery(final Record query) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServerMain.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServerMain.java index 48db476240..f58666262d 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServerMain.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/NameServerMain.java @@ -90,8 +90,7 @@ public void setProtocolService(final ExecutorService protocolService) { * @param args */ public static void main(final String[] args) { - try { - final ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("/dns-traffic-router.xml"); + try (ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("/dns-traffic-router.xml")) { ctx.getBean("NameServerMain"); LOGGER.info("PROCESS_SUCCEEDED"); } catch (final Exception e) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java index 526ce0cbb1..2611bda333 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneManager.java @@ -116,7 +116,7 @@ public class ZoneManager extends Resolver { private static Name topLevelDomain; private static final String AAAA = "AAAA"; - protected static enum ZoneCacheType { + protected enum ZoneCacheType { DYNAMIC, STATIC } @@ -327,11 +327,11 @@ private static void writeZone(final Zone zone) throws IOException { } final File zoneFile = new File(getZoneDirectory(), zone.getOrigin().toString()); - final FileWriter w = new FileWriter(zoneFile); - LOGGER.info("writing: " + zoneFile.getAbsolutePath()); - IOUtils.write(zone.toMasterFile(), w); - w.flush(); - w.close(); + try (FileWriter w = new FileWriter(zoneFile)) { + LOGGER.info("writing: " + zoneFile.getAbsolutePath()); + IOUtils.write(zone.toMasterFile(), w); + w.flush(); + } } } @@ -384,7 +384,7 @@ public static Zone loadZone(final ZoneKey zoneKey, final boolean writeZone) thro records = signatureManager.signZone(name, records, (SignedZoneKey) zoneKey); } - final Zone zone = new Zone(name, records.toArray(new Record[records.size()])); + final Zone zone = new Zone(name, records.toArray(new Record[0])); if (writeZone) { writeZone(zone); @@ -712,7 +712,7 @@ private static void addStaticDnsEntries(final List list, final DeliveryS list.add(new CNAMERecord(name, DClass.IN, ttl, new Name(value))); break; case "TXT": - list.add(new TXTRecord(name, DClass.IN, ttl, new String(value))); + list.add(new TXTRecord(name, DClass.IN, ttl, value)); break; } } catch (JsonUtilsException ex) { @@ -801,7 +801,7 @@ private static Name getGlueName(final DeliveryService ds, final JsonNode trJo, f } @SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"}) - private static final Map> populateZoneMap(final Map> zoneMap, + private static Map> populateZoneMap(final Map> zoneMap, final Map dsMap, final CacheRegister data) throws IOException { final Map> superDomains = new HashMap>(); @@ -1026,7 +1026,7 @@ private static Zone fillDynamicZone(final LoadingCache dzc, final LOGGER.error(e, e); } - return new Zone(staticZone.getOrigin(), records.toArray(new Record[records.size()])); + return new Zone(staticZone.getOrigin(), records.toArray(new Record[0])); } } catch (final IOException e) { LOGGER.error(e.getMessage(), e); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneUtils.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneUtils.java index 3fc63c5a08..5d69ae22ef 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneUtils.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/ZoneUtils.java @@ -75,11 +75,11 @@ protected static long getLong(final JsonNode jo, final String key, final long d) protected static String getAdminString(final JsonNode jo, final String key, final String d, final String domain) { if (jo == null) { - return new StringBuffer(d).append(".").append(domain).toString(); + return new StringBuffer(d).append('.').append(domain).toString(); } if (!jo.has(key)) { - return new StringBuffer(d).append(".").append(domain).toString(); + return new StringBuffer(d).append('.').append(domain).toString(); } // check for @ sign in string @@ -87,7 +87,7 @@ protected static String getAdminString(final JsonNode jo, final String key, fina if (admin.contains("@")) { admin = admin.replace("@","."); } else { - admin = new StringBuffer(admin).append(".").append(domain).toString(); + admin = new StringBuffer(admin).append('.').append(domain).toString(); } return admin; diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/Protocol.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/Protocol.java index a9c325c289..ed44b2c461 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/Protocol.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/Protocol.java @@ -19,5 +19,5 @@ public interface Protocol extends Runnable { /** * Shuts down the protocol canceling all pending and running requests. */ - public void shutdown(); + void shutdown(); } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/SocketHandler.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/SocketHandler.java index b2f93dc1c9..9f43edecfd 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/SocketHandler.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/SocketHandler.java @@ -19,10 +19,10 @@ public interface SocketHandler extends Runnable { /** * Cleanup method for implementing classes that must also implement Runnable.run(). */ - public void cleanup(); + void cleanup(); /** * Cancel method for implementing classes that must also implement Runnable.run(). */ - public void cancel(); + void cancel(); } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java index 28718332ac..fc22326669 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java @@ -46,9 +46,9 @@ public ServerSocket getServerSocket() { @Override public void run() { while (!isShutdownRequested()) { - try { - final Socket socket = getServerSocket().accept(); - final TCPSocketHandler handler = new TCPSocketHandler(socket); + final TCPSocketHandler handler; + try (Socket socket = getServerSocket().accept()) { + handler = new TCPSocketHandler(socket); submit(handler); } catch (final IOException e) { LOGGER.warn("error: " + e); @@ -95,13 +95,13 @@ public void run() { return; } - try { + try (InputStream iis = Channels.newInputStream(Channels.newChannel(socket.getInputStream())); + DataInputStream is = new DataInputStream(iis); + DataOutputStream os = new DataOutputStream(socket.getOutputStream()) + ) { socket.setSoTimeout(getReadTimeout()); final InetAddress client = socket.getInetAddress(); - final InputStream iis = Channels.newInputStream(Channels.newChannel(socket.getInputStream())); - final DataInputStream is = new DataInputStream(iis); - final DataOutputStream os = new DataOutputStream(socket.getOutputStream()); final int length = is.readUnsignedShort(); final byte[] request = new byte[length]; is.readFully(request); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java index b4e28e95d0..7d60d3e681 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java @@ -531,8 +531,8 @@ private byte[] getClientIpBytes(final HTTPRequest request, final TransInfoType t } private String getEncryptedTrans(final TransInfoType type, final byte[] ipBytes) throws IOException, GeneralSecurityException { - try (final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - final DataOutputStream dos = new DataOutputStream(baos)) { + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(baos)) { dos.write(ipBytes); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java index 5ebc89c0b5..c83e6d53b1 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java @@ -127,6 +127,7 @@ public String getWatcherConfigPrefix() { return "dnschallengemapping"; } + @SuppressWarnings("PMD.CloseResource") private String readConfigFile() { try { final InputStream is = new FileInputStream(databasesDirectory.resolve(configFile).toString()); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/hash/NumberSearcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/hash/NumberSearcher.java index 198740c74c..268679986d 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/hash/NumberSearcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/hash/NumberSearcher.java @@ -17,6 +17,7 @@ import java.util.Arrays; +@SuppressWarnings("PMD.ClassNamingConventions") public class NumberSearcher { public static int findClosest(final Double[] numbers, final double target) { final int index = Arrays.binarySearch(numbers, target); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/http/HTTPAccessEventBuilder.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/http/HTTPAccessEventBuilder.java index c831161272..cb2f81fad0 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/http/HTTPAccessEventBuilder.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/http/HTTPAccessEventBuilder.java @@ -23,6 +23,7 @@ import java.text.DecimalFormat; import java.util.Map; +@SuppressWarnings("PMD.ClassNamingConventions") public class HTTPAccessEventBuilder { private static String formatRequest(final HttpServletRequest request) { String url = formatObject(request.getRequestURL()); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AbstractServiceUpdater.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AbstractServiceUpdater.java index 797774e97a..639ec527b9 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AbstractServiceUpdater.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AbstractServiceUpdater.java @@ -361,24 +361,19 @@ protected File downloadDatabase(final String url, final File existingDb) throws } } - InputStream in = conn.getInputStream(); - eTag = conn.getHeaderField("ETag"); - - if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { - LOGGER.info("[" + getClass().getSimpleName() + "] " + url + " not modified since our existing database's last update time of " + new Date(existingDb.lastModified())); - return existingDb; - } - - if (sourceCompressed) { - in = new GZIPInputStream(in); - } - final File outputFile = File.createTempFile(tmpPrefix, tmpSuffix); - final OutputStream out = new FileOutputStream(outputFile); + try (InputStream in = conn.getInputStream(); + OutputStream out = new FileOutputStream(outputFile) + ) { + eTag = conn.getHeaderField("ETag"); + + if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { + LOGGER.info("[" + getClass().getSimpleName() + "] " + url + " not modified since our existing database's last update time of " + new Date(existingDb.lastModified())); + return existingDb; + } - IOUtils.copy(in, out); - IOUtils.closeQuietly(in); - IOUtils.closeQuietly(out); + IOUtils.copy(sourceCompressed ? new GZIPInputStream(in) : in, out); + } return outputFile; } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpDatabaseService.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpDatabaseService.java index 3237b3db76..378c295474 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpDatabaseService.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpDatabaseService.java @@ -41,9 +41,8 @@ public void reloadDatabase() throws IOException { } if (databaseFile != null) { - final DatabaseReader reader = createDatabaseReader(databaseFile); - if (reader != null) { - databaseReader = reader; + databaseReader = createDatabaseReader(databaseFile); + if (databaseReader != null) { initialized = true; } else { throw new IOException("Could not create database reader"); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java index 206469d4b7..ed590f983f 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java @@ -18,6 +18,8 @@ import org.apache.traffic_control.traffic_router.core.util.JsonUtilsException; import com.fasterxml.jackson.databind.JsonNode; +import java.util.Objects; + public class AnonymousIpWhitelist { private static final Logger LOGGER = Logger.getLogger(AnonymousIpWhitelist.class); @@ -52,7 +54,7 @@ public boolean contains(final String address) { try { final NetworkNode nn = whitelist.getNetwork(address); - if (nn.getLoc() == AnonymousIp.WHITE_LIST_LOC) { + if (Objects.equals(nn.getLoc(), AnonymousIp.WHITE_LIST_LOC)) { return true; } } catch (NetworkNodeException e) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/MaxmindGeolocationService.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/MaxmindGeolocationService.java index d17dc0131c..27c19d2e5b 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/MaxmindGeolocationService.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/MaxmindGeolocationService.java @@ -68,9 +68,8 @@ public void reloadDatabase() throws IOException { } if (databaseFile != null) { - final DatabaseReader reader = createDatabaseReader(databaseFile); - if (reader != null) { - databaseReader = reader; + databaseReader = createDatabaseReader(databaseFile); + if (databaseReader != null) { initialized = true; } } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoResult.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoResult.java index 96d390dd47..0fe88bbd59 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoResult.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoResult.java @@ -17,7 +17,7 @@ public class RegionalGeoResult { - public static enum RegionalGeoResultType { + public enum RegionalGeoResultType { ALLOWED, ALTERNATE_WITH_CACHE, ALTERNATE_WITHOUT_CACHE, DENIED } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoRule.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoRule.java index 053a4eae5a..2d45ad3a5e 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoRule.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/RegionalGeoRule.java @@ -18,6 +18,7 @@ import org.apache.log4j.Logger; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.regex.Pattern; @@ -27,7 +28,7 @@ public class RegionalGeoRule { public static final String WHITE_LIST_NODE_LOCATION = "w"; - public static enum PostalsType { + public enum PostalsType { EXCLUDE, INCLUDE, UNDEFINED } @@ -98,7 +99,7 @@ public boolean isIpInWhiteList(final String ip) { try { final NetworkNode nn = whiteListRoot.getNetwork(ip); - if (nn.getLoc() == WHITE_LIST_NODE_LOCATION) { + if (Objects.equals(nn.getLoc(), WHITE_LIST_NODE_LOCATION)) { return true; } } catch (NetworkNodeException e) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/monitor/TrafficMonitorWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/monitor/TrafficMonitorWatcher.java index 42373c0fb9..388f79e315 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/monitor/TrafficMonitorWatcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/monitor/TrafficMonitorWatcher.java @@ -317,7 +317,7 @@ private void processConfig() { } else if (!isLocalConfig() && isBootstrapped()) { synchronized(monitorSync) { if (!onlineMonitors.isEmpty()) { - setHosts(onlineMonitors.toArray(new String[onlineMonitors.size()])); + setHosts(onlineMonitors.toArray(new String[0])); } } } @@ -369,7 +369,7 @@ public static void setOnlineMonitors(final List onlineMonitors) { TrafficMonitorWatcher.onlineMonitors = onlineMonitors; setBootstrapped(true); - setHosts(onlineMonitors.toArray(new String[onlineMonitors.size()])); + setHosts(onlineMonitors.toArray(new String[0])); } } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/RouteResult.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/RouteResult.java index 0e25f13db8..d7e85dc35b 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/RouteResult.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/RouteResult.java @@ -16,5 +16,5 @@ package org.apache.traffic_control.traffic_router.core.router; public interface RouteResult { - public Object getResult(); + Object getResult(); } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java index d93f62a26e..610a007d33 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/StatTracker.java @@ -113,7 +113,7 @@ public static class Track { /** * RouteType represents the type of routing performed/to be performed by Traffic Router. */ - public static enum RouteType { + public enum RouteType { /** * This value indicates DNS routing is taking/has taken/will take place. */ @@ -127,7 +127,7 @@ public static enum RouteType { /** * ResultType represents the final result of attempting to route a request. */ - public static enum ResultType { + public enum ResultType { /** * This value indicates that an error occurred and routing could not be successfully completed. */ diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java index fb47828699..a60b69ef5b 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/router/TrafficRouter.java @@ -351,7 +351,7 @@ private GeolocationService getGeolocationService(final String geolocationProvide if (deliveryServiceId != null && !deliveryServiceId.isEmpty()) { error = error.append(" for delivery service " + deliveryServiceId); } - error = error.append(" falling back to " + MaxmindGeolocationService.class.getSimpleName()); + error = error.append(" falling back to ").append(MaxmindGeolocationService.class.getSimpleName()); LOGGER.error(error); } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java index f8ae18c826..f4c0ec2297 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java @@ -124,7 +124,7 @@ public String[] doubleDecode(final String encoded) { } } - return encodedPemItems.toArray(new String[encodedPemItems.size()]); + return encodedPemItems.toArray(new String[0]); } public void setTrafficOpsUtils(final TrafficOpsUtils trafficOpsUtils) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesPoller.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesPoller.java index 29cb3c2cf2..c6320ddec0 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesPoller.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesPoller.java @@ -73,7 +73,7 @@ public void start() { final Runnable runnable = () -> { try { trafficRouterManager.trackEvent("lastHttpsCertificatesCheck"); - List certificateDataList = certificatesClient.refreshData(); + final List certificateDataList = certificatesClient.refreshData(); if (certificateDataList == null) { return; } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java index 07d419048b..569d8b8a7b 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java @@ -151,13 +151,12 @@ protected File downloadDatabase(final String url, final File existingDb) { } File databaseFile = null; - FileWriter fw; try { databaseFile = File.createTempFile(tmpPrefix, tmpSuffix); - fw = new FileWriter(databaseFile); - fw.write(jsonData); - fw.flush(); - fw.close(); + try (FileWriter fw = new FileWriter(databaseFile)) { + fw.write(jsonData); + fw.flush(); + } } catch (IOException e) { LOGGER.warn("Failed to create file from data received from '" + interpolatedUrl + "'"); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ComparableTreeSet.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ComparableTreeSet.java index a444b7419d..6aafe5e715 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ComparableTreeSet.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ComparableTreeSet.java @@ -18,6 +18,7 @@ import java.util.TreeSet; public class ComparableTreeSet extends TreeSet implements Comparable> { + private static final long serialVersionUID = 1L; @Override public int compareTo(final ComparableTreeSet o) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Config.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Config.java index b751212cd4..ae2922b386 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Config.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Config.java @@ -17,6 +17,7 @@ import java.io.File; +@SuppressWarnings("PMD.ClassNamingConventions") public class Config { private static String confDir = null; diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/DataExporter.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/DataExporter.java index 8016518429..fa387c64fc 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/DataExporter.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/DataExporter.java @@ -74,7 +74,7 @@ public Map getAppInfo() { final Properties props = new Properties(); - try (final InputStream stream = getClass().getResourceAsStream("/version.prop")){ + try (InputStream stream = getClass().getResourceAsStream("/version.prop")){ props.load(stream); } catch (IOException e) { LOGGER.warn(e,e); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Fetcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Fetcher.java index d91b3720c2..24323206b5 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Fetcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/Fetcher.java @@ -36,7 +36,6 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; -import org.apache.commons.io.IOUtils; import org.apache.log4j.Logger; @@ -127,7 +126,7 @@ public boolean verify(final String arg0, final SSLSession arg1) { if (method.equals(POST_STR) && data != null) { http.setDoOutput(true); // Triggers POST. - try (final OutputStream output = http.getOutputStream()) { + try (OutputStream output = http.getOutputStream()) { output.write(data.getBytes(UTF8_STR)); } } @@ -151,55 +150,44 @@ public String fetch(final String url) throws IOException { } private String fetchIfModifiedSince(final String url, final String data, final String method, final long lastFetchTime) throws IOException { - final OutputStream out = null; String ifModifiedSince = null; - try { - final HttpURLConnection connection = getConnection(url, data, method, lastFetchTime); - if (connection != null) { - if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { - return null; - } - - if (connection.getResponseCode() > 399) { - LOGGER.warn("Failed Http Request to " + url + " Status " + connection.getResponseCode()); - return null; - } + final HttpURLConnection connection = getConnection(url, data, method, lastFetchTime); + if (connection != null) { + if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { + return null; + } - final StringBuilder sb = new StringBuilder(); - createStringBuilderFromResponse(sb, connection); - ifModifiedSince = sb.toString(); + if (connection.getResponseCode() > 399) { + LOGGER.warn("Failed Http Request to " + url + " Status " + connection.getResponseCode()); + return null; } - } finally { - IOUtils.closeQuietly(out); + final StringBuilder sb = new StringBuilder(); + createStringBuilderFromResponse(sb, connection); + ifModifiedSince = sb.toString(); } return ifModifiedSince; } public int getIfModifiedSince(final String url, final long lastFetchTime, final StringBuilder stringBuilder) throws IOException { - final OutputStream out = null; int status = 0; - try { - final HttpURLConnection connection = getConnection(url, null, "GET", lastFetchTime); - if (connection != null) { - status = connection.getResponseCode(); + final HttpURLConnection connection = getConnection(url, null, "GET", lastFetchTime); + if (connection != null) { + status = connection.getResponseCode(); - if (status == HttpURLConnection.HTTP_NOT_MODIFIED) { - return status; - } + if (status == HttpURLConnection.HTTP_NOT_MODIFIED) { + return status; + } - if (connection.getResponseCode() > 399) { - LOGGER.warn("Failed Http Request to " + url + " Status " + connection.getResponseCode()); - return status; - } + if (connection.getResponseCode() > 399) { + LOGGER.warn("Failed Http Request to " + url + " Status " + connection.getResponseCode()); + return status; + } - createStringBuilderFromResponse(stringBuilder, connection); + createStringBuilderFromResponse(stringBuilder, connection); - } - return status; - } finally { - IOUtils.closeQuietly(out); } + return status; } public String fetch(final String url, final String data, final String method) throws IOException { @@ -228,14 +216,15 @@ public int hashCode() { public void createStringBuilderFromResponse (final StringBuilder sb, final HttpURLConnection connection) throws IOException { if (GZIP_ENCODING_STRING.equals(connection.getContentEncoding())) { - final GZIPInputStream zippedInputStream = new GZIPInputStream(connection.getInputStream()); - final BufferedReader r = new BufferedReader(new InputStreamReader(zippedInputStream)); - String input; - while((input = r.readLine()) != null) { - sb.append(input); + try (GZIPInputStream zippedInputStream = new GZIPInputStream(connection.getInputStream()); + BufferedReader r = new BufferedReader(new InputStreamReader(zippedInputStream))) { + String input; + while ((input = r.readLine()) != null) { + sb.append(input); + } } } else { - try (final BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { + try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { String input; while ((input = in.readLine()) != null) { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/JsonUtilsException.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/JsonUtilsException.java index 903ceea898..31f56ad365 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/JsonUtilsException.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/JsonUtilsException.java @@ -16,6 +16,7 @@ package org.apache.traffic_control.traffic_router.core.util; public class JsonUtilsException extends Exception { + private static final long serialVersionUID = 1L; public JsonUtilsException(final String reason) { super(reason); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/PeriodicResourceUpdater.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/PeriodicResourceUpdater.java index 0b490c97e6..db89bf388c 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/PeriodicResourceUpdater.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/PeriodicResourceUpdater.java @@ -237,9 +237,9 @@ boolean filesEqual(final File a, final String newDB) throws IOException { } protected synchronized void copyDatabase(final File existingDB, final String newDB) throws IOException { - try (final StringReader in = new StringReader(newDB); - final FileOutputStream out = new FileOutputStream(existingDB); - final FileLock lock = out.getChannel().tryLock()) { + try (StringReader in = new StringReader(newDB); + FileOutputStream out = new FileOutputStream(existingDB); + FileLock lock = out.getChannel().tryLock()) { if (lock == null) { LOGGER.error("Database " + existingDB.getAbsolutePath() + " locked by another process."); @@ -281,11 +281,12 @@ public Integer onCompleted(final Response response) throws IOException { final String responseBody; if (GZIP_ENCODING_STRING.equals(response.getHeader("Content-Encoding"))) { final StringBuilder stringBuilder = new StringBuilder(); - final GZIPInputStream zippedInputStream = new GZIPInputStream(response.getResponseBodyAsStream()); - final BufferedReader r = new BufferedReader(new InputStreamReader(zippedInputStream)); - String line; - while((line = r.readLine()) != null) { - stringBuilder.append(line); + try (GZIPInputStream zippedInputStream = new GZIPInputStream(response.getResponseBodyAsStream()); + BufferedReader r = new BufferedReader(new InputStreamReader(zippedInputStream))) { + String line; + while ((line = r.readLine()) != null) { + stringBuilder.append(line); + } } responseBody = stringBuilder.toString(); } else { diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ResourceUrl.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ResourceUrl.java index dd88b4daab..5315d29f58 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ResourceUrl.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/ResourceUrl.java @@ -16,5 +16,5 @@ package org.apache.traffic_control.traffic_router.core.util; public interface ResourceUrl { - public String nextUrl(); + String nextUrl(); } From b49fb0d96f7a8b76c062731cdbb66245a56d2007 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Tue, 14 Sep 2021 04:44:56 -0600 Subject: [PATCH 06/23] Set JAVA_HOME so Maven can find javac --- .github/actions/tr-unit-tests/Dockerfile | 1 + traffic_router/tests/Dockerfile-test-alpine | 3 ++- traffic_router/tests/Dockerfile-test-centos | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/actions/tr-unit-tests/Dockerfile b/.github/actions/tr-unit-tests/Dockerfile index 245ed00498..b4d62a7d2c 100644 --- a/.github/actions/tr-unit-tests/Dockerfile +++ b/.github/actions/tr-unit-tests/Dockerfile @@ -21,5 +21,6 @@ RUN apk add --no-cache \ tomcat-native ENTRYPOINT cd traffic_router && \ + export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.." && \ mvn "-Dmaven.repo.local=${GITHUB_WORKSPACE}/.m2/repository" \ test -Djava.library.path=/usr/share/java diff --git a/traffic_router/tests/Dockerfile-test-alpine b/traffic_router/tests/Dockerfile-test-alpine index 445121f33b..04e9d010c5 100644 --- a/traffic_router/tests/Dockerfile-test-alpine +++ b/traffic_router/tests/Dockerfile-test-alpine @@ -27,7 +27,8 @@ RUN apk add --no-cache \ ADD traffic_router /go/src/$DIR/traffic_router ENTRYPOINT /bin/bash "$@" -CMD set -o xtrace && \ +CMD set -o xtrace -o nounset && \ + export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.." && \ mvn_command=(mvn) && \ if [[ "$DEBUG_ENABLE" == true ]]; then\ set -o nounset && \ diff --git a/traffic_router/tests/Dockerfile-test-centos b/traffic_router/tests/Dockerfile-test-centos index 82dbcc4a0e..3be7c5213c 100644 --- a/traffic_router/tests/Dockerfile-test-centos +++ b/traffic_router/tests/Dockerfile-test-centos @@ -30,6 +30,7 @@ RUN set -o errexit; \ ADD traffic_router /go/src/$DIR/traffic_router CMD set -o xtrace && \ + export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.." && \ mvn_command=(mvn) && \ if [[ "$DEBUG_ENABLE" == true ]]; then\ set -o nounset && \ From 526e29d76ad9c162860afdb50218746599eee4fd Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 21:53:33 -0600 Subject: [PATCH 07/23] Rebuild the Traffic Router builder image if its Dockerfile was changed --- .github/actions/build-rpms/build-rpms.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/actions/build-rpms/build-rpms.sh b/.github/actions/build-rpms/build-rpms.sh index 87e539c758..45c1a9d51e 100755 --- a/.github/actions/build-rpms/build-rpms.sh +++ b/.github/actions/build-rpms/build-rpms.sh @@ -30,7 +30,10 @@ if [[ "$GITHUB_REF" == refs/pull/*/merge ]]; then else files_changed="$(git diff-tree --no-commit-id --name-only -r "$GITHUB_SHA")" fi -if <<<"$files_changed" grep '^GO_VERSION$'; then +if <<<"$files_changed" grep '^GO_VERSION$' || + { [[ "$ATC_COMPONENT" == traffic_router ]] && + <<<"$files_changed" grep '^infrastructure/docker/build/Dockerfile-traffic_router$'; }; +then pkg_command+=(-b) fi From 36e83b0f5ab0a05be19eaccf724e3a9f63c7811f Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 22:19:54 -0600 Subject: [PATCH 08/23] Use a fetch-depth of 4 to check files changed in the last 3 commits for the build-rpms GHA --- .github/actions/build-rpms/build-rpms.sh | 2 +- .github/workflows/cache-config-tests.yml | 4 ++++ .github/workflows/ciab.yaml | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/actions/build-rpms/build-rpms.sh b/.github/actions/build-rpms/build-rpms.sh index 45c1a9d51e..1989c92ad4 100755 --- a/.github/actions/build-rpms/build-rpms.sh +++ b/.github/actions/build-rpms/build-rpms.sh @@ -28,7 +28,7 @@ if [[ "$GITHUB_REF" == refs/pull/*/merge ]]; then pr_number="$(<<<"$GITHUB_REF" grep -o '[0-9]\+')" files_changed="$(curl "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/pulls/${pr_number}/files" | jq -r .[].filename)" else - files_changed="$(git diff-tree --no-commit-id --name-only -r "$GITHUB_SHA")" + files_changed="$(git diff --name-only HEAD~4.. --)" fi if <<<"$files_changed" grep '^GO_VERSION$' || { [[ "$ATC_COMPONENT" == traffic_router ]] && diff --git a/.github/workflows/cache-config-tests.yml b/.github/workflows/cache-config-tests.yml index e849eafc4a..7c80efd9a0 100644 --- a/.github/workflows/cache-config-tests.yml +++ b/.github/workflows/cache-config-tests.yml @@ -70,6 +70,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -86,6 +88,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: diff --git a/.github/workflows/ciab.yaml b/.github/workflows/ciab.yaml index e085840309..1cac861813 100644 --- a/.github/workflows/ciab.yaml +++ b/.github/workflows/ciab.yaml @@ -85,6 +85,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -101,6 +103,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -117,6 +121,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -133,6 +139,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Cache node modules uses: actions/cache@v2 with: @@ -156,6 +164,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Cache local Maven repository uses: actions/cache@v2 with: @@ -179,6 +189,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -195,6 +207,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -211,6 +225,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Build RPM uses: ./.github/actions/build-rpms env: @@ -268,6 +284,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@master + with: + fetch-depth: 5 - name: Cache Alpine Docker image uses: actions/cache@v2 with: From bac7f06637da14ee6a8d677b6aa574af20f56236 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 21:20:23 -0600 Subject: [PATCH 09/23] Update Traffic Router Java version to 11 --- .github/actions/tr-unit-tests/Dockerfile | 2 +- CHANGELOG.md | 1 + docs/source/admin/quick_howto/ciab.rst | 2 +- docs/source/development/building.rst | 9 +++------ docs/source/development/traffic_router.rst | 18 ++++++------------ .../traffic-router/tasks/traffic_router.yml | 2 +- .../cdn-in-a-box/traffic_router/Dockerfile | 4 ++-- .../docker/build/Dockerfile-traffic_router | 4 ++-- .../docker/traffic_router/shutdowntr.sh | 2 +- .../docker/traffic_router/starttr.sh | 2 +- traffic_router/build/pom.xml | 2 +- traffic_router/pom.xml | 2 +- traffic_router/tests/Dockerfile-test-alpine | 2 +- traffic_router/tests/Dockerfile-test-centos | 2 +- traffic_router/tomcat-rpm/tomcat.spec | 2 +- 15 files changed, 24 insertions(+), 32 deletions(-) diff --git a/.github/actions/tr-unit-tests/Dockerfile b/.github/actions/tr-unit-tests/Dockerfile index b4d62a7d2c..5b73ed5b41 100644 --- a/.github/actions/tr-unit-tests/Dockerfile +++ b/.github/actions/tr-unit-tests/Dockerfile @@ -16,7 +16,7 @@ FROM alpine@sha256:08d6ca16c60fe7490c03d10dc339d9fd8ea67c6466dea8d558526b1330a85930 RUN apk add --no-cache \ - openjdk8 \ + openjdk11 \ maven \ tomcat-native diff --git a/CHANGELOG.md b/CHANGELOG.md index 27ff4adbb3..e637abb9ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). ### Fixed - [#6197](https://github.com/apache/trafficcontrol/issues/6197) - TO `/deliveryservices/:id/routing` makes requests to all TRs instead of by CDN. - Fixed Traffic Router crs/stats to prevent overflow and to correctly record the time used in averages. +- [#6209](https://github.com/apache/trafficcontrol/pull/6209) Updated Traffic Router to use Java 11 to compile and run - [#5893](https://github.com/apache/trafficcontrol/issues/5893) - A self signed certificate is created when an HTTPS delivery service is created or an HTTP delivery service is updated to HTTPS. - [#6125](https://github.com/apache/trafficcontrol/issues/6125) - Fix `/cdns/{name}/federations?id=#` to search for CDN. - [#6255](https://github.com/apache/trafficcontrol/issues/6255) - Unreadable Prod Mode CDN Notifications in Traffic Portal diff --git a/docs/source/admin/quick_howto/ciab.rst b/docs/source/admin/quick_howto/ciab.rst index 5067a6dac7..92be4256cc 100644 --- a/docs/source/admin/quick_howto/ciab.rst +++ b/docs/source/admin/quick_howto/ciab.rst @@ -36,7 +36,7 @@ The CDN in a Box directory is found within the Traffic Control repository at :fi * Traffic Portal - at :file:`infrastructure/cdn-in-a-box/traffic_portal/traffic_portal.rpm` * Traffic Router - at :file:`infrastructure/cdn-in-a-box/traffic_router/traffic_router.rpm` - also requires an Apache Tomcat RPM at :file:`infrastructure/cdn-in-a-box/traffic_router/tomcat.rpm` -.. note:: These can also be specified via the ``RPM`` variable to a direct Docker build of the component - with the exception of Traffic Router, which instead accepts ``JDK8_RPM`` to specify a Java Development Kit RPM, ``TRAFFIC_ROUTER_RPM`` to specify a Traffic Router RPM, and ``TOMCAT_RPM`` to specify an Apache Tomcat RPM. +.. note:: These can also be specified via the ``RPM`` variable to a direct Docker build of the component - with the exception of Traffic Router, which instead accepts ``TRAFFIC_ROUTER_RPM`` to specify a Traffic Router RPM and ``TOMCAT_RPM`` to specify an Apache Tomcat RPM. These can all be supplied manually via the steps in :ref:`dev-building` (for Traffic Control component RPMs) or via some external source. Alternatively, the :file:`infrastructure/cdn-in-a-box/Makefile` file contains recipes to build all of these - simply run :manpage:`make(1)` from the :file:`infrastructure/cdn-in-a-box/` directory. Once all RPM dependencies have been satisfied, run ``docker-compose build --parallel`` from the :file:`infrastructure/cdn-in-a-box/` directory to construct the images needed to run CDN in a Box. diff --git a/docs/source/development/building.rst b/docs/source/development/building.rst index 0553e18377..dcf03f7640 100644 --- a/docs/source/development/building.rst +++ b/docs/source/development/building.rst @@ -171,12 +171,12 @@ Install the Dependencies | macOS\ [#mac-jdk]_ | - rpm | - go | - go | - npm | - maven | - go | - go | - go | - python3 | | (homebrew_) | | | | - grunt-cli | | | | | | +----------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+ - | CentOS\ [#centos-go]_, | - git | | | - epel-release | - java-1.8.0-openjdk | | | | - python3-devel | + | CentOS\ [#centos-go]_, | - git | | | - epel-release | - java-11-openjdk | | | | - python3-devel | | Red Hat, | - rpm-build | | | - npm | - maven | | | | - gcc | | Fedora | - rsync | | | - nodejs-grunt-cli | | | | | - make | | (yum_) | | | | | | | | | | +----------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+ - | Arch Linux, | - git | - go | - go | - npm | - jdk8-openjdk | - go | - go | - go | - python-pip | + | Arch Linux, | - git | - go | - go | - npm | - jdk11-openjdk | - go | - go | - go | - python-pip | | Manjaro | - rpm-tools | | | - grunt-cli | - maven | | | | - python-sphinx | | (pacman_) | - diff | | | | | | | | - make | +----------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+ @@ -184,7 +184,7 @@ Install the Dependencies | (cygwin_)\ [#windeps]_ | - rpm-build | | | | | | | | | | | - rsync | | | | | | | | | +----------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+ - | Windows | | - golang | - golang | - nodejs | - openjdk8 | - golang | - golang | - golang | - python | + | Windows | | - golang | - golang | - nodejs | - openjdk11 | - golang | - golang | - golang | - python | | (chocolatey_)\ [#windeps]_ | | | | | - maven | | | | - pip | | | | | | | | | | | - make | +----------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+ @@ -195,9 +195,6 @@ Install the Dependencies .. _cygwin: https://cygwin.com/ .. _chocolatey: https://chocolatey.org/ -.. |AdoptOpenJDK instructions| replace:: add the AdoptOpenJDK tap and install the ``adoptopenjdk8`` cask -.. _AdoptOpenJDK instructions: https://github.com/AdoptOpenJDK/homebrew-openjdk#other-versions - After installing the packages using your platform's package manager, - Install the :ref:`global NPM packages ` to build Traffic Portal. diff --git a/docs/source/development/traffic_router.rst b/docs/source/development/traffic_router.rst index ae68288f1f..e12433cbf4 100644 --- a/docs/source/development/traffic_router.rst +++ b/docs/source/development/traffic_router.rst @@ -36,7 +36,7 @@ To work on Traffic Router you need a \*nix (MacOS and Linux are most commonly us * Eclipse >= Kepler SR2 (or another Java IDE) * Maven >= 3.3.1 -* JDK >= 8.0 (OpenJDK suggested, but not required) +* JDK >= 11 (OpenJDK suggested, but not required) * OpenSSL >= 1.0.2 * :abbr:`APR (Apache Portable Runtime)` >= 1.4.8-3 * Tomcat Native >= 1.2.23 @@ -44,27 +44,21 @@ To work on Traffic Router you need a \*nix (MacOS and Linux are most commonly us .. _dev-tr-mac-jdk: -Get OpenJDK 8 on macOS +Get OpenJDK 11 on macOS -------------------------- -If you are on macOS, OpenJDK 8 is not available from Homebrew by default, but it can still be installed using Homebrew with little effort. - -Using Homebrew, |AdoptOpenJDK instructions|_ +Using Homebrew: .. code-block:: shell - :caption: Install OpenJDK 8 on macOS + :caption: Install OpenJDK 11 on macOS - brew tap AdoptOpenJDK/openjdk - brew cask install adoptopenjdk8 + brew install openjdk@11 Next, set the JAVA_HOME environment variable. Add this line to your ``~/.bash_profile``: .. code-block:: shell :caption: Set JAVA_HOME environment variable - export JAVA_HOME=$(/usr/libexec/java_home -v1.8) - -.. |AdoptOpenJDK instructions| replace:: add the AdoptOpenJDK tap and install the ``adoptopenjdk8`` cask -.. _AdoptOpenJDK instructions: https://github.com/AdoptOpenJDK/homebrew-openjdk#other-versions + export JAVA_HOME=$(/usr/libexec/java_home -v11) Traffic Router Project Tree Overview ==================================== diff --git a/infrastructure/ansible/roles/traffic-router/tasks/traffic_router.yml b/infrastructure/ansible/roles/traffic-router/tasks/traffic_router.yml index f61c631555..b896d79b83 100644 --- a/infrastructure/ansible/roles/traffic-router/tasks/traffic_router.yml +++ b/infrastructure/ansible/roles/traffic-router/tasks/traffic_router.yml @@ -29,7 +29,7 @@ - name: Install TR Dependencies yum: name: - - java-1.8.0-openjdk + - java-11-openjdk - tomcat-native-1.2.23 state: present update_cache: yes diff --git a/infrastructure/cdn-in-a-box/traffic_router/Dockerfile b/infrastructure/cdn-in-a-box/traffic_router/Dockerfile index d3029154c4..d8e8f84f30 100644 --- a/infrastructure/cdn-in-a-box/traffic_router/Dockerfile +++ b/infrastructure/cdn-in-a-box/traffic_router/Dockerfile @@ -37,9 +37,9 @@ RUN dnf -y install epel-release && \ dnf -y install jq git rpm-build net-tools iproute nc wget tar unzip \ perl-JSON perl-WWW-Curl which make autoconf automake gcc gcc-c++ apr apr-devel \ openssl openssl-devel bind-utils net-tools perl-JSON-PP gettext \ - java-1.8.0-openjdk-headless java-1.8.0-openjdk-devel tomcat-native && \ + java-11-openjdk-headless java-11-openjdk-devel tomcat-native && \ dnf -y clean all && \ - ln -sfv $(realpath /usr/lib/jvm/java-1.8.0) /opt/java + ln -sfv $(realpath /usr/lib/jvm/java-11) /opt/java ADD $TRAFFIC_ROUTER_RPM /traffic_router.rpm ADD $TOMCAT_RPM /tomcat.rpm diff --git a/infrastructure/docker/build/Dockerfile-traffic_router b/infrastructure/docker/build/Dockerfile-traffic_router index e91982a9b8..572d352970 100644 --- a/infrastructure/docker/build/Dockerfile-traffic_router +++ b/infrastructure/docker/build/Dockerfile-traffic_router @@ -46,8 +46,8 @@ FROM common-dependencies AS traffic-router RUN yum -y install \ which \ curl \ - java-1.8.0-openjdk \ - java-1.8.0-openjdk-devel && \ + java-11-openjdk \ + java-11-openjdk-devel && \ yum -y clean all ENV JAVA_HOME=/usr/lib/jvm/java diff --git a/infrastructure/docker/traffic_router/shutdowntr.sh b/infrastructure/docker/traffic_router/shutdowntr.sh index e6ffa5e2b3..1bd8b7cce4 100755 --- a/infrastructure/docker/traffic_router/shutdowntr.sh +++ b/infrastructure/docker/traffic_router/shutdowntr.sh @@ -27,7 +27,7 @@ # TRAFFIC_MONITORS # list of semicolon-delimited FQDN:port monitors. E.g. `monitor.foo.com:80;monitor2.bar.org:80` # ORIGIN_URI # origin server (e.g. hotair), used to create a delivery service -export JAVA_HOME=/usr/java/jdk1.8.0_92/jre +export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.." export CATALINA_PID=/opt/traffic_router/temp/tomcat.pid export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/traffic_router diff --git a/infrastructure/docker/traffic_router/starttr.sh b/infrastructure/docker/traffic_router/starttr.sh index adbb9ab634..5b003e3303 100755 --- a/infrastructure/docker/traffic_router/starttr.sh +++ b/infrastructure/docker/traffic_router/starttr.sh @@ -23,7 +23,7 @@ # Therefore it is important to keep this script up to date with any changes that are # made to traffic_router/build/build_rpm.sh and traffic_router/build/pom.xml -export JAVA_HOME=/usr/java/jdk1.8.0_92/jre +export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.." export CATALINA_PID=/opt/traffic_router/temp/tomcat.pid export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/traffic_router diff --git a/traffic_router/build/pom.xml b/traffic_router/build/pom.xml index 4187a73e51..29be76977d 100644 --- a/traffic_router/build/pom.xml +++ b/traffic_router/build/pom.xml @@ -236,7 +236,7 @@ - java >= 1.8 + java-11 tomcat >= ${env.TOMCAT_VERSION}.${env.TOMCAT_RELEASE} apr >= 1.4.8 tomcat-native >= 1.2.23 diff --git a/traffic_router/pom.xml b/traffic_router/pom.xml index 8c2eb726f6..476e4c9c81 100644 --- a/traffic_router/pom.xml +++ b/traffic_router/pom.xml @@ -40,7 +40,7 @@ 3.3.2 1.9 UTF-8 - 1.8 + 11 diff --git a/traffic_router/tests/Dockerfile-test-alpine b/traffic_router/tests/Dockerfile-test-alpine index 04e9d010c5..50dcaeb6be 100644 --- a/traffic_router/tests/Dockerfile-test-alpine +++ b/traffic_router/tests/Dockerfile-test-alpine @@ -19,7 +19,7 @@ VOLUME ["/junit"] WORKDIR /go/src/$DIR/traffic_router RUN apk add --no-cache \ - openjdk8 \ + openjdk11 \ maven \ tomcat-native \ bash diff --git a/traffic_router/tests/Dockerfile-test-centos b/traffic_router/tests/Dockerfile-test-centos index 3be7c5213c..384352cae0 100644 --- a/traffic_router/tests/Dockerfile-test-centos +++ b/traffic_router/tests/Dockerfile-test-centos @@ -22,7 +22,7 @@ RUN set -o errexit; \ yum -y update; \ yum -y install \ maven \ - java-1.8.0-openjdk \ + java-11-openjdk \ epel-release; \ yum -y install tomcat-native; \ yum -y clean all diff --git a/traffic_router/tomcat-rpm/tomcat.spec b/traffic_router/tomcat-rpm/tomcat.spec index 7ab091196f..35eaf5d35c 100644 --- a/traffic_router/tomcat-rpm/tomcat.spec +++ b/traffic_router/tomcat-rpm/tomcat.spec @@ -20,7 +20,7 @@ Summary: Apache Tomcat Servlet/JSP Engine 9.0+, RI for Servlet 3.1/JSP 2.3 AP License: Apache Software License URL: https://github.com/apache/trafficcontrol/ Source: %{_sourcedir}/apache-tomcat-%{version}.tar.gz -Requires: java >= 1.8 +Requires: java-11 %define tomcat_home /opt/tomcat From b931e2284f03efb0d76f63937211c5a62ecd7888 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Tue, 14 Sep 2021 02:59:51 -0600 Subject: [PATCH 10/23] Do not set UseSplitVerifier, SplitVerifier is required in Java 11 --- traffic_router/core/pom.xml | 2 +- traffic_router/neustar/pom.xml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/traffic_router/core/pom.xml b/traffic_router/core/pom.xml index edde30c551..208b1712f3 100644 --- a/traffic_router/core/pom.xml +++ b/traffic_router/core/pom.xml @@ -182,7 +182,7 @@ maven-surefire-plugin 2.19.1 - -XX:-UseSplitVerifier -Djava.library.path=${java.library.path} + -Djava.library.path=${java.library.path} org.apache.traffic_control.traffic_router.core.util.IntegrationTest,org.apache.traffic_control.traffic_router.core.util.ExternalTest diff --git a/traffic_router/neustar/pom.xml b/traffic_router/neustar/pom.xml index 9465dd2597..52d8a71e4e 100644 --- a/traffic_router/neustar/pom.xml +++ b/traffic_router/neustar/pom.xml @@ -90,9 +90,6 @@ under the License. org.apache.maven.plugins maven-surefire-plugin 2.10 - - -XX:-UseSplitVerifier - From 4e8c670aa6ed8322fabf4500011877c2e7db810f Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Mon, 13 Sep 2021 21:20:50 -0600 Subject: [PATCH 11/23] Resolve new CloseResource PMD failure in Java 11 --- .../traffic_router/protocol/RouterNioEndpoint.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java index 5a5957a951..9e2cab65a5 100644 --- a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java +++ b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java @@ -151,10 +151,8 @@ public RouterSocketProcessor(final SocketWrapperBase socketWrapper, */ @Override protected void doRun(){ - final SocketWrapperBase localWrapper = socketWrapper; - final NioChannel socket = localWrapper.getSocket(); super.doRun(); - if (!socket.isOpen()){ + if (!socketWrapper.getSocket().isOpen()){ SSL.getLastErrorNumber(); } } From 26589a3ed1b6b88fa11e8a6a46bf3203b63f5d3c Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Tue, 14 Sep 2021 00:41:24 -0600 Subject: [PATCH 12/23] Use RSAPrivateCrtKey, RSAPrivateCrtKeyImpl is not visible in Java 11 --- .../shared/src/test/java/secure/BindPrivateKeyTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_router/shared/src/test/java/secure/BindPrivateKeyTest.java b/traffic_router/shared/src/test/java/secure/BindPrivateKeyTest.java index 83b93d5da9..c7ea572c3c 100644 --- a/traffic_router/shared/src/test/java/secure/BindPrivateKeyTest.java +++ b/traffic_router/shared/src/test/java/secure/BindPrivateKeyTest.java @@ -23,7 +23,6 @@ import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import sun.security.rsa.RSAPrivateCrtKeyImpl; import java.math.BigInteger; import java.security.KeyFactory; @@ -31,6 +30,7 @@ import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.SecureRandom; +import java.security.interfaces.RSAPrivateCrtKey; import java.security.spec.RSAPrivateCrtKeySpec; import static java.util.Base64.getEncoder; @@ -57,7 +57,7 @@ public void before() throws Exception { keyPairGenerator.initialize(2048, SecureRandom.getInstance("SHA1PRNG","SUN")); KeyPair keyPair = keyPairGenerator.generateKeyPair(); - RSAPrivateCrtKeyImpl privateCrtKey = (RSAPrivateCrtKeyImpl) keyPair.getPrivate(); + RSAPrivateCrtKey privateCrtKey = (RSAPrivateCrtKey) keyPair.getPrivate(); privateKeyString = "Private-key-format: v1.2\n" + "Algorithm: 5 (RSASHA1)\n" + From d8d479ea8eef42baf79fe9e07c80bc022b0ad564 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Wed, 15 Sep 2021 13:37:30 -0600 Subject: [PATCH 13/23] Decrease NPath complexity of DeliveryService constructor --- .../core/ds/DeliveryService.java | 91 +++++++++++-------- 1 file changed, 53 insertions(+), 38 deletions(-) diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java index 7d60d3e681..1a88c463df 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/DeliveryService.java @@ -118,7 +118,6 @@ public enum DeepCachingType { ALWAYS } - @SuppressWarnings("PMD.NPathComplexity") public DeliveryService(final String id, final JsonNode dsJo) throws JsonUtilsException { this.id = id; this.props = dsJo; @@ -146,48 +145,16 @@ public DeliveryService(final String id, final JsonNode dsJo) throws JsonUtilsExc this.shouldAppendQueryString = JsonUtils.optBoolean(dsJo, "appendQueryString", true); this.ecsEnabled = JsonUtils.optBoolean(dsJo, "ecsEnabled"); - if (dsJo.has("topology")) { - this.topology = JsonUtils.optString(dsJo, "topology"); - } + initTopology(dsJo); this.requiredCapabilities = new HashSet<>(); - if (dsJo.has("requiredCapabilities")) { - final JsonNode requiredCapabilitiesNode = dsJo.get("requiredCapabilities"); - if (!requiredCapabilitiesNode.isArray()) { - LOGGER.error("Delivery Service '" + id + "' has malformed requiredCapabilities. Disregarding."); - } else { - requiredCapabilitiesNode.forEach((requiredCapabilityNode) -> { - final String requiredCapability = requiredCapabilityNode.asText(); - if (!requiredCapability.isEmpty()) { - this.requiredCapabilities.add(requiredCapability); - } - }); - } - } + initRequiredCapabilities(dsJo); - this.consistentHashQueryParams = new HashSet(); - if (dsJo.has("consistentHashQueryParams")) { - final JsonNode cqpNode = dsJo.get("consistentHashQueryParams"); - if (!cqpNode.isArray()) { - LOGGER.error("Delivery Service '" + id + "' has malformed consistentHashQueryParams. Disregarding."); - } else { - for (final JsonNode n : cqpNode) { - final String s = n.asText(); - if (!s.isEmpty()) { - this.consistentHashQueryParams.add(s); - } - } - } - } + this.consistentHashQueryParams = new HashSet<>(); + initConsistentHashQueryParams(dsJo); // missLocation: {lat: , long: } final JsonNode mlJo = dsJo.get("missLocation"); - if(mlJo != null) { - final double lat = JsonUtils.optDouble(mlJo, "lat"); - final double longitude = JsonUtils.optDouble(mlJo, "long"); - missLocation = new Geolocation(lat, longitude); - } else { - missLocation = null; - } + missLocation = initMissLocation(mlJo); this.dispersion = new Dispersion(dsJo); this.ip6RoutingEnabled = JsonUtils.optBoolean(dsJo, "ip6RoutingEnabled"); @@ -219,6 +186,54 @@ public DeliveryService(final String id, final JsonNode dsJo) throws JsonUtilsExc } } + private void initRequiredCapabilities(final JsonNode dsJo) { + if (dsJo.has("requiredCapabilities")) { + final JsonNode requiredCapabilitiesNode = dsJo.get("requiredCapabilities"); + if (!requiredCapabilitiesNode.isArray()) { + LOGGER.error("Delivery Service '" + id + "' has malformed requiredCapabilities. Disregarding."); + } else { + requiredCapabilitiesNode.forEach((requiredCapabilityNode) -> { + final String requiredCapability = requiredCapabilityNode.asText(); + if (!requiredCapability.isEmpty()) { + this.requiredCapabilities.add(requiredCapability); + } + }); + } + } + } + + private void initConsistentHashQueryParams(final JsonNode dsJo) { + if (dsJo.has("consistentHashQueryParams")) { + final JsonNode cqpNode = dsJo.get("consistentHashQueryParams"); + if (!cqpNode.isArray()) { + LOGGER.error("Delivery Service '" + id + "' has malformed consistentHashQueryParams. Disregarding."); + } else { + for (final JsonNode n : cqpNode) { + final String s = n.asText(); + if (!s.isEmpty()) { + this.consistentHashQueryParams.add(s); + } + } + } + } + } + + private void initTopology(final JsonNode dsJo) { + if (dsJo.has("topology")) { + this.topology = JsonUtils.optString(dsJo, "topology"); + } + } + + private Geolocation initMissLocation(final JsonNode mlJo) { + if(mlJo != null) { + final double lat = JsonUtils.optDouble(mlJo, "lat"); + final double longitude = JsonUtils.optDouble(mlJo, "long"); + return new Geolocation(lat, longitude); + } else { + return null; + } + } + private String getDomainFromJson(final JsonNode domains) { if (domains == null) { return null; From 01c7115f0076cc6eb355b9b611f4eb6665097a18 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Wed, 15 Sep 2021 13:44:37 -0600 Subject: [PATCH 14/23] Do not escape '"' --- .../traffic_router/core/dns/DNSAccessEventBuilder.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java index 1fa18d1fbc..590b21eb1d 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java @@ -122,12 +122,12 @@ public static String create(final DNSAccessRecord dnsAccessRecord, final WirePar .append(" rdtl=-") .append(" rerr=\"") .append(rerr) - .append('\"') + .append('"') .append(" ttl=\"-\"") .append(" ans=\"-\"") .append(" svc=\"") .append(dsID) - .append('\"') + .append('"') .toString(); } @@ -145,12 +145,12 @@ public static String create(final DNSAccessRecord dnsAccessRecord, final Excepti .append(" rdtl=-") .append(" rerr=\"") .append(rerr) - .append('\"') + .append('"') .append(" ttl=\"-\"") .append(" ans=\"-\"") .append(" svc=\"") .append(dsID) - .append('\"').toString(); + .append('"').toString(); } private static String createQuery(final Record query) { From a6802a7c7ce9f614f5216122a7facdf6e6ac480c Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Wed, 15 Sep 2021 14:12:46 -0600 Subject: [PATCH 15/23] Commant and unabbreviate commit comparison --- .github/actions/build-rpms/build-rpms.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-rpms/build-rpms.sh b/.github/actions/build-rpms/build-rpms.sh index 1989c92ad4..aaef05466a 100755 --- a/.github/actions/build-rpms/build-rpms.sh +++ b/.github/actions/build-rpms/build-rpms.sh @@ -28,7 +28,7 @@ if [[ "$GITHUB_REF" == refs/pull/*/merge ]]; then pr_number="$(<<<"$GITHUB_REF" grep -o '[0-9]\+')" files_changed="$(curl "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/pulls/${pr_number}/files" | jq -r .[].filename)" else - files_changed="$(git diff --name-only HEAD~4.. --)" + files_changed="$(git diff --name-only HEAD~4 HEAD --)" # Files changed by the last 4 commits fi if <<<"$files_changed" grep '^GO_VERSION$' || { [[ "$ATC_COMPONENT" == traffic_router ]] && From 9ad71b66d91bc6bafb1e2a879a07f4e7d6fc7d08 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Wed, 15 Sep 2021 14:34:04 -0600 Subject: [PATCH 16/23] Close resources in LetsEncryptDnsChallengeWatcher.readConfigFile() --- .../core/ds/LetsEncryptDnsChallengeWatcher.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java index c83e6d53b1..11953cc729 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java @@ -127,11 +127,10 @@ public String getWatcherConfigPrefix() { return "dnschallengemapping"; } - @SuppressWarnings("PMD.CloseResource") private String readConfigFile() { - try { - final InputStream is = new FileInputStream(databasesDirectory.resolve(configFile).toString()); - final BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + try (InputStream is = new FileInputStream(databasesDirectory.resolve(configFile).toString()); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)) + ) { String line = buf.readLine(); final StringBuilder sb = new StringBuilder(); while (line != null) { From eac41a25bcfbc761e2dfcb48c1f613cf2069216e Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Wed, 15 Sep 2021 16:05:26 -0600 Subject: [PATCH 17/23] Do not close socket before handling the request --- .../traffic_control/traffic_router/core/dns/protocol/TCP.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java index fc22326669..9e21532817 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/protocol/TCP.java @@ -47,8 +47,8 @@ public ServerSocket getServerSocket() { public void run() { while (!isShutdownRequested()) { final TCPSocketHandler handler; - try (Socket socket = getServerSocket().accept()) { - handler = new TCPSocketHandler(socket); + try { + handler = new TCPSocketHandler(getServerSocket().accept()); submit(handler); } catch (final IOException e) { LOGGER.warn("error: " + e); From ef38442f4b1bcc0f1ef0621f870e57c38dc8cb6b Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Sun, 19 Sep 2021 23:14:42 -0600 Subject: [PATCH 18/23] Bind port to wildcard host for OpenJDK 11 compatibility --- infrastructure/cdn-in-a-box/traffic_router/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infrastructure/cdn-in-a-box/traffic_router/run.sh b/infrastructure/cdn-in-a-box/traffic_router/run.sh index bd2135fc9d..0bbe62a5c8 100755 --- a/infrastructure/cdn-in-a-box/traffic_router/run.sh +++ b/infrastructure/cdn-in-a-box/traffic_router/run.sh @@ -49,7 +49,7 @@ CATALINA_OPTS="\ -XX:InitiatingHeapOccupancyPercent=30" if [[ "$TR_DEBUG_ENABLE" == true ]]; then - export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"; + export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n"; longer_dns_timeout; fi; From 35bd577cc7522c79c3067da7094bf851463f7d6f Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Wed, 1 Dec 2021 05:14:19 -0700 Subject: [PATCH 19/23] Store socketWrapper socket for use after super.doRun() --- .../traffic_router/protocol/RouterNioEndpoint.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java index 9e2cab65a5..64ad10cbea 100644 --- a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java +++ b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java @@ -151,8 +151,11 @@ public RouterSocketProcessor(final SocketWrapperBase socketWrapper, */ @Override protected void doRun(){ + @SuppressWarnings("PMD.CloseResource") + // The socket must be stored before calling super.doRun() because it sets socketWrapper to null + final NioChannel socket = socketWrapper.getSocket(); super.doRun(); - if (!socketWrapper.getSocket().isOpen()){ + if (!socket.isOpen()){ SSL.getLastErrorNumber(); } } From a5bf26afa08eb7f530612154cd11c417e8c3341b Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Thu, 2 Dec 2021 13:36:25 -0700 Subject: [PATCH 20/23] Fix PMD failures where all PMD failures were suppressed --- .../traffic_router/core/ds/Steering.java | 1 - .../core/ds/SteeringFilter.java | 6 +- .../core/ds/SteeringTarget.java | 21 +- .../core/util/AbstractResourceWatcher.java | 2 +- .../traffic_router/shared/Certificate.java | 1 - .../shared/IsEqualCollection.java | 17 +- .../traffic_router/shared/SigningData.java | 328 +++++++++--------- .../shared/ZoneTestRecords.java | 57 +-- 8 files changed, 217 insertions(+), 216 deletions(-) diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/Steering.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/Steering.java index 34f519fe57..38da78f9d0 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/Steering.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/Steering.java @@ -99,7 +99,6 @@ public boolean equals(final Object o) { } @Override - @SuppressWarnings("PMD") public int hashCode() { int result = deliveryService != null ? deliveryService.hashCode() : 0; result = 31 * result + (targets != null ? targets.hashCode() : 0); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringFilter.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringFilter.java index 539d333ed7..dc57b0b701 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringFilter.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringFilter.java @@ -49,12 +49,11 @@ public boolean matches(final String s) { } @Override - @SuppressWarnings("PMD") - public boolean equals(Object o) { + public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - SteeringFilter that = (SteeringFilter) o; + final SteeringFilter that = (SteeringFilter) o; if (pattern != null ? !pattern.equals(that.pattern) : that.pattern != null) return false; return deliveryService != null ? deliveryService.equals(that.deliveryService) : that.deliveryService == null; @@ -62,7 +61,6 @@ public boolean equals(Object o) { } @Override - @SuppressWarnings("PMD") public int hashCode() { int result = pattern != null ? pattern.hashCode() : 0; result = 31 * result + (deliveryService != null ? deliveryService.hashCode() : 0); diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringTarget.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringTarget.java index 5c1bb92283..532d5cc584 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringTarget.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringTarget.java @@ -15,9 +15,11 @@ package org.apache.traffic_control.traffic_router.core.ds; +import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.traffic_control.traffic_router.core.hash.DefaultHashable; import org.apache.traffic_control.traffic_router.geolocation.Geolocation; -import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Objects; public class SteeringTarget extends DefaultHashable { @@ -106,19 +108,18 @@ public void setGeolocation(final Geolocation geolocation) { } @Override - @SuppressWarnings("PMD") - public boolean equals(Object o) { + public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - SteeringTarget target = (SteeringTarget) o; + final SteeringTarget target = (SteeringTarget) o; - if (weight != target.weight) return false; - if (order != target.order) return false; - if (geoOrder != target.geoOrder) return false; - if (latitude != target.latitude) return false; - if (longitude != target.longitude) return false; - return deliveryService != null ? deliveryService.equals(target.deliveryService) : target.deliveryService == null; + if (weight != target.weight || + order != target.order || + geoOrder != target.geoOrder || + latitude != target.latitude || + longitude != target.longitude) return false; + return Objects.equals(deliveryService, target.deliveryService); } diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java index 569d8b8a7b..86082678ff 100644 --- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java +++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/AbstractResourceWatcher.java @@ -35,7 +35,7 @@ public abstract class AbstractResourceWatcher extends AbstractServiceUpdater { protected TrafficOpsUtils trafficOpsUtils; private int timeout = 15000; - @SuppressWarnings("PMD") + @SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"}) public void configure(final JsonNode config) { URL authUrl; String credentials; diff --git a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/Certificate.java b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/Certificate.java index 96313c98e9..ed5102a99a 100644 --- a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/Certificate.java +++ b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/Certificate.java @@ -43,7 +43,6 @@ public void setKey(final String key) { } @Override - @SuppressWarnings("PMD") public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; diff --git a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/IsEqualCollection.java b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/IsEqualCollection.java index e9945ccb4f..76c5553c19 100644 --- a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/IsEqualCollection.java +++ b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/IsEqualCollection.java @@ -22,21 +22,20 @@ import java.util.Collection; -@SuppressWarnings("PMD") -public class IsEqualCollection extends IsEqual { +final public class IsEqualCollection extends IsEqual { private final Object expectedValue; - private IsEqualCollection(T equalArg) { + private IsEqualCollection(final T equalArg) { super(equalArg); expectedValue = equalArg; } - private void describeItems(Description description, Object value) { + private void describeItems(final Description description, final Object value) { if (value instanceof Collection) { - Object[] items = ((Collection) value).toArray(); + final Object[] items = ((Collection) value).toArray(); description.appendText("\n{"); - for (Object item : items) { + for (final Object item : items) { description.appendText("\n\t"); description.appendText(item.toString()); } @@ -45,7 +44,7 @@ private void describeItems(Description description, Object value) { } @Override - public void describeTo(Description description) { + public void describeTo(final Description description) { if (expectedValue instanceof Collection) { description.appendText("all of the following in order\n"); describeItems(description,expectedValue); @@ -56,7 +55,7 @@ public void describeTo(Description description) { } @Override - public void describeMismatch(Object actualValue, Description mismatchDescription) { + public void describeMismatch(final Object actualValue, final Description mismatchDescription) { if (actualValue instanceof Collection) { mismatchDescription.appendText("had the items\n"); describeItems(mismatchDescription, actualValue); @@ -67,7 +66,7 @@ public void describeMismatch(Object actualValue, Description mismatchDescription } @Factory - public static Matcher equalTo(T operand) { + public static Matcher equalTo(final T operand) { return new IsEqualCollection<>(operand); } } diff --git a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/SigningData.java b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/SigningData.java index f02ef0dce8..949b884a0e 100644 --- a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/SigningData.java +++ b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/SigningData.java @@ -15,6 +15,7 @@ package org.apache.traffic_control.traffic_router.shared; +import org.apache.log4j.Logger; import org.xbill.DNS.Record; import org.xbill.DNS.Section; @@ -25,7 +26,7 @@ import static java.util.stream.Collectors.toList; -@SuppressWarnings("PMD") +@SuppressWarnings("PMD.ClassNamingConventions") public class SigningData { // If you want to update this data, change the contents of SigningTestDataGenerator.java, // run its only test and then replace everything between here and the declaration of signedList @@ -34,9 +35,9 @@ public class SigningData { "MIIBCgKCAQEAly/1SbKJpzYwOJF2Xie7W6eLyQ/W1Ar8hKss7ZbIkcg23bt8QQOFVLPlYG9luYzAULZgTWa4gFlrBkEzO410oy8V" + "FZgB5x11/LioWGJmy9h+H6R1Fy0QFP3eFGKb9tLuAJGMaSRTcbRADJQYiDJ6uuWobTg2fNxlb7B1lz7wOVk/yTV795k+vb+lJx8x" + "Zu9vNyIkUy2/LF4J0oXKCPUEee0hpBglEeFcnMSHjO+LtY5Y6E8+fp3d38+Tikmy/2Xu0R35MmCWXuwqYMO+1p7spNzsuUFkhTWt" + - "0yJKc8pC91V6e3gsD6iwMy3Q0EEEQ7q1z+M9vLIYtmC27mHmdDh1DQIDAQAB"; + "0yJKc8pC91V6e3gsD6iwMy3Q0EEEQ7q1z+M9vLIYtmC27mHmdDh1DQIDAQAB", - public static String ksk1Private = + ksk1Private = "UHJpdmF0ZS1rZXktZm9ybWF0OiB2MS4yCkFsZ29yaXRobTogNSAoUlNBU0hBMSkKTW9kdWx1czog\nQUpjdjlVbXlpYWMyTURpUm" + "RsNG51MXVuaThrUDF0UUsvSVNyTE8yV3lKSElOdDI3ZkVFRGhWU3o1\nV0J2WmJtTXdGQzJZRTFtdUlCWmF3WkJNenVOZEtNdkZS" + "V1lBZWNkZGZ5NHFGaGlac3ZZZmgra2RS\nY3RFQlQ5M2hSaW0vYlM3Z0NSakdra1UzRzBRQXlVR0lneWVycmxxRzA0Tm56Y1pXK3" + @@ -60,16 +61,16 @@ public class SigningData { "ZidnpWRWtKZUFISjgrd3cyRk9H\nNm91blk2RjZnRUR2WityTFpGVTl0eDh2eDdjWnUvYz0KQ29lZmZpY2llbnQ6IEFMd1hKOGZk" + "QWtY\nLzZMeVFvdENIdHZDVWszbEtWbEdlZXAwQlhsYWZyL3FTU2RrTEt2ZHVRSVJCczY0bDBnZW9ndW1H\nRVd5dFViaG9Vak44" + "NFNwOG5ldktyS3hqaTlxeG9xUytyQjJ2aElvc0pVdnVoSEJENWMyeHZJVG1R\naXYrazUrT1FDaGdqeGFONnJ5b1NoRDhlYnlsUk" + - "RzQ1VNL1FFQk82QWZyS0NQZHkK"; + "RzQ1VNL1FFQk82QWZyS0NQZHkK", - public static String ksk2Public = + ksk2Public = "MIIBCgKCAQEAqZz9euL/dovYWIF87eUDWObp9YodiCp88k/PhDCyIbpn7a/QZZYZgYJTjQH0wrMweHj6M74fn8zAFz4fCUq6XSdF" + "UR0X/7MXzBYfuKYdYbYrF68C57ryEl3sW9rSMgxWtajvKFzyB67sYT2GcL3vjZPaYb2ZT2jgjEqeKAk7fzcibfR4UrTj3LI19U8W" + "reZ29JZAmV2sknYA3ImM33CLYseRCw79r0Jws9RLmJixzDeavWYBls1KUqeXYqV++Hb+mQcR/C0/ch63msPWwgcOEfGFmagcYFvC" + - "6gOLYXH5WgC2UJlpAMQBZC+3UKwmHaomXeHh92zkQ/nV4bcEOzjZlQIDAQAB"; + "6gOLYXH5WgC2UJlpAMQBZC+3UKwmHaomXeHh92zkQ/nV4bcEOzjZlQIDAQAB", - public static String ksk2Private = + ksk2Private = "UHJpdmF0ZS1rZXktZm9ybWF0OiB2MS4yCkFsZ29yaXRobTogNSAoUlNBU0hBMSkKTW9kdWx1czog\nQUttYy9YcmkvM2FMMkZpQm" + "ZPM2xBMWptNmZXS0hZZ3FmUEpQejRRd3NpRzZaKzJ2MEdXV0dZR0NV\nNDBCOU1Lek1IaDQrak8rSDUvTXdCYytId2xLdWwwblJW" + "RWRGLyt6Rjh3V0g3aW1IV0cyS3hldkF1\nZTY4aEpkN0Z2YTBqSU1WcldvN3loYzhnZXU3R0U5aG5DOTc0MlQybUc5bVU5bzRJeE" + @@ -93,16 +94,16 @@ public class SigningData { "haNWZ1VWtlaFVaRHdYUUZxZDNZ\nRzhNL0l1QXVGdjJ3MGdBazhkYVgxSnZNbWFWMXdyaz0KQ29lZmZpY2llbnQ6IEN4TFJPOUgr" + "UUwv\nWHk5cmNYYUZmVnhZUkpsV0RYMW0vdVJ2QWZ0MVZnaFFRTzNFWnZzYnRlS3hrTEFNWXJta2c1ZFJy\nTkJ6T0NhVVM0VjlL" + "NmFxaHczVEZacEhkUDhNUHdLMG5zSTZaQnc4UGFmZ1ZIajk0MzhtRUt0NVBO\nSks1ZUh4dEg1aGtNNkVlbjhuZXpvcVg4WmEveV" + - "BSd0J0U1ZvSW9pTXpJbVZIMD0K"; + "BSd0J0U1ZvSW9pTXpJbVZIMD0K", - public static String zsk1Public = + zsk1Public = "MIIBCgKCAQEAymLTAjeDfcIYUKyGqKhUrl/khgBJA9TNqrzZOfMmNFarbONxDnsd6WoHnqi5xGrNBV6ZGIGwc4tebG/XWBOVvI7P" + "b10ZHjm4muKnzA9Qt+TOwpukN/phOzDwFZx+QHHu18jePgmFstoSUJzb4baPSoLorCYbRKdIAHhSEALfL5LE8ByP/MwWCO6jD0wE" + "ZlzGsnow5wxnuVWhBt8FMpRN9FgrJ3YkfTxKz8IZpSx2yjf9IIa/lGvKxcUoAyrdWam14l3fBTI6tfx2nWv56L846wXjqtcZvQeO" + - "0ewFdwNw2kWTT01kWeG6lXa1yo6CARkvVaF9zcrVNxWUm7CIvKibwQIDAQAB"; + "0ewFdwNw2kWTT01kWeG6lXa1yo6CARkvVaF9zcrVNxWUm7CIvKibwQIDAQAB", - public static String zsk1Private = + zsk1Private = "UHJpdmF0ZS1rZXktZm9ybWF0OiB2MS4yCkFsZ29yaXRobTogNSAoUlNBU0hBMSkKTW9kdWx1czog\nQU1waTB3STNnMzNDR0ZDc2" + "hxaW9WSzVmNUlZQVNRUFV6YXE4MlRuekpqUldxMnpqY1E1N0hlbHFC\nNTZvdWNScXpRVmVtUmlCc0hPTFhteHYxMWdUbGJ5T3oy" + "OWRHUjQ1dUpyaXA4d1BVTGZrenNLYnBE\nZjZZVHN3OEJXY2ZrQng3dGZJM2o0SmhiTGFFbENjMitHMmowcUM2S3dtRzBTblNBQj" + @@ -126,16 +127,16 @@ public class SigningData { "VKeFcrWk9VRUo0VUhFc2l1bVZp\nVVFzK2l4dnpqN1QvTXFOSkpxTmQ1eTNpaVlVZW82OD0KQ29lZmZpY2llbnQ6IGZFVzd1SzlD" + "aUM2\nVHJDUmttS2R0T3d4dnM1SDQ5MWdJRkQ3ckxIQ010T1d5enJxNXhGd0F1cmJFSktVdGlKQVVVNThE\nVUErcWZYTk5lODR4" + "RDZuWHNXRU9zckVENXFPWnBFT1BnczdxcHdaTHJXQ3BBcTRhQ2dtdGVKTk5K\nb0k5Rm41OFV0aCtXSUpBb2dnS0ZPSWd5WmsxUz" + - "ZTRzFFZFBwWmd0dTQ5YnVpUT0K"; + "ZTRzFFZFBwWmd0dTQ5YnVpUT0K", - public static String zsk2Public = + zsk2Public = "MIIBCgKCAQEAuCnKCdaJnVwi3Iu0zUYrciw05zZ3jXkZAKE+TOCT5/DlpGRNwzU8x0qc2niyt9Q+awSBpizFWAeAfgpoZXEjbIvw" + "hhDYC/Ze12jvDh/c/xyzaScnt6C6rlM2y1q7j7q9uI/64l7lQITOno4pvPZP3txXqll5VNfUjMbE3HNXL4O+qGLAij1/2clnS8wG" + "vokEITcYwOL6I0vBADqgu4pmu5sstMN+72Tz8FQ+ZAMQ8B7G2IlnPdTBypL0r0LjoFJ2SWZGnj/IRM7Am4iMiwlCSbbDzPibsMwl" + - "MAquEBA1UVoN4PC1Ah+Hb6tP2h92Nl1JVSu0478uItF90dGl0gDQuwIDAQAB"; + "MAquEBA1UVoN4PC1Ah+Hb6tP2h92Nl1JVSu0478uItF90dGl0gDQuwIDAQAB", - public static String zsk2Private = + zsk2Private = "UHJpdmF0ZS1rZXktZm9ybWF0OiB2MS4yCkFsZ29yaXRobTogNSAoUlNBU0hBMSkKTW9kdWx1czog\nQUxncHlnbldpWjFjSXR5TH" + "RNMUdLM0lzTk9jMmQ0MTVHUUNoUGt6Z2srZnc1YVJrVGNNMVBNZEtu\nTnA0c3JmVVBtc0VnYVlzeFZnSGdINEthR1Z4STJ5TDhJ" + "WVEyQXYyWHRkbzd3NGYzUDhjczJrbko3\nZWd1cTVUTnN0YXU0KzZ2YmlQK3VKZTVVQ0V6cDZPS2J6MlQ5N2NWNnBaZVZUWDFJek" + @@ -159,408 +160,408 @@ public class SigningData { "Y0NVc4M0VUQk9MMzFUSy9Ec0hU\nMjF4KzVXeFJTQ21YNzdraFFLY3M5eGZJNlQyZEM1MD0KQ29lZmZpY2llbnQ6IEFOSm8rWXNX" + "S01E\nM2JJWUI2NnhSUXBrRW90OUJqRmdhS0FuWmhJUVFlV1dSMlZZUFNscU9xbzRHWXArUmRZOFpyVStW\nME8wWE82MjNkWG03" + "Rk0ybllPNUJSUnBJSTNDUHM3bjk4N2czMmJCUTZqdHVRV2xsV0s0L3VQUEtK\nMjFtRVpka2l1RHoxVzFWRkNoVzhsaUNFWDNQZl" + - "ZtK01qblJxQk1UMDUreUNUWlkK"; + "ZtK01qblJxQk1UMDUreUNUWlkK", // example.com. 315360000 IN SOA ns1.example.com. admin.example.com. 2016091400 86400 3600 1814400 259200 - static String postZoneRecord0 = + postZoneRecord0 = "B2V4YW1wbGUDY29tAAAGAAESzAMAADgDbnMxB2V4YW1wbGUDY29tAAVhZG1pbgdleGFtcGxlA2NvbQB4Kx0IAAFRgAAADhAAG6+A" + - "AAP0gA=="; + "AAP0gA==", // example.com. 315360000 IN NS ns1.example.com. - static String postZoneRecord3 = - "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMxB2V4YW1wbGUDY29tAA=="; + postZoneRecord3 = + "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMxB2V4YW1wbGUDY29tAA==", // example.com. 315360000 IN NS ns2.example.com. - static String postZoneRecord4 = - "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMyB2V4YW1wbGUDY29tAA=="; + postZoneRecord4 = + "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMyB2V4YW1wbGUDY29tAA==", // example.com. 259200 IN NSEC ftp.example.com. NS SOA RRSIG NSEC - static String postZoneRecord7 = - "B2V4YW1wbGUDY29tAAAvAAEAA/SAABkDZnRwB2V4YW1wbGUDY29tAAAGIgAAAAAD"; + postZoneRecord7 = + "B2V4YW1wbGUDY29tAAAvAAEAA/SAABkDZnRwB2V4YW1wbGUDY29tAAAGIgAAAAAD", // ftp.example.com. 1814400 IN A 12.34.56.78 - static String postZoneRecord10 = - "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEDCI4Tg=="; + postZoneRecord10 = + "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEDCI4Tg==", // ftp.example.com. 1814400 IN A 21.43.65.87 - static String postZoneRecord11 = - "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEFStBVw=="; + postZoneRecord11 = + "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEFStBVw==", // ftp.example.com. 259200 IN AAAA 2001:db8:0:0:12:34:56:78 - static String postZoneRecord14 = - "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAEgA0AFYAeA=="; + postZoneRecord14 = + "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAEgA0AFYAeA==", // ftp.example.com. 259200 IN AAAA 2001:db8:0:0:21:43:65:87 - static String postZoneRecord15 = - "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAIQBDAGUAhw=="; + postZoneRecord15 = + "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAIQBDAGUAhw==", // ftp.example.com. 259200 IN NSEC mirror.ftp.example.com. A AAAA RRSIG NSEC - static String postZoneRecord18 = - "A2Z0cAdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAZAAAAIAAM="; + postZoneRecord18 = + "A2Z0cAdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAZAAAAIAAM=", // mirror.ftp.example.com. 315360000 IN CNAME ftp.example.com. - static String postZoneRecord21 = - "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAUAARLMAwAAEQNmdHAHZXhhbXBsZQNjb20A"; + postZoneRecord21 = + "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAUAARLMAwAAEQNmdHAHZXhhbXBsZQNjb20A", // mirror.ftp.example.com. 259200 IN NSEC www.example.com. CNAME RRSIG NSEC - static String postZoneRecord24 = - "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC8AAQAD9IAAGQN3d3cHZXhhbXBsZQNjb20AAAYEAAAAAAM="; + postZoneRecord24 = + "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC8AAQAD9IAAGQN3d3cHZXhhbXBsZQNjb20AAAYEAAAAAAM=", // www.example.com. 1814400 IN A 11.22.33.44 - static String postZoneRecord27 = - "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAECxYhLA=="; + postZoneRecord27 = + "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAECxYhLA==", // www.example.com. 1814400 IN A 55.66.77.88 - static String postZoneRecord28 = - "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAEN0JNWA=="; + postZoneRecord28 = + "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAEN0JNWA==", // www.example.com. 315360000 IN TXT "dead0123456789" - static String postZoneRecord31 = - "A3d3dwdleGFtcGxlA2NvbQAAEAABEswDAAAPDmRlYWQwMTIzNDU2Nzg5"; + postZoneRecord31 = + "A3d3dwdleGFtcGxlA2NvbQAAEAABEswDAAAPDmRlYWQwMTIzNDU2Nzg5", // www.example.com. 259200 IN AAAA 2001:db8:0:0:4:3:2:1 - static String postZoneRecord34 = - "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABAADAAIAAQ=="; + postZoneRecord34 = + "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABAADAAIAAQ==", // www.example.com. 259200 IN AAAA 2001:db8:0:0:5:6:7:8 - static String postZoneRecord35 = - "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABQAGAAcACA=="; + postZoneRecord35 = + "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABQAGAAcACA==", // www.example.com. 259200 IN NSEC mirror.www.example.com. A TXT AAAA RRSIG NSEC - static String postZoneRecord38 = - "A3d3dwdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAZAAIAIAAM="; + postZoneRecord38 = + "A3d3dwdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAZAAIAIAAM=", // mirror.www.example.com. 315360000 IN CNAME www.example.com. - static String postZoneRecord41 = - "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAUAARLMAwAAEQN3d3cHZXhhbXBsZQNjb20A"; + postZoneRecord41 = + "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAUAARLMAwAAEQN3d3cHZXhhbXBsZQNjb20A", // mirror.www.example.com. 259200 IN NSEC example.com. CNAME RRSIG NSEC - static String postZoneRecord44 = - "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC8AAQAD9IAAFQdleGFtcGxlA2NvbQAABgQAAAAAAw=="; + postZoneRecord44 = + "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC8AAQAD9IAAFQdleGFtcGxlA2NvbQAABgQAAAAAAw==", // example.com. 315360000 IN SOA ns1.example.com. admin.example.com. 2016091400 86400 3600 1814400 259200 - static String signedRecord0 = + signedRecord0 = "B2V4YW1wbGUDY29tAAAGAAESzAMAADgDbnMxB2V4YW1wbGUDY29tAAVhZG1pbgdleGFtcGxlA2NvbQB4Kx0IAAFRgAAADhAAG6+A" + - "AAP0gA=="; + "AAP0gA==", // example.com. 315360000 IN RRSIG SOA 5 2 315360000 20260901000000 20160901000000 62715 example.com. C0hpMqwBTBad15gPKdGAnz1xY/yoKVQMwZJPPZAUUV6finNeX8aS9wtml83eWslfuP+ipw2Xf1/EV2umUEHbtptJR0SReeR6NeUtHM2QAYoUG1+OmqQqebM5cD8pgyry1BAP+9wm9IKmyS3dSKDrj9M3Gd7TlUZrux96N/29KOPrLgb7Chbr0wqrTOJIQgV0DSecYoayM/iuQXO6qDAPc64W3jiBBPkLVub7NK1O9VIHHLPw1ElZVuK/8muxrsxp7eDzsjkNnVrxlat+1QQECk+uvARHxrY7eTGW+srZGyrkwDm2EvBAbmx3U0SaUPQDGzySeOZE9qdu7yYi0PcRsw== - static String signedRecord1 = + signedRecord1 = "B2V4YW1wbGUDY29tAAAuAAESzAMAAR8ABgUCEswDAGqWFYBXx2+A9PsHZXhhbXBsZQNjb20AC0hpMqwBTBad15gPKdGAnz1xY/yo" + "KVQMwZJPPZAUUV6finNeX8aS9wtml83eWslfuP+ipw2Xf1/EV2umUEHbtptJR0SReeR6NeUtHM2QAYoUG1+OmqQqebM5cD8pgyry" + "1BAP+9wm9IKmyS3dSKDrj9M3Gd7TlUZrux96N/29KOPrLgb7Chbr0wqrTOJIQgV0DSecYoayM/iuQXO6qDAPc64W3jiBBPkLVub7" + "NK1O9VIHHLPw1ElZVuK/8muxrsxp7eDzsjkNnVrxlat+1QQECk+uvARHxrY7eTGW+srZGyrkwDm2EvBAbmx3U0SaUPQDGzySeOZE" + - "9qdu7yYi0PcRsw=="; + "9qdu7yYi0PcRsw==", // example.com. 315360000 IN RRSIG SOA 5 2 315360000 20260901000000 20160901000000 62715 example.com. oblQvApzPjS/Frig1WwkS8XAVR4s8Yve+/DC8UV6JysMPW0PrwMEDrwjSPoxwGkAySYXuRLSJdW1H6HPXTWjJBontjCnCpiFEu2gnqacZi0HgVPEFGwWEH1lTVdglBrz5Px7CBnqzvVopzn9am72jVzmYh4JKgcEqCQnz4mA8f35DW6gkq52ECB1mR5nyckf6swZ8V63Ypu/aNcFrPnqQWWyfNS3dEormvNiahXtqEv0Keg5GeaYS3e9bu8DQofPojZbyZlk+GsNTfJJGLOkcG7SZliGSfAQRUMUb3D9NIPgfOWCAdAR286TAOm16ZoS/d06VoTNeUg3+n8D/YqzgA== - static String signedRecord2 = + signedRecord2 = "B2V4YW1wbGUDY29tAAAuAAESzAMAAR8ABgUCEswDAGqWFYBXx2+A9PsHZXhhbXBsZQNjb20AoblQvApzPjS/Frig1WwkS8XAVR4s" + "8Yve+/DC8UV6JysMPW0PrwMEDrwjSPoxwGkAySYXuRLSJdW1H6HPXTWjJBontjCnCpiFEu2gnqacZi0HgVPEFGwWEH1lTVdglBrz" + "5Px7CBnqzvVopzn9am72jVzmYh4JKgcEqCQnz4mA8f35DW6gkq52ECB1mR5nyckf6swZ8V63Ypu/aNcFrPnqQWWyfNS3dEormvNi" + "ahXtqEv0Keg5GeaYS3e9bu8DQofPojZbyZlk+GsNTfJJGLOkcG7SZliGSfAQRUMUb3D9NIPgfOWCAdAR286TAOm16ZoS/d06VoTN" + - "eUg3+n8D/YqzgA=="; + "eUg3+n8D/YqzgA==", // example.com. 315360000 IN NS ns1.example.com. - static String signedRecord3 = - "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMxB2V4YW1wbGUDY29tAA=="; + signedRecord3 = + "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMxB2V4YW1wbGUDY29tAA==", // example.com. 315360000 IN NS ns2.example.com. - static String signedRecord4 = - "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMyB2V4YW1wbGUDY29tAA=="; + signedRecord4 = + "B2V4YW1wbGUDY29tAAACAAESzAMAABEDbnMyB2V4YW1wbGUDY29tAA==", // example.com. 315360000 IN RRSIG NS 5 2 315360000 20260901000000 20160901000000 62715 example.com. VXb0w+5JGUpmuLhH9IQwiF/TwlDIrCwovLV4/gIhXd7CmwkbqUkSwjPtuHvs7LmqlzzCfmAvqJxRb4aKgVFaA+ltlmdoQPR3fRTJM5Vt8bfA7o9/e8Epxu7U6q3uulgPY+PfmrgS6zclCTcb4Llxzmmi6COvN8xVBe4z9oe2+vDp+o14VpmvkLQNhlIIrcDUyPwYqBuYTT77lTm/DeXs47Afzp8r9JPgoTfu+NgvkSCK2RXgubIh73kdPaX222Hon7XEutA+nMi//1J3Tq+96dqZ9l4sawd3EzBL7fM+ANPHEZd4ducRRnzAXOCI//2sa4XWKZubVtuZCYZoyj12sw== - static String signedRecord5 = + signedRecord5 = "B2V4YW1wbGUDY29tAAAuAAESzAMAAR8AAgUCEswDAGqWFYBXx2+A9PsHZXhhbXBsZQNjb20AVXb0w+5JGUpmuLhH9IQwiF/TwlDI" + "rCwovLV4/gIhXd7CmwkbqUkSwjPtuHvs7LmqlzzCfmAvqJxRb4aKgVFaA+ltlmdoQPR3fRTJM5Vt8bfA7o9/e8Epxu7U6q3uulgP" + "Y+PfmrgS6zclCTcb4Llxzmmi6COvN8xVBe4z9oe2+vDp+o14VpmvkLQNhlIIrcDUyPwYqBuYTT77lTm/DeXs47Afzp8r9JPgoTfu" + "+NgvkSCK2RXgubIh73kdPaX222Hon7XEutA+nMi//1J3Tq+96dqZ9l4sawd3EzBL7fM+ANPHEZd4ducRRnzAXOCI//2sa4XWKZub" + - "VtuZCYZoyj12sw=="; + "VtuZCYZoyj12sw==", // example.com. 315360000 IN RRSIG NS 5 2 315360000 20260901000000 20160901000000 62715 example.com. pHMxn1FV1Vb4/Y0nO4sjBSolQIFBUpgUodq9q2MHlpqA9cY4kQAvF0oDONfvqdT8a7BCwrzDtSbLAi0QJuU0wao6JKM3Kr4CuVWPAaPCX4gdKi5Gye1F2A+O5NKC8aBweYxxEg6AP5ADyjkWYX0k7XW4c4kVkBmToYroO0kgaPQyj7AW4iznmRcXjnM4nufRjSwEfIYzIlQZ2Pf4ftaKH58DoAeouTDr0xYVM9F9q+78E3ZSgBJNprnOi5zo7qQcifIgshuD06cUjQ7e2Sgi1wEBUG3nyTa4qu8D7fK9oRJHIqAGeUKCAsWlC675HTdrGKBwbrjM41WoQkmCcclZNg== - static String signedRecord6 = + signedRecord6 = "B2V4YW1wbGUDY29tAAAuAAESzAMAAR8AAgUCEswDAGqWFYBXx2+A9PsHZXhhbXBsZQNjb20ApHMxn1FV1Vb4/Y0nO4sjBSolQIFB" + "UpgUodq9q2MHlpqA9cY4kQAvF0oDONfvqdT8a7BCwrzDtSbLAi0QJuU0wao6JKM3Kr4CuVWPAaPCX4gdKi5Gye1F2A+O5NKC8aBw" + "eYxxEg6AP5ADyjkWYX0k7XW4c4kVkBmToYroO0kgaPQyj7AW4iznmRcXjnM4nufRjSwEfIYzIlQZ2Pf4ftaKH58DoAeouTDr0xYV" + "M9F9q+78E3ZSgBJNprnOi5zo7qQcifIgshuD06cUjQ7e2Sgi1wEBUG3nyTa4qu8D7fK9oRJHIqAGeUKCAsWlC675HTdrGKBwbrjM" + - "41WoQkmCcclZNg=="; + "41WoQkmCcclZNg==", // example.com. 259200 IN NSEC ftp.example.com. NS SOA RRSIG NSEC - static String signedRecord7 = - "B2V4YW1wbGUDY29tAAAvAAEAA/SAABkDZnRwB2V4YW1wbGUDY29tAAAGIgAAAAAD"; + signedRecord7 = + "B2V4YW1wbGUDY29tAAAvAAEAA/SAABkDZnRwB2V4YW1wbGUDY29tAAAGIgAAAAAD", // example.com. 259200 IN RRSIG NSEC 5 2 259200 20260901000000 20160901000000 62715 example.com. s7BUvoJ21W5HV9Pqg0kUpMa2FmgZrCgwYBThxIbH1ZtiXRR1Q4BzxMdxypi8WetbDITNL4gnWI4BBnww2WduwO94tsTErNMrMShopZKaPn17LB2sMF4QatkfEO85OUYSUWAhtWFzRnTpdJT0UADlAmS+iE/QVGYCTJtZh15cMhPDQM8vMcXfYWrBWTe7iLHjJYMgqsXUI2RnF0qA6dx7/55rUGqC8sEk9mc8NP8bz0cuDLAplkCbG02slurXya5KnOq9LT4Gmt7ovQ6yCDs/h6S3Hbuo5mbDhK6vUPY7Ef2BSRylJlUOJZmr+p7zK9pPn2/0GBVu8rryyM7pWlheGw== - static String signedRecord8 = + signedRecord8 = "B2V4YW1wbGUDY29tAAAuAAEAA/SAAR8ALwUCAAP0gGqWFYBXx2+A9PsHZXhhbXBsZQNjb20As7BUvoJ21W5HV9Pqg0kUpMa2FmgZ" + "rCgwYBThxIbH1ZtiXRR1Q4BzxMdxypi8WetbDITNL4gnWI4BBnww2WduwO94tsTErNMrMShopZKaPn17LB2sMF4QatkfEO85OUYS" + "UWAhtWFzRnTpdJT0UADlAmS+iE/QVGYCTJtZh15cMhPDQM8vMcXfYWrBWTe7iLHjJYMgqsXUI2RnF0qA6dx7/55rUGqC8sEk9mc8" + "NP8bz0cuDLAplkCbG02slurXya5KnOq9LT4Gmt7ovQ6yCDs/h6S3Hbuo5mbDhK6vUPY7Ef2BSRylJlUOJZmr+p7zK9pPn2/0GBVu" + - "8rryyM7pWlheGw=="; + "8rryyM7pWlheGw==", // example.com. 259200 IN RRSIG NSEC 5 2 259200 20260901000000 20160901000000 62715 example.com. o7X99MS6Px64FfsDU+r/oC2dyq2g78RBVQA+xbbXk4NFwdoch4/eyTur3VqCGn8umriHTPIN0URY5U0nzod0SAQyT7daRlC7qnwJPpmBP5MYuOI19DoFJuqJ6Wvwu1r4xcv886tEYh68H4YRmNB2Pso34pC8An9WmUW/sKiQwb0tC4Xmcj9AMfKDgLeiWBTJEBHWqrtagywS1gvvq5VRQaz5k0K9Vb0aIimPOce/twVNpbrysNsZoR1a243msF9bUUtg5It9ZDYeCleQgtzJyBpxWcEfhWd28PSDu280ymGmyeICznrJuwg8KNB2Byh9pxNGsaw1gBxu/2hj88OT+g== - static String signedRecord9 = + signedRecord9 = "B2V4YW1wbGUDY29tAAAuAAEAA/SAAR8ALwUCAAP0gGqWFYBXx2+A9PsHZXhhbXBsZQNjb20Ao7X99MS6Px64FfsDU+r/oC2dyq2g" + "78RBVQA+xbbXk4NFwdoch4/eyTur3VqCGn8umriHTPIN0URY5U0nzod0SAQyT7daRlC7qnwJPpmBP5MYuOI19DoFJuqJ6Wvwu1r4" + "xcv886tEYh68H4YRmNB2Pso34pC8An9WmUW/sKiQwb0tC4Xmcj9AMfKDgLeiWBTJEBHWqrtagywS1gvvq5VRQaz5k0K9Vb0aIimP" + "Oce/twVNpbrysNsZoR1a243msF9bUUtg5It9ZDYeCleQgtzJyBpxWcEfhWd28PSDu280ymGmyeICznrJuwg8KNB2Byh9pxNGsaw1" + - "gBxu/2hj88OT+g=="; + "gBxu/2hj88OT+g==", // ftp.example.com. 1814400 IN A 12.34.56.78 - static String signedRecord10 = - "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEDCI4Tg=="; + signedRecord10 = + "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEDCI4Tg==", // ftp.example.com. 1814400 IN A 21.43.65.87 - static String signedRecord11 = - "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEFStBVw=="; + signedRecord11 = + "A2Z0cAdleGFtcGxlA2NvbQAAAQABABuvgAAEFStBVw==", // ftp.example.com. 1814400 IN RRSIG A 5 3 1814400 20260901000000 20160901000000 62715 example.com. E4nQ6QA1Q0knYeCevRX3nxWWOUkfZ2ZiVzxkFBplIZpegVqLBNsIbeh/2kjuFHm7TX9fENiTC/uRfcVOq9sEb3gaBaD88gqqzKZ4qhWOPU0gnIQARa45K0GatP3WPgL8eeHhnZF9diIdK5M/sX6XxRte0bJry5hi4HFkDbXmlsWjvNMyrlrCmw/AWYYGI4kqR8jUKf4BJIdT7DQ+3Ch4MDcEU2PfO1R6iHwfWUVeGRRg+aw8Uqht1S/Cx+fo44kowicV4o3+RwTWRW6UbWvF5b5vjLjByIzg8MvzCcGPnUdwKKfZBLT1WC02LXVRa/19C3RKgHzK5AGFeRWiKs9PNA== - static String signedRecord12 = + signedRecord12 = "A2Z0cAdleGFtcGxlA2NvbQAALgABABuvgAEfAAEFAwAbr4BqlhWAV8dvgPT7B2V4YW1wbGUDY29tABOJ0OkANUNJJ2Hgnr0V958V" + "ljlJH2dmYlc8ZBQaZSGaXoFaiwTbCG3of9pI7hR5u01/XxDYkwv7kX3FTqvbBG94GgWg/PIKqsymeKoVjj1NIJyEAEWuOStBmrT9" + "1j4C/Hnh4Z2RfXYiHSuTP7F+l8UbXtGya8uYYuBxZA215pbFo7zTMq5awpsPwFmGBiOJKkfI1Cn+ASSHU+w0PtwoeDA3BFNj3ztU" + "eoh8H1lFXhkUYPmsPFKobdUvwsfn6OOJKMInFeKN/kcE1kVulG1rxeW+b4y4wciM4PDL8wnBj51HcCin2QS09VgtNi11UWv9fQt0" + - "SoB8yuQBhXkVoirPTzQ="; + "SoB8yuQBhXkVoirPTzQ=", // ftp.example.com. 1814400 IN RRSIG A 5 3 1814400 20260901000000 20160901000000 62715 example.com. nZusmWoKUBqvWAbKIqU6rvZgWQt3Sdzy7Xi9NMpJKfhfZdyE87cfsxPDf6/PHOy2+bPxHri2dE5OsPkWsdLbtRNvpne+Gh8L4cO8VdgbfhnAlI/9VGn3r8cwNHyuiYjH02Rqpm2HZHCi7rnUHJmwxvQNfUyIXETOpyR4lDLGEG6FeDuojNm9fw68cosROASn0Zlzk0991MbqMhi7TUsIfgJAWZQc9Ttzr5CORtSyA19gZMCJMiEJuU5jJXJpizC13DiUEKpWDTfYB8PnDd+lh0oTKAWc1dmFl3pNRuU9CUIABQRHidoDVCjr+6N5j4BkPWQnG/CrVhKerRbUtU3uWQ== - static String signedRecord13 = + signedRecord13 = "A2Z0cAdleGFtcGxlA2NvbQAALgABABuvgAEfAAEFAwAbr4BqlhWAV8dvgPT7B2V4YW1wbGUDY29tAJ2brJlqClAar1gGyiKlOq72" + "YFkLd0nc8u14vTTKSSn4X2XchPO3H7MTw3+vzxzstvmz8R64tnROTrD5FrHS27UTb6Z3vhofC+HDvFXYG34ZwJSP/VRp96/HMDR8" + "romIx9NkaqZth2Rwou651ByZsMb0DX1MiFxEzqckeJQyxhBuhXg7qIzZvX8OvHKLETgEp9GZc5NPfdTG6jIYu01LCH4CQFmUHPU7" + "c6+QjkbUsgNfYGTAiTIhCblOYyVyaYswtdw4lBCqVg032AfD5w3fpYdKEygFnNXZhZd6TUblPQlCAAUER4naA1Qo6/ujeY+AZD1k" + - "Jxvwq1YSnq0W1LVN7lk="; + "Jxvwq1YSnq0W1LVN7lk=", // ftp.example.com. 259200 IN AAAA 2001:db8:0:0:12:34:56:78 - static String signedRecord14 = - "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAEgA0AFYAeA=="; + signedRecord14 = + "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAEgA0AFYAeA==", // ftp.example.com. 259200 IN AAAA 2001:db8:0:0:21:43:65:87 - static String signedRecord15 = - "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAIQBDAGUAhw=="; + signedRecord15 = + "A2Z0cAdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAAIQBDAGUAhw==", // ftp.example.com. 259200 IN RRSIG AAAA 5 3 259200 20260901000000 20160901000000 62715 example.com. dZlga09LK/1VFHmE1RSU6JgOk5z6Aa8lrT9gT7/1srtXFauFvhe2dEtaIC8wWuv05ee1Hv+f5xd4YrQyXSUj3Fb+sGRWG6Uo9qAH8BJ4J8ckxWztL61pxlQGDKEblA8nq8/mRKXLmgpkcag8SIFr1BlgPaEP0eRjxdyBlBHb5R9KCEkw9ypzaF8AKrLWmbJFNIAqCryiihFNg0hdft/dGKwr6rKj5T2p1Cs8k5eLT2AtW2w2BsoTGr4ndYdZv7Qok94MQZ21GnOhSrLxf8mwz0uWhUEZPvR1Ef4WOeAsF+NrEuMhkAxIEv/tze4YKbnigCeolMB9oryO11aFu4UJKA== - static String signedRecord16 = + signedRecord16 = "A2Z0cAdleGFtcGxlA2NvbQAALgABAAP0gAEfABwFAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAHWZYGtPSyv9VRR5hNUUlOiY" + "DpOc+gGvJa0/YE+/9bK7VxWrhb4XtnRLWiAvMFrr9OXntR7/n+cXeGK0Ml0lI9xW/rBkVhulKPagB/ASeCfHJMVs7S+tacZUBgyh" + "G5QPJ6vP5kSly5oKZHGoPEiBa9QZYD2hD9HkY8XcgZQR2+UfSghJMPcqc2hfACqy1pmyRTSAKgq8oooRTYNIXX7f3RisK+qyo+U9" + "qdQrPJOXi09gLVtsNgbKExq+J3WHWb+0KJPeDEGdtRpzoUqy8X/JsM9LloVBGT70dRH+FjngLBfjaxLjIZAMSBL/7c3uGCm54oAn" + - "qJTAfaK8jtdWhbuFCSg="; + "qJTAfaK8jtdWhbuFCSg=", // ftp.example.com. 259200 IN RRSIG AAAA 5 3 259200 20260901000000 20160901000000 62715 example.com. tLOODQVeROFNZQeaptvs+i+8lRyx2GCx4aAXIHf5LfeIwubuJxe+nwbSjYWmO5vDLmt1Eyl4ovcnTTyQig5ZUlFjaCiS/LxhGAHAQ0azBPaBCtOJi8i6ptTq0yz/9Bksq23UxWvM7VmAsj/1rTWy+ohUcqHEzDdc4HDeaChGRAOuw9OqeUNpS6uLLtfBVWe3XdoHPPVQz6y4AFHpyzfTts3cHl+97BLDAzDsVdiQiJwMVzh/3xinGqeu/Z2NRkqarRb0vqPB+nPgRAGBXPVT3nzAjaQ8Tuo4VWCqXTwtncoveXAZ4ejmMG9yubWeKy4LCDQ/Drd/TppBYYo/BcbvMg== - static String signedRecord17 = + signedRecord17 = "A2Z0cAdleGFtcGxlA2NvbQAALgABAAP0gAEfABwFAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tALSzjg0FXkThTWUHmqbb7Pov" + "vJUcsdhgseGgFyB3+S33iMLm7icXvp8G0o2Fpjubwy5rdRMpeKL3J008kIoOWVJRY2gokvy8YRgBwENGswT2gQrTiYvIuqbU6tMs" + "//QZLKtt1MVrzO1ZgLI/9a01svqIVHKhxMw3XOBw3mgoRkQDrsPTqnlDaUuriy7XwVVnt13aBzz1UM+suABR6cs307bN3B5fvewS" + "wwMw7FXYkIicDFc4f98Ypxqnrv2djUZKmq0W9L6jwfpz4EQBgVz1U958wI2kPE7qOFVgql08LZ3KL3lwGeHo5jBvcrm1nisuCwg0" + - "Pw63f06aQWGKPwXG7zI="; + "Pw63f06aQWGKPwXG7zI=", // ftp.example.com. 259200 IN NSEC mirror.ftp.example.com. A AAAA RRSIG NSEC - static String signedRecord18 = - "A2Z0cAdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAZAAAAIAAM="; + signedRecord18 = + "A2Z0cAdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAZAAAAIAAM=", // ftp.example.com. 259200 IN RRSIG NSEC 5 3 259200 20260901000000 20160901000000 62715 example.com. JAqwuvRx7rYuMiAJZ7IeOiFi3wg5QxSY0/CV4J3dR8TiTkeSNvbSs6iHV3ysyIXIHlAn9elUyfpree6wCrNTgCFCpuZ4XX9nJaBf9Y5mTo0rOStOWB+/xuQfdt71LN4Z1OpTwjptjDlU3+k/h4aQUPJGpfUf6qtvuvDuF+a6/0P0dY03XCWrc2oGme8uHHKXp5M5c3UzMCD4FEx3E5aBk9ZHYx4lSY/TAUeTGfCMCPMUjfDxZbXfKL6NX7RZDZomFXHTFsEL37lAgDIL834MKPhkhGbJcefL8kuT4gAhXhQsZSQy/VL61arYWFQ55i7a8hz97opFyHjNKaezN0C/7A== - static String signedRecord19 = + signedRecord19 = "A2Z0cAdleGFtcGxlA2NvbQAALgABAAP0gAEfAC8FAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tACQKsLr0ce62LjIgCWeyHjoh" + "Yt8IOUMUmNPwleCd3UfE4k5Hkjb20rOoh1d8rMiFyB5QJ/XpVMn6a3nusAqzU4AhQqbmeF1/ZyWgX/WOZk6NKzkrTlgfv8bkH3be" + "9SzeGdTqU8I6bYw5VN/pP4eGkFDyRqX1H+qrb7rw7hfmuv9D9HWNN1wlq3NqBpnvLhxyl6eTOXN1MzAg+BRMdxOWgZPWR2MeJUmP" + "0wFHkxnwjAjzFI3w8WW13yi+jV+0WQ2aJhVx0xbBC9+5QIAyC/N+DCj4ZIRmyXHny/JLk+IAIV4ULGUkMv1S+tWq2FhUOeYu2vIc" + - "/e6KRch4zSmnszdAv+w="; + "/e6KRch4zSmnszdAv+w=", // ftp.example.com. 259200 IN RRSIG NSEC 5 3 259200 20260901000000 20160901000000 62715 example.com. kyMPSnQ/SpCrep6Vm3/CODGqQs2LCHEMu+He3pXxn5HnNriI8U8S4va77epIozhZN016EIkXxe1XTJLezzxQy2G9RPP5rf2I3/nPdFV0GiV/e/ah00xuWw57ZQb1Qf9MO5+Qbe09J4P39Afxx8jbRaLQ/QJmcJOxr0CF3zJyBoHYco62bro9kKSOxECuQ92J9rI6EVGlAVPF5prOVhXcWPP78p6Xk80qN6gFNnaIkLs9KvLQ+arF5G3N5I5LNRHnck22fR14gJGf127bmjAp5m3oFLET1FH0Gl5m+r+zp49UUZGPfLXkhPvkMjBbraFGTUGujryroCrKw2OYlNMY8A== - static String signedRecord20 = + signedRecord20 = "A2Z0cAdleGFtcGxlA2NvbQAALgABAAP0gAEfAC8FAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAJMjD0p0P0qQq3qelZt/wjgx" + "qkLNiwhxDLvh3t6V8Z+R5za4iPFPEuL2u+3qSKM4WTdNehCJF8XtV0yS3s88UMthvUTz+a39iN/5z3RVdBolf3v2odNMblsOe2UG" + "9UH/TDufkG3tPSeD9/QH8cfI20Wi0P0CZnCTsa9Ahd8ycgaB2HKOtm66PZCkjsRArkPdifayOhFRpQFTxeaazlYV3Fjz+/Kel5PN" + "KjeoBTZ2iJC7PSry0PmqxeRtzeSOSzUR53JNtn0deICRn9du25owKeZt6BSxE9RR9BpeZvq/s6ePVFGRj3y15IT75DIwW62hRk1B" + - "ro68q6AqysNjmJTTGPA="; + "ro68q6AqysNjmJTTGPA=", // mirror.ftp.example.com. 315360000 IN CNAME ftp.example.com. - static String signedRecord21 = - "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAUAARLMAwAAEQNmdHAHZXhhbXBsZQNjb20A"; + signedRecord21 = + "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAAUAARLMAwAAEQNmdHAHZXhhbXBsZQNjb20A", // mirror.ftp.example.com. 315360000 IN RRSIG CNAME 5 4 315360000 20260901000000 20160901000000 62715 example.com. l4MKlMYFR997yhH5ltWPzTUjxjZbQnCE1/cH7pBBi0Ha4zuvfbHiDXc4b1KwgYUXfn7ONUvF9OJtAC6f45jHUVeN+GxdoDs0JOKkXpE8g8z41HcXCDvThhLg2omtWS9QJRUs23B2NnfYRCGzpwCmeWQX1jcOfUncOLDTqlfuKf6b6KQUiHQA/2bff4iwuN+UXlKqGi2kVRTEd94K/AoM1C7z13KzPuFMO8HUhjUjVZu+cJ8o8sqe3LgBCmxWdzh7BB/rZNC9wMi3ZsLfoStWjHFWrrJdQntB1dEX9fLoegVFbljNAR639dkSONA4AeKoS5LdqDQwANb1TbHueUYLDQ== - static String signedRecord22 = + signedRecord22 = "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC4AARLMAwABHwAFBQQSzAMAapYVgFfHb4D0+wdleGFtcGxlA2NvbQCXgwqUxgVH33vK" + "EfmW1Y/NNSPGNltCcITX9wfukEGLQdrjO699seINdzhvUrCBhRd+fs41S8X04m0ALp/jmMdRV434bF2gOzQk4qRekTyDzPjUdxcI" + "O9OGEuDaia1ZL1AlFSzbcHY2d9hEIbOnAKZ5ZBfWNw59Sdw4sNOqV+4p/pvopBSIdAD/Zt9/iLC435ReUqoaLaRVFMR33gr8CgzU" + "LvPXcrM+4Uw7wdSGNSNVm75wnyjyyp7cuAEKbFZ3OHsEH+tk0L3AyLdmwt+hK1aMcVausl1Ce0HV0Rf18uh6BUVuWM0BHrf12RI4" + - "0DgB4qhLkt2oNDAA1vVNse55RgsN"; + "0DgB4qhLkt2oNDAA1vVNse55RgsN", // mirror.ftp.example.com. 315360000 IN RRSIG CNAME 5 4 315360000 20260901000000 20160901000000 62715 example.com. EjC9SWMbebxzWw67O/dcXuzz8xnDe6JWwH0mthKAG6y4ZIkj877AYqDs8sSFFLrhJRz1TVabn7dm+tESfCqcRoeqiAPGBfMyQIqZjwqzxnIISgBRNP3xcKjCPoEYiDX9bbAiIvzBYDW4qTdpR1HzYFkmNPYJUzW09g86y8q377GvoTXOGuTgr7Rda8e/ol4dxAh609rmq7XESVeatuhoTPt+MoKjmNKfky2W/eqabdHj18AF/aUzD15b+2ZVdrxsCi+WE7O14oHJDsVES1fIgxLZmP+P217P5WHAMWyLmHprCcm6evWZ5hPrLf12YYSQZioYRbN0idePORF7/DkrGg== - static String signedRecord23 = + signedRecord23 = "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC4AARLMAwABHwAFBQQSzAMAapYVgFfHb4D0+wdleGFtcGxlA2NvbQASML1JYxt5vHNb" + "Drs791xe7PPzGcN7olbAfSa2EoAbrLhkiSPzvsBioOzyxIUUuuElHPVNVpuft2b60RJ8KpxGh6qIA8YF8zJAipmPCrPGcghKAFE0" + "/fFwqMI+gRiINf1tsCIi/MFgNbipN2lHUfNgWSY09glTNbT2DzrLyrfvsa+hNc4a5OCvtF1rx7+iXh3ECHrT2uartcRJV5q26GhM" + "+34ygqOY0p+TLZb96ppt0ePXwAX9pTMPXlv7ZlV2vGwKL5YTs7XigckOxURLV8iDEtmY/4/bXs/lYcAxbIuYemsJybp69ZnmE+st" + - "/XZhhJBmKhhFs3SJ1485EXv8OSsa"; + "/XZhhJBmKhhFs3SJ1485EXv8OSsa", // mirror.ftp.example.com. 259200 IN NSEC www.example.com. CNAME RRSIG NSEC - static String signedRecord24 = - "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC8AAQAD9IAAGQN3d3cHZXhhbXBsZQNjb20AAAYEAAAAAAM="; + signedRecord24 = + "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC8AAQAD9IAAGQN3d3cHZXhhbXBsZQNjb20AAAYEAAAAAAM=", // mirror.ftp.example.com. 259200 IN RRSIG NSEC 5 4 259200 20260901000000 20160901000000 62715 example.com. p1/1knEZm6vWTIxb4IwZO77r2UXXTuyWWnRxECWCqsVxscBmIa24SwB0wsA6+VWdmjqahNdfATrQ5a22i6Bwv5O17x10dLEIFbSjCFIn91OlfYrys4xoqGW/yYsPWr1WIcq7A5HprxU9Wy5yiztNg2DPz7v8boN6hHUop3td8kj/6Myh4I5KBAwPCRNaJ02bX+Dm/SsexmWg3bPb7PUEPiXBCrqnVv4NXuzuu++7j9TV8nJ9LDjuVqTKxR5G5isXS/4od+G8QXkmWM3HaDO4zYLnMm2I47V6gGS/EUoPim/2y1e5aBKF0f3JVL7xMQgBQkLZBo5OjH8GFAgSlSP9kg== - static String signedRecord25 = + signedRecord25 = "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC4AAQAD9IABHwAvBQQAA/SAapYVgFfHb4D0+wdleGFtcGxlA2NvbQCnX/WScRmbq9ZM" + "jFvgjBk7vuvZRddO7JZadHEQJYKqxXGxwGYhrbhLAHTCwDr5VZ2aOpqE118BOtDlrbaLoHC/k7XvHXR0sQgVtKMIUif3U6V9ivKz" + "jGioZb/Jiw9avVYhyrsDkemvFT1bLnKLO02DYM/Pu/xug3qEdSine13ySP/ozKHgjkoEDA8JE1onTZtf4Ob9Kx7GZaDds9vs9QQ+" + "JcEKuqdW/g1e7O6777uP1NXycn0sOO5WpMrFHkbmKxdL/ih34bxBeSZYzcdoM7jNgucybYjjtXqAZL8RSg+Kb/bLV7loEoXR/clU" + - "vvExCAFCQtkGjk6MfwYUCBKVI/2S"; + "vvExCAFCQtkGjk6MfwYUCBKVI/2S", // mirror.ftp.example.com. 259200 IN RRSIG NSEC 5 4 259200 20260901000000 20160901000000 62715 example.com. bVTQLgj1q1iKDHYO5XJt3IsyDhWefFv5qyX9d11DUPk4m81KAf7ObF2auo+QKKbjHs6PV0Yj9i1djqSpfh2FrYoCPdLH3jKHMJsjKihKwBGpWv5otm1nb/r1jFTYgfDKu4Ru0JRykhNiKWcMaVo3QM14NdOI1l/96zp4KTO/b5qjePoj8KKYceYPXHV2oaqXIZrjptPcjyR1RPg2ahZ1MihG7kXC4k4L+BKuj+7V2EKoLf9eOyE3JqP29FxKNbQC+FDNkd5mZT4lAiGYwz08DGXNSo65G0/FrXr6EQQx0yghnWJRw+UeCu3sAbhq9ErjhvhbFsf5q0+Jm+KTioE/0w== - static String signedRecord26 = + signedRecord26 = "Bm1pcnJvcgNmdHAHZXhhbXBsZQNjb20AAC4AAQAD9IABHwAvBQQAA/SAapYVgFfHb4D0+wdleGFtcGxlA2NvbQBtVNAuCPWrWIoM" + "dg7lcm3cizIOFZ58W/mrJf13XUNQ+TibzUoB/s5sXZq6j5AopuMezo9XRiP2LV2OpKl+HYWtigI90sfeMocwmyMqKErAEala/mi2" + "bWdv+vWMVNiB8Mq7hG7QlHKSE2IpZwxpWjdAzXg104jWX/3rOngpM79vmqN4+iPwophx5g9cdXahqpchmuOm09yPJHVE+DZqFnUy" + "KEbuRcLiTgv4Eq6P7tXYQqgt/147ITcmo/b0XEo1tAL4UM2R3mZlPiUCIZjDPTwMZc1KjrkbT8WtevoRBDHTKCGdYlHD5R4K7ewB" + - "uGr0SuOG+FsWx/mrT4mb4pOKgT/T"; + "uGr0SuOG+FsWx/mrT4mb4pOKgT/T", // www.example.com. 1814400 IN A 11.22.33.44 - static String signedRecord27 = - "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAECxYhLA=="; + signedRecord27 = + "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAECxYhLA==", // www.example.com. 1814400 IN A 55.66.77.88 - static String signedRecord28 = - "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAEN0JNWA=="; + signedRecord28 = + "A3d3dwdleGFtcGxlA2NvbQAAAQABABuvgAAEN0JNWA==", // www.example.com. 1814400 IN RRSIG A 5 3 1814400 20260901000000 20160901000000 62715 example.com. re97TYjxeOeiamfnIbIbws6X5sTwCFgmoCP7H7Hs09fRMYzh7seW/yzYvgdFVKLFBNRT3edKS01bJrAc5qSqM74BNPhY9ieQOIAd9kv+zCLv4tI+w9ax0AZ9ThJ841ldzhjLwtsH1J8MDkFBRxwkrnQ0T7VlnJ+dSNrv/0G1ju6i8PV3JtTm293XTgS3Ys9pPd8ntbC4YdbeZuqFgVTmnZudFzM/aNCgnSbXEEC48s2Ad8t5kM30q5NNOi901byhv3PVq8YvumJtxui9PamxjLJ4oc/YSBAnd/6rzWSXs6wtG9A6IAWAFGiLPUxl1r7mgzslFkpq/Ve+Ranaht1agA== - static String signedRecord29 = + signedRecord29 = "A3d3dwdleGFtcGxlA2NvbQAALgABABuvgAEfAAEFAwAbr4BqlhWAV8dvgPT7B2V4YW1wbGUDY29tAK3ve02I8Xjnompn5yGyG8LO" + "l+bE8AhYJqAj+x+x7NPX0TGM4e7Hlv8s2L4HRVSixQTUU93nSktNWyawHOakqjO+ATT4WPYnkDiAHfZL/swi7+LSPsPWsdAGfU4S" + "fONZXc4Yy8LbB9SfDA5BQUccJK50NE+1ZZyfnUja7/9BtY7uovD1dybU5tvd104Et2LPaT3fJ7WwuGHW3mbqhYFU5p2bnRczP2jQ" + "oJ0m1xBAuPLNgHfLeZDN9KuTTTovdNW8ob9z1avGL7pibcbovT2psYyyeKHP2EgQJ3f+q81kl7OsLRvQOiAFgBRoiz1MZda+5oM7" + - "JRZKav1XvkWp2obdWoA="; + "JRZKav1XvkWp2obdWoA=", // www.example.com. 1814400 IN RRSIG A 5 3 1814400 20260901000000 20160901000000 62715 example.com. sCA0eCHilmA+T1myVClApGUI3j6tOJ5LfL6jOHGJC2QDwAs1WZ6NH+Rnxah9am1REqs2R0wkzcogTwpB8jTEPgud3k6r/UxqrjqVkO3Bn2OzkxOj5O+8n6IKP+Ihb2d3TgGoI/XJyp0hDCDwn4tOmEMm8vJJkRvqRVpIhep3K93mLGrUUTeqLn1zrihE6FJW8F8cK0XhXSgsHtpaP6Z0Di4M9pvSzf7C8dficMR9j2cB0eOofR5dh1ZNO+QLRMcjZzCBFpjd8WdTKPeMwMqyS0JsFb4a2pDuMdwB6gKntpZag28i9+IpIpfxd38nwg3j0DmqiSz1Ae4o65Cn27K5qA== - static String signedRecord30 = + signedRecord30 = "A3d3dwdleGFtcGxlA2NvbQAALgABABuvgAEfAAEFAwAbr4BqlhWAV8dvgPT7B2V4YW1wbGUDY29tALAgNHgh4pZgPk9ZslQpQKRl" + "CN4+rTieS3y+ozhxiQtkA8ALNVmejR/kZ8WofWptURKrNkdMJM3KIE8KQfI0xD4Lnd5Oq/1Maq46lZDtwZ9js5MTo+TvvJ+iCj/i" + "IW9nd04BqCP1ycqdIQwg8J+LTphDJvLySZEb6kVaSIXqdyvd5ixq1FE3qi59c64oROhSVvBfHCtF4V0oLB7aWj+mdA4uDPab0s3+" + "wvHX4nDEfY9nAdHjqH0eXYdWTTvkC0THI2cwgRaY3fFnUyj3jMDKsktCbBW+GtqQ7jHcAeoCp7aWWoNvIvfiKSKX8Xd/J8IN49A5" + - "qoks9QHuKOuQp9uyuag="; + "qoks9QHuKOuQp9uyuag=", // www.example.com. 315360000 IN TXT "dead0123456789" - static String signedRecord31 = - "A3d3dwdleGFtcGxlA2NvbQAAEAABEswDAAAPDmRlYWQwMTIzNDU2Nzg5"; + signedRecord31 = + "A3d3dwdleGFtcGxlA2NvbQAAEAABEswDAAAPDmRlYWQwMTIzNDU2Nzg5", // www.example.com. 315360000 IN RRSIG TXT 5 3 315360000 20260901000000 20160901000000 62715 example.com. jRqGBr6fQ91Z5ND1IbWRthEmQ9uxOMkjqpketlUjU6Nztu+Xi3Nz7OYCqAqAyuDXFLiGu9DffDa9kEh3lI9VPvWvNpaOv7mQ/hiHUzdJtBJJw4uXeC9lnKgpaWDghZQN4QyVD4nj7Vtq2AUF9WD7Pi7dVBLBNhzps9/VL8rAkNP2b57U3nFT1kwHmmtKXlKeurOvJNR9Qr1pGoIkrVj6qvUrEhS3iIXrU4e+WkeJ43spdeYMA/Gn/+zsvX68BCytjnwIPlUubgY8ew06eidd99OFqg8oLSSqzmuNB8M5Augkow0ZRCMDrGWeugvcRQqI6dtBeR5vG4lYAROfaprd/w== - static String signedRecord32 = + signedRecord32 = "A3d3dwdleGFtcGxlA2NvbQAALgABEswDAAEfABAFAxLMAwBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAI0ahga+n0PdWeTQ9SG1kbYR" + "JkPbsTjJI6qZHrZVI1Ojc7bvl4tzc+zmAqgKgMrg1xS4hrvQ33w2vZBId5SPVT71rzaWjr+5kP4Yh1M3SbQSScOLl3gvZZyoKWlg" + "4IWUDeEMlQ+J4+1batgFBfVg+z4u3VQSwTYc6bPf1S/KwJDT9m+e1N5xU9ZMB5prSl5SnrqzryTUfUK9aRqCJK1Y+qr1KxIUt4iF" + "61OHvlpHieN7KXXmDAPxp//s7L1+vAQsrY58CD5VLm4GPHsNOnonXffThaoPKC0kqs5rjQfDOQLoJKMNGUQjA6xlnroL3EUKiOnb" + - "QXkebxuJWAETn2qa3f8="; + "QXkebxuJWAETn2qa3f8=", // www.example.com. 315360000 IN RRSIG TXT 5 3 315360000 20260901000000 20160901000000 62715 example.com. D1bnE1hTUSfI5jJyqiDWanvrqGzKiGF5QSXXIhu1dorNuZmy3Q2wO3SQWO20jYpsfOx08Nw159VsEofLgXUGKtAnfoEMBhCnQ+RHnDhqnFkPz+8k4pIRVq4hCiyN5pTiJQVu25ou3YnHsK3e3aWkpuOiByRChp6ix6VFMoYWe7I4wvzi+XMWbfPHpgKLdBgE7DkpM7l+oIRKX/K0tbKZcdY2yUit1hil38JSftAqZRibLuu3EBl3Aw5ChTPc2czVmZiRyI1pCQMOgw0dDK+jgBCfRTaZeaZTJRq0F8Ja14LKLAletdHMVFMcdNGWp2QdACGp/stHnhX2qKOb/Lwq9A== - static String signedRecord33 = + signedRecord33 = "A3d3dwdleGFtcGxlA2NvbQAALgABEswDAAEfABAFAxLMAwBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAA9W5xNYU1EnyOYycqog1mp7" + "66hsyohheUEl1yIbtXaKzbmZst0NsDt0kFjttI2KbHzsdPDcNefVbBKHy4F1BirQJ36BDAYQp0PkR5w4apxZD8/vJOKSEVauIQos" + "jeaU4iUFbtuaLt2Jx7Ct3t2lpKbjogckQoaeoselRTKGFnuyOML84vlzFm3zx6YCi3QYBOw5KTO5fqCESl/ytLWymXHWNslIrdYY" + "pd/CUn7QKmUYmy7rtxAZdwMOQoUz3NnM1ZmYkciNaQkDDoMNHQyvo4AQn0U2mXmmUyUatBfCWteCyiwJXrXRzFRTHHTRlqdkHQAh" + - "qf7LR54V9qijm/y8KvQ="; + "qf7LR54V9qijm/y8KvQ=", // www.example.com. 259200 IN AAAA 2001:db8:0:0:4:3:2:1 - static String signedRecord34 = - "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABAADAAIAAQ=="; + signedRecord34 = + "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABAADAAIAAQ==", // www.example.com. 259200 IN AAAA 2001:db8:0:0:5:6:7:8 - static String signedRecord35 = - "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABQAGAAcACA=="; + signedRecord35 = + "A3d3dwdleGFtcGxlA2NvbQAAHAABAAP0gAAQIAENuAAAAAAABQAGAAcACA==", // www.example.com. 259200 IN RRSIG AAAA 5 3 259200 20260901000000 20160901000000 62715 example.com. EprMPo8kME1AluL5zllJ4i42wsDOtqM3JzN9HfHlOgFNaFyIoAVQGc/GK2mtm/Zsh1+zPYHHp1rG7roy4+OWFeWZ6ygX7TclxcA9r9TZc4XztDvyGkTC9vzLFjDEnZbe9HQM2y3NCkGWupT57Eqmj5HlNKAtt6cpUgwTR4S7/8rRO6SfTO2xQEIMqElOzFWKqcIA2WN0qGrKA2uOoQJqh1XwKHNcBM3N0ZlvIE8xPZWG16RoqApqeIG4rjJV7hyYgPkB2HTSxInoMIQoVQjFt3JNj0GM2q0BswL6UB3NKw5lwMhMiIib3rbOycL1KxA6uXzL38RvkPo1u6hJUzf+eQ== - static String signedRecord36 = + signedRecord36 = "A3d3dwdleGFtcGxlA2NvbQAALgABAAP0gAEfABwFAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tABKazD6PJDBNQJbi+c5ZSeIu" + "NsLAzrajNyczfR3x5ToBTWhciKAFUBnPxitprZv2bIdfsz2Bx6daxu66MuPjlhXlmesoF+03JcXAPa/U2XOF87Q78hpEwvb8yxYw" + "xJ2W3vR0DNstzQpBlrqU+exKpo+R5TSgLbenKVIME0eEu//K0Tukn0ztsUBCDKhJTsxViqnCANljdKhqygNrjqECaodV8ChzXATN" + "zdGZbyBPMT2VhtekaKgKaniBuK4yVe4cmID5Adh00sSJ6DCEKFUIxbdyTY9BjNqtAbMC+lAdzSsOZcDITIiIm962zsnC9SsQOrl8" + - "y9/Eb5D6NbuoSVM3/nk="; + "y9/Eb5D6NbuoSVM3/nk=", // www.example.com. 259200 IN RRSIG AAAA 5 3 259200 20260901000000 20160901000000 62715 example.com. TkofVFFmlNkSNDrKqZCRcBoSKNVb+CwOzPjR+i+OU+aEgTd9cddTOezzG5knGlfT9kwv2C2T10QYnsMfLsqRuZCEpT9FMA0PF80RTiTMDHxiccufIjgThF02Hn6s6/YllwGoY3Zf5XEYu8JmlZ2IEd3eUh6beZTLpVbjnvYZHkg5/x/sf6BJ2Llpfp8KMct+2K21ct7H+IEBXa13PHVUeW6xS2bT+SbFv4OH9xdLh2P1hpQ8xNRWo4mejQ8BO5DVt2BBcr1Arw2hOIK9bA87Tb+16xfpcjEidu3Ugbcn6t4vId6oSwTXfnI42rUwzbtLskvwmdzXc+sAFK//EB9EgA== - static String signedRecord37 = + signedRecord37 = "A3d3dwdleGFtcGxlA2NvbQAALgABAAP0gAEfABwFAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAE5KH1RRZpTZEjQ6yqmQkXAa" + "EijVW/gsDsz40fovjlPmhIE3fXHXUzns8xuZJxpX0/ZML9gtk9dEGJ7DHy7KkbmQhKU/RTANDxfNEU4kzAx8YnHLnyI4E4RdNh5+" + "rOv2JZcBqGN2X+VxGLvCZpWdiBHd3lIem3mUy6VW4572GR5IOf8f7H+gSdi5aX6fCjHLftittXLex/iBAV2tdzx1VHlusUtm0/km" + "xb+Dh/cXS4dj9YaUPMTUVqOJno0PATuQ1bdgQXK9QK8NoTiCvWwPO02/tesX6XIxInbt1IG3J+reLyHeqEsE135yONq1MM27S7JL" + - "8Jnc13PrABSv/xAfRIA="; + "8Jnc13PrABSv/xAfRIA=", // www.example.com. 259200 IN NSEC mirror.www.example.com. A TXT AAAA RRSIG NSEC - static String signedRecord38 = - "A3d3dwdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAZAAIAIAAM="; + signedRecord38 = + "A3d3dwdleGFtcGxlA2NvbQAALwABAAP0gAAgBm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAZAAIAIAAM=", // www.example.com. 259200 IN RRSIG NSEC 5 3 259200 20260901000000 20160901000000 62715 example.com. C2DCU+CiEGatnEM2dsHF0FJdr3aoHnWP1VsfEnqaNDAynnFWRS9b5rRna8qFwMxh7qDvMy+mbNBI4QgCTlPwisExvb2G1Pbz/zKbw62VaxYs6qhwzCQRsUsWiRxXMj6WeX8UozQ93opfGUpiPExZpHFJ7afQqF5E4CUeLPxxAG/HMW3ngm9QjABobTbAq5RAYtZ6mMT28jQl/PgcMuM6fpfQBxi4xpCQPucJGk9rdedTmMe3UyeMxXjoEn3dJadSszvDgillzsm3r92MdpvbCygjbrp4ki3AEGfg14dPQy7xLUV1HmN3/WMppr7YxCubOqe4PEum3z/au53k4XWJHg== - static String signedRecord39 = + signedRecord39 = "A3d3dwdleGFtcGxlA2NvbQAALgABAAP0gAEfAC8FAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAAtgwlPgohBmrZxDNnbBxdBS" + "Xa92qB51j9VbHxJ6mjQwMp5xVkUvW+a0Z2vKhcDMYe6g7zMvpmzQSOEIAk5T8IrBMb29htT28/8ym8OtlWsWLOqocMwkEbFLFokc" + "VzI+lnl/FKM0Pd6KXxlKYjxMWaRxSe2n0KheROAlHiz8cQBvxzFt54JvUIwAaG02wKuUQGLWepjE9vI0Jfz4HDLjOn6X0AcYuMaQ" + "kD7nCRpPa3XnU5jHt1MnjMV46BJ93SWnUrM7w4IpZc7Jt6/djHab2wsoI266eJItwBBn4NeHT0Mu8S1FdR5jd/1jKaa+2MQrmzqn" + - "uDxLpt8/2rud5OF1iR4="; + "uDxLpt8/2rud5OF1iR4=", // www.example.com. 259200 IN RRSIG NSEC 5 3 259200 20260901000000 20160901000000 62715 example.com. mZA6rFOmeT+kIG9QFV5uxFItow488us72IJKEPAvdAfkP55Aa6AsM3VuHJuz+PAEnXHGa8BapLcmp6DVy/CT2F/Cse7TecdPDYBFN/JJptF0iY5awvIidOMcU+K81jcrNJ8ODZIXpCnnG2b1VYnF5BjitCbGLIddhpjI3htMRQDNARRiKEyi83kBR5Z41fjh4/rmXllxj1xhm76g38KFdnEFpTaGCXX8ygjGtNcZGm1GbHVm7t6mNgqztR+JBy+KqrtxPw2GakrTEpiohb+QtDHcv0WsfhFeWA0mqvQXZ+fmsPBezRmd+SLE7CpMb3/l3L/dIOzftCmLFANgqwmcZQ== - static String signedRecord40 = + signedRecord40 = "A3d3dwdleGFtcGxlA2NvbQAALgABAAP0gAEfAC8FAwAD9IBqlhWAV8dvgPT7B2V4YW1wbGUDY29tAJmQOqxTpnk/pCBvUBVebsRS" + "LaMOPPLrO9iCShDwL3QH5D+eQGugLDN1bhybs/jwBJ1xxmvAWqS3Jqeg1cvwk9hfwrHu03nHTw2ARTfySabRdImOWsLyInTjHFPi" + "vNY3KzSfDg2SF6Qp5xtm9VWJxeQY4rQmxiyHXYaYyN4bTEUAzQEUYihMovN5AUeWeNX44eP65l5ZcY9cYZu+oN/ChXZxBaU2hgl1" + "/MoIxrTXGRptRmx1Zu7epjYKs7UfiQcviqq7cT8NhmpK0xKYqIW/kLQx3L9FrH4RXlgNJqr0F2fn5rDwXs0ZnfkixOwqTG9/5dy/" + - "3SDs37QpixQDYKsJnGU="; + "3SDs37QpixQDYKsJnGU=", // mirror.www.example.com. 315360000 IN CNAME www.example.com. - static String signedRecord41 = - "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAUAARLMAwAAEQN3d3cHZXhhbXBsZQNjb20A"; + signedRecord41 = + "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAAUAARLMAwAAEQN3d3cHZXhhbXBsZQNjb20A", // mirror.www.example.com. 315360000 IN RRSIG CNAME 5 4 315360000 20260901000000 20160901000000 62715 example.com. DwcFq7JYXV4MMD4Uz+r88qQ30BrsAhR4iOGIGEOi9KjxU3X387u+SEdb8o4bHL9iRQCTuD+Fv5UoB89yksfWbLL9Q+c9ykoL982uDfsf976I9w7oX+GBd/ow4G4oyBWBmoSrIFe/Q1o4+3Ah07qkFbxuE1r26dwt+85vAQaTnOr95nSNVTiUAtfL4gOmFr+A4qf2RU24yE7xdRrByMlW5jcyf34n7qg/yQpt6fvL4Azn+fLTj1lJVwu1FRutcut54aKrLnehhpw+2HsaguRrxig6FhjnHPEgznDgsnjPFdAatLr77sIOnobCJU1agfDzs9qPD0tFA4XxYDTP9qm7vw== - static String signedRecord42 = + signedRecord42 = "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC4AARLMAwABHwAFBQQSzAMAapYVgFfHb4D0+wdleGFtcGxlA2NvbQAPBwWrslhdXgww" + "PhTP6vzypDfQGuwCFHiI4YgYQ6L0qPFTdffzu75IR1vyjhscv2JFAJO4P4W/lSgHz3KSx9Zssv1D5z3KSgv3za4N+x/3voj3Duhf" + "4YF3+jDgbijIFYGahKsgV79DWjj7cCHTuqQVvG4TWvbp3C37zm8BBpOc6v3mdI1VOJQC18viA6YWv4Dip/ZFTbjITvF1GsHIyVbm" + "NzJ/fifuqD/JCm3p+8vgDOf58tOPWUlXC7UVG61y63nhoqsud6GGnD7YexqC5GvGKDoWGOcc8SDOcOCyeM8V0Bq0uvvuwg6ehsIl" + - "TVqB8POz2o8PS0UDhfFgNM/2qbu/"; + "TVqB8POz2o8PS0UDhfFgNM/2qbu/", // mirror.www.example.com. 315360000 IN RRSIG CNAME 5 4 315360000 20260901000000 20160901000000 62715 example.com. ScGf3cmXQ/rR8MG1UHuB66bi+IOxvMbRo5f9Q9J9pqtALqnomqj8LyfH6C99QqN+59paJ56yDGA0cd/JQVnRiwHgZawqZMwXXYuOPZY71TqiR4pIWGF3+u5t9wPtfNLw4uv4lOixC0tSBgze1yuFABX+s9o4IKsZvW4HXOUz6e9cLmcTaeqKiA39/SCBqPjyMLqrnxsPiCLOHK3PoryPS48aPE22K8KkAUluZ2pHOp0dnJGJlNXfQF4M4/ogjoW3c6gYpGaNeH0H/dZepXFTkgCyuKH/WB/Ql342jH6iWZRB9w2b+oSuU/ELuhLZa0Um3n4IEqaLO8ooD9X71m4kSg== - static String signedRecord43 = + signedRecord43 = "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC4AARLMAwABHwAFBQQSzAMAapYVgFfHb4D0+wdleGFtcGxlA2NvbQBJwZ/dyZdD+tHw" + "wbVQe4HrpuL4g7G8xtGjl/1D0n2mq0AuqeiaqPwvJ8foL31Co37n2lonnrIMYDRx38lBWdGLAeBlrCpkzBddi449ljvVOqJHikhY" + "YXf67m33A+180vDi6/iU6LELS1IGDN7XK4UAFf6z2jggqxm9bgdc5TPp71wuZxNp6oqIDf39IIGo+PIwuqufGw+IIs4crc+ivI9L" + "jxo8TbYrwqQBSW5nakc6nR2ckYmU1d9AXgzj+iCOhbdzqBikZo14fQf91l6lcVOSALK4of9YH9CXfjaMfqJZlEH3DZv6hK5T8Qu6" + - "EtlrRSbefggSpos7yigP1fvWbiRK"; + "EtlrRSbefggSpos7yigP1fvWbiRK", // mirror.www.example.com. 259200 IN NSEC example.com. CNAME RRSIG NSEC - static String signedRecord44 = - "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC8AAQAD9IAAFQdleGFtcGxlA2NvbQAABgQAAAAAAw=="; + signedRecord44 = + "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC8AAQAD9IAAFQdleGFtcGxlA2NvbQAABgQAAAAAAw==", // mirror.www.example.com. 259200 IN RRSIG NSEC 5 4 259200 20260901000000 20160901000000 62715 example.com. laV5u8JvO3Q8TXq3lUm+Knr4Kzk4Jj9/+BOL8vuUZhoj8WIvtFRhB7kp+uFfITxBg2lgQFQk31D3GbsNkuVMqC5v91CRMWdS26/+DIIY14yzGurmUoGRTtwcifz9hQPqUArCKt3D4KN+47PLBarMxphIBB/AgDL2d8Ut25zpVX544GINCbZf1aWulNzL0P1J1tO78IDKCYzifKUn79CwlinCPW7vLnbDglc5flUeeTW6JDF9tZwE4CeBj9UFFt9O7LzsQRTB0YNHBDJFmd9gF7fpzKU+Kk3iiOh4q5SBKkOIUXbkjDGy25pn1JGA2SpcUNjwDltpMeg/hPg6W6h7qg== - static String signedRecord45 = + signedRecord45 = "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC4AAQAD9IABHwAvBQQAA/SAapYVgFfHb4D0+wdleGFtcGxlA2NvbQCVpXm7wm87dDxN" + "ereVSb4qevgrOTgmP3/4E4vy+5RmGiPxYi+0VGEHuSn64V8hPEGDaWBAVCTfUPcZuw2S5UyoLm/3UJExZ1Lbr/4MghjXjLMa6uZS" + "gZFO3ByJ/P2FA+pQCsIq3cPgo37js8sFqszGmEgEH8CAMvZ3xS3bnOlVfnjgYg0Jtl/Vpa6U3MvQ/UnW07vwgMoJjOJ8pSfv0LCW" + "KcI9bu8udsOCVzl+VR55NbokMX21nATgJ4GP1QUW307svOxBFMHRg0cEMkWZ32AXt+nMpT4qTeKI6HirlIEqQ4hRduSMMbLbmmfU" + - "kYDZKlxQ2PAOW2kx6D+E+DpbqHuq"; + "kYDZKlxQ2PAOW2kx6D+E+DpbqHuq", // mirror.www.example.com. 259200 IN RRSIG NSEC 5 4 259200 20260901000000 20160901000000 62715 example.com. mx4aBYNkoizyDXpkAZ9QsOmKkAz0VDgXXP8MHosC3JeMENZrcE9CuEC1CxT7EOnkZTwxTQgBw1rmNzNZSKj8SqlaFUThyVyM8c0H43X3Yi+EuOwFGYMD8RDy9okA/WFmf+9sNfY1XeEHlJZVQ7irBV1zr3Cl3Hc7WzLmPCFgkAR5D147Z+77B0dnBT+HK39sWAifEYILYM5zsoNMZojjHCfwR4/IFxlZQEGw+e8XuxDT+ugVln40prwMNiQl4ivNT5MlR8vXBCU7frEqDN6+EfbuZlM84aFrRF3hrixUUtLM52Q6kg2oPybNYSLmdFZpv39XEQcnZmRZfXrMNSmh9Q== - static String signedRecord46 = + signedRecord46 = "Bm1pcnJvcgN3d3cHZXhhbXBsZQNjb20AAC4AAQAD9IABHwAvBQQAA/SAapYVgFfHb4D0+wdleGFtcGxlA2NvbQCbHhoFg2SiLPIN" + "emQBn1Cw6YqQDPRUOBdc/wweiwLcl4wQ1mtwT0K4QLULFPsQ6eRlPDFNCAHDWuY3M1lIqPxKqVoVROHJXIzxzQfjdfdiL4S47AUZ" + "gwPxEPL2iQD9YWZ/72w19jVd4QeUllVDuKsFXXOvcKXcdztbMuY8IWCQBHkPXjtn7vsHR2cFP4crf2xYCJ8RggtgznOyg0xmiOMc" + "J/BHj8gXGVlAQbD57xe7ENP66BWWfjSmvAw2JCXiK81PkyVHy9cEJTt+sSoM3r4R9u5mUzzhoWtEXeGuLFRS0sznZDqSDag/Js1h" + - "IuZ0Vmm/f1cRBydmZFl9esw1KaH1"; + "IuZ0Vmm/f1cRBydmZFl9esw1KaH1", // example.com. 1234000 IN DS 17515 5 2 26EA264309D0568C5E7EC7DF412A5CB03CE2EACAAEE366B2F66D23611C0D7BF5 - static String dsRecord0 = - "B2V4YW1wbGUDY29tAAArAAEAEtRQACREawUCJuomQwnQVoxefsffQSpcsDzi6squ42ay9m0jYRwNe/U="; + dsRecord0 = + "B2V4YW1wbGUDY29tAAArAAEAEtRQACREawUCJuomQwnQVoxefsffQSpcsDzi6squ42ay9m0jYRwNe/U=", // example.com. 1234000 IN DS 17515 5 2 26EA264309D0568C5E7EC7DF412A5CB03CE2EACAAEE366B2F66D23611C0D7BF5 - static String dsRecord1 = - "B2V4YW1wbGUDY29tAAArAAEAEtRQACREawUCJuomQwnQVoxefsffQSpcsDzi6squ42ay9m0jYRwNe/U="; + dsRecord1 = + "B2V4YW1wbGUDY29tAAArAAEAEtRQACREawUCJuomQwnQVoxefsffQSpcsDzi6squ42ay9m0jYRwNe/U=", // example.com. 31556952 IN DNSKEY 256 3 5 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAymLTAjeDfcIYUKyGqKhUrl/khgBJA9TNqrzZOfMmNFarbONxDnsd6WoHnqi5xGrNBV6ZGIGwc4tebG/XWBOVvI7Pb10ZHjm4muKnzA9Qt+TOwpukN/phOzDwFZx+QHHu18jePgmFstoSUJzb4baPSoLorCYbRKdIAHhSEALfL5LE8ByP/MwWCO6jD0wEZlzGsnow5wxnuVWhBt8FMpRN9FgrJ3YkfTxKz8IZpSx2yjf9IIa/lGvKxcUoAyrdWam14l3fBTI6tfx2nWv56L846wXjqtcZvQeO0ewFdwNw2kWTT01kWeG6lXa1yo6CARkvVaF9zcrVNxWUm7CIvKibwQIDAQAB // keytag 62715 - public static String zoneDnsKeyRecord = + zoneDnsKeyRecord = "ZXhhbXBsZS5jb20uCQkzMTU1Njk1MglJTglETlNLRVkJMjU2IDMgNSBNSUlCSWpBTkJna3Foa2lH\nOXcwQkFRRUZBQU9DQVE4QU" + "1JSUJDZ0tDQVFFQXltTFRBamVEZmNJWVVLeUdxS2hVcmwva2hnQkpB\nOVROcXJ6Wk9mTW1ORmFyYk9OeERuc2Q2V29IbnFpNXhH" + "ck5CVjZaR0lHd2M0dGViRy9YV0JPVnZJ\nN1BiMTBaSGptNG11S256QTlRdCtUT3dwdWtOL3BoT3pEd0ZaeCtRSEh1MThqZVBnbU" + "ZzdG9TVUp6\nYjRiYVBTb0xvckNZYlJLZElBSGhTRUFMZkw1TEU4QnlQL013V0NPNmpEMHdFWmx6R3Nub3c1d3hu\ndVZXaEJ0OE" + "ZNcFJOOUZnckozWWtmVHhLejhJWnBTeDJ5amY5SUlhL2xHdkt4Y1VvQXlyZFdhbTE0\nbDNmQlRJNnRmeDJuV3Y1Nkw4NDZ3WGpx" + - "dGNadlFlTzBld0Zkd053MmtXVFQwMWtXZUc2bFhhMXlv\nNkNBUmt2VmFGOXpjclZOeFdVbTdDSXZLaWJ3UUlEQVFBQg=="; + "dGNadlFlTzBld0Zkd053MmtXVFQwMWtXZUc2bFhhMXlv\nNkNBUmt2VmFGOXpjclZOeFdVbTdDSXZLaWJ3UUlEQVFBQg==", // example.com. 315569520 IN DNSKEY 257 3 5 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAly/1SbKJpzYwOJF2Xie7W6eLyQ/W1Ar8hKss7ZbIkcg23bt8QQOFVLPlYG9luYzAULZgTWa4gFlrBkEzO410oy8VFZgB5x11/LioWGJmy9h+H6R1Fy0QFP3eFGKb9tLuAJGMaSRTcbRADJQYiDJ6uuWobTg2fNxlb7B1lz7wOVk/yTV795k+vb+lJx8xZu9vNyIkUy2/LF4J0oXKCPUEee0hpBglEeFcnMSHjO+LtY5Y6E8+fp3d38+Tikmy/2Xu0R35MmCWXuwqYMO+1p7spNzsuUFkhTWt0yJKc8pC91V6e3gsD6iwMy3Q0EEEQ7q1z+M9vLIYtmC27mHmdDh1DQIDAQAB // keytag 62715 - public static String keyDnsKeyRecord = + keyDnsKeyRecord = "ZXhhbXBsZS5jb20uCQkzMTU1Njk1MjAJSU4JRE5TS0VZCTI1NyAzIDUgTUlJQklqQU5CZ2txaGtp\nRzl3MEJBUUVGQUFPQ0FROE" + "FNSUlCQ2dLQ0FRRUFseS8xU2JLSnB6WXdPSkYyWGllN1c2ZUx5US9X\nMUFyOGhLc3M3WmJJa2NnMjNidDhRUU9GVkxQbFlHOWx1" + "WXpBVUxaZ1RXYTRnRmxyQmtFek80MTBv\neThWRlpnQjV4MTEvTGlvV0dKbXk5aCtINlIxRnkwUUZQM2VGR0tiOXRMdUFKR01hU1" + @@ -568,35 +569,34 @@ public class SigningData { "hLQ1BVRWVlMGhwQmdsRWVGY25NU0hqTytMdFk1WTZFOCtmcDNkMzgrVGlrbXkvMlh1\nMFIzNU1tQ1dYdXdxWU1PKzFwN3NwTnpz" + "dVVGa2hUV3QweUpLYzhwQzkxVjZlM2dzRDZpd015M1Ew\nRUVFUTdxMXorTTl2TElZdG1DMjdtSG1kRGgxRFFJREFRQUI="; - public static List signedList; - public static List postZoneList; - public static List dsRecordList = new ArrayList<>(); + public static List signedList, postZoneList, dsRecordList = new ArrayList<>(); - public static List getStringsNamedLike(String name, Class clazz) { + private static final Logger LOGGER = Logger.getLogger(SigningData.class); + + public static List getStringsNamedLike(final String name, final Class clazz) { return Arrays.asList(clazz.getDeclaredFields()).stream() .filter(field -> field.getName().contains(name)) .map(field -> { try { return field.get(null).toString(); } catch (Exception e) { - System.out.println("Failed getting static field " + name + " for class " + clazz); - e.printStackTrace(); + LOGGER.error("Failed getting static field " + name + " for class " + clazz + ": " + e.getMessage(), e); } return null; }) .collect(toList()); } - static Record toRecord(String record) { + static Record toRecord(final String record) { try { return Record.fromWire(Base64.getDecoder().decode(record.getBytes()), Section.ANSWER); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error(e.getMessage(), e); } return null; } - public static void recreateData() throws Exception { + public static void recreateData() { List encodedRecords = getStringsNamedLike("signedRecord", SigningData.class); signedList = encodedRecords.stream().map(SigningData::toRecord).collect(toList()); diff --git a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/ZoneTestRecords.java b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/ZoneTestRecords.java index e9563cf052..211aa8d5bf 100644 --- a/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/ZoneTestRecords.java +++ b/traffic_router/shared/src/main/java/org/apache/traffic_control/traffic_router/shared/ZoneTestRecords.java @@ -19,11 +19,16 @@ import org.apache.traffic_control.traffic_router.secure.Pkcs1KeySpecDecoder; import org.xbill.DNS.*; +import java.io.IOException; import java.net.Inet6Address; import java.net.InetAddress; +import java.net.UnknownHostException; +import java.security.GeneralSecurityException; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; @@ -35,7 +40,7 @@ import static java.util.Base64.getMimeDecoder; -@SuppressWarnings("PMD") +@SuppressWarnings("PMD.ClassNamingConventions") public class ZoneTestRecords { public static List records; @@ -52,10 +57,10 @@ public class ZoneTestRecords { public static KeyPair ksk2; public static KeyPair zsk2; - static List generateKeyPairs() throws Exception { - KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); + static List generateKeyPairs() throws NoSuchAlgorithmException, NoSuchProviderException { + final KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048, SecureRandom.getInstance("SHA1PRNG","SUN")); - List keyPairs = new ArrayList<>(); + final List keyPairs = new ArrayList<>(); keyPairs.add(keyPairGenerator.generateKeyPair()); keyPairs.add(keyPairGenerator.generateKeyPair()); keyPairs.add(keyPairGenerator.generateKeyPair()); @@ -63,57 +68,57 @@ static List generateKeyPairs() throws Exception { return keyPairs; } - private static KeyPair recreateKeyPair(String publicKey, String privateKey) throws Exception { - PrivateKey privateKeyCopy = new BindPrivateKey().decode(new String(getMimeDecoder().decode(privateKey))); - PublicKey publicKeyCopy = KeyFactory.getInstance("RSA").generatePublic(new Pkcs1KeySpecDecoder().decode(publicKey)); + private static KeyPair recreateKeyPair(final String publicKey, final String privateKey) throws GeneralSecurityException, IOException { + final PrivateKey privateKeyCopy = new BindPrivateKey().decode(new String(getMimeDecoder().decode(privateKey))); + final PublicKey publicKeyCopy = KeyFactory.getInstance("RSA").generatePublic(new Pkcs1KeySpecDecoder().decode(publicKey)); return new KeyPair(publicKeyCopy, privateKeyCopy); } - public static List generateZoneRecords(boolean makeNewKeyPairs) throws Exception { + public static List generateZoneRecords(final boolean makeNewKeyPairs) throws IOException, GeneralSecurityException { start = new Date(System.currentTimeMillis() - (24 * 3600 * 1000)); expiration = new Date(System.currentTimeMillis() + (7 * 24 * 3600 * 1000)); origin = new Name("example.com."); - Duration tenYears = Duration.ofDays(3650); - Duration oneDay = Duration.ofDays(1); - Duration threeDays = Duration.ofDays(3); - Duration threeWeeks = Duration.ofDays(21); + final Duration tenYears = Duration.ofDays(3650); + final Duration oneDay = Duration.ofDays(1); + final Duration threeDays = Duration.ofDays(3); + final Duration threeWeeks = Duration.ofDays(21); - long oneHour = 3600; - Name nameServer1 = new Name("ns1.example.com."); - Name nameServer2 = new Name("ns2.example.com."); + final long oneHour = 3600; + final Name nameServer1 = new Name("ns1.example.com."); + final Name nameServer2 = new Name("ns2.example.com."); - Name adminEmail = new Name("admin.example.com."); + final Name adminEmail = new Name("admin.example.com."); - Name webServer = new Name("www.example.com."); - Name ftpServer = new Name("ftp.example.com."); + final Name webServer = new Name("www.example.com."); + final Name ftpServer = new Name("ftp.example.com."); - Name webMirror = new Name("mirror.www.example.com."); - Name ftpMirror = new Name("mirror.ftp.example.com."); + final Name webMirror = new Name("mirror.www.example.com."); + final Name ftpMirror = new Name("mirror.ftp.example.com."); - String txtRecord = new String("dead0123456789"); + final String txtRecord = "dead0123456789"; records = new ArrayList<>(Arrays.asList( - new AAAARecord(webServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByName("2001:db8::5:6:7:8")), - new AAAARecord(ftpServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByName("2001:db8::12:34:56:78")), + new AAAARecord(webServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByAddress(new byte[]{32, 1, 13, -72, 0, 0, 0, 0, 0, 5, 0, 6, 0, 7, 0, 8})), // 2001:db8::5:6:7:8 + new AAAARecord(ftpServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByAddress(new byte[]{32, 1, 13, -72, 0, 0, 0, 0, 0, 18, 0, 52, 0, 86, 0, 120})), // 2001:db8::12:34:56:78 new NSRecord(origin, DClass.IN, tenYears.getSeconds(), nameServer1), new NSRecord(origin, DClass.IN, tenYears.getSeconds(), nameServer2), new ARecord(webServer, DClass.IN, threeWeeks.getSeconds(), InetAddress.getByAddress(new byte[] {11, 22, 33, 44})), new ARecord(webServer, DClass.IN, threeWeeks.getSeconds(), InetAddress.getByAddress(new byte[] {55, 66, 77, 88})), new ARecord(ftpServer, DClass.IN, threeWeeks.getSeconds(), InetAddress.getByAddress(new byte[] {12, 34, 56, 78})), new ARecord(ftpServer, DClass.IN, threeWeeks.getSeconds(), InetAddress.getByAddress(new byte[] {21, 43, 65, 87})), - new AAAARecord(webServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByName("2001:db8::4:3:2:1")), + new AAAARecord(webServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByAddress(new byte[]{32, 1, 13, -72, 0, 0, 0, 0, 0, 4, 0, 3, 0, 2, 0, 1})), // 2001:db8::4:3:2:1 new SOARecord(origin, DClass.IN, tenYears.getSeconds(), nameServer1, adminEmail, 2016091400L, oneDay.getSeconds(), oneHour, threeWeeks.getSeconds(), threeDays.getSeconds()), - new AAAARecord(ftpServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByName("2001:db8::21:43:65:87")), + new AAAARecord(ftpServer, DClass.IN, threeDays.getSeconds(), Inet6Address.getByAddress(new byte[]{32, 1, 13, -72, 0, 0, 0, 0, 0, 33, 0, 67, 0, 101, 0, -121})), // 2001:db8::21:43:65:87 new CNAMERecord(webMirror, DClass.IN, tenYears.getSeconds(), webServer), new CNAMERecord(ftpMirror, DClass.IN, tenYears.getSeconds(), ftpServer), new TXTRecord(webServer, DClass.IN, tenYears.getSeconds(), txtRecord) )); if (makeNewKeyPairs) { - List keyPairs = generateKeyPairs(); + final List keyPairs = generateKeyPairs(); ksk1 = keyPairs.get(0); zsk1 = keyPairs.get(1); ksk2 = keyPairs.get(2); From 0d2cc14ee5094c0ab985a8c8ad3586bb9f2778d2 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Fri, 3 Dec 2021 10:50:47 -0700 Subject: [PATCH 21/23] Remove temporary hack from #3392 that resolved an SSL issue in Tomcat --- .../protocol/RouterNioEndpoint.java | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java index 64ad10cbea..b75ae68564 100644 --- a/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java +++ b/traffic_router/connector/src/main/java/org/apache/traffic_control/traffic_router/protocol/RouterNioEndpoint.java @@ -127,40 +127,6 @@ protected SSLHostConfig getSSLHostConfig(final String sniHostName){ return super.getSSLHostConfig(sniHostName == null ? null : sniHostName.toLowerCase()); } - @Override - protected SocketProcessorBase createSocketProcessor( - final SocketWrapperBase socketWrapper, final SocketEvent event){ - return new RouterSocketProcessor(socketWrapper, event); - } - - /** - * This class is the equivalent of the Worker, but will simply use in an - * external Executor thread pool. - */ - protected class RouterSocketProcessor extends SocketProcessor { - - public RouterSocketProcessor(final SocketWrapperBase socketWrapper, final SocketEvent event){ - super(socketWrapper, event); - } - - /* This override has been added as a temporary hack to resolve an issue in Tomcat. - Once the issue has been corrected in Tomcat then this can be removed. The - 'SSL.getLastErrorNumber()' removes an unwanted error condition from the error stack - in those cases where some error condition has caused the socket to get closed and - then the processor was put back on the processor stack for reuse in a future connection. - */ - @Override - protected void doRun(){ - @SuppressWarnings("PMD.CloseResource") - // The socket must be stored before calling super.doRun() because it sets socketWrapper to null - final NioChannel socket = socketWrapper.getSocket(); - super.doRun(); - if (!socket.isOpen()){ - SSL.getLastErrorNumber(); - } - } - } - public String getProtocols() { return protocols; } From 93c2f9743ca6eba711fa6948edc025a91326ca76 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Fri, 3 Dec 2021 14:31:14 -0700 Subject: [PATCH 22/23] Use OpenJDK 11 in Systemd service files --- .../core/src/main/lib/systemd/system/traffic_router.service | 2 +- traffic_router/tomcat-rpm/tomcat.service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_router/core/src/main/lib/systemd/system/traffic_router.service b/traffic_router/core/src/main/lib/systemd/system/traffic_router.service index 2b26ca4904..de5ebf1395 100644 --- a/traffic_router/core/src/main/lib/systemd/system/traffic_router.service +++ b/traffic_router/core/src/main/lib/systemd/system/traffic_router.service @@ -19,7 +19,7 @@ After=syslog.target network.target [Service] Type=forking -Environment=JAVA_HOME=/usr/lib/jvm/jre +Environment=JAVA_HOME=/usr/lib/jvm/jre-11-openjdk Environment=CATALINA_PID=/opt/traffic_router/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/traffic_router diff --git a/traffic_router/tomcat-rpm/tomcat.service b/traffic_router/tomcat-rpm/tomcat.service index 1487fc5be2..f72af4a837 100644 --- a/traffic_router/tomcat-rpm/tomcat.service +++ b/traffic_router/tomcat-rpm/tomcat.service @@ -22,7 +22,7 @@ After=syslog.target network.target [Service] Type=forking -Environment=JAVA_HOME=/usr/lib/jvm/jre +Environment=JAVA_HOME=/usr/lib/jvm/jre-11-openjdk Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat From 6a467173ca0b3f02c9c08b7503db11aabab827d5 Mon Sep 17 00:00:00 2001 From: Zach Hoffman Date: Fri, 3 Dec 2021 14:36:31 -0700 Subject: [PATCH 23/23] Use OpenJDK 11 for Ansible Java HOME --- infrastructure/ansible/roles/traffic-router/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infrastructure/ansible/roles/traffic-router/defaults/main.yml b/infrastructure/ansible/roles/traffic-router/defaults/main.yml index 7689e12c8c..09a39fa288 100644 --- a/infrastructure/ansible/roles/traffic-router/defaults/main.yml +++ b/infrastructure/ansible/roles/traffic-router/defaults/main.yml @@ -26,7 +26,7 @@ tr_tomcat_base_dir: '/opt/tomcat' tr_tomcat_logs_dir: "{{ tr_tomcat_base_dir }}/logs" # JAVA_HOME to use in order to specify the desired JRE -tr_java_home_dir: '/usr/lib/jvm/jre' +tr_java_home_dir: '/usr/lib/jvm/jre-11-openjdk' # Remove any locally cached copy of a CRConfig tr_purge_crconfig_cache: False