1 package club.wpia.gigi.ping;
3 import club.wpia.gigi.database.DBEnum;
4 import club.wpia.gigi.database.GigiPreparedStatement;
5 import club.wpia.gigi.dbObjects.CertificateOwner;
6 import club.wpia.gigi.dbObjects.Domain;
7 import club.wpia.gigi.dbObjects.DomainPingConfiguration;
8 import club.wpia.gigi.dbObjects.DomainPingExecution;
10 public abstract class DomainPinger {
12 public static enum PingState implements DBEnum {
13 OPEN, SUCCESS, FAILED;
16 public String getDBName() {
17 return toString().toLowerCase();
21 public static final String PING_STILL_PENDING = null;
23 public static final String PING_SUCCEDED = "";
25 public abstract DomainPingExecution ping(Domain domain, String configuration, CertificateOwner target, DomainPingConfiguration conf);
27 protected static DomainPingExecution enterPingResult(DomainPingConfiguration config, String state, String result, String token) {
28 PingState estate = DomainPinger.PING_STILL_PENDING == state ? PingState.OPEN : DomainPinger.PING_SUCCEDED.equals(state) ? PingState.SUCCESS : PingState.FAILED;
29 return new DomainPingExecution(estate, result, config, token);
32 protected static void updatePingResult(DomainPingConfiguration config, String state, String result, String token) {
33 try (GigiPreparedStatement updatePingResult = new GigiPreparedStatement("UPDATE `domainPinglog` SET `state`=?::`pingState`, `result`=? WHERE `configId`=? AND `challenge`=?")) {
34 updatePingResult.setString(1, DomainPinger.PING_STILL_PENDING == state ? "open" : DomainPinger.PING_SUCCEDED.equals(state) ? "success" : "failed");
35 updatePingResult.setString(2, result);
36 updatePingResult.setInt(3, config.getId());
37 updatePingResult.setString(4, token);
38 updatePingResult.execute();