import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.util.Arrays;
import java.util.LinkedList;
+import org.cacert.gigi.Domain;
+import org.cacert.gigi.User;
+
public class DNSPinger extends DomainPinger {
@Override
- public void ping(String domain, String configuration, String expToken) {
+ public String ping(Domain domain, String expToken, User u) {
try {
+ String[] tokenParts = expToken.split(":", 2);
+
Process p = Runtime.getRuntime().exec(new String[] {
- "dig", "+short", "NS", domain
+ "dig", "+short", "NS", domain.getSuffix()
});
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
nameservers:
for (String NS : nameservers) {
String[] call = new String[] {
- "dig", "+short", "TXT", "cacert." + domain, NS
+ "dig", "@" + NS, "+short", "TXT", "cacert-" + tokenParts[0] + "." + domain
};
- System.out.println(Arrays.toString(call));
p = Runtime.getRuntime().exec(call);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String token = null;
}
found = true;
token = line.substring(1, line.length() - 1);
- if (token.equals(expToken)) {
+ if (token.equals(tokenParts[1])) {
continue nameservers;
}
}
}
if ( !failed) {
- // Success
- return;
+ return PING_SUCCEDED;
}
- System.out.println(result.toString());
+ return result.toString();
} catch (IOException e) {
e.printStackTrace();
- // FAIL
+ return "Connection closed";
}
- // FAIL
}
}