1 package club.wpia.gigi.ping;
3 import java.util.Arrays;
6 import javax.naming.NamingException;
8 import club.wpia.gigi.dbObjects.CertificateOwner;
9 import club.wpia.gigi.dbObjects.Domain;
10 import club.wpia.gigi.dbObjects.DomainPingConfiguration;
11 import club.wpia.gigi.dbObjects.DomainPingExecution;
12 import club.wpia.gigi.util.DNSUtil;
13 import club.wpia.gigi.util.SystemKeywords;
15 public class DNSPinger extends DomainPinger {
18 public DomainPingExecution ping(Domain domain, String expToken, CertificateOwner u, DomainPingConfiguration conf) {
19 String[] tokenParts = expToken.split(":", 2);
20 List<String> nameservers;
22 nameservers = Arrays.asList(DNSUtil.getNSNames(domain.getSuffix()));
23 } catch (NamingException e) {
24 return enterPingResult(conf, "error", "No authorative nameserver found.", null);
26 StringBuffer result = new StringBuffer();
27 result.append("failed: ");
28 boolean failed = nameservers.isEmpty();
30 for (String NS : nameservers) {
31 boolean found = false;
33 for (String token : DNSUtil.getTXTEntries(tokenParts[0] + "." + SystemKeywords.DNS_PREFIX + "._auth." + domain.getSuffix(), NS)) {
34 if (token.isEmpty()) {
38 if (token.equals(tokenParts[1])) {
42 } catch (NamingException e) {
47 result.append(" DIFFER;");
49 result.append(" EMPTY;");
55 return enterPingResult(conf, PING_SUCCEDED, "", null);
57 return enterPingResult(conf, "error", result.toString(), null);