import org.cacert.gigi.database.DatabaseConnection;
import org.cacert.gigi.email.EmailProvider;
+import org.cacert.gigi.output.Form.CSRFException;
import org.cacert.gigi.output.Menu;
import org.cacert.gigi.output.MenuItem;
import org.cacert.gigi.output.Outputable;
-import org.cacert.gigi.output.Form.CSRFException;
import org.cacert.gigi.output.template.Template;
import org.cacert.gigi.pages.LoginPage;
import org.cacert.gigi.pages.MainPage;
import org.cacert.gigi.pages.TestSecure;
import org.cacert.gigi.pages.Verify;
import org.cacert.gigi.pages.account.ChangePasswordPage;
+import org.cacert.gigi.pages.account.DomainOverview;
import org.cacert.gigi.pages.account.MailCertificateAdd;
import org.cacert.gigi.pages.account.MailCertificates;
import org.cacert.gigi.pages.account.MailOverview;
pages.put(RegisterPage.PATH, new RegisterPage());
pages.put(MailCertificateAdd.PATH, new MailCertificateAdd());
pages.put(MailOverview.DEFAULT_PATH, new MailOverview("My email addresses"));
+ pages.put(DomainOverview.PATH, new DomainOverview("Domains"));
baseTemplate = new Template(Gigi.class.getResource("Gigi.templ"));
m = new Menu("Certificates", "cert", new MenuItem(MailOverview.DEFAULT_PATH, "Emails"), new MenuItem("", "Client Certificates"), new MenuItem("", "Domains"), new MenuItem("", "Server Certificates"));
super.init();
--- /dev/null
+package org.cacert.gigi.pages.account;
+
+import java.io.PrintWriter;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.cacert.gigi.Language;
+import org.cacert.gigi.output.Form;
+import org.cacert.gigi.output.template.Template;
+
+public class DomainAddForm extends Form {
+
+ private static final Template t = new Template(DomainManagementForm.class.getResource("DomainAddForm.templ"));
+
+ public DomainAddForm(HttpServletRequest hsr) {
+ super(hsr);
+ }
+
+ @Override
+ public boolean submit(PrintWriter out, HttpServletRequest req) {
+ return false;
+ }
+
+ @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">
+ <thead>
+ <tr>
+ <th colspan="2" class="title"><?=_Add Domain?></th>
+ </tr>
+ </thead>
+<tbody>
+ <tr>
+ <td width="125"><?=_Domain?> </td>
+ <td width="125"><input type="text" name="newdomain" value=""></td>
+ </tr>
+ <tr>
+ <td colspan="2"><input type="submit" name="adddomain" value="<?=_I own or am authorised to control this domain?>"></td>
+ </tr>
+</tbody>
+</table>
--- /dev/null
+package org.cacert.gigi.pages.account;
+
+import java.io.PrintWriter;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.cacert.gigi.Domain;
+import org.cacert.gigi.Language;
+import org.cacert.gigi.output.Form;
+import org.cacert.gigi.output.template.IterableDataset;
+import org.cacert.gigi.output.template.Template;
+
+public class DomainManagementForm extends Form {
+
+ private static final Template t = new Template(DomainManagementForm.class.getResource("DomainManagementForm.templ"));
+
+ public DomainManagementForm(HttpServletRequest hsr) {
+ super(hsr);
+ }
+
+ @Override
+ public boolean submit(PrintWriter out, HttpServletRequest req) {
+ return false;
+ }
+
+ @Override
+ protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
+ final Domain[] doms = (Domain[]) vars.get("doms");
+ IterableDataset dts = new IterableDataset() {
+
+ private int point = 0;
+
+ @Override
+ public boolean next(Language l, Map<String, Object> vars) {
+ if (point >= doms.length) {
+ return false;
+ }
+ Domain domain = doms[point];
+ vars.put("id", domain.getId());
+ vars.put("domain", domain.getSuffix());
+ vars.put("status", "??");
+ point++;
+ return true;
+ }
+ };
+ vars.put("domains", dts);
+ t.output(out, l, vars);
+ }
+
+}
--- /dev/null
+<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper dataTable">
+ <tbody><tr>
+ <th colspan="3">Domains</td>
+ </tr>
+ <tr>
+ <td><?=_Delete?></td>
+ <td><?=_Status?></td>
+ <td><?=_Address?></td>
+
+ </tr>
+ <? foreach($domains) { ?>
+ <tr>
+ <td><input type="checkbox" name="delid[]" value="<?=$id?>" /></td>
+ <td><?=$status?></td>
+ <td><?=$domain?></td>
+ </tr>
+ <? } ?>
+</tbody></table>
\ No newline at end of file
--- /dev/null
+package org.cacert.gigi.pages.account;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.User;
+import org.cacert.gigi.pages.Page;
+
+public class DomainOverview extends Page {
+
+ public static final String PATH = "/account/domains";
+
+ public DomainOverview(String title) {
+ super(title);
+ }
+
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ User u = getUser(req);
+ DomainManagementForm domMan = new DomainManagementForm(req);
+ DomainAddForm domAdd = new DomainAddForm(req);
+ HashMap<String, Object> vars = new HashMap<>();
+ vars.put("doms", u.getDomains());
+ vars.put("domainman", domMan);
+ vars.put("domainadd", domAdd);
+ getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
+ }
+
+}
--- /dev/null
+<?=$domainman?>
+<h2><?=_Add Domain?></h2>
+<p>
+<?=_Please Note: You only need to enter the main part of your domain, eg. mydomain.com rather then www.mydomain.com. Once you have verified your domain you are able to enter any sub-domain, such as www.mydomain.com or www.this.is.mydomain.com as the system checks from right to left, rather then specific hostnames when you upload a CSR to the system.?>
+</p>
+<?=$domainadd?>
+<p>
+<?=_Currently we only issue certificates for Punycode domains if the person requesting them has code signing attributes attached to their account, as these have potentially slightly higher security risk.?>
+</p>