From: Felix Dörre Date: Tue, 9 Sep 2014 19:48:18 +0000 (+0200) Subject: [Database] implement the stuff for requesting domain reping. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=74f10c9db6cf2fcb5002ef4d2fa7f3c43abd6fb0 [Database] implement the stuff for requesting domain reping. --- diff --git a/doc/tableStructure.sql b/doc/tableStructure.sql index 468f2bbe..9ad4d134 100644 --- a/doc/tableStructure.sql +++ b/doc/tableStructure.sql @@ -79,6 +79,7 @@ CREATE TABLE `pingconfig` ( `domainid` int(11) NOT NULL, `type` enum('email', 'ssl', 'http', 'dns') NOT NULL, `info` varchar(255) NOT NULL, + `reping` enum('y','n') NOT NULL DEFAULT 'n', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index c40ee418..82ca1265 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -18,7 +18,6 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.cacert.gigi.database.DatabaseConnection; -import org.cacert.gigi.dbObjects.DomainPingConfiguration; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.Form.CSRFException; @@ -334,8 +333,4 @@ public class Gigi extends HttpServlet { instance.pinger.interrupt(); } - public static void requestReping(DomainPingConfiguration dpc) { - instance.pinger.requestReping(dpc); - } - } diff --git a/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java b/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java index 66805abe..93eb363e 100644 --- a/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java +++ b/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java @@ -65,4 +65,14 @@ public class DomainPingConfiguration implements IdCachable { return res; } + public void requestReping() { + try { + PreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE pingconfig set reping='y' WHERE id=?"); + ps.setInt(1, id); + ps.execute(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } diff --git a/src/org/cacert/gigi/pages/account/domain/DomainOverview.java b/src/org/cacert/gigi/pages/account/domain/DomainOverview.java index 609a1184..b12eb423 100644 --- a/src/org/cacert/gigi/pages/account/domain/DomainOverview.java +++ b/src/org/cacert/gigi/pages/account/domain/DomainOverview.java @@ -6,6 +6,7 @@ import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.cacert.gigi.Gigi; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.DomainPingConfiguration; @@ -70,7 +71,9 @@ public class DomainOverview extends Page { if (dpc.getTarget() != d) { return; } - System.out.println("Would now reping: " + dpc.getInfo()); + dpc.requestReping(); + Gigi.notifyPinger(); + resp.sendRedirect(PATH + i); } if (req.getParameter("adddomain") != null) { DomainAddForm f = Form.getForm(req, DomainAddForm.class); diff --git a/src/org/cacert/gigi/ping/PingerDaemon.java b/src/org/cacert/gigi/ping/PingerDaemon.java index 806f7c76..60c1ee2e 100644 --- a/src/org/cacert/gigi/ping/PingerDaemon.java +++ b/src/org/cacert/gigi/ping/PingerDaemon.java @@ -7,7 +7,6 @@ import java.sql.SQLException; import java.util.HashMap; import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.dbObjects.Domain; -import org.cacert.gigi.dbObjects.DomainPingConfiguration; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.util.RandomToken; @@ -19,6 +18,8 @@ public class PingerDaemon extends Thread { private PreparedStatement enterPingResult; + private PreparedStatement updatePingStatus; + private KeyStore truststore; public PingerDaemon(KeyStore truststore) { @@ -28,8 +29,9 @@ public class PingerDaemon extends Thread { @Override public void run() { try { - searchNeededPings = DatabaseConnection.getInstance().prepare("SELECT pingconfig.*, domains.domain, domains.memid FROM pingconfig LEFT JOIN domainPinglog ON domainPinglog.configId=pingconfig.id INNER JOIN domains ON domains.id=pingconfig.domainid WHERE domainPinglog.configId IS NULL AND domains.deleted IS NULL "); + searchNeededPings = DatabaseConnection.getInstance().prepare("SELECT pingconfig.*, domains.domain, domains.memid FROM pingconfig LEFT JOIN domainPinglog ON domainPinglog.configId=pingconfig.id INNER JOIN domains ON domains.id=pingconfig.domainid WHERE ( pingconfig.reping='y' OR domainPinglog.configId IS NULL) AND domains.deleted IS NULL GROUP BY pingconfig.id"); enterPingResult = DatabaseConnection.getInstance().prepare("INSERT INTO domainPinglog SET configId=?, state=?, result=?, challenge=?"); + updatePingStatus = DatabaseConnection.getInstance().prepare("UPDATE pingconfig SET reping='n' WHERE id=?"); pingers.put("email", new EmailPinger()); pingers.put("ssl", new SSLPinger(truststore)); pingers.put("http", new HTTPFetch()); @@ -63,6 +65,8 @@ public class PingerDaemon extends Thread { token = RandomToken.generateToken(16); config = config + ":" + token; } + updatePingStatus.setInt(1, rs.getInt("id")); + updatePingStatus.execute(); enterPingResult.setInt(1, rs.getInt("id")); String resp = dp.ping(Domain.getById(rs.getInt("domainid")), config, User.getById(rs.getInt("memid"))); enterPingResult.setString(2, DomainPinger.PING_STILL_PENDING == resp ? "open" : DomainPinger.PING_SUCCEDED.equals(resp) ? "success" : "failed"); @@ -73,5 +77,4 @@ public class PingerDaemon extends Thread { } } - public void requestReping(DomainPingConfiguration dpc) {} }