From a95e695a97d684864954a835674b21e960bb08d0 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 28 Feb 2023 16:29:08 -0400 Subject: [PATCH] Start StaticIpResolver testing. --- .../plugins/src/main/java/translations.gradle | 17 +++++++++-------- .../org/signal/buildtools/StaticIpResolver.kt | 8 +++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/build-logic/plugins/src/main/java/translations.gradle b/build-logic/plugins/src/main/java/translations.gradle index fe3eee1b6..e7e69ed4a 100644 --- a/build-logic/plugins/src/main/java/translations.gradle +++ b/build-logic/plugins/src/main/java/translations.gradle @@ -124,15 +124,16 @@ task postTranslateIpFetch { group 'Translate' description 'Fetches static IPs for core hosts and writes them to static-ips.gradle' doLast { + def staticIpResolver = new StaticIpResolver() new File(projectDir, "static-ips.gradle").text = """ - ext.service_ips='${StaticIpResolver.resolveToBuildConfig("chat.signal.org")}' - ext.storage_ips='${StaticIpResolver.resolveToBuildConfig("storage.signal.org")}' - ext.cdn_ips='${StaticIpResolver.resolveToBuildConfig("cdn.signal.org")}' - ext.cdn2_ips='${StaticIpResolver.resolveToBuildConfig("cdn2.signal.org")}' - ext.cds_ips='${StaticIpResolver.resolveToBuildConfig("api.directory.signal.org")}' - ext.kbs_ips='${StaticIpResolver.resolveToBuildConfig("api.backup.signal.org")}' - ext.sfu_ips='${StaticIpResolver.resolveToBuildConfig("sfu.voip.signal.org")}' - ext.content_proxy_ips='${StaticIpResolver.resolveToBuildConfig("contentproxy.signal.org")}' + ext.service_ips='${staticIpResolver.resolveToBuildConfig("chat.signal.org")}' + ext.storage_ips='${staticIpResolver.resolveToBuildConfig("storage.signal.org")}' + ext.cdn_ips='${staticIpResolver.resolveToBuildConfig("cdn.signal.org")}' + ext.cdn2_ips='${staticIpResolver.resolveToBuildConfig("cdn2.signal.org")}' + ext.cds_ips='${staticIpResolver.resolveToBuildConfig("api.directory.signal.org")}' + ext.kbs_ips='${staticIpResolver.resolveToBuildConfig("api.backup.signal.org")}' + ext.sfu_ips='${staticIpResolver.resolveToBuildConfig("sfu.voip.signal.org")}' + ext.content_proxy_ips='${staticIpResolver.resolveToBuildConfig("contentproxy.signal.org")}' """.stripIndent().trim() } } diff --git a/build-logic/tools/src/main/java/org/signal/buildtools/StaticIpResolver.kt b/build-logic/tools/src/main/java/org/signal/buildtools/StaticIpResolver.kt index e54ffc015..edb9f04bf 100644 --- a/build-logic/tools/src/main/java/org/signal/buildtools/StaticIpResolver.kt +++ b/build-logic/tools/src/main/java/org/signal/buildtools/StaticIpResolver.kt @@ -3,6 +3,7 @@ package org.signal.buildtools import org.xbill.DNS.ARecord import org.xbill.DNS.Lookup import org.xbill.DNS.Record +import org.xbill.DNS.Resolver import org.xbill.DNS.SimpleResolver import org.xbill.DNS.Type import java.net.UnknownHostException @@ -12,7 +13,9 @@ import kotlin.streams.toList * A tool to resolve hostname to static IPs. * Feeds into our custom DNS resolver to provide a static IP fallback for our services. */ -object StaticIpResolver { +class StaticIpResolver @JvmOverloads constructor( + private val resolverProvider: () -> Resolver = { SimpleResolver("1.1.1.1") } +) { /** * Resolves a hostname to a list of IPs, represented as a Java array declaration. e.g. @@ -23,7 +26,6 @@ object StaticIpResolver { * * This is intended to be injected as a BuildConfig. */ - @JvmStatic fun resolveToBuildConfig(hostName: String): String { val ips: List = resolve(hostName) val builder = StringBuilder() @@ -54,7 +56,7 @@ object StaticIpResolver { private fun resolveOnce(hostName: String): List { try { - val resolver = SimpleResolver("1.1.1.1") + val resolver = resolverProvider() val lookup: Lookup = doLookup(hostName) lookup.setResolver(resolver)