/** * Notifies the {@link FTPCallback} that a request to rename a file finished * * @see FTPCallback#onRenameEnd */ @Override public FtpletResult onRenameEnd(FtpSession session, FtpRequest request) throws FtpException, IOException { UserDetails user = user(session.getUser()); File workingDir = workingDir(session); String fileName = request.getArgument(); File renameTo = new File(workingDir, fileName); File renameFrom = new File(session.getRenameFrom().getAbsolutePath()); return toFtpResult(callback.onRenameEnd(user, workingDir, renameFrom, renameTo)); }
/** * Get request variable value. */ private static String getRequestVariableValue(FtpIoSession session, FtpRequest request, String varName) { String varVal = null; if (request == null) { return ""; } // request line if (varName.equals(REQUEST_LINE)) { varVal = request.getRequestLine(); } // request command else if (varName.equals(REQUEST_CMD)) { varVal = request.getCommand(); } // request argument else if (varName.equals(REQUEST_ARG)) { varVal = request.getArgument(); } return varVal; }
if (!request.hasArgument()) { session.write(LocalizedFtpReply.translate(session, request, context, FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, char stru = request.getArgument().charAt(0); try { session.setStructure(Structure.parseArgument(stru)); LOG .debug("Illegal structure argument: " + request.getArgument(), e); session .write(LocalizedFtpReply
if ("MMD5".equals(request.getCommand())) { isMMD5 = true; String argument = request.getArgument();
@Override public FtpletResult beforeCommand(FtpSession session, FtpRequest request) throws FtpException { if (session.getUser() != null) { Class<? extends Authority> authority = commandAuthorityMap.get(request.getCommand()); if (authority != null && session.getUser().getAuthorities(authority).isEmpty()) { session.write(new DefaultFtpReply(FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN, "Permission denied")); return FtpletResult.SKIP; } } 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; } }
String argument = request.getArgument();
if (request.hasArgument()) { type = request.getArgument().charAt(0); }else{ FtpReply.REPLY_200_COMMAND_OKAY, "TYPE", null)); } catch (IllegalArgumentException e) { LOG.debug("Illegal type argument: " + request.getArgument(), e); session .write(LocalizedFtpReply
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; } }
/** * Notifies the {@link FTPCallback} of a request to rename a file * * @see FTPCallback#onRenameStart */ @Override public FtpletResult onRenameStart(FtpSession session, FtpRequest request) throws FtpException, IOException { UserDetails user = user(session.getUser()); File workingDir = workingDir(session); String fileName = request.getArgument(); File renameTo = new File(workingDir, fileName); File renameFrom = new File(session.getRenameFrom().getAbsolutePath()); return toFtpResult(callback.onRenameStart(user, workingDir, renameFrom, renameTo)); }
/** * Execute command. */ public void execute(final FtpIoSession session, final FtpServerContext context, final FtpRequest request) throws IOException { // reset state variables session.resetState(); // print global help if (!request.hasArgument()) { session.write(LocalizedFtpReply.translate(session, request, context, FtpReply.REPLY_214_HELP_MESSAGE, null, null)); return; } // print command specific help if available String ftpCmd = request.getArgument().toUpperCase(); MessageResource resource = context.getMessageResource(); if (resource.getMessage(FtpReply.REPLY_214_HELP_MESSAGE, ftpCmd, session.getLanguage()) == null) { ftpCmd = null; } session.write(LocalizedFtpReply.translate(session, request, context, FtpReply.REPLY_214_HELP_MESSAGE, ftpCmd, null)); } }
session.updateLastAccessTime(); String commandName = request.getCommand(); CommandFactory commandFactory = context.getCommandFactory(); Command command = commandFactory.getCommand(commandName);
/** * Notifies the {@link FTPCallback} of make directory requests * * @see FTPCallback#onMakeDirStart */ @Override public FtpletResult onMkdirStart(FtpSession session, FtpRequest request) throws FtpException, IOException { UserDetails user = user(session.getUser()); File workingDir = workingDir(session); String dirName = request.getArgument(); return toFtpResult(callback.onMakeDirStart(user, workingDir, dirName)); }
if (request.hasArgument()) { dirName = request.getArgument();
/** * Notifies the {@link FTPCallback} of requests to append content to an existing file * * @see FTPCallback#onAppendStart */ @Override public FtpletResult onAppendStart(FtpSession session, FtpRequest request) throws FtpException, IOException { UserDetails user = user(session.getUser()); File workingDir = workingDir(session); String fileName = request.getArgument(); return toFtpResult(callback.onAppendStart(user, workingDir, fileName)); }
if (!request.hasArgument()) { session.write(LocalizedFtpReply.translate(session, request, context, FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, char md = request.getArgument().charAt(0); md = Character.toUpperCase(md); if (md == 'S') {
/** * Notifies the {@link FTPCallback} of a finished request to append content to an existing file * * @see FTPCallback#onAppendEnd */ @Override public FtpletResult onAppendEnd(FtpSession session, FtpRequest request) throws FtpException, IOException { UserDetails user = user(session.getUser()); File workingDir = workingDir(session); String fileName = request.getArgument(); return toFtpResult(callback.onAppendEnd(user, workingDir, fileName)); }
if (!request.hasArgument()) { session.write(LocalizedFtpReply.translate(session, request, context, FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, String authType = request.getArgument().toUpperCase(); if (VALID_AUTH_TYPES.contains(authType)) { if(authType.equals("TLS-C")) {
/** * Notifies the {@link FTPCallback} of file download requests * * @see FTPCallback#onDownloadStart */ @Override public FtpletResult onDownloadStart(FtpSession session, FtpRequest request) throws FtpException, IOException { UserDetails user = user(session.getUser()); File workingDir = workingDir(session); String fileName = request.getArgument(); return toFtpResult(callback.onDownloadStart(user, workingDir, fileName)); }
if (!request.hasArgument()) { session.write(LocalizedFtpReply.translate(session, request, context, FtpReply.REPLY_501_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS, address = SocketAddressEncoder.decode(request.getArgument()); return; } catch (IllegalPortException e) { LOG.debug("Invalid data port: " + request.getArgument(), e); session .write(LocalizedFtpReply