]> WPIA git - gigi.git/commitdiff
Adding a form element for selecting the certificate-valid-period.
authorFelix Dörre <felix@dogcraft.de>
Sat, 16 Aug 2014 18:29:14 +0000 (20:29 +0200)
committerFelix Dörre <felix@dogcraft.de>
Sat, 16 Aug 2014 18:29:14 +0000 (20:29 +0200)
src/org/cacert/gigi/output/CertificateValiditySelector.java [new file with mode: 0644]
src/org/cacert/gigi/pages/account/CertificateIssueForm.java
src/org/cacert/gigi/pages/account/CertificateIssueForm.templ

diff --git a/src/org/cacert/gigi/output/CertificateValiditySelector.java b/src/org/cacert/gigi/output/CertificateValiditySelector.java
new file mode 100644 (file)
index 0000000..95eaa09
--- /dev/null
@@ -0,0 +1,115 @@
+package org.cacert.gigi.output;
+
+import java.io.PrintWriter;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.cacert.gigi.localisation.Language;
+
+public class CertificateValiditySelector implements Outputable {
+
+    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
+
+    private static final int DAY = 1000 * 60 * 60 * 24;
+
+    Date from;
+
+    String val;
+
+    public CertificateValiditySelector() {
+        fmt.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+    }
+
+    @Override
+    public void output(PrintWriter out, Language l, Map<String, Object> vars) {
+        out.print("<select name='validFrom'><option value='now'");
+        if (from == null) {
+            out.print(" selected='selected'");
+        }
+        out.print(">");
+        out.print(l.getTranslation("now"));
+        out.print("</option>");
+        long base = getCurrentDayBase();
+        for (int i = 0; i < 14; i++) {
+            long date = base + DAY * i;
+            String d = fmt.format(new Date(date));
+            out.print("<option value='");
+            out.print(d);
+            out.print("'");
+            if (from != null && from.getTime() == date) {
+                out.print(" selected='selected'");
+            }
+            out.print(">");
+            out.print(d);
+            out.println("</option>");
+        }
+        out.println("</select>");
+
+        out.print("<select name='validity'>");
+        out.print("<option value='6m'");
+        if ("0.5m".equals(val)) {
+            out.print(" selected='selected'");
+        }
+        out.println(">6 months</option>");
+
+        out.print("<option value='1y'");
+        if ("1y".equals(val)) {
+            out.print(" selected='selected'");
+        }
+        out.println(">1 year</option>");
+
+        out.print("<option value='2y'");
+        if ("2y".equals(val)) {
+            out.print(" selected='selected'");
+        }
+        out.println(">2 years</option>");
+        out.println("</select>");
+
+        if (from == null) {
+            return;
+        }
+        // debug dummy output
+        Calendar c = GregorianCalendar.getInstance();
+        c.setTime(from);
+        if ("6m".equals(val)) {
+            c.add(Calendar.MONTH, 6);
+        } else if ("1y".equals(val)) {
+            c.add(Calendar.YEAR, 1);
+        } else if ("2y".equals(val)) {
+            c.add(Calendar.YEAR, 2);
+        }
+        out.println("From: " + fmt.format(from));
+        out.println("To: " + fmt.format(c.getTime()));
+    }
+
+    private long getCurrentDayBase() {
+        long base = System.currentTimeMillis();
+        base -= base % DAY;
+        base += DAY;
+        return base;
+    }
+
+    public void update(HttpServletRequest r) {
+        String from = r.getParameter("validFrom");
+        if (from == null || "now".equals(from)) {
+            this.from = null;
+        } else {
+            try {
+                this.from = fmt.parse(from);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+        val = r.getParameter("validity");
+
+    }
+
+}
index 184b87860ca8a0388a1ea36ddc52f02237f6767f..4c56dbdf1737e11dac45e50ef7fcea786783f265 100644 (file)
@@ -27,6 +27,7 @@ import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.User;
 import org.cacert.gigi.crypto.SPKAC;
 import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.output.CertificateValiditySelector;
 import org.cacert.gigi.output.Form;
 import org.cacert.gigi.output.template.HashAlgorithms;
 import org.cacert.gigi.output.template.IterableDataset;
@@ -108,6 +109,8 @@ public class CertificateIssueForm extends Form {
 
     Digest selectedDigest = Digest.getDefault();
 
+    CertificateValiditySelector issueDate = new CertificateValiditySelector();
+
     boolean login;
 
     CertificateProfile profile = CertificateProfile.getById(1);
@@ -230,6 +233,7 @@ public class CertificateIssueForm extends Form {
 
                 } else {
                     login = "1".equals(req.getParameter("login"));
+                    issueDate.update(req);
                     CN = req.getParameter("CN");
                     String hashAlg = req.getParameter("hash_alg");
                     if (hashAlg != null) {
@@ -407,6 +411,7 @@ public class CertificateIssueForm extends Form {
         }
 
         vars2.put("CN", CN);
+        vars2.put("validity", issueDate);
         vars2.put("emails", content.toString());
         vars2.put("hashs", new HashAlgorithms(selectedDigest));
         vars2.put("profiles", new IterableDataset() {
index 90aed06a6406ddb74c522dc32b97b5aeb44cb75a..0c5636697c849213907700e0e8837ebd81f567f7 100644 (file)
         <label for="hash_alg_<?=$algorithm?>"><div class='name'><?=$name?></div><? if($info) { ?> <div class='addinfo'> <?=$info?></div><? } ?></label><div class='elements'></div>
       <? } ?>
     </td>
+  </tr>
+  <tr class="expert">
+    <td><?=_Valid period?></td>
+    <td>
+        <?=$validity?>
+    </td>
   </tr>
     <tr>
     <td class='check'>