X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2Fdomain%2FPingConfigForm.java;h=80ce8ff2e06bebac61203dcef1a9d9ea1b39a82c;hp=5b5da852ca0356709b0e17aeacd0ab99e84651e0;hb=cc10b8bdcbe80e515cd3b8a3de893a5146ff8790;hpb=98aa1434dc5e06971dcd35f6b9bd335216edce43 diff --git a/src/org/cacert/gigi/pages/account/domain/PingConfigForm.java b/src/org/cacert/gigi/pages/account/domain/PingConfigForm.java index 5b5da852..80ce8ff2 100644 --- a/src/org/cacert/gigi/pages/account/domain/PingConfigForm.java +++ b/src/org/cacert/gigi/pages/account/domain/PingConfigForm.java @@ -11,12 +11,13 @@ import org.cacert.gigi.Gigi; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.DomainPingConfiguration; -import org.cacert.gigi.dbObjects.DomainPingConfiguration.PingType; +import org.cacert.gigi.dbObjects.DomainPingType; 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.ping.SSLPinger; +import org.cacert.gigi.util.HTMLEncoder; import org.cacert.gigi.util.RandomToken; public class PingConfigForm extends Form { @@ -50,7 +51,7 @@ public class PingConfigForm extends Form { private SSLType[] sslTypes = new SSLType[MAX_SSL_TESTS]; - private final Template t = new Template(PingConfigForm.class.getResource("PingConfigForm.templ")); + private static final Template t = new Template(PingConfigForm.class.getResource("PingConfigForm.templ")); public PingConfigForm(HttpServletRequest hsr, Domain target) throws GigiApiException { super(hsr); @@ -87,9 +88,11 @@ public class PingConfigForm extends Form { case SSL: { doSSL = true; String[] parts = dpc.getInfo().split(":"); - ports[portpos] = Integer.parseInt(parts[0]); - if (parts.length == 2) { - sslTypes[portpos] = SSLType.valueOf(parts[1].toUpperCase()); + tokenName = parts[0]; + tokenValue = parts[1]; + ports[portpos] = Integer.parseInt(parts[2]); + if (parts.length == 4) { + sslTypes[portpos] = SSLType.valueOf(parts[3].toUpperCase()); } else { sslTypes[portpos] = SSLType.DIRECT; } @@ -106,15 +109,20 @@ public class PingConfigForm extends Form { @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { - if (req.getParameter("emailType") != null) { - String mail = AUTHORATIVE_EMAILS[Integer.parseInt(req.getParameter("email"))]; - target.addPing(PingType.EMAIL, mail); + target.clearPings(); + if (req.getParameter("emailType") != null && req.getParameter("email") != null) { + try { + String mail = AUTHORATIVE_EMAILS[Integer.parseInt(req.getParameter("email"))]; + target.addPing(DomainPingType.EMAIL, mail); + } catch (NumberFormatException e) { + throw new GigiApiException("A email address is required"); + } } if (req.getParameter("DNSType") != null) { - target.addPing(PingType.DNS, tokenName + ":" + tokenValue); + target.addPing(DomainPingType.DNS, tokenName + ":" + tokenValue); } if (req.getParameter("HTTPType") != null) { - target.addPing(PingType.HTTP, tokenName + ":" + tokenValue); + target.addPing(DomainPingType.HTTP, tokenName + ":" + tokenValue); } if (req.getParameter("SSLType") != null) { List types = Arrays.asList(SSLPinger.TYPES); @@ -126,9 +134,9 @@ public class PingConfigForm extends Form { } int portInt = Integer.parseInt(port); if ("direct".equals(type)) { - target.addPing(PingType.SSL, port); + target.addPing(DomainPingType.SSL, tokenName + ":" + tokenValue + ":" + port); } else if (types.contains(type)) { - target.addPing(PingType.SSL, portInt + ":" + type); + target.addPing(DomainPingType.SSL, tokenName + ":" + tokenValue + ":" + portInt + ":" + type); } } @@ -147,6 +155,7 @@ public class PingConfigForm extends Form { protected void outputEmbeddableContent(PrintWriter out, Language l, Map vars) { vars.put("tokenName", tokenName); vars.put("tokenValue", tokenValue); + vars.put("openSSLHelp", "" + HTMLEncoder.encodeHTML("-subj \"/CN=/OU=" + tokenValue + "\"") + ""); vars.put("authEmails", new IterableDataset() { int i = 0;