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;
8 public abstract class DomainPinger {
10 public static enum PingState implements DBEnum {
11 OPEN, SUCCESS, FAILED;
14 public String getDBName() {
15 return toString().toLowerCase();
19 public static final String PING_STILL_PENDING = null;
21 public static final String PING_SUCCEDED = "";
23 public abstract void ping(Domain domain, String configuration, CertificateOwner target, int confId);
25 protected static void enterPingResult(int configId, String state, String result, String token) {
26 PingState estate = DomainPinger.PING_STILL_PENDING == state ? PingState.OPEN : DomainPinger.PING_SUCCEDED.equals(state) ? PingState.SUCCESS : PingState.FAILED;
27 try (GigiPreparedStatement enterPingResult = new GigiPreparedStatement("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?")) {
28 enterPingResult.setInt(1, configId);
29 enterPingResult.setEnum(2, estate);
30 enterPingResult.setString(3, result);
31 enterPingResult.setString(4, token);
32 enterPingResult.execute();
36 protected static void updatePingResult(int configId, String state, String result, String token) {
37 try (GigiPreparedStatement updatePingResult = new GigiPreparedStatement("UPDATE `domainPinglog` SET `state`=?::`pingState`, `result`=? WHERE `configId`=? AND `challenge`=?")) {
38 updatePingResult.setString(1, DomainPinger.PING_STILL_PENDING == state ? "open" : DomainPinger.PING_SUCCEDED.equals(state) ? "success" : "failed");
39 updatePingResult.setString(2, result);
40 updatePingResult.setInt(3, configId);
41 updatePingResult.setString(4, token);
42 updatePingResult.execute();