Author: norman
Date: Tue Sep 29 15:54:20 2009
New Revision: 819999

URL: http://svn.apache.org/viewvc?rev=819999&view=rev
Log:
Start to add STARTTLS support for POP3 (JAMES-924)

Added:
    
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/StlsCmdHandler.java
Modified:
    
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java
    
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerChain.java
    
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java
    
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Server.java
    
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java

Modified: 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java?rev=819999&r1=819998&r2=819999&view=diff
==============================================================================
--- 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java
 (original)
+++ 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java
 Tue Sep 29 15:54:20 2009
@@ -475,4 +475,17 @@
     public Log getLogger() {
         return context.getLogger();
     }
+
+       public void secure() throws IOException {
+               context.secure();
+       }
+
+       public boolean isStartTLSSupported() {
+               return getConfigurationData().isStartTLSSupported();
+       }
+
+       public boolean isTLSStarted() {
+               return context.isSecure();
+       }
+       
 }

Modified: 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerChain.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerChain.java?rev=819999&r1=819998&r2=819999&view=diff
==============================================================================
--- 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerChain.java
 (original)
+++ 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerChain.java
 Tue Sep 29 15:54:20 2009
@@ -184,6 +184,7 @@
         Properties cmds = new Properties();
         cmds.setProperty("USER",UserCmdHandler.class.getName());
         cmds.setProperty("PASS",PassCmdHandler.class.getName());
+        cmds.setProperty("STLS", StlsCmdHandler.class.getName());
         cmds.setProperty("LIST",ListCmdHandler.class.getName());
         cmds.setProperty("UIDL",UidlCmdHandler.class.getName());
         cmds.setProperty("RSET",RsetCmdHandler.class.getName());

Modified: 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java?rev=819999&r1=819998&r2=819999&view=diff
==============================================================================
--- 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java
 (original)
+++ 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java
 Tue Sep 29 15:54:20 2009
@@ -58,5 +58,7 @@
      * @return the local users repository
      */
     UsersRepository getUsersRepository();
+    
+    boolean isStartTLSSupported();
 
 }

Modified: 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Server.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Server.java?rev=819999&r1=819998&r2=819999&view=diff
==============================================================================
--- 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Server.java
 (original)
+++ 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Server.java
 Tue Sep 29 15:54:20 2009
@@ -186,5 +186,12 @@
         public UsersRepository getUsersRepository() {
             return POP3Server.this.users;
         }
+
+        /**
+         * @see 
org.apache.james.pop3server.POP3HandlerConfigurationData#isStartTLSSupported()
+         */
+               public boolean isStartTLSSupported() {
+                       return POP3Server.this.useStartTLS();
+               }
     }
 }

Modified: 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java?rev=819999&r1=819998&r2=819999&view=diff
==============================================================================
--- 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java
 (original)
+++ 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java
 Tue Sep 29 15:54:20 2009
@@ -198,5 +198,12 @@
      * @return context sensitive log, not null
      */
     Log getLogger();
+
+    
+    boolean isStartTLSSupported();
+    
+    boolean isTLSStarted();
+
+    void secure() throws IOException;
 }
 

Added: 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/StlsCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/StlsCmdHandler.java?rev=819999&view=auto
==============================================================================
--- 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/StlsCmdHandler.java
 (added)
+++ 
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/StlsCmdHandler.java
 Tue Sep 29 15:54:20 2009
@@ -0,0 +1,25 @@
+package org.apache.james.pop3server;
+
+import java.io.IOException;
+
+public class StlsCmdHandler implements CommandHandler{
+
+       /**
+        * @throws  
+        * 
+        */
+       public void onCommand(POP3Session session)  {
+               if (session.isStartTLSSupported() && session.getHandlerState() 
== POP3Handler.TRANSACTION && session.isTLSStarted() == false) {
+                       session.writeResponse(POP3Handler.OK_RESPONSE+ " Begin 
TLS negotiation");
+                       try {
+                               session.secure();
+                       } catch (IOException e) {
+                               session.getLogger().info("Error while trying to 
secure connection",e);
+                               session.endSession();
+                       }
+               } else {
+                       session.writeResponse(POP3Handler.ERR_RESPONSE);
+               }
+       }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to