public class Domain implements IdCachable, Verifyable {
- private User owner;
+ private CertificateOwner owner;
private String suffix;
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();
ps.execute();
}
- public User getOwner() {
+ public CertificateOwner getOwner() {
return owner;
}
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;
<?=$editForm?>
<br/>
<?=$affForm?>
+<br/>
+<?=$addDom?>
\ No newline at end of file
--- /dev/null
+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);
+ }
+}
--- /dev/null
+<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>
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");
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);
}
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 {
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 {
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`=?");
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;
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);
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");
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 {
}
@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);
}
}
- 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");
@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());
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);
@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
@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");
}
}
@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()))));
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"));
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);
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);