]> WPIA git - gigi.git/commitdiff
Implement prititive "show email certificates"
authorFelix Dörre <felix@dogcraft.de>
Tue, 24 Jun 2014 16:30:16 +0000 (18:30 +0200)
committerFelix Dörre <felix@dogcraft.de>
Tue, 24 Jun 2014 16:31:29 +0000 (18:31 +0200)
src/org/cacert/gigi/Gigi.java
src/org/cacert/gigi/database/DatabaseConnection.java
src/org/cacert/gigi/output/CertificateTable.java [new file with mode: 0644]
src/org/cacert/gigi/pages/LoginPage.java
src/org/cacert/gigi/pages/account/MailCertificates.java [new file with mode: 0644]

index 286f5eb976186c5daf821c62ee377cf518a7fea9..0420eb7f197cbd589eccd3abce9e30ad99e09eea 100644 (file)
@@ -18,6 +18,7 @@ import org.cacert.gigi.pages.LoginPage;
 import org.cacert.gigi.pages.MainPage;
 import org.cacert.gigi.pages.Page;
 import org.cacert.gigi.pages.TestSecure;
 import org.cacert.gigi.pages.MainPage;
 import org.cacert.gigi.pages.Page;
 import org.cacert.gigi.pages.TestSecure;
+import org.cacert.gigi.pages.account.MailCertificates;
 import org.cacert.gigi.pages.account.MyDetails;
 import org.cacert.gigi.pages.main.RegisterPage;
 import org.eclipse.jetty.util.log.Log;
 import org.cacert.gigi.pages.account.MyDetails;
 import org.cacert.gigi.pages.main.RegisterPage;
 import org.eclipse.jetty.util.log.Log;
@@ -34,12 +35,12 @@ public class Gigi extends HttpServlet {
                pages.put("/login", new LoginPage("CACert - Login"));
                pages.put("/", new MainPage("CACert - Home"));
                pages.put("/secure", new TestSecure());
                pages.put("/login", new LoginPage("CACert - Login"));
                pages.put("/", new MainPage("CACert - Home"));
                pages.put("/secure", new TestSecure());
+               pages.put(MailCertificates.PATH, new MailCertificates());
                pages.put(MyDetails.PATH, new MyDetails());
                pages.put(RegisterPage.PATH, new RegisterPage());
                String templ = "";
                pages.put(MyDetails.PATH, new MyDetails());
                pages.put(RegisterPage.PATH, new RegisterPage());
                String templ = "";
-               try {
-                       BufferedReader reader = new BufferedReader(new InputStreamReader(
-                                       new FileInputStream(new File("templates/base.html"))));
+               try (BufferedReader reader = new BufferedReader(new InputStreamReader(
+                               new FileInputStream(new File("templates/base.html"))))) {
                        String tmp;
                        while ((tmp = reader.readLine()) != null) {
                                templ += tmp;
                        String tmp;
                        while ((tmp = reader.readLine()) != null) {
                                templ += tmp;
index 68ddd8c8bfcab692a358628a0dd53d0f33954f66..c1eed41b5391d6ff18e75faf3fd5a916137aeb6b 100644 (file)
@@ -28,7 +28,8 @@ public class DatabaseConnection {
                        e.printStackTrace();
                }
                try {
                        e.printStackTrace();
                }
                try {
-                       c = DriverManager.getConnection(credentials.getProperty("url"),
+                       c = DriverManager.getConnection(credentials.getProperty("url")
+                                       + "?zeroDateTimeBehavior=convertToNull",
                                        credentials.getProperty("user"),
                                        credentials.getProperty("password"));
                } catch (SQLException e) {
                                        credentials.getProperty("user"),
                                        credentials.getProperty("password"));
                } catch (SQLException e) {
diff --git a/src/org/cacert/gigi/output/CertificateTable.java b/src/org/cacert/gigi/output/CertificateTable.java
new file mode 100644 (file)
index 0000000..413de87
--- /dev/null
@@ -0,0 +1,58 @@
+package org.cacert.gigi.output;
+
+import java.io.PrintWriter;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Map;
+
+import org.cacert.gigi.Language;
+
+public class CertificateTable implements Outputable {
+       String resultSet;
+       public CertificateTable(String resultSet) {
+               this.resultSet = resultSet;
+       }
+       private static final String[] columnNames = new String[]{
+                       "Renew/Revoke/Delete", "Status", "Email Address", "SerialNumber",
+                       "Revoked", "Expires", "Login"};
+
+       @Override
+       public void output(PrintWriter out, Language l, Map<String, Object> vars) {
+               ResultSet rs = (ResultSet) vars.get(resultSet);
+               try {
+                       out.println("<form method=\"post\" action=\"account.php\">");
+                       out.println("<table align=\"center\" valign=\"middle\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"wrapper\">");
+                       out.println("<tr>");
+                       for (String column : columnNames) {
+                               out.print("<td class=\"DataTD\">");
+                               out.print(l.getTranslation(column));
+                               out.println("</td>");
+                       }
+                       out.print("<td colspan=\"2\" class=\"DataTD\">");
+                       out.print(l.getTranslation("Comment *"));
+                       out.println("</td></tr>");
+
+                       rs.beforeFirst();
+                       while (rs.next()) {
+                               // out.println(rs.getString("id"));
+                               out.print("<tr><td class=\"DataTD\">&nbsp;</td><td class=\"DataTD\">State</td><td class=\"DataTD\">");
+                               out.println(rs.getString("CN"));
+                               out.print("</td><td class=\"DataTD\">");
+                               out.println(rs.getString("serial"));
+                               out.print("</td><td class=\"DataTD\">");
+                               if (rs.getString("revoked") == null) {
+                                       out.println("N/A");
+                               } else {
+                                       out.println(rs.getString("revoked"));
+                               }
+                               out.print("</td><td class=\"DataTD\">");
+                               out.println(rs.getString("expire"));
+                               out.println("</td><td class=\"DataTD\">a</td><td class=\"DataTD\">a</td></tr>");
+                       }
+                       out.println("</table>");
+               } catch (SQLException e) {
+                       e.printStackTrace();
+               }
+
+       }
+}
index 134a0898c1748f7dbfab96a82512d1f67ffa283c..49b42dbe264c3a7a47ab01fa1e8f89c8ca3d49b6 100644 (file)
@@ -72,6 +72,9 @@ public class LoginPage extends Page {
                        e.printStackTrace();
                }
        }
                        e.printStackTrace();
                }
        }
+       public static User getUser(HttpServletRequest req) {
+               return (User) req.getSession().getAttribute(USER);
+       }
        private void tryAuthWithCertificate(HttpServletRequest req,
                        X509Certificate x509Certificate) {
                String serial = x509Certificate.getSerialNumber().toString(16)
        private void tryAuthWithCertificate(HttpServletRequest req,
                        X509Certificate x509Certificate) {
                String serial = x509Certificate.getSerialNumber().toString(16)
diff --git a/src/org/cacert/gigi/pages/account/MailCertificates.java b/src/org/cacert/gigi/pages/account/MailCertificates.java
new file mode 100644 (file)
index 0000000..72952d4
--- /dev/null
@@ -0,0 +1,46 @@
+package org.cacert.gigi.pages.account;
+
+import java.io.IOException;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.User;
+import org.cacert.gigi.database.DatabaseConnection;
+import org.cacert.gigi.output.CertificateTable;
+import org.cacert.gigi.pages.LoginPage;
+import org.cacert.gigi.pages.Page;
+
+public class MailCertificates extends Page {
+       CertificateTable myTable = new CertificateTable("mailcerts");
+       public static final String PATH = "/account/certs/email";
+
+       public MailCertificates() {
+               super("Email Certificates");
+       }
+
+       @Override
+       public void doGet(HttpServletRequest req, HttpServletResponse resp)
+                       throws IOException {
+               HashMap<String, Object> vars = new HashMap<String, Object>();
+               User us = LoginPage.getUser(req);
+               try {
+                       PreparedStatement ps = DatabaseConnection
+                                       .getInstance()
+                                       .prepare(
+                                                       "SELECT `id`, `CN`, `serial`, `revoked`, `expire`, `disablelogin` FROM `emailcerts` WHERE `memid`=?");
+                       ps.setInt(1, us.getId());
+                       ResultSet rs = ps.executeQuery();
+                       vars.put("mailcerts", rs);
+                       myTable.output(resp.getWriter(), getLanguage(req), vars);
+                       rs.close();
+               } catch (SQLException e) {
+                       e.printStackTrace();
+               }
+       }
+
+}