OSDN Git Service

Support: [ #25090 ] TLS/SSL SMTP server connection suuport. Ph.1
[mdc/BetaProject.git] / src / org / jent / checksmtp / Processer.java
index 1f6c28e..2faec55 100644 (file)
@@ -13,10 +13,16 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 
 import java.net.Socket;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
 
 import java.util.ArrayList;
 import java.util.ListIterator;
 import java.util.regex.Pattern;
+import javax.net.SocketFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import org.jent.checksmtp.ssl.RespondingX509TrustManager;
 
 
 public class Processer implements Runnable, ResultNotify {
@@ -83,6 +89,7 @@ public class Processer implements Runnable, ResultNotify {
     BufferedReader clientReader;
     PrintWriter clientWriter;
 
+    SocketFactory socketFactory = null;
     Socket server = null;
       
     try {
@@ -92,8 +99,36 @@ public class Processer implements Runnable, ResultNotify {
       //SMTP Server port 
       int serverport = ApplicationProperties.getSmtpServerPort();
 
+      if ( ApplicationProperties.getSmtpServerSSL() ) {
+        //SMTP Server use SSL
+        System.out.println("SMTP Server use SSL.");
+        //socketFactory = SSLSocketFactory.getDefault();
+        //OreOre server connection support TrustManager setting.
+        try {
+          SSLContext sslContext = SSLContext.getInstance("TLS"); //SSL,TLS,TLSv1.1
+          sslContext.init(null,
+                new TrustManager[]{ new RespondingX509TrustManager()  }, null);
+          socketFactory = sslContext.getSocketFactory();
+        } catch (NoSuchAlgorithmException nsaEx ) {//from SSLContext.getDefault()
+          //TODO: Error dialog
+          nsaEx.printStackTrace(System.err);
+        } catch (KeyManagementException kmEx) {//from SSLContext.init()
+          //TODO: Error dialog
+          kmEx.printStackTrace(System.err);
+        } catch (IllegalStateException isEx) {//from SSLContext.getSocketFactory()
+          //TODO: Error dialog
+          isEx.printStackTrace(System.err);
+        } catch (Exception ex) { //for new RespondingX506TrustManager()
+          //TODO: Error dialog
+          ex.printStackTrace(System.err);
+        }
+      } else {
+        //SMTP Server is normal Socket.
+        socketFactory = SocketFactory.getDefault();
+      }
+
       //Connection to true SMTP server.
-      server = new Socket(servername, serverport);
+      server = socketFactory.createSocket(servername, serverport);
       serverInput = server.getInputStream();
       serverOutput = server.getOutputStream();
       clientInput = client.getInputStream();