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;
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;
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() {
} 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;
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 ")) {
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)) {
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;
}
}
- 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;
}