【发布时间】:2015-06-24 06:00:05
【问题描述】:
我试图弄清楚如何为基于 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();
}
该服务器能够接收文件并将其存储在虚拟文件系统上。我可以读取文件/验证内容,但只有在接收和存储文件之后。基本身份验证目前还不错,谢天谢地,身份验证机制有据可查!
所以我的问题是:
- 是否有一种方法可以动态检查建立连接的时间/传输内容的时间,并在发生连接时(即在文件实际提交到目录之前)进行拦截。
或
- 我是否需要设置一个侦听器来简单地观察目录中出现的新文件并进行相应处理?
提前致谢! 利。
【问题讨论】:
标签: java listener sftp apache-mina