]> WPIA git - gigi.git/blob - src/org/cacert/gigi/ping/DNSPinger.java
[EMPTY] Formatting with configured formatter.
[gigi.git] / src / org / cacert / gigi / ping / DNSPinger.java
1 package org.cacert.gigi.ping;
2
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;
8
9 public class DNSPinger extends DomainPinger {
10
11         @Override
12         public void ping(String domain, String configuration, String expToken) {
13                 try {
14                         Process p = Runtime.getRuntime().exec(new String[] { "dig", "+short", "NS", domain });
15                         BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
16                         String line;
17                         LinkedList<String> nameservers = new LinkedList<String>();
18                         while ((line = br.readLine()) != null) {
19                                 nameservers.add(line);
20                         }
21                         p.destroy();
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()));
30                                 String token = null;
31                                 boolean found = false;
32                                 while ((line = br.readLine()) != null) {
33                                         if (line.isEmpty()) {
34                                                 continue;
35                                         }
36                                         found = true;
37                                         token = line.substring(1, line.length() - 1);
38                                         if (token.equals(expToken)) {
39                                                 continue nameservers;
40                                         }
41                                 }
42                                 p.destroy();
43                                 result.append(NS);
44                                 if (found) {
45                                         result.append(" DIFFER;");
46                                 } else {
47                                         result.append(" EMPTY;");
48                                 }
49                                 failed = true;
50
51                         }
52                         if (!failed) {
53                                 // Success
54                                 return;
55                         }
56                         System.out.println(result.toString());
57                 } catch (IOException e) {
58                         e.printStackTrace();
59                         // FAIL
60                 }
61                 // FAIL
62         }
63
64 }