From 11afda1a7ca6a6e84b61b72fb2d1a6d3bb0e9051 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sun, 15 Mar 2015 09:53:44 +0100 Subject: [PATCH] upd: Beautify up the verification form. --- src/org/cacert/gigi/dbObjects/Domain.java | 4 +-- .../cacert/gigi/dbObjects/EmailAddress.java | 2 +- src/org/cacert/gigi/dbObjects/Verifyable.java | 8 +++++ src/org/cacert/gigi/pages/Verify.java | 29 ++++++++++++++----- src/org/cacert/gigi/pages/Verify.templ | 2 +- 5 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 src/org/cacert/gigi/dbObjects/Verifyable.java diff --git a/src/org/cacert/gigi/dbObjects/Domain.java b/src/org/cacert/gigi/dbObjects/Domain.java index 9df2e482..00f51c1f 100644 --- a/src/org/cacert/gigi/dbObjects/Domain.java +++ b/src/org/cacert/gigi/dbObjects/Domain.java @@ -18,7 +18,7 @@ import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.dbObjects.DomainPingConfiguration.PingType; import org.cacert.gigi.util.PublicSuffixes; -public class Domain implements IdCachable { +public class Domain implements IdCachable, Verifyable { public class DomainPingExecution { @@ -233,7 +233,7 @@ public class Domain implements IdCachable { configs = null; } - public void verify(String hash) throws GigiApiException { + public synchronized void verify(String hash) throws GigiApiException { GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE domainPinglog SET state='success' WHERE challenge=? AND configId IN (SELECT id FROM pingconfig WHERE domainId=?)"); ps.setString(1, hash); ps.setInt(2, id); diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index 13e2e457..c499b1a9 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -11,7 +11,7 @@ import org.cacert.gigi.email.MailProbe; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.util.RandomToken; -public class EmailAddress implements IdCachable { +public class EmailAddress implements IdCachable, Verifyable { private String address; diff --git a/src/org/cacert/gigi/dbObjects/Verifyable.java b/src/org/cacert/gigi/dbObjects/Verifyable.java new file mode 100644 index 00000000..68e7173a --- /dev/null +++ b/src/org/cacert/gigi/dbObjects/Verifyable.java @@ -0,0 +1,8 @@ +package org.cacert.gigi.dbObjects; + +import org.cacert.gigi.GigiApiException; + +public interface Verifyable { + + public void verify(String hash) throws GigiApiException; +} diff --git a/src/org/cacert/gigi/pages/Verify.java b/src/org/cacert/gigi/pages/Verify.java index a1d613a7..cdcf490f 100644 --- a/src/org/cacert/gigi/pages/Verify.java +++ b/src/org/cacert/gigi/pages/Verify.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.EmailAddress; +import org.cacert.gigi.dbObjects.Verifyable; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Form; @@ -24,19 +25,25 @@ public class Verify extends Page { private String id; + private Verifyable target; + public VerificationForm(HttpServletRequest hsr) { super(hsr, PATH); hash = hsr.getParameter("hash"); type = hsr.getParameter("type"); id = hsr.getParameter("id"); + if ("email".equals(type)) { + target = EmailAddress.getById(Integer.parseInt(id)); + } else if ("domain".equals("type")) { + target = Domain.getById(Integer.parseInt(id)); + } } @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { if ("email".equals(type)) { try { - EmailAddress ea = EmailAddress.getById(Integer.parseInt(id)); - ea.verify(hash); + target.verify(hash); out.println("Email verification completed."); } catch (IllegalArgumentException e) { out.println(translate(req, "The email address is invalid.")); @@ -45,11 +52,10 @@ public class Verify extends Page { } } else if ("domain".equals(type)) { try { - Domain ea = Domain.getById(Integer.parseInt(id)); - ea.verify(hash); + target.verify(hash); out.println("Domain verification completed."); } catch (IllegalArgumentException e) { - out.println(translate(req, "The domain address is invalid.")); + out.println(translate(req, "The domain is invalid.")); } catch (GigiApiException e) { e.format(out, getLanguage(req)); } @@ -62,9 +68,13 @@ public class Verify extends Page { vars.put("hash", hash); vars.put("id", id); vars.put("type", type); + if (target instanceof EmailAddress) { + vars.put("subject", ((EmailAddress) target).getAddress()); + } else if (target instanceof Domain) { + vars.put("subject", ((Domain) target).getSuffix()); + } getDefaultTemplate().output(out, l, vars); } - } public static final String PATH = "/verify"; @@ -90,7 +100,12 @@ public class Verify extends Page { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap()); + try { + new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap()); + } catch (IllegalArgumentException e) { + resp.getWriter().println(translate(req, "The object to verify is invalid.")); + + } } } diff --git a/src/org/cacert/gigi/pages/Verify.templ b/src/org/cacert/gigi/pages/Verify.templ index 68cfb775..1101f911 100644 --- a/src/org/cacert/gigi/pages/Verify.templ +++ b/src/org/cacert/gigi/pages/Verify.templ @@ -1,4 +1,4 @@ - + -- 2.39.2