]> WPIA git - gigi.git/blob - src/club/wpia/gigi/dbObjects/DomainPingExecution.java
chg: revoke certificates if repeated ping failed
[gigi.git] / src / club / wpia / gigi / dbObjects / DomainPingExecution.java
1 package club.wpia.gigi.dbObjects;
2
3 import java.sql.Timestamp;
4 import java.util.Date;
5
6 import club.wpia.gigi.database.GigiPreparedStatement;
7 import club.wpia.gigi.database.GigiResultSet;
8 import club.wpia.gigi.ping.DomainPinger.PingState;
9
10 public class DomainPingExecution {
11
12     private final PingState state;
13
14     private final String type;
15
16     private final String info;
17
18     private final String result;
19
20     private final DomainPingConfiguration config;
21
22     private final Timestamp date;
23
24     protected DomainPingExecution(GigiResultSet rs) {
25         state = PingState.valueOf(rs.getString(1).toUpperCase());
26         type = rs.getString(2);
27         info = rs.getString(3);
28         result = rs.getString(4);
29         config = DomainPingConfiguration.getById(rs.getInt(5));
30         date = rs.getTimestamp(6);
31     }
32
33     public DomainPingExecution(PingState state, String result, DomainPingConfiguration config, String challenge) {
34         this.state = state;
35         this.type = config.getType().getDBName();
36         this.info = config.getInfo();
37         this.result = result;
38         this.config = config;
39         this.date = new Timestamp(System.currentTimeMillis());
40         try (GigiPreparedStatement enterPingResult = new GigiPreparedStatement("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?, `when`=?, `needsAction`=?")) {
41             enterPingResult.setInt(1, config.getId());
42             enterPingResult.setEnum(2, state);
43             enterPingResult.setString(3, result);
44             enterPingResult.setString(4, challenge);
45             enterPingResult.setTimestamp(5, this.date);
46             // Ping results with current state "failed" need followup action in
47             // two weeks to revoke any remaining active certificates.
48             enterPingResult.setBoolean(6, state == PingState.FAILED);
49             enterPingResult.execute();
50         }
51     }
52
53     public PingState getState() {
54         return state;
55     }
56
57     public String getType() {
58         return type;
59     }
60
61     public String getInfo() {
62         return info;
63     }
64
65     public String getResult() {
66         return result;
67     }
68
69     public DomainPingConfiguration getConfig() {
70         return config;
71     }
72
73     public Date getDate() {
74         return date;
75     }
76
77 }