Author: ngn
Date: Sun Dec 28 13:54:39 2008
New Revision: 729782
URL: http://svn.apache.org/viewvc?rev=729782&view=rev
Log:
Adding a session ID, both to the API and to the MDC logging (FTPSERVER-252)
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
mina/ftpserver/trunk/core/src/test/resources/log4j.properties
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
Sun Dec 28 13:54:39 2008
@@ -19,10 +19,10 @@
package org.apache.ftpserver.impl;
-import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.security.cert.Certificate;
import java.util.Date;
+import java.util.UUID;
import org.apache.ftpserver.ftplet.DataConnectionFactory;
import org.apache.ftpserver.ftplet.DataType;
@@ -239,5 +239,12 @@
ioSession.increaseReadDataBytes(increment);
}
+ /**
+ * {...@inheritdoc}
+ */
+ public UUID getSessionId() {
+ return ioSession.getSessionId();
+ }
+
}
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
Sun Dec 28 13:54:39 2008
@@ -24,6 +24,7 @@
import java.security.cert.Certificate;
import java.util.Date;
import java.util.Set;
+import java.util.UUID;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
@@ -68,6 +69,9 @@
private static final String ATTRIBUTE_USER_ARGUMENT = ATTRIBUTE_PREFIX
+ "user-argument";
+ private static final String ATTRIBUTE_SESSION_ID = ATTRIBUTE_PREFIX
+ + "session-id";
+
private static final String ATTRIBUTE_USER = ATTRIBUTE_PREFIX + "user";
private static final String ATTRIBUTE_LANGUAGE = ATTRIBUTE_PREFIX
@@ -667,6 +671,18 @@
}
+ /**
+ * @see FtpSession#getSessionId()
+ */
+ public UUID getSessionId() {
+ synchronized (wrappedSession) {
+ if(!wrappedSession.containsAttribute(ATTRIBUTE_SESSION_ID)) {
+ wrappedSession.setAttribute(ATTRIBUTE_SESSION_ID,
UUID.randomUUID());
+ }
+ return (UUID) wrappedSession.getAttribute(ATTRIBUTE_SESSION_ID);
+ }
+ }
+
public FtpIoSession(IoSession wrappedSession, FtpServerContext context) {
this.wrappedSession = wrappedSession;
this.context = context;
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
Sun Dec 28 13:54:39 2008
@@ -19,6 +19,8 @@
*/
package org.apache.ftpserver.listener.nio;
+import java.util.UUID;
+
import org.apache.ftpserver.ftplet.FtpReply;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.impl.DefaultFtpRequest;
@@ -28,6 +30,7 @@
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.logging.MdcInjectionFilter;
/**
* <strong>Internal class, do not use directly.</strong>
@@ -74,7 +77,10 @@
public void sessionCreated(IoSession session) throws Exception {
FtpIoSession ftpSession = new FtpIoSession(session, context);
+ MdcInjectionFilter.setProperty(session, "session",
ftpSession.getSessionId().toString());
+
ftpHandler.sessionCreated(ftpSession);
+
}
public void sessionIdle(IoSession session, IdleStatus status)
Modified: mina/ftpserver/trunk/core/src/test/resources/log4j.properties
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/resources/log4j.properties?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/resources/log4j.properties (original)
+++ mina/ftpserver/trunk/core/src/test/resources/log4j.properties Sun Dec 28
13:54:39 2008
@@ -18,5 +18,5 @@
log4j.rootLogger=DEBUG, C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.layout=org.apache.log4j.PatternLayout
-log4j.appender.C.layout.ConversionPattern=[%X{userName}] [%X{remoteIp}] %m%n
+log4j.appender.C.layout.ConversionPattern=[%X{userName}] [%X{remoteIp}]
[%X{session}] %m%n
Modified:
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
---
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
(original)
+++
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
Sun Dec 28 13:54:39 2008
@@ -23,6 +23,7 @@
import java.net.InetSocketAddress;
import java.security.cert.Certificate;
import java.util.Date;
+import java.util.UUID;
/**
* Defines an client session with the FTP server. The session is born when the
@@ -193,4 +194,13 @@
* @return true if the control socket is secured
*/
boolean isSecure();
+
+ /**
+ * Get the unique ID for this session. This ID will be maintained for
+ * the entire session and is also available to MDC logging using the
"session"
+ * identifier.
+ * @return The unique ID for this session
+ */
+ public UUID getSessionId();
+
}