diff --git a/app/static-ips.gradle b/app/static-ips.gradle index 3a0a9984f..b0083961d 100644 --- a/app/static-ips.gradle +++ b/app/static-ips.gradle @@ -1,7 +1,7 @@ ext.service_ips='new String[]{"13.248.212.111","76.223.92.165"}' -ext.storage_ips='new String[]{"142.250.188.51"}' -ext.cdn_ips='new String[]{"99.84.42.84","99.84.42.34","99.84.42.27","99.84.42.88"}' -ext.cdn2_ips='new String[]{"104.18.29.74","104.18.28.74"}' +ext.storage_ips='new String[]{"142.250.176.211"}' +ext.cdn_ips='new String[]{"65.8.198.118","65.8.198.39","65.8.198.46","65.8.198.54"}' +ext.cdn2_ips='new String[]{"104.18.28.74","104.18.29.74"}' ext.cds_ips='new String[]{"20.62.208.25"}' ext.kbs_ips='new String[]{"20.85.156.233"}' ext.sfu_ips='new String[]{"52.6.24.145","54.152.177.76"}' diff --git a/buildSrc/src/main/java/org/signal/StaticIpResolver.java b/buildSrc/src/main/java/org/signal/StaticIpResolver.java index fad2a2cd2..d483a5933 100644 --- a/buildSrc/src/main/java/org/signal/StaticIpResolver.java +++ b/buildSrc/src/main/java/org/signal/StaticIpResolver.java @@ -11,6 +11,10 @@ import org.xbill.DNS.Type; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; public final class StaticIpResolver { @@ -29,7 +33,18 @@ public final class StaticIpResolver { return builder.append("}").toString(); } - private static String[] resolve(String hostName) { + private static String[] resolve(String hostname) { + Set ips = new HashSet<>(); + + // Run several resolves to mitigate DNS round robin + for (int i = 0; i < 10; i++) { + ips.addAll(resolveOnce(hostname)); + } + + return ips.stream().sorted().toArray(String[]::new); + } + + private static List resolveOnce(String hostName) { try { Resolver resolver = new SimpleResolver("1.1.1.1"); Lookup lookup = doLookup(hostName); @@ -44,7 +59,7 @@ public final class StaticIpResolver { .map(r -> (ARecord) r) .map(ARecord::getAddress) .map(InetAddress::getHostAddress) - .toArray(String[]::new); + .collect(Collectors.toList()); } else { throw new IllegalStateException("Failed to resolve host! " + hostName); }