Thanks for your reply, I shouldn't have written that hasty message. Part of what I wrote is client side code (VFS shell) but I also did the integration for the server part, both for SSHD (Shell, Scp and Sftp) and for FtpServer. For Scp and Sftp this is messy because I had to copy most of the code because of the lacking file abstraction layer, see for example http://vfs-utils.svn.sourceforge.net/viewvc/vfs-utils/trunk/shell/sshd/src/main/java/org/vfsutils/shell/sshd/VfsSftpSubsystem.java?view=markup. For FtpServer this is much better. So if you would like to use Commons VFS as a file abstraction layer you have an example. Whether you would want to use Commons VFS is a good question. Though I like its underlying idea a lot, it is a bit complicated, especially compared to the abstraction layer of the FtpServer - for a part this is normal because it has to serve many more uses. I didn't know Cotta - thanks for the tip - but it would seem a bit strange to me for an Apache project to use Cotta instead of Commons VFS. If it were only pointers for inspiration then I would focus more on the FtpServer abstraction layer, since it is the closest to what you'd want.The main difference I see is the focus on RandomAccess for Sftp. I hope this is more useful then my last mail, Frank
> Date: Tue, 22 Jun 2010 13:20:24 +0200 > Subject: Re: sshd/sftp backed by db > From: [email protected] > To: [email protected] > > My understanding is that what you wrote is slightly different from > what is being discussed. We're discussing how the Sftp subsystem can > be used on top of a virtual file system, with the ideas to reuse what > FtpServer provides or backed by a DB for example. The project you > created, while very valuable, seems targetted at the client side, > which is not what we were looking for here. > > On Tue, Jun 22, 2010 at 11:44, Frank van der Kleij <[email protected]> wrote: > > > > > > For Apache Commons VFS I already did the work, see > > http://vfs-utils.sourceforge.net/shell/sshd.html > > > > Cheers, > > Frank > > > > > >> Date: Mon, 21 Jun 2010 09:52:16 +0200 > >> Subject: Re: sshd/sftp backed by db > >> From: [email protected] > >> To: [email protected] > >> > >> 2010/6/14 Chuck Johnstone <[email protected]>: > >> > That sounds quite reasonable. I'll take a look at using FtpFile. > >> > >> Other projects you might find worth looking at are Apache Commons VFS > >> and COTTA file system. These two have a File API which seems > >> nicer/more extensible than java.io.File > >> > >> > >> > >> > On 10-06-14 03:36 AM, Guillaume Nodet wrote: > >> >> > >> >> Thinking a bit more about this, I think the following would make sense: > >> >> * copy FtpFile and NativeFtpFile from FtpServer into the sshd > >> >> subsystem > >> >> package > >> >> * copy the SftpSubsystem to AbstractSftpSubsystem and rework it to > >> >> use a > >> >> FtpFile root > >> >> * rework SftpSubsystem to inherit AbstractSftpSubsystem and just > >> >> provide > >> >> a > >> >> NativeFtpFile file system root > >> >> > >> >> For the long term solution, I think it would make more sense to do the > >> >> work > >> >> in FtpServer and use SSH as an addition transport layer, thus reusing > >> >> user > >> >> management, file system users configuration and all ... It should be > >> >> then > >> >> really simple to implement an org.apache.sshd.server.sftp.FtpFile on top > >> >> of > >> >> the existing ftpserver FtpFile and provide a user authentication > >> >> mechanism > >> >> delegating to the ftpserver auth mechanism. > >> >> > >> >> On Mon, Jun 14, 2010 at 11:27, Guillaume Nodet<[email protected]> wrote: > >> >> > >> >> > >> >>> > >> >>> On Thu, Jun 10, 2010 at 20:19, Chuck Johnstone< > >> >>> [email protected]> wrote: > >> >>> > >> >>> > >> >>>> > >> >>>> Hi, > >> >>>> > >> >>>> As per the previous email I'm going to experimentally rework > >> >>>> SftpSubsystem > >> >>>> to use a db backend. > >> >>>> > >> >>>> My current approach is to copy SftpSubsystem and abstract out the file > >> >>>> access. The new class is called AbstractSftpSubsystem. > >> >>>> > >> >>>> Right now I've created an interface that mimics all the pertinent bits > >> >>>> of > >> >>>> java.io.File as used in SftpSubsystem. > >> >>>> > >> >>>> The interface currently looks like this: > >> >>>> > >> >>>> public static interface SftpFile { // from java.io.File > >> >>>> boolean exists(); > >> >>>> boolean createNewFile(); > >> >>>> SftpFile getParentFile(); // based on File.getParentFile() > >> >>>> String getPath(); > >> >>>> long length(); > >> >>>> boolean canRead(); > >> >>>> boolean canWrite(); > >> >>>> boolean isFile(); > >> >>>> boolean isDirectory(); > >> >>>> long lastModified(); > >> >>>> SftpFile[] listFiles(); > >> >>>> String getName(); > >> >>>> boolean delete(); > >> >>>> boolean mkdir(); > >> >>>> boolean renameTo(SftpFile dest); > >> >>>> SftpFile getAbsoluteFile(); > >> >>>> } > >> >>>> > >> >>>> > >> >>> > >> >>> Yeah, looks good. Though, we'd need to be able to read / write to > >> >>> those > >> >>> files, which isn't possible in this interface. > >> >>> I really wonder if a simplier approach would be to just copy the > >> >>> FtpFile > >> >>> interface [1] into the subsystem package. At least, we'd know that > >> >>> we'll > >> >>> be > >> >>> able to bridge with FtpServer quite easily. > >> >>> > >> >>> [1] > >> >>> > >> >>> http://svn.apache.org/viewvc/mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpFile.java?view=markup > >> >>> > >> >>> > >> >>>> > >> >>>> I believe this is in line with the discussion so far. If there is a > >> >>>> better way let me know. I'll submit patches if you think this > >> >>>> approach > >> >>>> is > >> >>>> useful. > >> >>>> > >> >>>> Cool ! Patches is the way to go ... > >> >>>> > >> >>> > >> >>> > >> >>>> > >> >>>> The good news is that my company is funding the development time. The > >> >>>> above approach is our short term solution to this problem but we're > >> >>>> also > >> >>>> interested in a longer term solution. Mention was made of moving this > >> >>>> into > >> >>>> apache ftpServer. We intend to help with that too. I've used > >> >>>> ftpServer > >> >>>> to > >> >>>> implement a backend FTPS solution so I'm a bit familiar with the > >> >>>> system > >> >>>> but > >> >>>> I'm not familiar with the details of SFTP. I'm assuming that SFTP > >> >>>> code > >> >>>> from > >> >>>> SftpSubsystem could be ported into Mina ftpServer structures. > >> >>>> > >> >>>> > >> >>> > >> >>> Well, I'm not very familiar with the FtpServer project. I wonder if it > >> >>> would be easier / cleaner to integrate SSHD into FtpServer project as > >> >>> an > >> >>> additional transport, or integrate FtpServer into SSHD as a new backend > >> >>> for > >> >>> SFTP subsystem. Maybe other FtpServer people can jump in and throw > >> >>> some > >> >>> ideas here. > >> >>> > >> >>> > >> >>> > >> >>>> > >> >>>> I'll be focused on the short term solution over the next few weeks but > >> >>>> after that I can move onto the longer term solution. > >> >>>> Discussion/guidance in > >> >>>> this task will be greatly appreciated. > >> >>>> > >> >>>> Chuck Johnstone > >> >>>> > >> >>>> > >> >>> > >> >>> > >> >>> -- > >> >>> Cheers, > >> >>> Guillaume Nodet > >> >>> ------------------------ > >> >>> Blog: http://gnodet.blogspot.com/ > >> >>> ------------------------ > >> >>> Open Source SOA > >> >>> http://fusesource.com > >> >>> > >> >>> > >> >>> > >> >>> > >> >> > >> >> > >> > > >> > > > > > _________________________________________________________________ > > New Windows 7: Simplify what you do everyday. Find the right PC for you. > > http://windows.microsoft.com/shop > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com _________________________________________________________________ New Windows 7: Simplify what you do everyday. Find the right PC for you. http://windows.microsoft.com/shop
