You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ftpserver-commits@incubator.apache.org by ng...@apache.org on 2007/01/02 16:17:26 UTC
svn commit: r491831 [1/4] - in /incubator/ftpserver/trunk:
admin-gui/src/java/org/apache/ftpserver/gui/
core/src/java/org/apache/ftpserver/
core/src/java/org/apache/ftpserver/command/
core/src/java/org/apache/ftpserver/ftplet/ core/src/java/org/apache/...
Author: ngn
Date: Tue Jan 2 08:17:22 2007
New Revision: 491831
URL: http://svn.apache.org/viewvc?view=rev&rev=491831
Log:
Seperated FtpRequest into a pure request and a dedicated session class. Ths makes the seperation of duties more clear and moves us closer to the pattern used by MINA.
Added:
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpSessionImpl.java (with props)
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/FtpRequestImplTest.java (with props)
incubator/ftpserver/trunk/ftplet-api/src/java/org/apache/ftpserver/ftplet/FtpSession.java (with props)
Modified:
incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/DirectoryPanel.java
incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FilePanel.java
incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FtpConnectionTableModel.java
incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/SpyPanelContainer.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/ConnectionManagerImpl.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpRequestImpl.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpStatisticsImpl.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpWriter.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/RequestHandler.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ABOR.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ACCT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/APPE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AUTH.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AbstractCommand.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CDUP.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CWD.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/DELE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPRT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPSV.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/FEAT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/HELP.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LANG.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LIST.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MD5.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MDTM.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MKD.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MLSD.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MLST.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MODE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/NLST.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/NOOP.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/OPTS.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/OPTS_MLST.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/OPTS_UTF8.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/PASS.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/PASV.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/PBSZ.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/PORT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/PROT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/PWD.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/QUIT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/REIN.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/REST.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/RETR.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/RMD.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/RNFR.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/RNTO.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SITE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SITE_DESCUSER.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SITE_HELP.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SITE_STAT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SITE_WHO.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SITE_ZONE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SIZE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/STAT.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/STOR.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/STOU.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/STRU.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/SYST.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/TYPE.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/USER.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/ftplet/DefaultFtpletContainer.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/interfaces/Command.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/interfaces/Connection.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/ftplet/FtpLetContainerTestTemplate.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/ftplet/FtpLetReturnDefaultTest.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/ftplet/FtpLetReturnDisconnectTest.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/ftplet/FtpLetReturnSkipTest.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/ftplet/MockFtplet.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/ftplet/MockFtpletCallback.java
incubator/ftpserver/trunk/core/src/test/org/apache/ftpserver/interfaces/ServerFtpStatisticsTestTemplate.java
incubator/ftpserver/trunk/ftplet-api/src/java/org/apache/ftpserver/ftplet/DefaultFtplet.java
incubator/ftpserver/trunk/ftplet-api/src/java/org/apache/ftpserver/ftplet/FtpRequest.java
incubator/ftpserver/trunk/ftplet-api/src/java/org/apache/ftpserver/ftplet/Ftplet.java
Modified: incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/DirectoryPanel.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/DirectoryPanel.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/DirectoryPanel.java (original)
+++ incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/DirectoryPanel.java Tue Jan 2 08:17:22 2007
@@ -115,7 +115,7 @@
* Make directory notification.
*/
public void notifyMkdir(Connection con, FileObject file) {
- User user = con.getRequest().getUser();
+ User user = con.getSession().getUser();
models[0].newEntry(file.getFullName(), user);
}
@@ -124,7 +124,7 @@
* Remove directory notification.
*/
public void notifyRmdir(Connection con, FileObject file) {
- User user = con.getRequest().getUser();
+ User user = con.getSession().getUser();
models[1].newEntry(file.getFullName(), user);
}
Modified: incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FilePanel.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FilePanel.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FilePanel.java (original)
+++ incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FilePanel.java Tue Jan 2 08:17:22 2007
@@ -117,7 +117,7 @@
* File upload notification.
*/
public void notifyUpload(Connection con, FileObject file, long sz) {
- User user = con.getRequest().getUser();
+ User user = con.getSession().getUser();
models[0].newEntry(file.getFullName(), user);
}
@@ -125,7 +125,7 @@
* File download notification.
*/
public void notifyDownload(Connection con, FileObject file, long sz) {
- User user = con.getRequest().getUser();
+ User user = con.getSession().getUser();
models[1].newEntry(file.getFullName(), user);
}
@@ -133,7 +133,7 @@
* File delete notification.
*/
public void notifyDelete(Connection con, FileObject file) {
- User user = con.getRequest().getUser();
+ User user = con.getSession().getUser();
models[2].newEntry(file.getFullName(), user);
}
Modified: incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FtpConnectionTableModel.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FtpConnectionTableModel.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FtpConnectionTableModel.java (original)
+++ incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/FtpConnectionTableModel.java Tue Jan 2 08:17:22 2007
@@ -31,6 +31,7 @@
import javax.swing.table.TableModel;
import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.interfaces.Connection;
import org.apache.ftpserver.interfaces.ConnectionManager;
@@ -142,12 +143,12 @@
return retVal;
}
- FtpRequest request = thisCon.getRequest();
- if(request == null) {
+ FtpSession session = thisCon.getSession();
+ if(session == null) {
return retVal;
}
- User user = request.getUser();
+ User user = session.getUser();
InetAddress addr = null;
Date date = null;
switch(col) {
@@ -161,21 +162,21 @@
break;
case 1:
- date = request.getLoginTime();
+ date = session.getLoginTime();
if(date != null) {
retVal = DateUtils.getISO8601Date(date.getTime());
}
break;
case 2:
- date = request.getLastAccessTime();
+ date = session.getLastAccessTime();
if(date != null) {
retVal = DateUtils.getISO8601Date(date.getTime());
}
break;
case 3:
- addr = request.getRemoteAddress();
+ addr = session.getRemoteAddress();
if (addr != null) {
retVal = addr.getHostAddress();
}
Modified: incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/SpyPanelContainer.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/SpyPanelContainer.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/SpyPanelContainer.java (original)
+++ incubator/ftpserver/trunk/admin-gui/src/java/org/apache/ftpserver/gui/SpyPanelContainer.java Tue Jan 2 08:17:22 2007
@@ -109,7 +109,7 @@
* Get tab caption.
*/
private String getCaption(Connection con) {
- User user = con.getRequest().getUser();
+ User user = con.getSession().getUser();
String name = "UNKNOWN";
if(user != null) {
String tmp = user.getName();
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/ConnectionManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/ConnectionManagerImpl.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/ConnectionManagerImpl.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/ConnectionManagerImpl.java Tue Jan 2 08:17:22 2007
@@ -26,6 +26,7 @@
import org.apache.ftpserver.ftplet.Configuration;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.interfaces.ConnectionManagerObserver;
import org.apache.ftpserver.interfaces.Connection;
import org.apache.ftpserver.interfaces.ConnectionManager;
@@ -161,7 +162,7 @@
* set default idle time for request. This value should be overrided
* after user login
*/
- connection.getRequest().setMaxIdleTime(defaultIdleSec);
+ connection.getSession().setMaxIdleTime(defaultIdleSec);
// now start a new thread to serve this connection
new Thread(connection).start();
@@ -243,17 +244,17 @@
}
// idle client connection
- FtpRequestImpl request = (FtpRequestImpl)con.getRequest();
- if(request == null) {
+ FtpSessionImpl session = (FtpSessionImpl)con.getSession();
+ if(session == null) {
continue;
}
- if(request.isTimeout(currTime)) {
+ if(session.isTimeout(currTime)) {
inactiveCons.add(con);
continue;
}
// idle data connection
- FtpDataConnection dataCon = request.getFtpDataConnection();
+ FtpDataConnection dataCon = session.getFtpDataConnection();
if(dataCon == null) {
continue;
}
@@ -261,7 +262,7 @@
// if the data connection is not active - close it
if(dataCon.isTimeout(currTime)) {
- log.info("Removing idle data connection for " + request.getUser());
+ log.info("Removing idle data connection for " + session.getUser());
dataCon.closeDataSocket();
}
}
@@ -275,12 +276,12 @@
continue;
}
- FtpRequest request = connection.getRequest();
- if(request == null) {
+ FtpSession session = connection.getSession();
+ if(session == null) {
continue;
}
- log.info("Removing idle user " + request.getUser());
+ log.info("Removing idle user " + session.getUser());
closeConnection(connection);
}
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpRequestImpl.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpRequestImpl.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpRequestImpl.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpRequestImpl.java Tue Jan 2 08:17:22 2007
@@ -19,107 +19,32 @@
package org.apache.ftpserver;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.zip.DeflaterOutputStream;
-import java.util.zip.InflaterInputStream;
-
-import org.apache.ftpserver.ftplet.*;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.interfaces.ConnectionObserver;
/**
* FTP request object.
- *
- * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
*/
-public
-class FtpRequestImpl implements FtpRequest {
+public class FtpRequestImpl implements FtpRequest {
private String line;
private String command;
private String argument;
- /**
- * Contains user name between USER and PASS commands
- */
- private String userArgument;
- private User user;
- private HashMap attributeMap;
- private InetAddress remoteAddr;
private ConnectionObserver observer;
- private String language;
-
- private int maxIdleTime = 0;
- private long connectionTime = 0L;
- private long loginTime = 0L;
- private long lastAccessTime = 0L;
-
- private FtpDataConnection dataConnection;
- private FileSystemView fileSystemView;
-
- private FileObject renameFrom;
- private long fileOffset;
-
- /**
- * Default constructor.
- */
- public FtpRequestImpl() {
- attributeMap = new HashMap();
- userArgument = null;
- user = null;
- connectionTime = System.currentTimeMillis();
- }
-
- /**
- * Set client address.
- */
- public void setClientAddress(InetAddress addr) {
- remoteAddr = addr;
- }
- /**
- * Set FTP data connection.
- */
- public void setFtpDataConnection(FtpDataConnection dataCon) {
- dataConnection = dataCon;
- }
/**
- * Get the observer object to get what the user is sending.
+ * Default constructor.
*/
- public void setObserver(ConnectionObserver observer) {
- this.observer = observer;
+ public FtpRequestImpl(String requestLine) {
+ parse(requestLine);
}
/**
- * Reset temporary state variables.
- */
- public void resetState() {
- renameFrom = null;
- fileOffset = 0L;
- }
-
- /**
- * Reinitialize request.
- */
- public void reinitialize() {
- userArgument = null;
- user = null;
- loginTime = 0L;
- fileSystemView = null;
- renameFrom = null;
- fileOffset = 0L;
- }
-
- /**
* Parse the ftp command line.
*/
- public void parse(String lineToParse) {
+ private void parse(String lineToParse) {
// notify connection observer
spyRequest(lineToParse);
@@ -156,114 +81,6 @@
}
/**
- * Set login attribute & user file system view.
- */
- public void setLogin(FileSystemView userFsView) {
- loginTime = System.currentTimeMillis();
- fileSystemView = userFsView;
- }
-
- /**
- * Set logout.
- */
- public void setLogout() {
- loginTime = 0L;
- }
-
- /**
- * Update last access time.
- */
- public void updateLastAccessTime() {
- lastAccessTime = System.currentTimeMillis();
- }
-
- /**
- * Is logged-in
- */
- public boolean isLoggedIn() {
- return (loginTime != 0L);
- }
-
- /**
- * Get FTP data connection.
- */
- public FtpDataConnection getFtpDataConnection() {
- return dataConnection;
- }
-
- /**
- * Get file system view.
- */
- public FileSystemView getFileSystemView() {
- return fileSystemView;
- }
-
- /**
- * Get connection time.
- */
- public Date getConnectionTime() {
- return new Date(connectionTime);
- }
-
- /**
- * Get the login time.
- */
- public Date getLoginTime() {
- return new Date(loginTime);
- }
-
- /**
- * Get last access time.
- */
- public Date getLastAccessTime() {
- return new Date(lastAccessTime);
- }
-
- /**
- * Get file offset.
- */
- public long getFileOffset() {
- return fileOffset;
- }
-
- /**
- * Set the file offset.
- */
- public void setFileOffset(long offset) {
- fileOffset = offset;
- }
-
- /**
- * Get rename from file object.
- */
- public FileObject getRenameFrom() {
- return renameFrom;
- }
-
- /**
- * Set rename from.
- */
- public void setRenameFrom(FileObject file) {
- renameFrom = file;
- }
-
- /**
- * Returns user name entered in USER command
- *
- * @return user name entered in USER command
- */
- public String getUserArgument() {
- return userArgument;
- }
-
- /**
- * Set user name entered from USER command
- */
- public void setUserArgument(String tmpUserName) {
- this.userArgument = tmpUserName;
- }
-
- /**
* Get the ftp command.
*/
public String getCommand() {
@@ -284,150 +101,12 @@
return line;
}
+
/**
* Has argument.
+ * TODO: should be in interface?
*/
public boolean hasArgument() {
return getArgument() != null;
- }
-
- /**
- * Get language.
- */
- public String getLanguage() {
- return language;
- }
-
- /**
- * Set language.
- */
- public void setLanguage(String language) {
- this.language = language;
- }
-
- /**
- * Get user.
- */
- public User getUser() {
- return user;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
-
- /**
- * Get remote address
- */
- public InetAddress getRemoteAddress() {
- return remoteAddr;
- }
-
- /**
- * Get data input stream. The return value will never be null.
- */
- public InputStream getDataInputStream() throws IOException {
- try {
-
- // get data socket
- Socket dataSoc = dataConnection.getDataSocket();
- if(dataSoc == null) {
- throw new IOException("Cannot open data connection.");
- }
-
- // create input stream
- InputStream is = dataSoc.getInputStream();
- if(dataConnection.isZipMode()) {
- is = new InflaterInputStream(is);
- }
- return is;
- }
- catch(IOException ex) {
- dataConnection.closeDataSocket();
- throw ex;
- }
- }
-
- /**
- * Get data output stream. The return value will never be null.
- */
- public OutputStream getDataOutputStream() throws IOException {
- try {
-
- // get data socket
- Socket dataSoc = dataConnection.getDataSocket();
- if(dataSoc == null) {
- throw new IOException("Cannot open data connection.");
- }
-
- // create output stream
- OutputStream os = dataSoc.getOutputStream();
- if(dataConnection.isZipMode()) {
- os = new DeflaterOutputStream(os);
- }
- return os;
- }
- catch(IOException ex) {
- dataConnection.closeDataSocket();
- throw ex;
- }
- }
-
- /**
- * Get attribute
- */
- public Object getAttribute(String name) {
- return attributeMap.get(name);
- }
-
- /**
- * Set attribute.
- */
- public void setAttribute(String name, Object value) {
- attributeMap.put(name, value);
- }
-
- /**
- * Remove attribute.
- */
- public void removeAttribute(String name) {
- attributeMap.remove(name);
- }
-
- /**
- * Remove all attributes.
- */
- public void clear() {
- attributeMap.clear();
- }
-
- /**
- * It checks the request timeout.
- * Compares the last access time with the specified time.
- */
- public boolean isTimeout(long currTime) {
- boolean bActive = true;
- int maxIdleTime = getMaxIdleTime();
- if(maxIdleTime > 0) {
- long currIdleTimeMillis = currTime - lastAccessTime;
- long maxIdleTimeMillis = maxIdleTime * 1000L;
- bActive = currIdleTimeMillis <= maxIdleTimeMillis;
- }
- return !bActive;
- }
-
- /**
- * Check request timeout.
- */
- public boolean isTimeout() {
- return isTimeout(System.currentTimeMillis());
- }
-
- public int getMaxIdleTime() {
- return this.maxIdleTime;
- }
-
- public void setMaxIdleTime(int maxIdleTimeSec) {
- this.maxIdleTime = maxIdleTimeSec;
}
}
Added: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpSessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpSessionImpl.java?view=auto&rev=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpSessionImpl.java (added)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpSessionImpl.java Tue Jan 2 08:17:22 2007
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.zip.DeflaterOutputStream;
+import java.util.zip.InflaterInputStream;
+
+import org.apache.ftpserver.ftplet.FileObject;
+import org.apache.ftpserver.ftplet.FileSystemView;
+import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.ftplet.FtpSession;
+import org.apache.ftpserver.ftplet.User;
+import org.apache.ftpserver.interfaces.ConnectionObserver;
+
+/**
+ * FTP session
+ */
+public class FtpSessionImpl implements FtpSession {
+
+
+ /**
+ * Contains user name between USER and PASS commands
+ */
+ private String userArgument;
+ private User user;
+ private HashMap attributeMap;
+ private InetAddress remoteAddr;
+ private ConnectionObserver observer;
+ private String language;
+
+ private int maxIdleTime = 0;
+ private long connectionTime = 0L;
+ private long loginTime = 0L;
+ private long lastAccessTime = 0L;
+
+ private FtpDataConnection dataConnection;
+ private FileSystemView fileSystemView;
+
+ private FileObject renameFrom;
+ private long fileOffset;
+ private FtpRequest request;
+
+ /**
+ * Default constructor.
+ */
+ public FtpSessionImpl() {
+ attributeMap = new HashMap();
+ userArgument = null;
+ user = null;
+ connectionTime = System.currentTimeMillis();
+ }
+
+ /**
+ * Set client address.
+ */
+ public void setClientAddress(InetAddress addr) {
+ remoteAddr = addr;
+ }
+
+ /**
+ * Set FTP data connection.
+ */
+ public void setFtpDataConnection(FtpDataConnection dataCon) {
+ dataConnection = dataCon;
+ }
+
+ /**
+ * Get the observer object to get what the user is sending.
+ */
+ public void setObserver(ConnectionObserver observer) {
+ this.observer = observer;
+ }
+
+ /**
+ * Reset temporary state variables.
+ */
+ public void resetState() {
+ renameFrom = null;
+ fileOffset = 0L;
+ }
+
+ /**
+ * Reinitialize request.
+ */
+ public void reinitialize() {
+ userArgument = null;
+ user = null;
+ loginTime = 0L;
+ fileSystemView = null;
+ renameFrom = null;
+ fileOffset = 0L;
+ }
+
+ /**
+ * Spy print. Monitor user request.
+ */
+ private void spyRequest(String str) {
+ ConnectionObserver observer = this.observer;
+ if(observer != null) {
+ observer.request(str + "\r\n");
+ }
+ }
+
+ /**
+ * Set login attribute & user file system view.
+ */
+ public void setLogin(FileSystemView userFsView) {
+ loginTime = System.currentTimeMillis();
+ fileSystemView = userFsView;
+ }
+
+ /**
+ * Set logout.
+ */
+ public void setLogout() {
+ loginTime = 0L;
+ }
+
+ /**
+ * Update last access time.
+ */
+ public void updateLastAccessTime() {
+ lastAccessTime = System.currentTimeMillis();
+ }
+
+ /**
+ * Is logged-in
+ */
+ public boolean isLoggedIn() {
+ return (loginTime != 0L);
+ }
+
+ /**
+ * Get FTP data connection.
+ */
+ public FtpDataConnection getFtpDataConnection() {
+ return dataConnection;
+ }
+
+ /**
+ * Get file system view.
+ */
+ public FileSystemView getFileSystemView() {
+ return fileSystemView;
+ }
+
+ /**
+ * Get connection time.
+ */
+ public Date getConnectionTime() {
+ return new Date(connectionTime);
+ }
+
+ /**
+ * Get the login time.
+ */
+ public Date getLoginTime() {
+ return new Date(loginTime);
+ }
+
+ /**
+ * Get last access time.
+ */
+ public Date getLastAccessTime() {
+ return new Date(lastAccessTime);
+ }
+
+ /**
+ * Get file offset.
+ */
+ public long getFileOffset() {
+ return fileOffset;
+ }
+
+ /**
+ * Set the file offset.
+ */
+ public void setFileOffset(long offset) {
+ fileOffset = offset;
+ }
+
+ /**
+ * Get rename from file object.
+ */
+ public FileObject getRenameFrom() {
+ return renameFrom;
+ }
+
+ /**
+ * Set rename from.
+ */
+ public void setRenameFrom(FileObject file) {
+ renameFrom = file;
+ }
+
+ /**
+ * Returns user name entered in USER command
+ *
+ * @return user name entered in USER command
+ */
+ public String getUserArgument() {
+ return userArgument;
+ }
+
+ /**
+ * Set user name entered from USER command
+ */
+ public void setUserArgument(String tmpUserName) {
+ this.userArgument = tmpUserName;
+ }
+
+
+ /**
+ * Get language.
+ */
+ public String getLanguage() {
+ return language;
+ }
+
+ /**
+ * Set language.
+ */
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ /**
+ * Get user.
+ */
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+ /**
+ * Get remote address
+ */
+ public InetAddress getRemoteAddress() {
+ return remoteAddr;
+ }
+
+ /**
+ * Get data input stream. The return value will never be null.
+ */
+ public InputStream getDataInputStream() throws IOException {
+ try {
+
+ // get data socket
+ Socket dataSoc = dataConnection.getDataSocket();
+ if(dataSoc == null) {
+ throw new IOException("Cannot open data connection.");
+ }
+
+ // create input stream
+ InputStream is = dataSoc.getInputStream();
+ if(dataConnection.isZipMode()) {
+ is = new InflaterInputStream(is);
+ }
+ return is;
+ }
+ catch(IOException ex) {
+ dataConnection.closeDataSocket();
+ throw ex;
+ }
+ }
+
+ /**
+ * Get data output stream. The return value will never be null.
+ */
+ public OutputStream getDataOutputStream() throws IOException {
+ try {
+
+ // get data socket
+ Socket dataSoc = dataConnection.getDataSocket();
+ if(dataSoc == null) {
+ throw new IOException("Cannot open data connection.");
+ }
+
+ // create output stream
+ OutputStream os = dataSoc.getOutputStream();
+ if(dataConnection.isZipMode()) {
+ os = new DeflaterOutputStream(os);
+ }
+ return os;
+ }
+ catch(IOException ex) {
+ dataConnection.closeDataSocket();
+ throw ex;
+ }
+ }
+
+ /**
+ * Get attribute
+ */
+ public Object getAttribute(String name) {
+ return attributeMap.get(name);
+ }
+
+ /**
+ * Set attribute.
+ */
+ public void setAttribute(String name, Object value) {
+ attributeMap.put(name, value);
+ }
+
+ /**
+ * Remove attribute.
+ */
+ public void removeAttribute(String name) {
+ attributeMap.remove(name);
+ }
+
+ /**
+ * Remove all attributes.
+ */
+ public void clear() {
+ attributeMap.clear();
+ }
+
+ /**
+ * It checks the request timeout.
+ * Compares the last access time with the specified time.
+ */
+ public boolean isTimeout(long currTime) {
+ boolean bActive = true;
+ int maxIdleTime = getMaxIdleTime();
+ if(maxIdleTime > 0) {
+ long currIdleTimeMillis = currTime - lastAccessTime;
+ long maxIdleTimeMillis = maxIdleTime * 1000L;
+ bActive = currIdleTimeMillis <= maxIdleTimeMillis;
+ }
+ return !bActive;
+ }
+
+ /**
+ * Check request timeout.
+ */
+ public boolean isTimeout() {
+ return isTimeout(System.currentTimeMillis());
+ }
+
+ public int getMaxIdleTime() {
+ return this.maxIdleTime;
+ }
+
+ public void setMaxIdleTime(int maxIdleTimeSec) {
+ this.maxIdleTime = maxIdleTimeSec;
+ }
+
+ public FtpRequest getCurrentRequest() {
+ return request;
+ }
+
+ public void setCurrentRequest(FtpRequest request) {
+ this.request = request;
+ }
+}
Propchange: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpSessionImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpStatisticsImpl.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpStatisticsImpl.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpStatisticsImpl.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpStatisticsImpl.java Tue Jan 2 08:17:22 2007
@@ -320,7 +320,7 @@
public void setLogin(Connection connection) {
++currLogins;
++totalLogins;
- User user = connection.getRequest().getUser();
+ User user = connection.getSession().getUser();
if( "anonymous".equals(user.getName()) ) {
++currAnonLogins;
++totalAnonLogins;
@@ -335,15 +335,15 @@
userLoginTable.put(user.getName(), statisticsTable);
//new login, put 1 in the login number
statisticsTable.put(LOGIN_NUMBER, new Integer(1));
- statisticsTable.put(connection.getRequest().getRemoteAddress().getHostAddress(), new Integer(1));
+ statisticsTable.put(connection.getSession().getRemoteAddress().getHostAddress(), new Integer(1));
} else{
Integer loginNumber = (Integer) statisticsTable.get(LOGIN_NUMBER);
statisticsTable.put(LOGIN_NUMBER, new Integer(loginNumber.intValue() + 1));
- Integer loginNumberPerIP = (Integer) statisticsTable.get(connection.getRequest().getRemoteAddress().getHostAddress());
+ Integer loginNumberPerIP = (Integer) statisticsTable.get(connection.getSession().getRemoteAddress().getHostAddress());
if(loginNumberPerIP == null){//new connection from this ip
- statisticsTable.put(connection.getRequest().getRemoteAddress().getHostAddress(), new Integer(1));
+ statisticsTable.put(connection.getSession().getRemoteAddress().getHostAddress(), new Integer(1));
} else{//this ip has connections already
- statisticsTable.put(connection.getRequest().getRemoteAddress().getHostAddress(), new Integer(loginNumberPerIP.intValue() + 1));
+ statisticsTable.put(connection.getSession().getRemoteAddress().getHostAddress(), new Integer(loginNumberPerIP.intValue() + 1));
}
}
}
@@ -364,7 +364,7 @@
*/
public void setLogout(Connection connection) {
--currLogins;
- User user = connection.getRequest().getUser();
+ User user = connection.getSession().getUser();
if( "anonymous".equals(user.getName()) ) {
--currAnonLogins;
}
@@ -373,13 +373,13 @@
Hashtable statisticsTable = (Hashtable) userLoginTable.get(user.getName());
Integer loginNumber = (Integer) statisticsTable.get(LOGIN_NUMBER);
statisticsTable.put(LOGIN_NUMBER, new Integer(loginNumber.intValue() - 1));
- Integer loginNumberPerIP = (Integer) statisticsTable.get(connection.getRequest().getRemoteAddress().getHostAddress());
+ Integer loginNumberPerIP = (Integer) statisticsTable.get(connection.getSession().getRemoteAddress().getHostAddress());
if(loginNumberPerIP != null){//this should always be true
if(loginNumberPerIP.intValue() <= 1){//the last login from this ip, remove this ip address
- statisticsTable.remove(connection.getRequest().getRemoteAddress().getHostAddress());
+ statisticsTable.remove(connection.getSession().getRemoteAddress().getHostAddress());
}
} else{//this ip has other logins, reduce the number
- statisticsTable.put(connection.getRequest().getRemoteAddress().getHostAddress(), new Integer(loginNumberPerIP.intValue() - 1));
+ statisticsTable.put(connection.getSession().getRemoteAddress().getHostAddress(), new Integer(loginNumberPerIP.intValue() - 1));
}
}
@@ -492,7 +492,7 @@
if (observer != null) {
// is anonymous login
- User user = connection.getRequest().getUser();
+ User user = connection.getSession().getUser();
boolean anonymous = false;
if(user != null) {
String login = user.getName();
@@ -508,7 +508,7 @@
private void notifyLoginFail(Connection connection) {
StatisticsObserver observer = this.observer;
if (observer != null) {
- observer.notifyLoginFail(connection.getRequest().getRemoteAddress());
+ observer.notifyLoginFail(connection.getSession().getRemoteAddress());
}
}
@@ -519,7 +519,7 @@
StatisticsObserver observer = this.observer;
if (observer != null) {
// is anonymous login
- User user = connection.getRequest().getUser();
+ User user = connection.getSession().getUser();
boolean anonymous = false;
if(user != null) {
String login = user.getName();
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpWriter.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpWriter.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpWriter.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/FtpWriter.java Tue Jan 2 08:17:22 2007
@@ -31,6 +31,7 @@
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.FtpResponse;
+import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.FtpStatistics;
import org.apache.ftpserver.interfaces.ConnectionObserver;
import org.apache.ftpserver.interfaces.FtpServerContext;
@@ -95,7 +96,7 @@
private Writer writer;
private ConnectionObserver observer;
private FtpServerContext serverContext;
- private FtpRequest request;
+ private FtpSession session;
private InetAddress serverAddress;
@@ -118,8 +119,8 @@
/**
* Set ftp request.
*/
- public void setFtpRequest(FtpRequest request) {
- this.request = request;
+ public void setFtpSession(FtpSession session) {
+ this.session = session;
}
/**
@@ -144,7 +145,7 @@
*/
public void send(int code, String subId, String basicMsg) throws IOException {
MessageResource resource = serverContext.getMessageResource();
- String lang = request.getLanguage();
+ String lang = session.getLanguage();
String msg = null;
if(resource != null ) {
@@ -270,7 +271,7 @@
/**
* Get the variable value.
*/
- public String getVariableValue(int code, String basicMsg, String varName) {
+ private String getVariableValue(int code, String basicMsg, String varName) {
String varVal = null;
@@ -336,6 +337,12 @@
String varVal = null;
+ FtpRequest request = session.getCurrentRequest();
+
+ if(request == null) {
+ return "";
+ }
+
// request line
if(varName.equals(REQUEST_LINE)) {
varVal = request.getRequestLine();
@@ -523,37 +530,37 @@
// client ip
if(varName.equals(CLIENT_IP)) {
- varVal = request.getRemoteAddress().getHostAddress();
+ varVal = session.getRemoteAddress().getHostAddress();
}
// client connection time
else if(varName.equals(CLIENT_CON_TIME)) {
- varVal = DateUtils.getISO8601Date(request.getConnectionTime().getTime());
+ varVal = DateUtils.getISO8601Date(session.getConnectionTime().getTime());
}
// client login name
else if(varName.equals(CLIENT_LOGIN_NAME)) {
- varVal = request.getUserArgument();
+ varVal = session.getUserArgument();
}
// client login time
else if(varName.equals(CLIENT_LOGIN_TIME)) {
- varVal = DateUtils.getISO8601Date(request.getLoginTime().getTime());
+ varVal = DateUtils.getISO8601Date(session.getLoginTime().getTime());
}
// client last access time
else if(varName.equals(CLIENT_ACCESS_TIME)) {
- varVal = DateUtils.getISO8601Date(request.getLastAccessTime().getTime());
+ varVal = DateUtils.getISO8601Date(session.getLastAccessTime().getTime());
}
// client home
else if(varName.equals(CLIENT_HOME)) {
- varVal = request.getUser().getHomeDirectory();
+ varVal = session.getUser().getHomeDirectory();
}
// client directory
else if(varName.equals(CLIENT_DIR)) {
- FileSystemView fsView = request.getFileSystemView();
+ FileSystemView fsView = session.getFileSystemView();
if(fsView != null) {
try {
varVal = fsView.getCurrentDirectory().getFullName();
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/RequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/RequestHandler.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/RequestHandler.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/RequestHandler.java Tue Jan 2 08:17:22 2007
@@ -37,6 +37,7 @@
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletEnum;
import org.apache.ftpserver.ftplet.Structure;
@@ -66,7 +67,7 @@
private Log log;
private Socket controlSocket;
- private FtpRequestImpl request;
+ private FtpSessionImpl session;
private FtpWriter writer;
private BufferedReader reader;
private boolean isConnectionClosed;
@@ -90,15 +91,15 @@
dataCon.setServerControlAddress(controlSocket.getLocalAddress());
// reader object
- request = new FtpRequestImpl();
- request.setClientAddress(this.controlSocket.getInetAddress());
- request.setFtpDataConnection(dataCon);
+ session = new FtpSessionImpl();
+ session.setClientAddress(this.controlSocket.getInetAddress());
+ session.setFtpDataConnection(dataCon);
// writer object
writer = new FtpWriter();
writer.setControlSocket(this.controlSocket);
writer.setServerContext(this.serverContext);
- writer.setFtpRequest(request);
+ writer.setFtpSession(session);
}
/**
@@ -113,9 +114,9 @@
}
// set request observer
- FtpRequestImpl request = this.request;
- if(request != null) {
- request.setObserver(observer);
+ FtpSessionImpl session = this.session;
+ if(session != null) {
+ session.setObserver(observer);
}
}
@@ -176,22 +177,22 @@
/**
* Get request.
*/
- public FtpRequest getRequest() {
- return request;
+ public FtpSession getSession() {
+ return session;
}
/**
* Server one FTP client connection.
*/
public void run() {
- if(request == null ) {
+ if(session == null ) {
return;
}
if(serverContext == null) {
return;
}
- InetAddress clientAddr = request.getRemoteAddress();
+ InetAddress clientAddr = session.getRemoteAddress();
ConnectionManager conManager = serverContext.getConnectionManager();
Ftplet ftpletContainer = serverContext.getFtpletContainer();
@@ -214,7 +215,7 @@
// call Ftplet.onConnect() method
boolean isSkipped = false;
- FtpletEnum ftpletRet = ftpletContainer.onConnect(request, writer);
+ FtpletEnum ftpletRet = ftpletContainer.onConnect(session, writer);
if(ftpletRet == FtpletEnum.RET_SKIP) {
isSkipped = true;
}
@@ -261,14 +262,20 @@
}
// parse and check permission
- request.parse(commandLine);
- if(!hasPermission()) {
+ FtpRequestImpl request = new FtpRequestImpl(commandLine);
+ session.setCurrentRequest(request);
+
+ if(!hasPermission(request)) {
writer.send(530, "permission", null);
continue;
}
// execute command
- service(request, writer);
+ service(request, session, writer);
+
+ if(session != null) {
+ session.setCurrentRequest(null);
+ }
}
while(!isConnectionClosed);
} catch(SocketException ex) {
@@ -290,20 +297,20 @@
* Notify connection manager observer.
*/
protected void notifyObserver() {
- request.updateLastAccessTime();
+ session.updateLastAccessTime();
serverContext.getConnectionManager().updateConnection(this);
}
/**
* Execute the ftp command.
*/
- public void service(FtpRequestImpl request, FtpWriter out) throws IOException, FtpException {
+ public void service(FtpRequestImpl request, FtpSessionImpl session, FtpWriter out) throws IOException, FtpException {
try {
String commandName = request.getCommand();
CommandFactory commandFactory = serverContext.getCommandFactory();
Command command = commandFactory.getCommand(commandName);
if(command != null) {
- command.execute(this, request, out);
+ command.execute(this, request, session, out);
}
else {
out.send(502, "not.implemented", null);
@@ -343,7 +350,7 @@
// call Ftplet.onDisconnect() method.
try {
Ftplet ftpletContainer = serverContext.getFtpletContainer();
- ftpletContainer.onDisconnect(request, writer);
+ ftpletContainer.onDisconnect(session, writer);
}
catch(Exception ex) {
log.warn("RequestHandler.close()", ex);
@@ -352,30 +359,30 @@
// notify statistics object and close request
ServerFtpStatistics ftpStat = (ServerFtpStatistics)serverContext.getFtpStatistics();
- if(request != null) {
+ if(session != null) {
// log message
- User user = request.getUser();
+ User user = session.getUser();
String userName = user != null ? user.getName() : "<Not logged in>";
- InetAddress clientAddr = request.getRemoteAddress();
+ InetAddress clientAddr = session.getRemoteAddress();
log.info("Close connection : " + clientAddr.getHostAddress() + " - " + userName);
// logout if necessary and notify statistics
- if(request.isLoggedIn()) {
- request.setLogout();
+ if(session.isLoggedIn()) {
+ session.setLogout();
ftpStat.setLogout(this);
}
ftpStat.setCloseConnection(this);
// clear request
- request.clear();
- request.setObserver(null);
- request.getFtpDataConnection().dispose();
- FileSystemView fview = request.getFileSystemView();
+ session.clear();
+ session.setObserver(null);
+ session.getFtpDataConnection().dispose();
+ FileSystemView fview = session.getFileSystemView();
if(fview != null) {
fview.dispose();
}
- request = null;
+ session = null;
}
// close ftp writer
@@ -409,12 +416,12 @@
/**
* Check user permission to execute ftp command.
*/
- protected boolean hasPermission() {
+ protected boolean hasPermission(FtpRequest request) {
String cmd = request.getCommand();
if(cmd == null) {
return false;
}
- return request.isLoggedIn() ||
+ return session.isLoggedIn() ||
cmd.equals("USER") ||
cmd.equals("PASS") ||
cmd.equals("QUIT") ||
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ABOR.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ABOR.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ABOR.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ABOR.java Tue Jan 2 08:17:22 2007
@@ -21,9 +21,10 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
+import org.apache.ftpserver.ftplet.FtpRequest;
/**
* <code>ABOR <CRLF></code><br>
@@ -46,14 +47,15 @@
* Execute command
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException {
// reset state variables
- request.resetState();
+ session.resetState();
// and abort any data connection
- request.getFtpDataConnection().closeDataSocket();
+ session.getFtpDataConnection().closeDataSocket();
out.send(226, "ABOR", null);
}
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ACCT.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ACCT.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ACCT.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/ACCT.java Tue Jan 2 08:17:22 2007
@@ -21,9 +21,10 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
+import org.apache.ftpserver.ftplet.FtpRequest;
/**
* <code>ACCT <CRLF></code><br>
@@ -40,11 +41,12 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException {
// reset state variables
- request.resetState();
+ session.resetState();
// and abort any data connection
out.send(202, "ACCT", null);
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/APPE.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/APPE.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/APPE.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/APPE.java Tue Jan 2 08:17:22 2007
@@ -26,12 +26,13 @@
import java.net.SocketException;
import org.apache.commons.logging.Log;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FileObject;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletEnum;
import org.apache.ftpserver.interfaces.FtpServerContext;
@@ -58,13 +59,14 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
try {
// reset state variables
- request.resetState();
+ session.resetState();
FtpServerContext serverContext = handler.getServerContext();
// argument check
@@ -78,7 +80,7 @@
Ftplet ftpletContainer = serverContext.getFtpletContainer();
FtpletEnum ftpletRet;
try {
- ftpletRet = ftpletContainer.onAppendStart(request, out);
+ ftpletRet = ftpletContainer.onAppendStart(session, request, out);
} catch(Exception e) {
log.debug("Ftplet container threw exception", e);
ftpletRet = FtpletEnum.RET_DISCONNECT;
@@ -94,7 +96,7 @@
// get filenames
FileObject file = null;
try {
- file = request.getFileSystemView().getFileObject(fileName);
+ file = session.getFileSystemView().getFileObject(fileName);
}
catch(Exception e) {
log.debug("File system threw exception", e);
@@ -121,7 +123,7 @@
out.send(150, "APPE", fileName);
InputStream is = null;
try {
- is = request.getDataInputStream();
+ is = session.getDataInputStream();
}
catch(IOException e) {
log.debug("Exception when getting data input stream", e);
@@ -146,7 +148,7 @@
bos = IoUtils.getBufferedOutputStream( file.createOutputStream(offset) );
// transfer data
- Authority[] maxUploadRates = handler.getRequest().getUser().getAuthorities(TransferRatePermission.class);
+ Authority[] maxUploadRates = session.getUser().getAuthorities(TransferRatePermission.class);
int maxRate = 0;
if(maxUploadRates.length > 0) {
@@ -156,7 +158,7 @@
long transSz = handler.transfer(bis, bos, maxRate);
// log message
- String userName = request.getUser().getName();
+ String userName = session.getUser().getName();
Log log = serverContext.getLogFactory().getInstance(getClass());
log.info("File upload : " + userName + " - " + fileName);
@@ -185,7 +187,7 @@
// call Ftplet.onAppendEnd() method
try {
- ftpletRet = ftpletContainer.onAppendEnd(request, out);
+ ftpletRet = ftpletContainer.onAppendEnd(session, request, out);
} catch(Exception e) {
log.debug("Ftplet container threw exception", e);
ftpletRet = FtpletEnum.RET_DISCONNECT;
@@ -198,7 +200,7 @@
}
}
finally {
- request.getFtpDataConnection().closeDataSocket();
+ session.getFtpDataConnection().closeDataSocket();
}
}
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AUTH.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AUTH.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AUTH.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AUTH.java Tue Jan 2 08:17:22 2007
@@ -22,10 +22,11 @@
import java.io.IOException;
import org.apache.commons.logging.Log;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.interfaces.FtpServerContext;
/**
@@ -41,11 +42,12 @@
* Execute command
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state variables
- request.resetState();
+ session.resetState();
// argument check
if(!request.hasArgument()) {
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AbstractCommand.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AbstractCommand.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AbstractCommand.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/AbstractCommand.java Tue Jan 2 08:17:22 2007
@@ -19,14 +19,8 @@
package org.apache.ftpserver.command;
-import java.io.IOException;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ftpserver.FtpRequestImpl;
-import org.apache.ftpserver.FtpWriter;
-import org.apache.ftpserver.RequestHandler;
-import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.interfaces.Command;
/**
@@ -42,12 +36,5 @@
public void setLogFactory(LogFactory logFactory) {
log = logFactory.getInstance(getClass());
- }
-
- /**
- * Execute command
- */
- public abstract void execute(RequestHandler handler,
- FtpRequestImpl request,
- FtpWriter out) throws IOException, FtpException;
+ }
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CDUP.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CDUP.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CDUP.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CDUP.java Tue Jan 2 08:17:22 2007
@@ -21,11 +21,12 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
/**
* <code>CDUP <CRLF></code><br>
@@ -45,14 +46,15 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state variables
- request.resetState();
+ session.resetState();
// change directory
- FileSystemView fsview = request.getFileSystemView();
+ FileSystemView fsview = session.getFileSystemView();
boolean success = false;
try {
success = fsview.changeDirectory("..");
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CWD.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CWD.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CWD.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/CWD.java Tue Jan 2 08:17:22 2007
@@ -21,11 +21,12 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FileSystemView;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
/**
* <code>CWD <SP> <pathname> <CRLF></code><br>
@@ -45,11 +46,12 @@
* Execute command
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state variables
- request.resetState();
+ session.resetState();
// get new directory name
String dirName = "/";
@@ -58,7 +60,7 @@
}
// change directory
- FileSystemView fsview = request.getFileSystemView();
+ FileSystemView fsview = session.getFileSystemView();
boolean success = false;
try {
success = fsview.changeDirectory(dirName);
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/DELE.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/DELE.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/DELE.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/DELE.java Tue Jan 2 08:17:22 2007
@@ -22,11 +22,12 @@
import java.io.IOException;
import org.apache.commons.logging.Log;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FileObject;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletEnum;
import org.apache.ftpserver.interfaces.FtpServerContext;
@@ -48,11 +49,12 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state variables
- request.resetState();
+ session.resetState();
FtpServerContext serverContext = handler.getServerContext();
// argument check
@@ -66,7 +68,7 @@
Ftplet ftpletContainer = serverContext.getFtpletContainer();
FtpletEnum ftpletRet;
try {
- ftpletRet = ftpletContainer.onDeleteStart(request, out);
+ ftpletRet = ftpletContainer.onDeleteStart(session, request, out);
} catch(Exception e) {
log.debug("Ftplet container threw exception", e);
ftpletRet = FtpletEnum.RET_DISCONNECT;
@@ -84,7 +86,7 @@
FileObject file = null;
try {
- file = request.getFileSystemView().getFileObject(fileName);
+ file = session.getFileSystemView().getFileObject(fileName);
}
catch(Exception ex) {
log.debug("Could not get file " + fileName, ex);
@@ -107,7 +109,7 @@
out.send(250, "DELE", fileName);
// log message
- String userName = request.getUser().getName();
+ String userName = session.getUser().getName();
Log log = serverContext.getLogFactory().getInstance(getClass());
log.info("File delete : " + userName + " - " + fileName);
@@ -117,7 +119,7 @@
// call Ftplet.onDeleteEnd() method
try{
- ftpletRet = ftpletContainer.onDeleteEnd(request, out);
+ ftpletRet = ftpletContainer.onDeleteEnd(session, request, out);
} catch(Exception e) {
log.debug("Ftplet container threw exception", e);
ftpletRet = FtpletEnum.RET_DISCONNECT;
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPRT.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPRT.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPRT.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPRT.java Tue Jan 2 08:17:22 2007
@@ -23,9 +23,10 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.interfaces.DataConnectionConfig;
/**
@@ -45,11 +46,12 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException {
// reset state variables
- request.resetState();
+ session.resetState();
// argument check
String arg = request.getArgument();
@@ -93,7 +95,7 @@
// check IP
if(dataCfg.isActiveIpCheck()) {
- InetAddress clientAddr = handler.getRequest().getRemoteAddress();
+ InetAddress clientAddr = session.getRemoteAddress();
if(!dataAddr.equals(clientAddr)) {
out.send(510, "EPRT.mismatch", null);
return;
@@ -111,7 +113,7 @@
return;
}
- request.getFtpDataConnection().setPortCommand(dataAddr, dataPort);
+ session.getFtpDataConnection().setPortCommand(dataAddr, dataPort);
out.send(200, "EPRT", null);
}
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPSV.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPSV.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPSV.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/EPSV.java Tue Jan 2 08:17:22 2007
@@ -22,9 +22,10 @@
import java.io.IOException;
import org.apache.ftpserver.FtpDataConnection;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
+import org.apache.ftpserver.ftplet.FtpRequest;
/**
* The EPSV command requests that a server listen on a data port and
@@ -47,14 +48,15 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException {
// reset state variables
- request.resetState();
+ session.resetState();
// set data connection
- FtpDataConnection dataCon = request.getFtpDataConnection();
+ FtpDataConnection dataCon = session.getFtpDataConnection();
if (!dataCon.setPasvCommand()) {
out.send(425, "EPSV", null);
return;
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/FEAT.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/FEAT.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/FEAT.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/FEAT.java Tue Jan 2 08:17:22 2007
@@ -21,10 +21,11 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
/**
* The FEAT command (introduced in [RFC-2389]) allows servers with
@@ -38,11 +39,12 @@
class FEAT extends AbstractCommand {
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state variables
- request.resetState();
+ session.resetState();
out.send(211, "FEAT", null);
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/HELP.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/HELP.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/HELP.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/HELP.java Tue Jan 2 08:17:22 2007
@@ -21,9 +21,10 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.interfaces.MessageResource;
/**
@@ -44,11 +45,12 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException {
// reset state variables
- request.resetState();
+ session.resetState();
// print global help
if(!request.hasArgument()) {
@@ -59,7 +61,7 @@
// print command specific help if available
String ftpCmd = request.getArgument().toUpperCase();
MessageResource resource = handler.getServerContext().getMessageResource();
- if(resource.getMessage(214, ftpCmd, request.getLanguage()) == null) {
+ if(resource.getMessage(214, ftpCmd, session.getLanguage()) == null) {
ftpCmd = null;
}
out.send(214, ftpCmd, null);
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LANG.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LANG.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LANG.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LANG.java Tue Jan 2 08:17:22 2007
@@ -21,10 +21,11 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.interfaces.MessageResource;
/**
@@ -41,16 +42,17 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state
- request.resetState();
+ session.resetState();
// default language
String language = request.getArgument();
if(language == null) {
- request.setLanguage(null);
+ session.setLanguage(null);
out.send(200, "LANG", null);
return;
}
@@ -62,7 +64,7 @@
if(availableLanguages != null) {
for(int i=0; i<availableLanguages.length; ++i) {
if(availableLanguages[i].equals(language)) {
- request.setLanguage(language);
+ session.setLanguage(language);
out.send(200, "LANG", null);
return;
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LIST.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LIST.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LIST.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/LIST.java Tue Jan 2 08:17:22 2007
@@ -25,10 +25,11 @@
import java.io.Writer;
import java.net.SocketException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.listing.DirectoryLister;
import org.apache.ftpserver.listing.LISTFileFormater;
import org.apache.ftpserver.listing.ListArgument;
@@ -59,19 +60,20 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
try {
// reset state variables
- request.resetState();
+ session.resetState();
// get data connection
out.send(150, "LIST", null);
OutputStream os = null;
try {
- os = request.getDataOutputStream();
+ os = session.getDataOutputStream();
}
catch(IOException ex) {
log.debug("Exception getting the output data stream", ex);
@@ -90,7 +92,7 @@
// parse argument
ListArgument parsedArg = ListArgumentParser.parse(request.getArgument());
- writer.write(directoryLister.listFiles(parsedArg, request.getFileSystemView(), LIST_FILE_FORMATER));
+ writer.write(directoryLister.listFiles(parsedArg, session.getFileSystemView(), LIST_FILE_FORMATER));
}
catch(SocketException ex) {
log.debug("Socket exception during list transfer", ex);
@@ -116,7 +118,7 @@
}
}
finally {
- request.getFtpDataConnection().closeDataSocket();
+ session.getFtpDataConnection().closeDataSocket();
}
}
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MD5.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MD5.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MD5.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MD5.java Tue Jan 2 08:17:22 2007
@@ -25,10 +25,11 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FileObject;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.util.IoUtils;
/**
@@ -46,11 +47,12 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException {
// reset state variables
- request.resetState();
+ session.resetState();
boolean isMMD5 = false;
@@ -81,11 +83,10 @@
FileObject file = null;
try {
- file = request.getFileSystemView().getFileObject(fileName);
+ file = session.getFileSystemView().getFileObject(fileName);
}
catch(Exception ex) {
log.debug("Exception getting the file object: " + fileName, ex);
- // TODO: handle exception
}
if(file == null) {
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MDTM.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MDTM.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MDTM.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MDTM.java Tue Jan 2 08:17:22 2007
@@ -21,11 +21,12 @@
import java.io.IOException;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FileObject;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.util.DateUtils;
/**
@@ -42,11 +43,12 @@
* Execute command
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state
- request.resetState();
+ session.resetState();
// argument check
String fileName = request.getArgument();
@@ -58,7 +60,7 @@
// get file object
FileObject file = null;
try {
- file = request.getFileSystemView().getFileObject(fileName);
+ file = session.getFileSystemView().getFileObject(fileName);
}
catch(Exception ex) {
log.debug("Exception getting file object", ex);
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MKD.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MKD.java?view=diff&rev=491831&r1=491830&r2=491831
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MKD.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/command/MKD.java Tue Jan 2 08:17:22 2007
@@ -22,11 +22,12 @@
import java.io.IOException;
import org.apache.commons.logging.Log;
-import org.apache.ftpserver.FtpRequestImpl;
+import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.FtpWriter;
import org.apache.ftpserver.RequestHandler;
import org.apache.ftpserver.ftplet.FileObject;
import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletEnum;
import org.apache.ftpserver.interfaces.FtpServerContext;
@@ -50,11 +51,12 @@
* Execute command.
*/
public void execute(RequestHandler handler,
- FtpRequestImpl request,
+ FtpRequest request,
+ FtpSessionImpl session,
FtpWriter out) throws IOException, FtpException {
// reset state
- request.resetState();
+ session.resetState();
FtpServerContext serverContext = handler.getServerContext();
// argument check
@@ -68,7 +70,7 @@
Ftplet ftpletContainer = serverContext.getFtpletContainer();
FtpletEnum ftpletRet;
try{
- ftpletRet = ftpletContainer.onMkdirStart(request, out);
+ ftpletRet = ftpletContainer.onMkdirStart(session, request, out);
} catch(Exception e) {
log.debug("Ftplet container threw exception", e);
ftpletRet = FtpletEnum.RET_DISCONNECT;
@@ -84,7 +86,7 @@
// get file object
FileObject file = null;
try {
- file = request.getFileSystemView().getFileObject(fileName);
+ file = session.getFileSystemView().getFileObject(fileName);
}
catch(Exception ex) {
log.debug("Exception getting file object", ex);
@@ -112,7 +114,7 @@
out.send(250, "MKD", fileName);
// write log message
- String userName = request.getUser().getName();
+ String userName = session.getUser().getName();
Log log = serverContext.getLogFactory().getInstance(getClass());
log.info("Directory create : " + userName + " - " + fileName);
@@ -122,7 +124,7 @@
// call Ftplet.onMkdirEnd() method
try{
- ftpletRet = ftpletContainer.onMkdirEnd(request, out);
+ ftpletRet = ftpletContainer.onMkdirEnd(session, request, out);
} catch(Exception e) {
log.debug("Ftplet container threw exception", e);
ftpletRet = FtpletEnum.RET_DISCONNECT;