Я использую Apache Mina для настройки SSHD-сервера. Он работает нормально, но я аутентифицировал журналы только после того, как пользователи вошли в систему. Как я могу реализовать журналы действий пользователя, такие как загрузка / загрузка, и информацию о файле, такую как имя / размер?
Ниже приведен мой код:
@Service
public class MySftpServer {
private Log log = LogFactory.getLog(MySftpServer.class);
private String rootPath = "C:\\SFTPROOT";
SshServer sshd = SshServer.setUpDefaultServer();
private String dhp1Path = "C:\\SFTPROOT\\dhp1";
private String pmi1Path = "C:\\SFTPROOT\\pmi1";
@PostConstruct
public void startServer() throws IOException {
start();
}
VirtualFileSystemFactory fsFactory = new VirtualFileSystemFactory(Paths.get(rootPath));
private void start() throws IOException {
sshd.setPort(32222);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File("host.ser")));
sshd.setSubsystemFactories(Collections.singletonList(new SftpSubsystemFactory()));
sshd.setPasswordAuthenticator(new MyPasswordAuthenticator());
sshd.start();
log.info("SFTP server started");
}
public class MyPasswordAuthenticator implements PasswordAuthenticator {
public boolean authenticate(String username, String password, ServerSession session) {
if ("dhp1".equals(username) && "dhp1".equals(password)) {
sshd.setFileSystemFactory(new VirtualFileSystemFactory() {
@Override
protected Path computeRootDir(Session session) throws
IOException {
return Paths.get(dhp1Path);
}
});
return true;
} else if ("pmi1".equals(username) && "pmi1".equals(password)) {
sshd.setFileSystemFactory(new VirtualFileSystemFactory() {
@Override
protected Path computeRootDir(Session session) throws
IOException {
return Paths.get(pmi1Path);
}
});
return true;
}
return false;
}
}
}
Это единственный аутентифицированный журнал, который я могу иметь.
INFO 264316 --- []-nio2-thread-3] o.a.s.s.session.ServerUserAuthService : Session dhp1@/0:0:0:0:0:0:0:1:54080 authenticated