X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2FMailCertificateAdd.java;h=c25db15f89cf18f426ed9703f682a2740d9b4d47;hb=edd3dc5109f2dbeaf1797c7643d85ba36d0b3763;hp=5a343954fb2b719032d331f9a7cd720881621212;hpb=aade4c55a068d4b8211d67754cb6060e6c7a42b0;p=gigi.git diff --git a/src/org/cacert/gigi/pages/account/MailCertificateAdd.java b/src/org/cacert/gigi/pages/account/MailCertificateAdd.java index 5a343954..c25db15f 100644 --- a/src/org/cacert/gigi/pages/account/MailCertificateAdd.java +++ b/src/org/cacert/gigi/pages/account/MailCertificateAdd.java @@ -1,27 +1,19 @@ package org.cacert.gigi.pages.account; import java.io.IOException; -import java.io.PrintWriter; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; +import java.util.Collections; import java.util.HashMap; -import java.util.Map; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.Certificate; -import org.cacert.gigi.Language; -import org.cacert.gigi.User; -import org.cacert.gigi.database.DatabaseConnection; -import org.cacert.gigi.output.ClientCSRGenerate; -import org.cacert.gigi.output.template.IterableDataset; -import org.cacert.gigi.pages.LoginPage; +import org.cacert.gigi.output.Form; +import org.cacert.gigi.output.template.Template; import org.cacert.gigi.pages.Page; public class MailCertificateAdd extends Page { public static final String PATH = "/account/certs/email/new"; + Template t = new Template(MailCertificateAdd.class.getResource("RequestCertificate.templ")); public MailCertificateAdd() { super("Create Email certificate"); @@ -32,59 +24,24 @@ public class MailCertificateAdd extends Page { HashMap vars = new HashMap(); vars.put("CCA", "CCA"); - User u = LoginPage.getUser(req); - try { - PreparedStatement ps = DatabaseConnection.getInstance().prepare( - "SELECT `id`,`email` from `email` WHERE `memid`=? AND `deleted`=0"); - ps.setInt(1, u.getId()); - final ResultSet rs = ps.executeQuery(); - vars.put("emails", new IterableDataset() { - - @Override - public boolean next(Language l, Map vars) { - try { - if (!rs.next()) { - return false; - } - vars.put("id", rs.getString(1)); - vars.put("value", rs.getString(2)); - return true; - } catch (SQLException e) { - e.printStackTrace(); - } - return false; - } - }); - getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); - rs.close(); - } catch (SQLException e) { - e.printStackTrace(); - } + t.output(resp.getWriter(), getLanguage(req), vars); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - PrintWriter out = resp.getWriter(); - if (req.getParameter("optionalCSR") == null || req.getParameter("optionalCSR").equals("")) { - out.println("csr missing"); - ClientCSRGenerate.output(req, resp); - } - String csr = req.getParameter("optionalCSR"); - if (!"on".equals(req.getParameter("CCA"))) { - // Error. - return; - } - Certificate c = new Certificate(LoginPage.getUser(req).getId(), "/commonName=CAcert WoT User", "sha256", csr); - c.issue(); - try { - c.waitFor(60000); - resp.sendRedirect(MailCertificates.PATH + "/" + c.getSerial()); - } catch (SQLException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); + IssueCertificateForm f; + if (req.getParameter(Form.CSRF_FIELD) != null) { + f = Form.getForm(req, IssueCertificateForm.class); + if (f.submit(resp.getWriter(), req)) { + Certificate c = f.getResult(); + String ser = c.getSerial(); + resp.sendRedirect(MailCertificates.PATH + "/" + ser); + } + } else { + f = new IssueCertificateForm(req); + f.submit(resp.getWriter(), req); } + f.output(resp.getWriter(), getLanguage(req), Collections. emptyMap()); } - }