簡體   English   中英

如何使用 Apache MINA SSHD 阻止 SFTP 刪除操作

[英]How to block SFTP remove operations with Apache MINA SSHD

我正在嘗試使用 Apache Mina SSHD 創建自定義 sftp 服務器。 到目前為止我的代碼:

 SshServer sshd = SshServer.setUpDefaultServer();
        sshd.setPort(PORT_NUMBER);
        sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(Paths.get("keys/private_key.ppk")));

        SftpSubsystemFactory factory = new SftpSubsystemFactory.Builder()
                .build();


        factory.addSftpEventListener(new BasicSftpEventListener());

        sshd.setSubsystemFactories(Collections.singletonList(factory));
        sshd.setShellFactory(new ProcessShellFactory("/bin/sh", "-i", "-l"));
        sshd.start();

如您所見,我實現了自己的 SftpEventListener:

public class BasicSftpEventListener implements SftpEventListener {

    @Override
    public void removing(ServerSession session, Path path) throws IOException {
        System.out.println("Removin");
    }

    @Override
    public void removed(ServerSession session, Path path, Throwable thrown) throws IOException {
        System.out.println("removed");
    }

當我想刪除文件時,它會執行我的刪除和刪除偵聽器,但是刪除操作繼續進行並且文件被刪除。

有沒有辦法阻止這種情況發生?

感謝幫助!

如果您想阻止刪除操作,您將需要以異常方式中斷removing方法的流程。 這將告訴 Mina 停止而不是刪除文件。 我建議為此使用java.lang.UnsupportedOperationException

@Override
public void removing(ServerSession session, Path path) throws UnsupportedOperationException{
    throw new UnsupportedActionException("Removing files is not permitted.");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM