Я использую FTP-сервер Apache Mina. Как упоминалось в документации, я расширяю класс DefaultFtplet
. Ставлю отпечатки (СОПы) в некоторые события упомянутые в документации типа 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()
, зависает, а затем отключается