X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=inline;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FEmailProvider.java;h=ff9fde7a919f9b63adacb0ab5a56412bf295073b;hb=7c8c31300b338ce8a19fab549c5b4dd8fa58f49e;hp=49a27356061062cc06f2d58f7eaba0dabee0eb5c;hpb=06860e55306d268f5db3c49ac9090c4455752cc0;p=gigi.git diff --git a/src/org/cacert/gigi/email/EmailProvider.java b/src/org/cacert/gigi/email/EmailProvider.java index 49a27356..ff9fde7a 100644 --- a/src/org/cacert/gigi/email/EmailProvider.java +++ b/src/org/cacert/gigi/email/EmailProvider.java @@ -3,6 +3,7 @@ package org.cacert.gigi.email; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.security.GeneralSecurityException; @@ -33,7 +34,7 @@ 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; } @@ -87,7 +88,8 @@ public abstract class EmailProvider { } else { return "Strange MX records."; } - try (Socket s = new Socket(host, 25); BufferedReader br0 = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter pw0 = new PrintWriter(s.getOutputStream())) { + try (Socket s = new Socket(host, 25); BufferedReader br0 = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));// + PrintWriter pw0 = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8"))) { BufferedReader br = br0; PrintWriter pw = pw0; String line; @@ -100,8 +102,9 @@ public abstract class EmailProvider { boolean starttls = false; do { line = br.readLine(); - if (line == null) + if (line == null) { break; + } starttls |= line.substring(4).equals("STARTTLS"); } while (line.startsWith("250-")); if (line == null || !line.startsWith("250 ")) { @@ -115,8 +118,8 @@ public abstract class EmailProvider { continue; } Socket s1 = ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(s, host, 25, true); - br = new BufferedReader(new InputStreamReader(s1.getInputStream())); - pw = new PrintWriter(s1.getOutputStream()); + br = new BufferedReader(new InputStreamReader(s1.getInputStream(), "UTF-8")); + pw = new PrintWriter(new OutputStreamWriter(s1.getOutputStream(), "UTF-8")); pw.print("EHLO www.cacert.org\r\n"); pw.flush(); if ( !Sendmail.readSMTPResponse(br, 250)) { @@ -142,10 +145,11 @@ public abstract class EmailProvider { continue; } - GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("insert into `emailPinglog` set `when`=NOW(), `email`=?, `result`=?, `uid`=?"); + GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("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")) { @@ -157,10 +161,11 @@ public abstract class EmailProvider { } } - GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("insert into `emailPinglog` set `when`=NOW(), `email`=?, `result`=?, `uid`=?"); + GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("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; }