2015-10-18 8 views
1

Попытка установить домашний каталог для пользователя с помощью Apache Mina SSHD, встроенного в Java.Apache Mina SSHD 1.0.0 set user directory & mapping

Оба решения являются устаревшими в 1,0 In-
How to Set Root Directory in Apache Mina Sshd Server in Java
How to override getVirtualUserDir() in Apache Mina sshd-core version 0.14.0

В 0.14.0 следующие прекрасно работали:

sshd.setFileSystemFactory(new NativeFileSystemFactory() { 
    @Override 
    public FileSystemView createFileSystem(final Session session) { 
     HashMap<String,String> map = new HashMap<String,String>(); 
     map.put("/", "/Users/someone/Documents"); 
     return new NativeFileSystemView(session.getUsername(), map, "/"); 
    }; 
}); 

Это, насколько я получил:

sshd.setFileSystemFactory(new NativeFileSystemFactory() { 
    @Override 
    public FileSystem createFileSystem(Session session) { 
     // What should I do here? 
     return super.createFileSystem(session); 
    } 
}); 

ответ

2

Найдено.
Мне пришлось использовать VirtualFileSystemFactoryкласс.

Это результат:

VirtualFileSystemFactory fsFactory = new VirtualFileSystemFactory(); 
fsFactory.setUserHomeDir(userName, realDirectory); 
sshd.setFileSystemFactory(fsFactory); 

Примечание: Если вы используете OS X или Линукс, не забудьте chmod свой путь первым.

0

Для v1.2.0 (если Java-7)/v1.3.0 (если Java-8) и java.nio.file.Path использования, решение может быть:

sshServer.setFileSystemFactory(new VirtualFileSystemFactory(FileSystems.getDefault().getPath(rootDir)));