Lightweight Way To Resolve Dns Srv Records On Android
Solution 1:
This might be a bit late, but a reference to this question may help:
Java DNS Lookup for SRV records
The answer there is using an external library (the most recent version, February 2015 as of this writing), is about 310KB, and under the BSD license. You can find it at http://www.dnsjava.org/download/. It all comes within one JAR, and it's been released since 1999.
Solution 2:
Stumbled over this question. Since there was no accepted answer and dnsjava has been sort of ruled out in question, already, I took this question to Google once again and stumbled over minidns. It supports DNSSEC, comes with a separate API for querying SRV records and I was successful in integrating it with an Android application prototype.
In my app/build.gradle I was adding this:
dependencies {
implementation "org.minidns:minidns-hla:0.3.2"
}
After that I was capable of implementing a query like this using Kotlin:
package com.example.app
import android.os.AsyncTask
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
import android.util.Log
import org.minidns.hla.ResolverApi
import java.io.IOException
classMainActivity : AppCompatActivity() {
privateval serviceName = "_mysrv._tcp.example.com"overridefunonCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
FetchSrvRecord().execute(serviceName)
}
innerclassFetchSrvRecord() : AsyncTask<String, Int, String>() {
overridefundoInBackground(names: Array<String>): String {
try {
val result = ResolverApi.INSTANCE.resolveSrv(names[0])
if (result.wasSuccessful()) {
val srvRecords = result.sortedSrvResolvedAddresses
for (record in srvRecords) {
return"https://" + record.srv.target.toString()
}
}
} catch (e: IOException) {
Log.e("PoC", "failed IO", e)
} catch (e: Throwable) {
Log.e("PoC", "failed", e)
}
return"https://example.com"
}
overridefunonPostExecute(url: String) {
super.onPostExecute(url);
Log.d("PoC", "got $url");
}
}
}
I'm not that familiar with Java/Android there was no obviously available file I could find as output of compiling that library so can't tell the library's impact on your apk's size.
Post a Comment for "Lightweight Way To Resolve Dns Srv Records On Android"