Apache FTPServer - 限制命令,如' DELE'

时间:2015-01-19 15:10:44

标签: java ftp-server

我正在使用Apache Mina FTPServer。如documentation中所述,我正在扩展DefaultFtplet类。我将打印(SOP)放在文档中提到的某些事件中,如onConnect等,一切正常。

现在,我想 限制DELE命令 ,因此根据我已覆盖onDeleteStart方法的文档,但客户端正在获取在没有任何消息的情况下挂断和断开连接。

由于我无法为此类场景找到更具体的文档,以下是我的代码:

@Override
public FtpletResult onDeleteStart(FtpSession session, FtpRequest request) throws FtpException, IOException {
    System.out.println("\n\n\nonDeleteStart\n\n\n");

    FtpReply reply = new FtpReply() {

        @Override
        public String getMessage() {
            return "Deletion not supported";
        }

        @Override
        public int getCode() {
            return FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN;
        }
    };
    session.write(reply); // Not sure if this is the right way!

    return FtpletResult.SKIP;
}

请让我知道我在这里失踪了什么,或者这是正确的做法吗?

客户端(ftp命令行和WinSCP)未收到来自getMessage()的消息,并且挂起并稍后断开连接

1 个答案:

答案 0 :(得分:0)

您可以使用DefaultFtpReply代替创建new FtpReply();

FtpReply reply = new DefaultFtpReply(FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN, 
"Deletion not supported");
session.write(reply );