org.apache.ftpserver.ftplet.DefaultFtplet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ftplet-api Show documentation
Show all versions of ftplet-api Show documentation
Ftplets are, similar to servlets, an API to plug into the
request lifecycle of FtpServer. Ftplets are called on session connect
and disconnect as well as before and after each command within a user
session.
/*
* 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.ftplet;
import java.io.IOException;
/**
* Default ftplet implementation. All the callback method returns null. It is
* just an empty implementation. You can derive your ftplet implementation from
* this class.
*
* @author Apache MINA Project
*/
public class DefaultFtplet implements Ftplet {
public void init(FtpletContext ftpletContext) throws FtpException {
}
public void destroy() {
}
public FtpletResult onConnect(FtpSession session) throws FtpException,
IOException {
return null;
}
public FtpletResult onDisconnect(FtpSession session) throws FtpException,
IOException {
return null;
}
public FtpletResult beforeCommand(FtpSession session, FtpRequest request)
throws FtpException, IOException {
String command = request.getCommand().toUpperCase();
if ("DELE".equals(command)) {
return onDeleteStart(session, request);
} else if ("STOR".equals(command)) {
return onUploadStart(session, request);
} else if ("RETR".equals(command)) {
return onDownloadStart(session, request);
} else if ("RMD".equals(command)) {
return onRmdirStart(session, request);
} else if ("MKD".equals(command)) {
return onMkdirStart(session, request);
} else if ("APPE".equals(command)) {
return onAppendStart(session, request);
} else if ("STOU".equals(command)) {
return onUploadUniqueStart(session, request);
} else if ("RNTO".equals(command)) {
return onRenameStart(session, request);
} else if ("SITE".equals(command)) {
return onSite(session, request);
} else {
// TODO should we call a catch all?
return null;
}
}
public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)
throws FtpException, IOException {
// the reply is ignored for these callbacks
String command = request.getCommand().toUpperCase();
if ("PASS".equals(command)) {
return onLogin(session, request);
} else if ("DELE".equals(command)) {
return onDeleteEnd(session, request);
} else if ("STOR".equals(command)) {
return onUploadEnd(session, request);
} else if ("RETR".equals(command)) {
return onDownloadEnd(session, request);
} else if ("RMD".equals(command)) {
return onRmdirEnd(session, request);
} else if ("MKD".equals(command)) {
return onMkdirEnd(session, request);
} else if ("APPE".equals(command)) {
return onAppendEnd(session, request);
} else if ("STOU".equals(command)) {
return onUploadUniqueEnd(session, request);
} else if ("RNTO".equals(command)) {
return onRenameEnd(session, request);
} else {
// TODO should we call a catch all?
return null;
}
}
/**
* Override this method to intercept user logins
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onLogin(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept deletions
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onDeleteStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to handle deletions after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onDeleteEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept uploads
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onUploadStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to handle uploads after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onUploadEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept downloads
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onDownloadStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to handle downloads after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onDownloadEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept deletion of directories
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onRmdirStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to handle deletion of directories after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onRmdirEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept creation of directories
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onMkdirStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to handle creation of directories after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onMkdirEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept file appends
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onAppendStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept file appends after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onAppendEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept unique uploads
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onUploadUniqueStart(FtpSession session,
FtpRequest request) throws FtpException, IOException {
return null;
}
/**
* Override this method to handle unique uploads after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onUploadUniqueEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept renames
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onRenameStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to handle renames after completion
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onRenameEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
/**
* Override this method to intercept SITE commands
* @param session The current {@link FtpSession}
* @param request The current {@link FtpRequest}
* @return The action for the container to take
* @throws FtpException
* @throws IOException
*/
public FtpletResult onSite(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy