The use case is a bit particular because in most cases you'd want to have some isolation between the file system views - especially when using VFS authentication.
But your case is proof that it has its uses, especially when using non-VFS authentication, and it should not be impossible to implement, so please do log an issue. If you don't have a SF account I can do it myself as well. Cheers, Frank > Date: Wed, 20 Oct 2010 08:34:39 -0200 > Subject: Re: FtpServer - Receive files by memory > From: [email protected] > To: [email protected] > > Frank, > > thanks for your attention. > > Should I open a ticket or issue at the project asking you to provide it? I > mean, do you think its a good idea to the project supporting resolve file > instead of create new file system? > > Best regards, > > On Wed, Oct 20, 2010 at 7:18 AM, Frank van der Kleij <[email protected]>wrote: > > > > > You're right - it does not work. It is because the virtual file system > > instance is not shared between sessions. Every time the root path is > > resolved (when a user logs in) it will create a new ram file system - not > > very useful for you I guess. > > > > I only used it with a persistent file system so I didn't think of that. > > > > Sorry, > > > > Frank > > > > > Date: Tue, 19 Oct 2010 11:22:04 -0200 > > > Subject: Re: FtpServer - Receive files by memory > > > From: [email protected] > > > To: [email protected] > > > > > > Im trying the commons-vfs-2.0-SNAPSHOT.jar now ... > > > > > > Ive downloaded source from svn and Ive installed maven2. May you help me > > how > > > to compile this jar (commons-vfs-2.0-SNAPSHOT.jar) ? What command line > > args > > > should I use in maven? > > > > > > Thank you, > > > > > > 2010/10/18 Danilo Rosetto Muñoz <[email protected]> > > > > > > > Hi all, > > > > > > > > Sorry for the message size. Last mail went to the spam .. Probally > > beacause > > > > I posted some code and log ... I dont know if you allow posting code > > here > > > > ... If dont, please let me know. In order to provide you more > > information, I > > > > tried snipt.org (a website for sharing code snippets). > > > > > > > > After many tests, I could reach the following code that I think it > > could > > > > show you what is going on: > > > > http://snipt.org/kpomo/ > > > > > > > > When the server starts, I do the following commands: > > > > > > > >> ftp> open localhost > > > > > > > > Connected to danilo-pc. > > > > > > > > 220 Service ready for new user. > > > > > > > > User (danilo-pc:(none)): danilo > > > > > > > > 331 User name okay, need password for danilo. > > > > > > > > Password: > > > > > > > > 550 Requested action not taken. > > > > > > > > Login fail. > > > > > > > > > > > > Here is the log file: > > > > http://snipt.org/kpong/ > > > > > > > > Like I've comment on the code, when I test directories, first time I > > get ok > > > > and second time no ... This seems to occur based on authenticate method > > when > > > > it returns VsfInfo. > > > > > > > > Im using these libs: > > > > > > > >> commons-vfs-1.0.jar > > > > > > > > ftplet-api-1.0.5.jar > > > > > > > > ftpserver-core-1.0.5.jar > > > > > > > > mina-core-2.0.0-RC1.jar > > > > > > > > slf4j-api-1.5.2.jar > > > > > > > > slf4j-log4j12-1.5.2.jar > > > > > > > > vfsutils-ftpserver-0.1.0-SNAPSHOT.jar > > > > > > > > vfsutils-utils-0.1.0-SNAPSHOT.jar > > > > > > > > > > > > Sorry again for sending too many information. > > > > > > > > Thanks in advance, > > > > > > > > > > > > 2010/10/18 Danilo Rosetto Muñoz <[email protected]> > > > > > > > > Hi, I have this code: > > > >> > > > >> FtpServerFactory serverFactory = new FtpServerFactory(); > > > >> > > > >>> ListenerFactory factory = new ListenerFactory(); > > > >> > > > >> factory.setPort(21); > > > >> > > > >> serverFactory.addListener("default", factory.createListener()); > > > >> > > > >> > > > >>> serverFactory.setFileSystem(new VfsFileSystemFactory()); > > > >> > > > >> > > > >>> VfsUser user = new VfsUser(); > > > >> > > > >> user.setName("danilo"); > > > >> > > > >> user.setPassword("danilo"); > > > >> > > > >> user.setHomeDirectory("ram://ftp/danilo"); > > > >> > > > >> user.setEnabled(true); > > > >> > > > >> FileSystemManager fsm = VFS.getManager(); > > > >> > > > >> FileObject root = fsm.resolveFile("ram://root"); > > > >> > > > >> FileObject rootDir = fsm.createVirtualFileSystem(root); > > > >> > > > >> rootDir.createFolder(); > > > >> > > > >> FileObject homeDir = rootDir.resolveFile("ram://root/danilo"); > > > >> > > > >> homeDir.createFolder(); > > > >> > > > >> VfsInfo vfsInfo = new VfsInfo(rootDir, homeDir, true); > > > >> > > > >> user.setVfsInfo(vfsInfo); > > > >> > > > >> List<Authority> authorities = new ArrayList<Authority>(); > > > >> > > > >> authorities.add(new WritePermission()); > > > >> > > > >> user.setAuthorities(authorities); > > > >> > > > >> VfsUserManager um = new VfsUserManager(); > > > >> > > > >> um.save(user); > > > >> > > > >> serverFactory.setUserManager(um); > > > >> > > > >> > > > >>> FtpServer server = serverFactory.createServer(); > > > >> > > > >> server.start(); > > > >> > > > >> > > > >> I'm using the following libs: > > > >> commons-vfs-1.0.jar > > > >> ftplet-api-1.0.5.jar > > > >> ftpserver-core-1.0.5.jar > > > >> mina-core-2.0.0-RC1.jar > > > >> slf4j-api-1.5.2.jar > > > >> slf4j-log4j12-1.5.2.jar > > > >> vfsutils-ftpserver-0.1.0-SNAPSHOT.jar > > > >> vfsutils-utils-0.1.0-SNAPSHOT.jar > > > >> > > > >> The code works and starts de server ok, but I have the following error > > > >> during authentication: > > > >> > > > >>> ftp> open localhost > > > >> > > > >> Conectado a danilo-pc. > > > >> > > > >> 220 Service ready for new user. > > > >> > > > >> Usuário (danilo-pc:(none)): danilo > > > >> > > > >> 331 User name okay, need password for danilo. > > > >> > > > >> Senha: > > > >> > > > >> 530 Authentication failed. > > > >> > > > >> > > > >> Do you think updating to commons-vfs-2.0-SNAPSHOT.jar may help? > > > >> > > > >> Thank you, > > > >> > > > >> On Mon, Oct 18, 2010 at 12:26 PM, Frank van der Kleij < > > [email protected]>wrote: > > > >> > > > >>> > > > >>> I compiled it; you can first try with VFS 1.0 if you want, the > > interfaces > > > >>> didn't change that much. > > > >>> > > > >>> > > > >>> > Date: Mon, 18 Oct 2010 11:56:31 -0200 > > > >>> > Subject: Re: FtpServer - Receive files by memory > > > >>> > From: [email protected] > > > >>> > To: [email protected] > > > >>> > > > > >>> > I cant find commons-vfs-2.0-SNAPSHOT.jar ... I tried google, > > project > > > >>> page > > > >>> > (apache) and sourceforge ... > > > >>> > > > > >>> > I found > > > >>> http://svn.apache.org/repos/asf/commons/proper/vfs/branches/VFS-2.0/ > > > >>> > ..Should > > > >>> > I download code and compile or do you have it in some repository? > > > >>> > > > > >>> > Best regards, > > > >>> > > > > >>> > On Mon, Oct 18, 2010 at 11:29 AM, Frank van der Kleij < > > > >>> [email protected]>wrote: > > > >>> > > > > >>> > > > > > >>> > > I think you'd better use commons-vfs-2.0-SNAPSHOT.jar. You should > > > >>> also add > > > >>> > > vfsutils-ftpserver-0.1.0-SNAPSHOT.jar and > > > >>> vfsutils-utils-0.1.0-SNAPSHOT.jar. > > > >>> > > > > > >>> > > Then to use it you should use the filesystem class provided in > > the > > > >>> vfsutils > > > >>> > > libraries > > (org.vfsutils.ftpserver.filesystem.VfsFileSystemFactory) > > > >>> and > > > >>> > > configure it, see > > > >>> > > http://vfs-utils.sourceforge.net/ftpserver/configuration.html > > > >>> > > > > > >>> > > Frank > > > >>> > > > > > >>> > > > Date: Mon, 18 Oct 2010 09:10:08 -0200 > > > >>> > > > Subject: Re: FtpServer - Receive files by memory > > > >>> > > > From: [email protected] > > > >>> > > > To: [email protected] > > > >>> > > > > > > >>> > > > I was trying to implement use of VSF when you give me this tip. > > > >>> > > > > > > >>> > > > I check the website you provided ( > > > >>> > > > http://vfs-utils.sourceforge.net/ftpserver/index.html): > > > >>> > > > *To use this bridge you should just add the VFS libraries, the > > VFS > > > >>> FTP > > > >>> > > > Server library and, if needed, your custom VFS Provider and its > > > >>> > > dependencies > > > >>> > > > to the common/lib directory of your Apache FTP Server > > > >>> installation.* > > > >>> > > > > > > >>> > > > So, I've added the following libs to my project: > > > >>> > > > commons-vfs-1.0.jar > > > >>> > > > ftplet-api-1.0.5.jar > > > >>> > > > ftpserver-core-1.0.5.jar > > > >>> > > > mina-core-2.0.0-RC1.jar > > > >>> > > > slf4j-api-1.5.2.jar > > > >>> > > > slf4j-log4j12-1.5.2.jar > > > >>> > > > > > > >>> > > > <http://vfs-utils.sourceforge.net/ftpserver/index.html>The FTP > > > >>> server > > > >>> > > > started and works, but doesn´t with VSF. This is code I'm > > using: > > > >>> > > > > > > >>> > > > > FtpServerFactory serverFactory = new FtpServerFactory(); > > > >>> > > > > > > >>> > > > ListenerFactory factory = new ListenerFactory(); > > > >>> > > > > > > >>> > > > factory.setPort(21); > > > >>> > > > > > > >>> > > > serverFactory.addListener("default", factory.createListener()); > > > >>> > > > > > > >>> > > > > > > >>> > > > > PropertiesUserManagerFactory userManagerFactory = new > > > >>> > > > > PropertiesUserManagerFactory(); > > > >>> > > > > > > >>> > > > userManagerFactory.setFile(new > > File("etc/ftp-users.properties")); > > > >>> > > > > > > >>> > > > userManagerFactory.setPasswordEncryptor(new > > > >>> SaltedPasswordEncryptor()); > > > >>> > > > > > > >>> > > > > > > >>> > > > > BaseUser user = new BaseUser(); > > > >>> > > > > > > >>> > > > user.setName("danilo"); > > > >>> > > > > > > >>> > > > user.setPassword("mypass"); > > > >>> > > > > > > >>> > > > user.setHomeDirectory("ram://ftp/danilo"); > > > >>> > > > > > > >>> > > > user.setEnabled(true); > > > >>> > > > > > > >>> > > > List<Authority> authorities = new ArrayList<Authority>(); > > > >>> > > > > > > >>> > > > authorities.add(new WritePermission()); > > > >>> > > > > > > >>> > > > user.setAuthorities(authorities); > > > >>> > > > > > > >>> > > > > > > >>> > > > > UserManager um = userManagerFactory.createUserManager(); > > > >>> > > > > > > >>> > > > um.save(user); > > > >>> > > > > > > >>> > > > serverFactory.setUserManager(um); > > > >>> > > > > > > >>> > > > > > > >>> > > > > FtpServer server = serverFactory.createServer(); > > > >>> > > > > > > >>> > > > server.start(); > > > >>> > > > > > > >>> > > > > > > >>> > > > Test creating a dir: > > > >>> > > > > > > >>> > > > > ftp> mkdir test > > > >>> > > > > > > >>> > > > 550 Can't create directory /test. > > > >>> > > > > > > >>> > > > > > > >>> > > > Test uploading file: > > > >>> > > > > > > >>> > > > > ftp> send > > > >>> > > > > > > >>> > > > Arquivo local c:/a.rar > > > >>> > > > > > > >>> > > > Arquivo remoto a.rar > > > >>> > > > > > > >>> > > > 200 Command PORT okay. > > > >>> > > > > > > >>> > > > 150 File status okay; about to open data connection. > > > >>> > > > > > > >>> > > > 551 /a.rar: Error on output file. > > > >>> > > > > > > >>> > > > > > > >>> > > > Any ideas ? > > > >>> > > > Thanks a lot, > > > >>> > > > > > > >>> > > > On Sun, Oct 17, 2010 at 7:22 PM, Frank van der Kleij < > > > >>> [email protected] > > > >>> > > >wrote: > > > >>> > > > > > > >>> > > > > > > > >>> > > > > Another option - though one that gives you slightly less > > control > > > >>> is to > > > >>> > > use > > > >>> > > > > the VFS filesystem plugin for the FTP server ( > > > >>> > > > > http://vfs-utils.sourceforge.net/ftpserver/index.html) > > because > > > >>> then > > > >>> > > you > > > >>> > > > > can use the ram:// filesystem ( > > > >>> > > > > http://commons.apache.org/vfs/filesystems.html#ram) that > > works > > > >>> on > > > >>> > > > > memory.Frank > > > >>> > > > > > Date: Fri, 15 Oct 2010 17:26:40 +0200 > > > >>> > > > > > Subject: Re: FtpServer - Receive files by memory > > > >>> > > > > > From: [email protected] > > > >>> > > > > > To: [email protected] > > > >>> > > > > > > > > >>> > > > > > 2010/10/15 Danilo Rosetto Muñoz <[email protected]>: > > > >>> > > > > > > I would like to know some way to get FTP received files > > > >>> directly > > > >>> > > from > > > >>> > > > > > > memory. I mean redirect file transfers to the memory and > > > >>> listening > > > >>> > > > > them. I > > > >>> > > > > > > want this in order to embbeded a FTP Server on my app and > > > >>> handling > > > >>> > > new > > > >>> > > > > > > files through memory without using filesystem. > > > >>> > > > > > > > > >>> > > > > > The best way of doing this would be using an in-memory file > > > >>> system > > > >>> > > > > > (implementing FileSystemFactory, FileSystemView and > > FtpFile). > > > >>> We do > > > >>> > > > > > not supply one, but it would certainly be possible to > > implement > > > >>> one. > > > >>> > > > > > > > > >>> > > > > > /niklas > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > > >>> > > > > > > >>> > > > -- > > > >>> > > > Danilo Rosetto Muñoz > > > >>> > > > [email protected] > > > >>> > > > http://munozdanilo.googlepages.com > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > > >>> > > > > >>> > -- > > > >>> > Danilo Rosetto Muñoz > > > >>> > [email protected] > > > >>> > http://munozdanilo.googlepages.com > > > >>> > > > >>> > > > >> > > > >> > > > >> > > > >> -- > > > >> Danilo Rosetto Muñoz > > > >> [email protected] > > > >> http://munozdanilo.googlepages.com > > > >> > > > > > > > > > > > > > > > > -- > > > > Danilo Rosetto Muñoz > > > > [email protected] > > > > http://munozdanilo.googlepages.com > > > > > > > > > > > > > > > > -- > > > Danilo Rosetto Muñoz > > > [email protected] > > > http://munozdanilo.googlepages.com > > > > > > > > -- > Danilo Rosetto Muñoz > [email protected] > http://munozdanilo.googlepages.com
