]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/domain/PingConfigForm.java
upd: un-localize OpenSSL-command-help
[gigi.git] / src / org / cacert / gigi / pages / account / domain / PingConfigForm.java
index 460866cd1bdfd12e2e368a7269a6d5f116ca1b4d..80ce8ff2e06bebac61203dcef1a9d9ea1b39a82c 100644 (file)
@@ -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.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.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<String> types = Arrays.asList(SSLPinger.TYPES);
@@ -126,14 +134,14 @@ 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);
                 }
 
             }
         }
-        Gigi.notifyPinger();
+        Gigi.notifyPinger(null);
         return false;
     }
 
@@ -147,6 +155,7 @@ public class PingConfigForm extends Form {
     protected void outputEmbeddableContent(PrintWriter out, Language l, Map<String, Object> vars) {
         vars.put("tokenName", tokenName);
         vars.put("tokenValue", tokenValue);
+        vars.put("openSSLHelp", "<code>" + HTMLEncoder.encodeHTML("-subj \"/CN=<domain>/OU=" + tokenValue + "\"") + "</code>");
         vars.put("authEmails", new IterableDataset() {
 
             int i = 0;