我试图弄清楚如何为基于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)
该服务器能够接收文件并将其存储在虚拟文件系统上。我只能在收到并存储文件后才能读取文件/验证内容。目前基本身份验证还不错,感谢您对身份验证机制的详细记录!
所以我的问题是: …