/** * Finds records with the given name, type, and class with a certain credibility * * @param namestr The name of the desired records * @param type The type of the desired records * @param dclass The class of the desired records * @param cred The minimum credibility of the desired records * @see Credibility * @return The matching records, or null if none are found */ public static Record[] getRecords(String namestr, int type, int dclass, byte cred) { try { Lookup lookup = new Lookup(namestr, type, dclass); lookup.setCredibility(cred); return lookup.run(); } catch (Exception e) { return null; } }
public static void main(String[] args) throws Exception { ZoneTransferIn xfrin; TSIG key = null; int ixfr_serial = -1; String server = null; int port = SimpleResolver.DEFAULT_PORT; boolean fallback = false; Name zname; int arg = 0; while (arg < args.length) { if (args[arg].equals("-i")) { ixfr_serial = Integer.parseInt(args[++arg]); if (ixfr_serial < 0) usage("invalid serial number"); } else if (args[arg].equals("-k")) { String s = args[++arg]; int index = s.indexOf('/'); if (index < 0) usage("invalid key"); key = new TSIG(s.substring(0, index), s.substring(index + 1)); } else if (args[arg].equals("-s")) { server = args[++arg]; } else if (args[arg].equals("-p")) { port = Integer.parseInt(args[++arg]); if (port < 0 || port > 0xFFFF) usage("invalid port"); } else if (args[arg].equals("-f")) { fallback = true; } else if (args[arg].startsWith("-")) { usage("invalid option"); } else { break; } arg++; } if (arg >= args.length) usage("no zone name specified"); zname = Name.fromString(args[arg]); if (server == null) { Lookup l = new Lookup(zname, Type.NS); Record[] ns = l.run(); if (ns == null) { System.out.println("failed to look up NS record: " + l.getErrorString()); System.exit(1); } server = ns[0].rdataToString(); System.out.println("sending to server '" + server + "'"); } if (ixfr_serial >= 0) xfrin = ZoneTransferIn.newIXFR(zname, ixfr_serial, fallback, server, port, key); else xfrin = ZoneTransferIn.newAXFR(zname, server, port, key); List response = xfrin.run(); if (xfrin.isAXFR()) { if (ixfr_serial >= 0) System.out.println("AXFR-like IXFR response"); else System.out.println("AXFR response"); Iterator it = response.iterator(); while (it.hasNext()) System.out.println(it.next()); } else if (xfrin.isIXFR()) { System.out.println("IXFR response"); Iterator it = response.iterator(); while (it.hasNext()) { ZoneTransferIn.Delta delta; delta = (ZoneTransferIn.Delta) it.next(); System.out.println("delta from " + delta.start + " to " + delta.end); System.out.println("deletes"); Iterator it2 = delta.deletes.iterator(); while (it2.hasNext()) System.out.println(it2.next()); System.out.println("adds"); it2 = delta.adds.iterator(); while (it2.hasNext()) System.out.println(it2.next()); } } else if (xfrin.isCurrent()) { System.out.println("up to date"); } }