]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/domain/DomainPinglogForm.java
upd: use a more strict pattern for handling forms
[gigi.git] / src / org / cacert / gigi / pages / account / domain / DomainPinglogForm.java
index 38be5d98c93550c30a672772c7872193c5a87117..d2e8306675c36b41098aaa1c9753f5e8f26dd636 100644 (file)
@@ -6,17 +6,19 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 
 import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.DomainPingConfiguration;
-import org.cacert.gigi.dbObjects.Domain.DomainPingExecution;
+import org.cacert.gigi.dbObjects.DomainPingExecution;
 import org.cacert.gigi.localisation.Language;
-import org.cacert.gigi.output.Form;
+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.LoginPage;
 
 public class DomainPinglogForm extends Form {
 
-    static Template t = new Template(DomainPinglogForm.class.getResource("DomainPinglogForm.templ"));
+    private static final Template t = new Template(DomainPinglogForm.class.getResource("DomainPinglogForm.templ"));
 
     Domain target;
 
@@ -26,8 +28,21 @@ public class DomainPinglogForm extends Form {
     }
 
     @Override
-    public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
-        return false;
+    public boolean submit(HttpServletRequest req) throws GigiApiException {
+        CertificateOwner u = LoginPage.getAuthorizationContext(req).getTarget();
+
+        int i = Integer.parseInt(req.getPathInfo().substring(DomainOverview.PATH.length()));
+        Domain d = Domain.getById(i);
+        if (u.getId() != d.getOwner().getId()) {
+            throw new GigiApiException("Error, owner mismatch.");
+        }
+        int reping = Integer.parseInt(req.getParameter("configId"));
+        DomainPingConfiguration dpc = DomainPingConfiguration.getById(reping);
+        if (dpc.getTarget() != d) {
+            throw new GigiApiException("Error, target mismatch.");
+        }
+        dpc.requestReping();
+        return true;
     }
 
     @Override
@@ -52,6 +67,7 @@ public class DomainPinglogForm extends Form {
                 vars.put("state", pings[counter].getState());
                 vars.put("type", pings[counter].getType());
                 vars.put("config", pings[counter].getInfo());
+                vars.put("date", pings[counter].getDate());
                 String ping3 = pings[counter].getResult();
                 if (ping3 == null) {
                     vars.put("result", "");