小编Lei*_*fin的帖子

Apache Mina SFTP服务器端通道侦听器,用于接收文件

我试图弄清楚如何为基于Java的SFTP服务器实现服务器端侦听器,以提醒我有传入的文件传输。我正在使用最新版本的Apache Mina。我的情况是服务器只从客户端接收文件,然后在存储文件之前对文件进行“处理”。那可能是错误检查/规则验证/将内容转发到其他地方。我要做的是先将其保存在系统中。我在使用文档时遇到困难,找不到一个工作示例,该示例显示了通过访问传入文件流而实现的侦听器。我从指南中获得了一个非常简单的服务器:

 public void setupServer() throws IOException {

    sshd = SshServer.setUpDefaultServer();
    sshd.setFileSystemFactory(new NativeFileSystemFactory() {
        @Override
        public FileSystemView createFileSystemView(final Session session) {
            return new NativeFileSystemView(session.getUsername(), false) {
                @Override
                public String getVirtualUserDir() {
                    return testFolder.getRoot().getAbsolutePath();
                }
            };
        };
    });
    sshd.setPort(8001);
    sshd.setSubsystemFactories(Arrays
            .<NamedFactory<Command>> asList(new SftpSubsystem.Factory()));
    sshd.setCommandFactory(new ScpCommandFactory());
    sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(testFolder
            .newFile("hostkey.ser").getAbsolutePath()));
    sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
        public boolean authenticate(final String username, final String password,
                final ServerSession session) {

            return StringUtils.equals(username, USERNAME)
                    && StringUtils.equals(password, PASSWORD);
        }
    });

    // SessionListener event = new SessionListener();

    sshd.start();
}
Run Code Online (Sandbox Code Playgroud)

该服务器能够接收文件并将其存储在虚拟文件系统上。我只能在收到并存储文件后才能读取文件/验证内容。目前基本身份验证还不错,感谢您对身份验证机制的详细记录!

所以我的问题是: …

java sftp listener mina

1
推荐指数
1
解决办法
1533
查看次数

标签 统计

java ×1

listener ×1

mina ×1

sftp ×1