1 package org.cacert.gigi.pages.account.certs;
3 import java.io.PrintWriter;
4 import java.util.LinkedList;
7 import javax.servlet.http.HttpServletRequest;
9 import org.cacert.gigi.dbObjects.Certificate;
10 import org.cacert.gigi.dbObjects.CertificateOwner;
11 import org.cacert.gigi.dbObjects.Job;
12 import org.cacert.gigi.localisation.Language;
13 import org.cacert.gigi.output.CertificateIterable;
14 import org.cacert.gigi.output.template.Form;
15 import org.cacert.gigi.output.template.Template;
16 import org.cacert.gigi.pages.LoginPage;
18 public class CertificateModificationForm extends Form {
20 CertificateOwner target;
22 final boolean withRevoked;
24 public CertificateModificationForm(HttpServletRequest hsr, boolean withRevoked) {
26 this.withRevoked = withRevoked;
27 target = LoginPage.getAuthorizationContext(hsr).getTarget();
30 private static final Template certTable = new Template(CertificateIterable.class.getResource("CertificateTable.templ"));
32 private static final Template myTemplate = new Template(CertificateModificationForm.class.getResource("CertificateModificationForm.templ"));
35 public boolean submit(PrintWriter out, HttpServletRequest req) {
36 String[] certs = req.getParameterValues("certs[]");
41 LinkedList<Job> revokes = new LinkedList<Job>();
42 for (String serial : certs) {
43 Certificate c = Certificate.getBySerial(serial);
44 if (c == null || c.getOwner() != target) {
47 revokes.add(c.revoke());
49 long start = System.currentTimeMillis();
50 for (Job job : revokes) {
52 int toWait = (int) (60000 + start - System.currentTimeMillis());
56 break; // canceled... waited too log
58 } catch (InterruptedException e) {
67 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
68 vars.put("certs", new CertificateIterable(target.getCertificates(withRevoked)));
69 vars.put("certTable", certTable);
70 myTemplate.output(out, l, vars);