]> WPIA git - gigi.git/blob - src/org/cacert/gigi/ping/DNSPinger.java
Format code according do BenBE's 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[] {
15                     "dig", "+short", "NS", domain
16             });
17             BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
18             String line;
19             LinkedList<String> nameservers = new LinkedList<String>();
20             while ((line = br.readLine()) != null) {
21                 nameservers.add(line);
22             }
23             p.destroy();
24             StringBuffer result = new StringBuffer();
25             result.append("failed: ");
26             boolean failed = nameservers.isEmpty();
27             nameservers:
28             for (String NS : nameservers) {
29                 String[] call = new String[] {
30                         "dig", "+short", "TXT", "cacert." + domain, NS
31                 };
32                 System.out.println(Arrays.toString(call));
33                 p = Runtime.getRuntime().exec(call);
34                 br = new BufferedReader(new InputStreamReader(p.getInputStream()));
35                 String token = null;
36                 boolean found = false;
37                 while ((line = br.readLine()) != null) {
38                     if (line.isEmpty()) {
39                         continue;
40                     }
41                     found = true;
42                     token = line.substring(1, line.length() - 1);
43                     if (token.equals(expToken)) {
44                         continue nameservers;
45                     }
46                 }
47                 p.destroy();
48                 result.append(NS);
49                 if (found) {
50                     result.append(" DIFFER;");
51                 } else {
52                     result.append(" EMPTY;");
53                 }
54                 failed = true;
55
56             }
57             if ( !failed) {
58                 // Success
59                 return;
60             }
61             System.out.println(result.toString());
62         } catch (IOException e) {
63             e.printStackTrace();
64             // FAIL
65         }
66         // FAIL
67     }
68
69 }