X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2Faccount%2Fdomain%2FDomainPinglogForm.java;fp=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2Faccount%2Fdomain%2FDomainPinglogForm.java;h=3ddde80ad2b96f7ac03493839a57b9583e589351;hb=bccd4cc0dba0f89aa045b113bac46eb8cc1dab4e;hp=0000000000000000000000000000000000000000;hpb=c9ed09f0007fc2c813815be927a5a24b23dab83c;p=gigi.git diff --git a/src/club/wpia/gigi/pages/account/domain/DomainPinglogForm.java b/src/club/wpia/gigi/pages/account/domain/DomainPinglogForm.java new file mode 100644 index 00000000..3ddde80a --- /dev/null +++ b/src/club/wpia/gigi/pages/account/domain/DomainPinglogForm.java @@ -0,0 +1,87 @@ +package club.wpia.gigi.pages.account.domain; + +import java.io.PrintWriter; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import club.wpia.gigi.GigiApiException; +import club.wpia.gigi.dbObjects.CertificateOwner; +import club.wpia.gigi.dbObjects.Domain; +import club.wpia.gigi.dbObjects.DomainPingConfiguration; +import club.wpia.gigi.dbObjects.DomainPingExecution; +import club.wpia.gigi.localisation.Language; +import club.wpia.gigi.output.template.Form; +import club.wpia.gigi.output.template.IterableDataset; +import club.wpia.gigi.output.template.Template; +import club.wpia.gigi.pages.LoginPage; + +public class DomainPinglogForm extends Form { + + private static final Template t = new Template(DomainPinglogForm.class.getResource("DomainPinglogForm.templ")); + + Domain target; + + public DomainPinglogForm(HttpServletRequest hsr, Domain target) { + super(hsr); + this.target = target; + } + + @Override + public SubmissionResult submit(HttpServletRequest req) throws GigiApiException { + CertificateOwner u = LoginPage.getAuthorizationContext(req).getTarget(); + + int i = Integer.parseInt(req.getPathInfo().substring(DomainOverview.PATH.length() + 1)); + 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 new RedirectResult(req.getPathInfo()); + } + + @Override + protected void outputContent(PrintWriter out, Language l, Map vars) { + final DomainPingExecution[] pings; + try { + pings = target.getPings(); + } catch (GigiApiException e) { + e.format(out, l); + return; + } + vars.put("domainname", target.getSuffix()); + vars.put("pings", new IterableDataset() { + + int counter = 0; + + @Override + public boolean next(Language l, Map vars) { + if (counter >= pings.length) { + return false; + } + 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", ""); + } else { + vars.put("result", ping3); + } + DomainPingConfiguration dpc = pings[counter].getConfig(); + if (dpc != null) { + vars.put("configId", Integer.toString(dpc.getId())); + } + counter++; + return true; + } + }); + t.output(out, l, vars); + } +}