1 package club.wpia.gigi.ping;
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.net.HttpURLConnection;
9 import club.wpia.gigi.dbObjects.CertificateOwner;
10 import club.wpia.gigi.dbObjects.Domain;
11 import club.wpia.gigi.dbObjects.DomainPingConfiguration;
12 import club.wpia.gigi.dbObjects.DomainPingExecution;
13 import club.wpia.gigi.util.SystemKeywords;
15 public class HTTPFetch extends DomainPinger {
18 public DomainPingExecution ping(Domain domain, String expToken, CertificateOwner user, DomainPingConfiguration conf) {
20 String[] tokenParts = expToken.split(":", 2);
21 URL u = new URL("http://" + domain.getSuffix() + "/" + SystemKeywords.HTTP_CHALLENGE_PREFIX + tokenParts[0] + ".txt");
22 HttpURLConnection huc = (HttpURLConnection) u.openConnection();
23 if (huc.getResponseCode() != 200) {
24 return enterPingResult(conf, "error", "Invalid status code " + huc.getResponseCode() + ".", null);
26 BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream(), "UTF-8"));
27 String line = br.readLine();
29 return enterPingResult(conf, "error", "Empty document.", null);
31 if (line.trim().equals(tokenParts[1])) {
32 return enterPingResult(conf, PING_SUCCEDED, "", null);
34 return enterPingResult(conf, "error", "Challenge tokens differed.", null);
35 } catch (IOException e) {
37 return enterPingResult(conf, "error", "Exception: connection closed.", null);