1 package club.wpia.gigi.pages.account.certs;
3 import java.io.PrintWriter;
4 import java.math.BigInteger;
5 import java.util.LinkedList;
8 import javax.servlet.http.HttpServletRequest;
10 import club.wpia.gigi.GigiApiException;
11 import club.wpia.gigi.dbObjects.Certificate;
12 import club.wpia.gigi.dbObjects.Certificate.RevocationType;
13 import club.wpia.gigi.dbObjects.CertificateOwner;
14 import club.wpia.gigi.dbObjects.Job;
15 import club.wpia.gigi.localisation.Language;
16 import club.wpia.gigi.output.CertificateIterable;
17 import club.wpia.gigi.output.template.Form;
18 import club.wpia.gigi.output.template.Template;
19 import club.wpia.gigi.pages.LoginPage;
21 public class CertificateModificationForm extends Form {
23 private CertificateOwner target;
25 private final boolean withRevoked;
27 public CertificateModificationForm(HttpServletRequest hsr, boolean withRevoked) {
29 this.withRevoked = withRevoked;
30 target = LoginPage.getAuthorizationContext(hsr).getTarget();
33 private static final Template certTable = new Template(CertificateIterable.class.getResource("CertificateTable.templ"));
35 private static final Template myTemplate = new Template(CertificateModificationForm.class.getResource("CertificateModificationForm.templ"));
38 public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
39 String action = req.getParameter("action");
40 if ( !"revoke".equals(action)) {
41 throw new GigiApiException("Incorrect action given.");
43 String[] certs = req.getParameterValues("certs[]");
45 throw new GigiApiException("No certificates to revoke.");
47 LinkedList<Job> revokes = new LinkedList<Job>();
48 for (String serial : certs) {
49 Certificate c = Certificate.getBySerial(new BigInteger(serial, 16));
50 if (c == null || c.getOwner() != target) {
53 revokes.add(c.revoke(RevocationType.SUPPORT));
55 long start = System.currentTimeMillis();
56 for (Job job : revokes) {
57 int toWait = (int) (60000 + start - System.currentTimeMillis());
61 break; // canceled... waited too log
64 return new RedirectResult(req.getPathInfo());
68 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
69 vars.put("certs", new CertificateIterable(target.getCertificates(withRevoked)));
70 vars.put("certTable", certTable);
72 vars.put("all", "btn-primary");
73 vars.put("current", "btn-info");
75 vars.put("all", "btn-info");
76 vars.put("current", "btn-primary");
78 myTemplate.output(out, l, vars);