package org.openslx.imagemaster.server; import java.io.IOException; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.FtpReply; import org.apache.ftpserver.ftplet.FtpRequest; import org.apache.ftpserver.ftplet.FtpSession; import org.apache.ftpserver.ftplet.Ftplet; import org.apache.ftpserver.ftplet.FtpletContext; import org.apache.ftpserver.ftplet.FtpletResult; import org.apache.ftpserver.ftplet.UserManager; import org.apache.log4j.Logger; import org.openslx.imagemaster.db.ImageProcessor; public class MasterFtplet implements Ftplet { private static Logger log = Logger.getLogger(Ftplet.class); private UserManager userManager; @Override public void init(FtpletContext ftpletContext) throws FtpException { userManager = ftpletContext.getUserManager(); } @Override public void destroy() { // not used } @Override public FtpletResult beforeCommand(FtpSession session, FtpRequest request) throws FtpException, IOException { if (session.getUser() != null) { log.info(session.getUser().getName() + " issued command: " + request.getRequestLine()); } return null; } @Override public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply) throws FtpException, IOException { if (session.getUser() != null) { String username = session.getUser().getName(); String command = request.getRequestLine(); log.info(username + " is done with command: " + command); if (request.getCommand().equals("STOR")) { try { userManager.delete(username); } catch (FtpException e) { } finally { log.info("Stored file and deleted user: '" + username + "'"); ImageProcessor.processImageAfterUpload(username, command.split(" ")[1]); } } } return null; } @Override public FtpletResult onConnect(FtpSession session) throws FtpException, IOException { // not used return null; } @Override public FtpletResult onDisconnect(FtpSession session) throws FtpException, IOException { // not used return null; } }