import javax.naming.directory.Attributes;
import javax.naming.directory.InitialDirContext;
+import org.cacert.gigi.util.CAA.CAARecord;
+
public class DNSUtil {
private static InitialDirContext context;
public static String[] getNSNames(String name) throws NamingException {
Attributes dnsLookup = context.getAttributes(name, new String[] {
- "NS"
+ "NS"
});
return extractTextEntries(dnsLookup.get("NS"));
}
try {
Attributes dnsLookup = context.getAttributes(name, new String[] {
- "TXT"
+ "TXT"
});
return extractTextEntries(dnsLookup.get("TXT"));
} finally {
public static String[] getMXEntries(String domain) throws NamingException {
Attributes dnsLookup = context.getAttributes(domain, new String[] {
- "MX"
+ "MX"
});
return extractTextEntries(dnsLookup.get("MX"));
}
+ public static CAARecord[] getCAAEntries(String domain) throws NamingException {
+ Hashtable<String, String> env = new Hashtable<String, String>();
+ env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
+ InitialDirContext context = new InitialDirContext(env);
+
+ Attributes dnsLookup = context.getAttributes(domain, new String[] {
+ "257"
+ });
+ Attribute nsRecords = dnsLookup.get("257");
+ if (nsRecords == null) {
+ return new CAARecord[] {};
+ }
+ CAA.CAARecord[] result = new CAA.CAARecord[nsRecords.size()];
+ for (int i = 0; i < result.length; i++) {
+ byte[] rec = (byte[]) nsRecords.get(i);
+
+ result[i] = new CAA.CAARecord(rec);
+ }
+ return result;
+ }
+
public static void main(String[] args) throws NamingException {
if (args[0].equals("MX")) {
System.out.println(Arrays.toString(getMXEntries(args[1])));
System.out.println(Arrays.toString(getNSNames(args[1])));
} else if (args[0].equals("TXT")) {
System.out.println(Arrays.toString(getTXTEntries(args[1], args[2])));
+ } else if (args[0].equals("CAA")) {
+ System.out.println(Arrays.toString(getCAAEntries(args[1])));
}
}