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 {
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);
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;
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."));
}
} 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));
}
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";
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+ try {
+ new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+ } catch (IllegalArgumentException e) {
+ resp.getWriter().println(translate(req, "The object to verify is invalid."));
+
+ }
}
}