]> WPIA git - gigi.git/commitdiff
add: domains for org accounts
authorFelix Dörre <felix@dogcraft.de>
Sat, 14 Nov 2015 23:24:55 +0000 (00:24 +0100)
committerFelix Dörre <felix@dogcraft.de>
Sat, 14 Nov 2015 23:24:55 +0000 (00:24 +0100)
15 files changed:
src/org/cacert/gigi/dbObjects/Domain.java
src/org/cacert/gigi/pages/account/domain/DomainAddForm.java
src/org/cacert/gigi/pages/orga/EditOrg.templ
src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java [new file with mode: 0644]
src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ [new file with mode: 0644]
src/org/cacert/gigi/pages/orga/ViewOrgPage.java
src/org/cacert/gigi/ping/DNSPinger.java
src/org/cacert/gigi/ping/DomainPinger.java
src/org/cacert/gigi/ping/EmailPinger.java
src/org/cacert/gigi/ping/HTTPFetch.java
src/org/cacert/gigi/ping/SSLPinger.java
tests/org/cacert/gigi/TestDomain.java
tests/org/cacert/gigi/TestObjectCache.java
tests/org/cacert/gigi/TestUser.java
tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserDomainSearch.java

index bf76d4359d59f5c29d7ab826cecaf64d1b5d03cc..b76add29db4aaf98d887fa877dab2d6d369ca278 100644 (file)
@@ -19,7 +19,7 @@ import org.cacert.gigi.util.PublicSuffixes;
 
 public class Domain implements IdCachable, Verifyable {
 
-    private User owner;
+    private CertificateOwner owner;
 
     private String suffix;
 
@@ -51,9 +51,9 @@ public class Domain implements IdCachable, Verifyable {
         rs.close();
     }
 
-    public Domain(User owner, String suffix) throws GigiApiException {
+    public Domain(User actor, CertificateOwner owner, String suffix) throws GigiApiException {
         synchronized (Domain.class) {
-            checkCertifyableDomain(suffix, owner.isInGroup(Group.CODESIGNING));
+            checkCertifyableDomain(suffix, actor.isInGroup(Group.CODESIGNING));
             this.owner = owner;
             this.suffix = suffix;
             insert();
@@ -150,7 +150,7 @@ public class Domain implements IdCachable, Verifyable {
         ps.execute();
     }
 
-    public User getOwner() {
+    public CertificateOwner getOwner() {
         return owner;
     }
 
index 5b1c76e1d1ca916d8afb13d6cba735984316a294..a0e5685bb109a13b7c2943280441843ecb326b72 100644 (file)
@@ -35,7 +35,7 @@ public class DomainAddForm extends Form {
             if (parameter.trim().isEmpty()) {
                 throw new GigiApiException("No domain inserted.");
             }
-            Domain d = new Domain(target, parameter);
+            Domain d = new Domain(target, target, parameter);
             pcf.setTarget(d);
             pcf.submit(out, req);
             return true;
index bd415d7f561784f8313346ab42483a50ec440af0..1971bb798103ec33a94b90a10dbb6c5d8b6b0743 100644 (file)
@@ -1,3 +1,5 @@
 <?=$editForm?>
 <br/>
 <?=$affForm?>
+<br/>
+<?=$addDom?>
\ No newline at end of file
diff --git a/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java b/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java
new file mode 100644 (file)
index 0000000..1b0c00f
--- /dev/null
@@ -0,0 +1,39 @@
+package org.cacert.gigi.pages.orga;
+
+import java.io.PrintWriter;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.CertificateOwner;
+import org.cacert.gigi.dbObjects.Domain;
+import org.cacert.gigi.dbObjects.Organisation;
+import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.output.template.Form;
+import org.cacert.gigi.output.template.Template;
+import org.cacert.gigi.pages.LoginPage;
+
+public class OrgDomainAddForm extends Form {
+
+    public static Template t = new Template(OrgDomainAddForm.class.getResource("OrgDomainAddForm.templ"));
+
+    CertificateOwner target;
+
+    public OrgDomainAddForm(HttpServletRequest hsr, Organisation target) {
+        super(hsr);
+        this.target = target;
+    }
+
+    @Override
+    public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+        String domain = req.getParameter("domain");
+        new Domain(LoginPage.getUser(req), target, domain);
+        return true;
+    }
+
+    @Override
+    protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
+        t.output(out, l, vars);
+    }
+}
diff --git a/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ b/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ
new file mode 100644 (file)
index 0000000..c9f70b4
--- /dev/null
@@ -0,0 +1,10 @@
+<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper dataTable">
+  <tr>
+    <th><?=_Domain Name?></td>
+    <td><input type="text" name="domain"></td>
+  </tr>
+  <tr>
+    <td></td>
+    <td><input type="submit" name="addDomain" value="<?=_Add?>"></td>
+  </tr>
+</table>
index b2b39f1ac89631218502cdd1083cbef1d754e586..9e470240d95124bab73db23e98d5fc558ec67553 100644 (file)
@@ -47,6 +47,11 @@ public class ViewOrgPage extends Page {
                     resp.sendRedirect(DEFAULT_PATH + "/" + form.getOrganisation().getId());
                 }
                 return;
+            } else if (req.getParameter("addDomain") != null) {
+                if (Form.getForm(req, OrgDomainAddForm.class).submit(resp.getWriter(), req)) {
+                    // resp.sendRedirect(DEFAULT_PATH + "/" +
+                    // form.getOrganisation().getId());
+                }
             } else {
                 if ( !u.isInGroup(CreateOrgPage.ORG_ASSURER)) {
                     resp.sendError(403, "Access denied");
@@ -91,6 +96,7 @@ public class ViewOrgPage extends Page {
         HashMap<String, Object> vars = new HashMap<>();
         vars.put("editForm", new CreateOrgForm(req, o));
         vars.put("affForm", new AffiliationForm(req, o));
+        vars.put("addDom", new OrgDomainAddForm(req, o));
         mainTempl.output(out, lang, vars);
     }
 
index f2882678f461f9b0de81aabdd95dba364351fba5..eb6327b3f9a2968cd98332091b01bdbdf3a49d56 100644 (file)
@@ -5,14 +5,14 @@ import java.util.List;
 
 import javax.naming.NamingException;
 
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.util.DNSUtil;
 
 public class DNSPinger extends DomainPinger {
 
     @Override
-    public void ping(Domain domain, String expToken, User u, int confId) {
+    public void ping(Domain domain, String expToken, CertificateOwner u, int confId) {
         String[] tokenParts = expToken.split(":", 2);
         List<String> nameservers;
         try {
index 68ef91eb6e0092d9ff8c2f8433dfbb9753b46dcc..550c86afa176f6391e5b83e001c6d07efbb6d42a 100644 (file)
@@ -2,8 +2,8 @@ package org.cacert.gigi.ping;
 
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.database.GigiPreparedStatement;
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.User;
 
 public abstract class DomainPinger {
 
@@ -11,7 +11,7 @@ public abstract class DomainPinger {
 
     public static final String PING_SUCCEDED = "";
 
-    public abstract void ping(Domain domain, String configuration, User user, int confId);
+    public abstract void ping(Domain domain, String configuration, CertificateOwner target, int confId);
 
     protected static void enterPingResult(int configId, String state, String result, String token) {
         GigiPreparedStatement enterPingResult = DatabaseConnection.getInstance().prepare("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?");
index 9cc9c3518fa0cf9a19f2051ce0f98ee0c053e945..dfb2b74a54017fc1fb70190ec8f56e750189067b 100644 (file)
@@ -1,7 +1,9 @@
 package org.cacert.gigi.ping;
 
 import java.io.IOException;
+import java.util.Locale;
 
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.email.MailProbe;
@@ -11,12 +13,17 @@ import org.cacert.gigi.util.RandomToken;
 public class EmailPinger extends DomainPinger {
 
     @Override
-    public void ping(Domain domain, String configuration, User u, int confId) {
+    public void ping(Domain domain, String configuration, CertificateOwner u, int confId) {
         String mail = configuration + "@" + domain.getSuffix();
         String token = RandomToken.generateToken(16);
         try {
             enterPingResult(confId, PING_STILL_PENDING, "", token);
-            MailProbe.sendMailProbe(Language.getInstance(u.getPreferredLocale()), "domain", domain.getId(), token, mail);
+            Locale l = Locale.ENGLISH;
+            if (u instanceof User) {
+                l = ((User) u).getPreferredLocale();
+                // TODO what to do with orgs?
+            }
+            MailProbe.sendMailProbe(Language.getInstance(l), "domain", domain.getId(), token, mail);
         } catch (IOException e) {
             e.printStackTrace();
             updatePingResult(confId, "error", "Mail connection interrupted", token);
index 032448335776463a76bb46dce92b7dc74887f9b3..a5755844a47636bc24396d7dd64af392f2772f75 100644 (file)
@@ -6,13 +6,13 @@ import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
 
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.User;
 
 public class HTTPFetch extends DomainPinger {
 
     @Override
-    public void ping(Domain domain, String expToken, User user, int confId) {
+    public void ping(Domain domain, String expToken, CertificateOwner user, int confId) {
         try {
             String[] tokenParts = expToken.split(":", 2);
             URL u = new URL("http://" + domain.getSuffix() + "/cacert-" + tokenParts[0] + ".txt");
index 1e34c8b01d246dc8d05b49e22a732e9d00b4a8c8..6dab6b524ff51684e944db780b5f20b9becb69b9 100644 (file)
@@ -27,8 +27,8 @@ import javax.net.ssl.TrustManagerFactory;
 import javax.security.cert.X509Certificate;
 
 import org.cacert.gigi.dbObjects.Certificate;
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.User;
 
 public class SSLPinger extends DomainPinger {
 
@@ -43,7 +43,7 @@ public class SSLPinger extends DomainPinger {
     }
 
     @Override
-    public void ping(Domain domain, String configuration, User u, int confId) {
+    public void ping(Domain domain, String configuration, CertificateOwner u, int confId) {
         try (SocketChannel sch = SocketChannel.open()) {
             sch.socket().setSoTimeout(5000);
             String[] parts = configuration.split(":", 2);
@@ -149,7 +149,7 @@ public class SSLPinger extends DomainPinger {
         }
     }
 
-    private String test(SocketChannel sch, String domain, User subject) {
+    private String test(SocketChannel sch, String domain, CertificateOwner subject) {
         try {
             sch.socket().setSoTimeout(5000);
             SSLContext sc = SSLContext.getInstance("SSL");
index 6a9599a0daec9c0f65dc9e8c5613592b81bf27c9..00919975224b3cb9bd3740c624ab107008767559 100644 (file)
@@ -19,7 +19,7 @@ public class TestDomain extends ManagedTest {
     @Test
     public void testDomain() throws InterruptedException, GigiApiException {
         assertEquals(0, us.getDomains().length);
-        Domain d = new Domain(us, "v1example.org");
+        Domain d = new Domain(us, us, "v1example.org");
         Domain[] domains = us.getDomains();
         assertEquals(1, domains.length);
         assertEquals("v1example.org", domains[0].getSuffix());
@@ -28,7 +28,7 @@ public class TestDomain extends ManagedTest {
         assertNotEquals(0, d.getId());
         assertEquals(d.getId(), domains[0].getId());
 
-        new Domain(us, "v2-example.org");
+        new Domain(us, us, "v2-example.org");
 
         domains = us.getDomains();
         assertEquals(2, domains.length);
@@ -48,9 +48,9 @@ public class TestDomain extends ManagedTest {
 
     @Test
     public void testDoubleDomain() throws InterruptedException, GigiApiException {
-        new Domain(us, "dub-example.org");
+        new Domain(us, us, "dub-example.org");
         try {
-            new Domain(us, "dub-example.org");
+            new Domain(us, us, "dub-example.org");
             fail("expected exception");
         } catch (GigiApiException e) {
             // expected
@@ -59,9 +59,9 @@ public class TestDomain extends ManagedTest {
 
     @Test
     public void testDoubleDomainDelete() throws InterruptedException, GigiApiException {
-        Domain d = new Domain(us, "delexample.org");
+        Domain d = new Domain(us, us, "delexample.org");
         d.delete();
-        new Domain(us, "delexample.org");
+        new Domain(us, us, "delexample.org");
     }
 
 }
index b1272a0f8c413f902b3745a30d11e5ae8eac20d5..e4dec8a3b541224bd90d11b11d0cd7ad1bf2cf51 100644 (file)
@@ -34,7 +34,8 @@ public class TestObjectCache extends ManagedTest {
 
     @Test
     public void testDomainCache() throws GigiApiException {
-        Domain d = new Domain(User.getById(uid), "example.org");
+        User u = User.getById(uid);
+        Domain d = new Domain(u, u, "example.org");
 
         assertThat(d, is(sameInstance(Domain.getById(d.getId()))));
         assertThat(Domain.getById(d.getId()), is(sameInstance(Domain.getById(d.getId()))));
index 2bf1c941b9f16f600621493614ff26f9ef29c2e0..1124179ac4bc3998a997d0e7d14a7e2fa982beff 100644 (file)
@@ -68,9 +68,9 @@ public class TestUser extends ManagedTest {
         getMailReciever().receive().verify();
         new EmailAddress(u, uq + "c@email.org", Locale.ENGLISH);
         getMailReciever().receive();// no-verify
-        verify(new Domain(u, uq + "a-testdomain.org"));
-        verify(new Domain(u, uq + "b-testdomain.org"));
-        verify(new Domain(u, uq + "c-testdomain.org"));
+        verify(new Domain(u, u, uq + "a-testdomain.org"));
+        verify(new Domain(u, u, uq + "b-testdomain.org"));
+        verify(new Domain(u, u, uq + "c-testdomain.org"));
         assertEquals(3, u.getEmails().length);
         assertEquals(3, u.getDomains().length);
         assertTrue(u.isValidDomain(uq + "a-testdomain.org"));
index 81d727bcd882d5e52126a3d1033dd7196db9cd6a..966adc1729bcd828edd79bc77d4a1fef251d6a83 100644 (file)
@@ -36,7 +36,7 @@ public class TestSEAdminPageUserDomainSearch extends ClientTest {
         int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
         User user = User.getById(id);
         String domainName = createUniqueName() + ".org";
-        new Domain(user, domainName);
+        new Domain(user, user, domainName);
         URLConnection uc = new URL("https://" + getServerName() + FindDomainPage.PATH).openConnection();
         uc.addRequestProperty("Cookie", cookie);
         String csrf = getCSRF(uc, 0);
@@ -57,7 +57,7 @@ public class TestSEAdminPageUserDomainSearch extends ClientTest {
         int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
         User user = User.getById(id);
         String domainName = createUniqueName() + ".org";
-        Domain d = new Domain(user, domainName);
+        Domain d = new Domain(user, user, domainName);
         URLConnection uc = new URL("https://" + getServerName() + FindDomainPage.PATH).openConnection();
         uc.addRequestProperty("Cookie", cookie);
         String csrf = getCSRF(uc, 0);