X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2FDomainAddForm.java;h=65e168c4f8ab5ecf671b67a833854418e9f96490;hb=6292e9df869734c501169df5c0778b2e12ead3fd;hp=55fcbbecbe3fd062b33962ef5951b52e66500b35;hpb=480cb29387c76ccc19f8fa8fb0abe8ae1b069730;p=gigi.git diff --git a/src/org/cacert/gigi/pages/account/DomainAddForm.java b/src/org/cacert/gigi/pages/account/DomainAddForm.java index 55fcbbec..65e168c4 100644 --- a/src/org/cacert/gigi/pages/account/DomainAddForm.java +++ b/src/org/cacert/gigi/pages/account/DomainAddForm.java @@ -1,17 +1,24 @@ package org.cacert.gigi.pages.account; import java.io.PrintWriter; +import java.util.Arrays; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; -import org.cacert.gigi.Domain; +import org.cacert.gigi.Gigi; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.User; +import org.cacert.gigi.dbObjects.Domain; +import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.Form; +import org.cacert.gigi.output.template.IterableDataset; +import org.cacert.gigi.output.template.OutputableArrayIterable; import org.cacert.gigi.output.template.Template; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.ping.SSLPinger; +import org.cacert.gigi.util.RandomToken; public class DomainAddForm extends Form { @@ -19,6 +26,12 @@ public class DomainAddForm extends Form { private User target; + private String tokenName = RandomToken.generateToken(8); + + private String tokenValue = RandomToken.generateToken(16); + + private static final int MAX_SSL_TESTS = 4; + public DomainAddForm(HttpServletRequest hsr, User target) { super(hsr); this.target = target; @@ -33,16 +46,68 @@ public class DomainAddForm extends Form { } Domain d = new Domain(target, parameter); d.insert(); + if (req.getParameter("emailType") != null) { + String mail = AUTHORATIVE_EMAILS[Integer.parseInt(req.getParameter("email"))]; + d.addPing("email", mail); + } + if (req.getParameter("DNSType") != null) { + d.addPing("dns", tokenName + ":" + tokenValue); + } + if (req.getParameter("HTTPType") != null) { + d.addPing("http", tokenName + ":" + tokenValue); + } + if (req.getParameter("SSLType") != null) { + List types = Arrays.asList(SSLPinger.TYPES); + for (int i = 0; i < MAX_SSL_TESTS; i++) { + String type = req.getParameter("ssl-type-" + i); + String port = req.getParameter("ssl-port-" + i); + if (type == null || port == null || port.equals("")) { + continue; + } + int portInt = Integer.parseInt(port); + if ("direct".equals(type)) { + d.addPing("ssl", port); + } else if (types.contains(type)) { + d.addPing("ssl", portInt + ":" + type); + } + + } + } + Gigi.notifyPinger(); + return true; + } catch (NumberFormatException e) { + new GigiApiException("A number could not be parsed").format(out, Page.getLanguage(req)); + return false; } catch (GigiApiException e) { e.format(out, Page.getLanguage(req)); return false; } } + public static final String[] AUTHORATIVE_EMAILS = new String[] { + "root", "hostmaster", "postmaster", "admin", "webmaster" + }; + @Override protected void outputContent(PrintWriter out, Language l, Map vars) { + vars.put("tokenName", tokenName); + vars.put("tokenValue", tokenValue); + vars.put("authEmails", new OutputableArrayIterable(AUTHORATIVE_EMAILS, "email")); + vars.put("ssl-services", new IterableDataset() { + + int counter = 0; + + @Override + public boolean next(Language l, Map vars) { + if (counter >= MAX_SSL_TESTS) { + return false; + } + vars.put("i", counter); + counter++; + return true; + } + }); t.output(out, l, vars); } - }