Apache FTPServer——限制像 'DELE' 这样的命令
Apache FTPServer -- restricting commands like 'DELE'
我正在使用 Apache Mina FTPServer。如 documentation 中所述,我正在扩展 DefaultFtplet
class。我将打印件 (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()
获取消息,挂起并稍后断开连接
您可以使用 DefaultFtpReply
而不是创建 new FtpReply()
;
FtpReply reply = new DefaultFtpReply(FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN,
"Deletion not supported");
session.write(reply );
我正在使用 Apache Mina FTPServer。如 documentation 中所述,我正在扩展 DefaultFtplet
class。我将打印件 (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()
获取消息,挂起并稍后断开连接
您可以使用 DefaultFtpReply
而不是创建 new FtpReply()
;
FtpReply reply = new DefaultFtpReply(FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN,
"Deletion not supported");
session.write(reply );