1 package org.cacert.gigi.ping;
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.util.Arrays;
7 import java.util.LinkedList;
9 public class DNSPinger extends DomainPinger {
12 public void ping(String domain, String configuration, String expToken) {
14 Process p = Runtime.getRuntime().exec(new String[] { "dig", "+short", "NS", domain });
15 BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
17 LinkedList<String> nameservers = new LinkedList<String>();
18 while ((line = br.readLine()) != null) {
19 nameservers.add(line);
22 StringBuffer result = new StringBuffer();
23 result.append("failed: ");
24 boolean failed = nameservers.isEmpty();
25 nameservers: for (String NS : nameservers) {
26 String[] call = new String[] { "dig", "+short", "TXT", "cacert." + domain, NS };
27 System.out.println(Arrays.toString(call));
28 p = Runtime.getRuntime().exec(call);
29 br = new BufferedReader(new InputStreamReader(p.getInputStream()));
31 boolean found = false;
32 while ((line = br.readLine()) != null) {
37 token = line.substring(1, line.length() - 1);
38 if (token.equals(expToken)) {
45 result.append(" DIFFER;");
47 result.append(" EMPTY;");
56 System.out.println(result.toString());
57 } catch (IOException e) {