package org.exobel.routerkeygen.utils.dns;/* * Java Network Programming, Second Edition * Merlin Hughes, Michael Shoffner, Derek Hamner * Manning Publications Company; ISBN 188477749X * * http://nitric.com/jnp/ * * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner; * all rights reserved; see license.txt for details. */ import java.io.*; import java.net.*; import java.util.*; public class NSLookup { public static String getKey(DNSQuery query) { final Enumeration<DNSRR> answers = query.getAnswers(); if (answers.hasMoreElements()) { return answers.nextElement().toString().replace("internet address = 1.1.1.1", ""); } return null; } public static void sendQuery(DNSQuery query, Socket socket) throws IOException { BufferedOutputStream bufferedOut = new BufferedOutputStream(socket.getOutputStream()); DataOutputStream dataOut = new DataOutputStream(bufferedOut); byte[] data = query.extractQuery(); dataOut.writeShort(data.length); dataOut.write(data); dataOut.flush(); } public static void getResponse(DNSQuery query, Socket socket) throws IOException { InputStream bufferedIn = new BufferedInputStream(socket.getInputStream()); DataInputStream dataIn = new DataInputStream(bufferedIn); int responseLength = dataIn.readUnsignedShort(); byte[] data = new byte[responseLength]; dataIn.readFully(data); query.receiveResponse(data, responseLength); } public static void printRRs(DNSQuery query) { Enumeration answers = query.getAnswers(); if (answers.hasMoreElements()) System.out.println(query.isAuthoritative() ? "\nAuthoritative answer:\n" : "\nNon-authoritative answer:\n"); while (answers.hasMoreElements()) System.out.println(answers.nextElement()); Enumeration authorities = query.getAuthorities(); if (authorities.hasMoreElements()) System.out.println("\nAuthoritative answers can be found from:\n"); while (authorities.hasMoreElements()) System.out.println(authorities.nextElement()); Enumeration additional = query.getAdditional(); if (additional.hasMoreElements()) System.out.println("\nAdditional information:\n"); while (additional.hasMoreElements()) System.out.println(additional.nextElement()); } }