lundi 9 mai 2011

Dig en Java

DNSJava est une API JAVA permettant de faire des résolutions de domaines.

DNSJava offre également une implémentation équivalente à dig (voir les sources)

Si vous souhaitez parser le contenu d'un DIG en Java pour récupérer les IPs des serveurs, je vous conseil plutôt d'utiliser l'API de DNSJava.
Vous aurez une représentation objet du DIG qui vous permettra de ne récupérer que ce qui vous intéresse vraiment.

Voici un exemple écrit en groovy qui fait l'équivalent d'un 'dig google.com'


import org.xbill.DNS.*;

@Grab(group='dnsjava', module='dnsjava', version='2.1.1')

SimpleResolver res = new SimpleResolver();
Record rec = Record.newRecord(Name.fromString("google.com", Name.root), Type.A, DClass.IN);
Message query = Message.newQuery(rec);
Message response = res.send(query);
println("----------------------------------------------------------");
for (Record record : response.getSectionArray(1)) { // ANSWER SECTION
println(record.rdataToString());
}
println("----------------------------------------------------------");
println(response.toString()); //THE WHOLE DIG


Et voici le résultat affiché :

--------------------------------------------------------
209.85.227.106
209.85.227.103
209.85.227.105
209.85.227.104
209.85.227.99
209.85.227.147
--------------------------------------------------------
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53158
;; flags: qr rd ra ; qd: 1 an: 6 au: 0 ad: 0
;; QUESTIONS:
;; google.com., type = A, class = IN

;; ANSWERS:
google.com. 300 IN A 209.85.227.106
google.com. 300 IN A 209.85.227.103
google.com. 300 IN A 209.85.227.105
google.com. 300 IN A 209.85.227.104
google.com. 300 IN A 209.85.227.99
google.com. 300 IN A 209.85.227.147

;; AUTHORITY RECORDS:

;; ADDITIONAL RECORDS:

;; Message size: 124 bytes

Aucun commentaire:

Enregistrer un commentaire