From 203fd4e7cc072555edd75081f2a9d2385c061b90 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sun, 15 Mar 2015 13:22:48 +0100 Subject: [PATCH] Fix: send domain ping reconfigurations to correct form --- .../dbObjects/DomainPingConfiguration.java | 2 +- .../pages/account/domain/DomainOverview.java | 26 +++++++++---------- .../account/domain/DomainPinglogForm.java | 17 +++++++++++- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java b/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java index ae0246d0..c6d053af 100644 --- a/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java +++ b/src/org/cacert/gigi/dbObjects/DomainPingConfiguration.java @@ -96,6 +96,6 @@ public class DomainPingConfiguration implements IdCachable { } Map data = new HashMap(); data.put("data", new Date(lastExecution.getTime() + 5 * 60 * 1000)); - throw new GigiApiException(new Scope(new SprintfCommand("Reping is only allowed after 5 minutes, yours end at {0}.", Arrays.asList("$data")), data)); + throw new GigiApiException(new Scope(new SprintfCommand("Reping is only allowed after 5 minutes, yours end at {0}.", Arrays.asList("${data}")), data)); } } diff --git a/src/org/cacert/gigi/pages/account/domain/DomainOverview.java b/src/org/cacert/gigi/pages/account/domain/DomainOverview.java index 4aa3df63..7a851c36 100644 --- a/src/org/cacert/gigi/pages/account/domain/DomainOverview.java +++ b/src/org/cacert/gigi/pages/account/domain/DomainOverview.java @@ -8,7 +8,6 @@ import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Domain; -import org.cacert.gigi.dbObjects.DomainPingConfiguration; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.pages.Page; @@ -62,26 +61,25 @@ public class DomainOverview extends Page { @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - User u = getUser(req); String pi = req.getPathInfo(); if (pi.length() - PATH.length() > 0) { - int i = Integer.parseInt(pi.substring(PATH.length())); - Domain d = Domain.getById(i); - if (u.getId() != d.getOwner().getId()) { - return; - } - int reping = Integer.parseInt(req.getParameter("configId")); - DomainPingConfiguration dpc = DomainPingConfiguration.getById(reping); - if (dpc.getTarget() != d) { - return; - } try { - dpc.requestReping(); + if (req.getParameter("configId") != null) { + if ( !Form.getForm(req, DomainPinglogForm.class).submit(resp.getWriter(), req)) { + // error? + } + + } else { + if ( !Form.getForm(req, PingConfigForm.class).submit(resp.getWriter(), req)) { + + } + } } catch (GigiApiException e) { e.format(resp.getWriter(), getLanguage(req)); return; } - resp.sendRedirect(PATH + i); + + resp.sendRedirect(pi); } if (req.getParameter("adddomain") != null) { DomainAddForm f = Form.getForm(req, DomainAddForm.class); diff --git a/src/org/cacert/gigi/pages/account/domain/DomainPinglogForm.java b/src/org/cacert/gigi/pages/account/domain/DomainPinglogForm.java index 4d4a36fe..53f8cbd4 100644 --- a/src/org/cacert/gigi/pages/account/domain/DomainPinglogForm.java +++ b/src/org/cacert/gigi/pages/account/domain/DomainPinglogForm.java @@ -9,10 +9,12 @@ import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.Domain.DomainPingExecution; import org.cacert.gigi.dbObjects.DomainPingConfiguration; +import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.output.template.Template; +import org.cacert.gigi.pages.Page; public class DomainPinglogForm extends Form { @@ -27,7 +29,20 @@ public class DomainPinglogForm extends Form { @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { - return false; + User u = Page.getUser(req); + + int i = Integer.parseInt(req.getPathInfo().substring(DomainOverview.PATH.length())); + Domain d = Domain.getById(i); + if (u.getId() != d.getOwner().getId()) { + return false; + } + int reping = Integer.parseInt(req.getParameter("configId")); + DomainPingConfiguration dpc = DomainPingConfiguration.getById(reping); + if (dpc.getTarget() != d) { + return false; + } + dpc.requestReping(); + return true; } @Override -- 2.39.2