1 package club.wpia.gigi.pages.main;
3 import java.io.PrintWriter;
7 import javax.servlet.http.HttpServletRequest;
9 import club.wpia.gigi.GigiApiException;
10 import club.wpia.gigi.dbObjects.Certificate;
11 import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
12 import club.wpia.gigi.localisation.Language;
13 import club.wpia.gigi.output.template.Form;
14 import club.wpia.gigi.output.template.SprintfCommand;
15 import club.wpia.gigi.output.template.Template;
16 import club.wpia.gigi.output.template.TranslateCommand;
17 import club.wpia.gigi.util.RateLimit;
18 import club.wpia.gigi.util.RateLimit.RateLimitException;
20 public class CertStatusRequestForm extends Form {
22 private static final Template t = new Template(CertStatusRequestForm.class.getResource("CertStatusForm.templ"));
25 public static final RateLimit RATE_LIMIT = new RateLimit(50, 5 * 60 * 1000);
27 public static final TranslateCommand NOT_FOUND = new TranslateCommand("Certificate to check not found. Maybe it was issued by a different CA.");
29 public CertStatusRequestForm(HttpServletRequest hsr) {
35 public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
36 if (RATE_LIMIT.isLimitExceeded(req.getRemoteAddr())) {
37 throw new RateLimitException();
41 c = Certificate.locateCertificate(req.getParameter("serial"), req.getParameter("cert"));
43 throw new GigiApiException(NOT_FOUND);
45 } catch (GigiApiException e) {
46 throw new PermamentFormException(e);
49 if (c.getStatus() == CertificateStatus.REVOKED) {
50 java.util.Date revocationDate = c.getRevocationDate();
51 throw new PermamentFormException(new GigiApiException(SprintfCommand.createSimple("Certificate has been revoked on {0}.", revocationDate)));
53 if (c.getExpiryDate().before(new Date())) {
54 return new SuccessMessageResult((SprintfCommand.createSimple("Certificate is valid but has expired on {0}.", c.getExpiryDate())));
57 return new SuccessMessageResult(new TranslateCommand("Certificate is valid."));
61 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
62 t.output(out, l, vars);