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