Apache FTPServer ограничивает такие команды, как «DELE»

Я использую 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(), зависает, а затем отключается


person zeropoint    schedule 19.01.2015    source источник


Ответы (1)


Вы можете использовать DefaultFtpReply вместо создания new FtpReply();

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