TXT dns record lookup for hostname pairing

This commit is contained in:
2025-07-13 14:08:03 +02:00
parent 74f90df769
commit 556ca59507
@@ -0,0 +1,42 @@
package me.youhavetrouble.inviter.dns;
import me.youhavetrouble.inviter.Main;
import org.jetbrains.annotations.NotNull;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Set;
public class DNSLookup {
public static Set<String> getTxtRecords(@NotNull String hostname) throws Exception {
Hashtable<String, String> env = new Hashtable<>();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns://1.1.1.1");
env.put("com.sun.jndi.dns.cache.ttl", "0");
Set<String> txtRecords = new HashSet<>();
DirContext ctx = new InitialDirContext(env);
Attributes attrs = ctx.getAttributes(hostname, new String[]{"TXT"});
Attribute txtAttr = attrs.get("TXT");
if (txtAttr != null) {
for (int i = 0; i < txtAttr.size(); i++) {
Object record = txtAttr.get(i);
if (record instanceof String recordString) {
txtRecords.add(recordString);
} else if (record instanceof byte[]) {
txtRecords.add(new String((byte[]) record));
} else {
txtRecords.add(record.toString());
}
}
}
return txtRecords;
}
}