You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2018/06/05 08:56:10 UTC

[directory-server] 02/02: o Extending IoHandlerAdapter instead of implementing IoHandler o Added the event() message for LDAP o Calling closeNow() instead of close(true)

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-server.git

commit af4c0723d671827c60749b4239a7cb40cf0de32b
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Tue Jun 5 10:55:54 2018 +0200

    o Extending IoHandlerAdapter instead of implementing IoHandler
    o Added the event() message for LDAP
    o Calling closeNow() instead of close(true)
---
 .../server/dhcp/protocol/DhcpProtocolHandler.java  |  4 +-
 .../server/dns/protocol/DnsProtocolHandler.java    |  4 +-
 .../kerberos/protocol/KerberosProtocolHandler.java |  6 +--
 .../directory/server/ldap/LdapProtocolHandler.java | 49 ++++++++++++----------
 4 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/protocol-dhcp/src/main/java/org/apache/directory/server/dhcp/protocol/DhcpProtocolHandler.java b/protocol-dhcp/src/main/java/org/apache/directory/server/dhcp/protocol/DhcpProtocolHandler.java
index 3457783..da11887 100644
--- a/protocol-dhcp/src/main/java/org/apache/directory/server/dhcp/protocol/DhcpProtocolHandler.java
+++ b/protocol-dhcp/src/main/java/org/apache/directory/server/dhcp/protocol/DhcpProtocolHandler.java
@@ -27,7 +27,7 @@ import java.net.InetSocketAddress;
 import org.apache.directory.server.dhcp.messages.DhcpMessage;
 import org.apache.directory.server.dhcp.messages.MessageType;
 import org.apache.directory.server.dhcp.service.DhcpService;
-import org.apache.mina.core.service.IoHandler;
+import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * @see org.apache.directory.server.dhcp.service.DhcpService
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class DhcpProtocolHandler implements IoHandler
+public class DhcpProtocolHandler extends IoHandlerAdapter
 {
     private static final Logger LOG = LoggerFactory.getLogger( DhcpProtocolHandler.class );
 
diff --git a/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java b/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java
index 3e764c8..f20a864 100644
--- a/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java
+++ b/protocol-dns/src/main/java/org/apache/directory/server/dns/protocol/DnsProtocolHandler.java
@@ -34,7 +34,7 @@ import org.apache.directory.server.dns.messages.ResponseCode;
 import org.apache.directory.server.dns.service.DnsContext;
 import org.apache.directory.server.dns.service.DomainNameService;
 import org.apache.directory.server.dns.store.RecordStore;
-import org.apache.mina.core.service.IoHandler;
+import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class DnsProtocolHandler implements IoHandler
+public class DnsProtocolHandler extends IoHandlerAdapter
 {
     private static final Logger LOG = LoggerFactory.getLogger( DnsProtocolHandler.class );
 
diff --git a/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java b/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java
index 4f6f904..ec71944 100644
--- a/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java
+++ b/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java
@@ -40,7 +40,7 @@ import org.apache.directory.shared.kerberos.components.PrincipalName;
 import org.apache.directory.shared.kerberos.exceptions.ErrorType;
 import org.apache.directory.shared.kerberos.exceptions.KerberosException;
 import org.apache.directory.shared.kerberos.messages.KrbError;
-import org.apache.mina.core.service.IoHandler;
+import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
 import org.slf4j.Logger;
@@ -53,7 +53,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class KerberosProtocolHandler implements IoHandler
+public class KerberosProtocolHandler extends IoHandlerAdapter
 {
     /** The loggers for this class */
     private static final Logger LOG = LoggerFactory.getLogger( KerberosProtocolHandler.class );
@@ -156,7 +156,7 @@ public class KerberosProtocolHandler implements IoHandler
     {
         LOG.error( "{} EXCEPTION", session.getRemoteAddress(), cause );
         LOG_KRB.error( "{} EXCEPTION", session.getRemoteAddress(), cause );
-        session.close( true );
+        session.closeNow();
     }
 
 
diff --git a/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapProtocolHandler.java b/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapProtocolHandler.java
index 6b815bd..d53f673 100644
--- a/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapProtocolHandler.java
+++ b/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapProtocolHandler.java
@@ -20,14 +20,12 @@
 package org.apache.directory.server.ldap;
 
 
-import org.apache.directory.api.ldap.codec.api.LdapApiServiceFactory;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.MessageDecorator;
 import org.apache.directory.api.ldap.codec.api.SchemaBinaryAttributeDetector;
 import org.apache.directory.api.ldap.model.exception.ResponseCarryingMessageException;
 import org.apache.directory.api.ldap.model.message.Control;
-import org.apache.directory.api.ldap.model.message.ExtendedRequest;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.Request;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
@@ -36,7 +34,8 @@ import org.apache.directory.api.ldap.model.message.ResultResponseRequest;
 import org.apache.directory.api.ldap.model.message.extended.NoticeOfDisconnect;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.ssl.SslFilter;
+import org.apache.mina.filter.FilterEvent;
+import org.apache.mina.filter.ssl.SslEvent;
 import org.apache.mina.handler.demux.DemuxingIoHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -136,7 +135,7 @@ class LdapProtocolHandler extends DemuxingIoHandler
         {
             try
             {
-                ldapSession.getIoSession().close( true );
+                ldapSession.getIoSession().closeNow();
             }
             catch ( Throwable t )
             {
@@ -162,6 +161,30 @@ class LdapProtocolHandler extends DemuxingIoHandler
         super.messageSent( session, message );
     }
 
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void event( IoSession session, FilterEvent event ) throws Exception 
+    {
+        Object message;
+        
+        if ( event instanceof SslEvent )
+        {
+            if ( ( ( SslEvent ) event ) == SslEvent.SECURED ) 
+            {
+                LdapSession ldapSession = ldapServer.getLdapSessionManager().getLdapSession( session );
+                LOG.debug( "Session {} secured", ldapSession ); 
+            }
+            else
+            {
+                LdapSession ldapSession = ldapServer.getLdapSessionManager().getLdapSession( session );
+                LOG.debug( "Session {} not secured", ldapSession ); 
+            }
+        }
+    }
+
 
     /**
      * {@inheritDoc}
@@ -178,22 +201,6 @@ class LdapProtocolHandler extends DemuxingIoHandler
         // handler should react to only SESSION_UNSECURED message
         // and degrade authentication level to 'anonymous' as specified
         // in the RFC, and this is no threat.
-
-        if ( message == SslFilter.SESSION_SECURED )
-        {
-            ExtendedRequest req =
-                LdapApiServiceFactory.getSingleton().newExtendedRequest( "1.3.6.1.4.1.1466.20037",
-                    "SECURED".getBytes( "ISO-8859-1" ) );
-            message = req;
-        }
-        else if ( message == SslFilter.SESSION_UNSECURED )
-        {
-            ExtendedRequest req =
-                LdapApiServiceFactory.getSingleton().newExtendedRequest( "1.3.6.1.4.1.1466.20037",
-                    "SECURED".getBytes( "ISO-8859-1" ) );
-            message = req;
-        }
-
         if ( ( ( Request ) message ).getControls().size() > 0
             && message instanceof ResultResponseRequest )
         {
@@ -238,6 +245,6 @@ class LdapProtocolHandler extends DemuxingIoHandler
         session.write( NoticeOfDisconnect.PROTOCOLERROR );
         LdapSession ldapSession = this.ldapServer.getLdapSessionManager().removeLdapSession( session );
         cleanUpSession( ldapSession );
-        session.close( true );
+        session.closeNow();
     }
 }

-- 
To stop receiving notification emails like this one, please contact
elecharny@apache.org.