import javax.servlet.http.HttpServletRequest;
+import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.dbObjects.Certificate;
import org.cacert.gigi.dbObjects.CertificateOwner;
import org.cacert.gigi.dbObjects.Job;
public class CertificateModificationForm extends Form {
- CertificateOwner target;
+ private CertificateOwner target;
- final boolean withRevoked;
+ private final boolean withRevoked;
public CertificateModificationForm(HttpServletRequest hsr, boolean withRevoked) {
super(hsr);
private static final Template myTemplate = new Template(CertificateModificationForm.class.getResource("CertificateModificationForm.templ"));
@Override
- public boolean submit(PrintWriter out, HttpServletRequest req) {
+ public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
+ String action = req.getParameter("action");
+ if ( !"revoke".equals(action)) {
+ throw new GigiApiException("Incorrect action given.");
+ }
String[] certs = req.getParameterValues("certs[]");
if (certs == null) {
- // nothing to do
- return false;
+ throw new GigiApiException("No certificates to revoke.");
}
LinkedList<Job> revokes = new LinkedList<Job>();
for (String serial : certs) {
}
long start = System.currentTimeMillis();
for (Job job : revokes) {
- try {
- int toWait = (int) (60000 + start - System.currentTimeMillis());
- if (toWait > 0) {
- job.waitFor(toWait);
- } else {
- break; // canceled... waited too log
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
+ int toWait = (int) (60000 + start - System.currentTimeMillis());
+ if (toWait > 0) {
+ job.waitFor(toWait);
+ } else {
+ break; // canceled... waited too log
}
}
-
- return false;
+ return new RedirectResult(req.getPathInfo());
}
@Override
protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
vars.put("certs", new CertificateIterable(target.getCertificates(withRevoked)));
vars.put("certTable", certTable);
+ if (withRevoked) {
+ vars.put("all", "btn-primary");
+ vars.put("current", "btn-info");
+ } else {
+ vars.put("all", "btn-info");
+ vars.put("current", "btn-primary");
+ }
myTemplate.output(out, l, vars);
}