X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FEmailProvider.java;h=a32031187525f853b0306668b4b434ff739df4c9;hb=ac2b3b4385c517269df9e52b2d09f25327607283;hp=d76fd6ef1d185f002b76a464717bb170e28035ea;hpb=9474df27407dd99134876f2c8a2a3b6e7d1fae6a;p=gigi.git diff --git a/src/org/cacert/gigi/email/EmailProvider.java b/src/org/cacert/gigi/email/EmailProvider.java index d76fd6ef..a3203118 100644 --- a/src/org/cacert/gigi/email/EmailProvider.java +++ b/src/org/cacert/gigi/email/EmailProvider.java @@ -20,7 +20,6 @@ import javax.naming.NamingException; import javax.net.ssl.SSLSocketFactory; import org.cacert.gigi.crypto.SMIME; -import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.util.DNSUtil; @@ -34,13 +33,19 @@ public abstract class EmailProvider { private PrivateKey k; - protected final void init(Certificate c, Key k) { + protected void init(Certificate c, Key k) { this.c = (X509Certificate) c; this.k = (PrivateKey) k; } protected final void sendSigned(String contents, PrintWriter output) throws IOException, GeneralSecurityException { - SMIME.smime(contents, k, c, output); + if (k == null || c == null) { + output.println("Content-Transfer-Encoding: base64"); + output.println(); + output.print(contents); + } else { + SMIME.smime(contents, k, c, output); + } } public static EmailProvider getInstance() { @@ -119,7 +124,7 @@ public abstract class EmailProvider { } Socket s1 = ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(s, host, 25, true); br = new BufferedReader(new InputStreamReader(s1.getInputStream(), "UTF-8")); - pw = new PrintWriter(s1.getOutputStream()); + pw = new PrintWriter(new OutputStreamWriter(s1.getOutputStream(), "UTF-8")); pw.print("EHLO www.cacert.org\r\n"); pw.flush(); if ( !Sendmail.readSMTPResponse(br, 250)) { @@ -145,11 +150,13 @@ public abstract class EmailProvider { continue; } - GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("insert into `emailPinglog` set `when`=NOW(), `email`=?, `result`=?, `uid`=?"); - statmt.setString(1, address); - statmt.setString(2, line); - statmt.setInt(3, forUid); - statmt.execute(); + try (GigiPreparedStatement statmt = new GigiPreparedStatement("INSERT INTO `emailPinglog` SET `when`=NOW(), `email`=?, `result`=?, `uid`=?, `type`='fast', `status`=?::`pingState`")) { + statmt.setString(1, address); + statmt.setString(2, line); + statmt.setInt(3, forUid); + statmt.setString(4, "success"); + statmt.execute(); + } if (line == null || !line.startsWith("250")) { return line; @@ -160,11 +167,13 @@ public abstract class EmailProvider { } } - GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("insert into `emailPinglog` set `when`=NOW(), `email`=?, `result`=?, `uid`=?"); - statmt.setString(1, address); - statmt.setString(2, "Failed to make a connection to the mail server"); - statmt.setInt(3, forUid); - statmt.execute(); + try (GigiPreparedStatement statmt = new GigiPreparedStatement("INSERT INTO `emailPinglog` SET `when`=NOW(), `email`=?, `result`=?, `uid`=?, `type`='fast', `status`=?::`pingState`")) { + statmt.setString(1, address); + statmt.setString(2, "Failed to make a connection to the mail server"); + statmt.setInt(3, forUid); + statmt.setString(4, "failed"); + statmt.execute(); + } return FAIL; }