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