cleanup DNSUtil

This commit is contained in:
Bixilon 2022-08-29 09:51:45 +02:00
parent 8ddf99791f
commit a9597bbf17
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -20,29 +20,27 @@ import org.xbill.DNS.Type
object DNSUtil {
fun resolveServerAddress(hostname: String): List<ServerAddress> {
val fallbackAddress = getServerAddress(hostname)
val addresses: MutableList<ServerAddress> = mutableListOf()
if (hostname.contains(":")) {
val originalAddress = getServerAddress(hostname)
if (":" in hostname) {
// port provided, skip srv check
addresses.add(fallbackAddress)
return addresses
return listOf(originalAddress)
}
val query = "_minecraft._tcp.$hostname"
val records = Lookup(query, Type.SRV).run()
if (records == null) {
addresses.add(fallbackAddress)
return addresses
}
val records = Lookup(query, Type.SRV).run() ?: return listOf(originalAddress)
val addresses: MutableList<ServerAddress> = mutableListOf()
for (record in records) {
check(record is SRVRecord)
addresses.add(ServerAddress(record.target.toString(true), record.port))
if (record !is SRVRecord) continue
addresses += ServerAddress(record.target.toString(true), record.port)
}
addresses.add(fallbackAddress)
addresses += originalAddress
return addresses
}
fun getServerAddress(hostname: String): ServerAddress {
val splitHostname = fixAddress(hostname).split(":", limit = 2).toTypedArray()
val splitHostname = fixAddress(hostname).split(":", limit = 2)
return if (splitHostname.size == 1) {
ServerAddress(splitHostname[0], ProtocolDefinition.DEFAULT_PORT)
} else {