Hi Frank thanks. What I noticed is that the "sftp://" problems described in the last two messages exist only on macOS. On Ubuntu the behaviour is as described in the first message: I can connect and I can see the folders from the vfs ftp but when trying to download it hangs. These are the messages from Filezilla:
Status: Directory listing of "/geodata/ch.so.agi.geodata" successful Status: Disconnected from server Status: Resolving address of localhost Status: Connecting to 127.0.0.1:2221... Status: Connection established, waiting for welcome message... Status: Plain FTP is insecure. Please switch to FTP over TLS. Status: Logged in Status: Starting download of /geodata/ch.so.agi.geodata/ch.so.arp.richtplan_dxf.zip Command: CWD /geodata/ch.so.agi.geodata Response: 250 Directory changed to /geodata/ch.so.agi.geodata Command: TYPE I Response: 200 Command TYPE okay. Command: PASV Response: 227 Entering Passive Mode (127,0,0,1,153,249) Command: RETR ch.so.arp.richtplan_dxf.zip Error: Connection timed out after 20 seconds of inactivity Error: File transfer failed Status: Disconnected from server These lines from the logfile, where you can see the 20 seconds gap as well: 2020-11-04 19:31:12.954 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Event MESSAGE_SENT has been fired for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.mina.core.filterchain.IoFilterEvent : Firing a MESSAGE_SENT event for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.mina.core.filterchain.IoFilterEvent : Firing a MESSAGE_SENT event for session 3 2020-11-04 19:31:12.954 INFO 12088 --- [pool-3-thread-1] o.a.f.listener.nio.FtpLoggingFilter : SENT: 227 Entering Passive Mode (127,0,0,1,153,189) 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.mina.core.filterchain.IoFilterEvent : Event MESSAGE_SENT has been fired for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Firing a MESSAGE_RECEIVED event for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.mina.core.filterchain.IoFilterEvent : Event MESSAGE_SENT has been fired for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [ NioProcessor-4] o.a.m.f.e.OrderedThreadPoolExecutor : Adding event MESSAGE_RECEIVED to session 3 Queue : [MESSAGE_RECEIVED, ] 2020-11-04 19:31:12.954 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Event MESSAGE_RECEIVED has been fired for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.mina.core.filterchain.IoFilterEvent : Firing a MESSAGE_RECEIVED event for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.m.filter.codec.ProtocolCodecFilter : Processing a MESSAGE_RECEIVED for session 3 2020-11-04 19:31:12.954 DEBUG 12088 --- [pool-3-thread-1] o.a.mina.core.filterchain.IoFilterEvent : Firing a MESSAGE_RECEIVED event for session 3 2020-11-04 19:31:12.955 INFO 12088 --- [pool-3-thread-1] o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: RETR ch.so.arp.richtplan_dxf.zip 2020-11-04 19:31:12.955 DEBUG 12088 --- [pool-3-thread-1] o.a.c.vfs2.cache.SoftRefFilesCache : putFile: sftp://u000000:***@ u000000.your-storagebox.de/ch.so.agi.geodata/ch.so.arp.richtplan_dxf.zip 2020-11-04 19:31:33.027 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Firing a CLOSE event for session 3 2020-11-04 19:31:33.027 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Firing a CLOSE event for session 3 2020-11-04 19:31:33.027 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Event CLOSE has been fired for session 3 2020-11-04 19:31:33.027 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Event CLOSE has been fired for session 3 2020-11-04 19:31:33.028 DEBUG 12088 --- [ NioProcessor-4] o.a.mina.core.filterchain.IoFilterEvent : Firing a SESSION_CLOSED event for session 3 2020-11-04 19:31:33.028 DEBUG 12088 --- [ NioProcessor-4] o.a.m.f.e.OrderedThreadPoolExecutor : Adding event SESSION_CLOSED to session 3 Queue : [SESSION_CLOSED, ] Stefan On Tue, Nov 3, 2020 at 9:33 PM Frank van der Kleij <kl...@hotmail.com> wrote: > Hi Stefan, > > The authenticate method is always called and the user is passed to the > VFS. Then depending on how the VFS is initialised it will use some > information from the user; in your case it should just take the home > directory from the user. > > For me it is working - though I didn't use your code example, but I had to > add the jsch and jcifs libraries to the classpath of the ftp server because > they are needed for sftp (that is using ssh). > > > This is my configuration, but you can do it in code too: > > <server xmlns="http://mina.apache.org/ftpserver/spring/v1" > xmlns:beans="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation=" > http://mina.apache.org/ftpserver/spring/v1 > http://mina.apache.org/ftpserver/ftpserver-1.0.xsd > " > id="myServer"> > <listeners> > <nio-listener name="default" port="2323"> > <ssl> > <keystore file="./res/ftpserver.jks" password="password" /> > </ssl> > </nio-listener> > </listeners> > <!-- user manager configuration --> > <file-user-manager file="res/conf/users.properties" > encrypt-passwords="true"/> > > <!-- VFS based file system manager configuration --> > <filesystem> > <beans:bean > class="org.vfsutils.ftpserver.filesystem.VfsFileSystemFactory"> > <beans:property name="authenticator.vfsRoot" > value="sftp://myusr:mypwd@mysftpsrvr:22/"/> > <beans:property name="authenticator.vfsType" > value="virtual"/> > </beans:bean> > </filesystem> > > </server> > > Hope this helps, > > Frank > > ________________________________ > From: Stefan Ziegler <stefan.ziegler...@gmail.com> > Sent: Tuesday, November 3, 2020 5:21 PM > To: ftpserver-users@mina.apache.org <ftpserver-users@mina.apache.org> > Subject: Re: Problems with sftp and vfs > > I tried to narrow it down but it's still strange: The exact same code works > when using "ftp://" but does not work with "sftp://" in the setVfsRoot() > methode. With "sftp://" I get an error like: > > org.apache.ftpserver.ftplet.FtpException: Error resolving home directory / > of user demo. > at > > org.vfsutils.ftpserver.filesystem.VfsFileSystemFactory.createFileSystemView(VfsFileSystemFactory.java:64) > ~[vfsutils-ftpserver-0.2.0-SNAPSHOT.jar:na] > > The demo user is the login for the local ftp server. Why does it use the > local user for creating the virtual file system? For me these are > completely different things. And why does it work with plain "ftp://" vfs? > As far as I understand it should also use > VfsFileSystemFactory.createFileSystemView. > > Stefan > > On Tue, Nov 3, 2020 at 12:49 PM Frank van der Kleij <kl...@hotmail.com> > wrote: > > > Hi Stefan, > > > > I haven't worked with this for a while now, but I can set up an > > environment to test this one of these days. > > > > In the code you are using "ftp://" as virtual file system but in the > logs > > I see "sftp://". > > > > So it was working when your client was using "ftp://" and your VFS was > > using "ftp://" too? And now you want your VFS to be "sftp://"? > > Have you tried with "ftps://" for the VFS? As sftp goes over SSH a > > different VFS provider is used. > > > > As for the approach, I am not 100% sure but I don't think you have to > call > > the createFileSystemView method, that should be done automatically; this > > part might be superfluous: > > > > BaseUser vfsUser = new BaseUser(); > > vfsUser.setName(ftpUserHetzner); > > vfsUser.setPassword(ftpPwdHetzner); > > vfsUser.setHomeDirectory("/"); > > > > vfsFileSystemFactory.createFileSystemView(vfsUser); > > > > Cheers, > > > > Frank > > > > > > > > > > > > ________________________________ > > From: Stefan Ziegler <stefan.ziegler...@gmail.com> > > Sent: Sunday, November 1, 2020 8:20 PM > > To: ftpserver-users@mina.apache.org <ftpserver-users@mina.apache.org> > > Subject: Problems with sftp and vfs > > > > Hi > > > > I'm setting up a plain ftp server in front of another ftp server as > virtual > > file system. This works great since the ftp server used in the virtual > file > > system does not allow anonymous logins. Switching from plain ftp to ftps > in > > the virtual file systems ftp server I'm not able to download files > anymore. > > It still shows the directories but when trying to download a file it > seems > > like it stalls somehow. > > > > According to the logs it seems that it tries to download as "anonymous" > > user and not the user from the virtual file system ftp server (but I can > > misinterpret this). > > > > Has anyone an idea or some hints? Do I mess up something in my code (with > > the users)? Thanks for any help. See code and logs below. > > > > best regards > > Stefan > > > > PropertiesUserManagerFactory userManagerFactory = new > > PropertiesUserManagerFactory(); > > UserManager userManager = userManagerFactory.createUserManager(); > > BaseUser user = new BaseUser(); > > user.setName("anonymous"); > > userManager.save(user); > > > > ListenerFactory listenerFactory = new ListenerFactory(); > > listenerFactory.setPort(2221); > > > > ConnectionConfigFactory connectionConfigFactory = new > > ConnectionConfigFactory(); > > connectionConfigFactory.setAnonymousLoginEnabled(true); > > connectionConfigFactory.setMaxLogins(10); > > connectionConfigFactory.setMaxThreads(10); > > > > FtpServerFactory factory = new FtpServerFactory(); > > > > > factory.setConnectionConfig(connectionConfigFactory.createConnectionConfig()); > > factory.setUserManager(userManager); > > factory.addListener("default", listenerFactory.createListener()); > > > > VfsFileSystemFactory vfsFileSystemFactory = new VfsFileSystemFactory(); > > VfsAuthenticator vfsAuthentificator = new VfsAuthenticator(); > > vfsAuthentificator.setVfsRoot("ftp:// > > "+ftpUserHetzner+":"+ftpPwdHetzner+"@"+ftpServerHetzner); > > vfsAuthentificator.setVfsType("virtual"); > > > > vfsFileSystemFactory.setAuthenticator(vfsAuthentificator); > > > > BaseUser vfsUser = new BaseUser(); > > vfsUser.setName(ftpUserHetzner); > > vfsUser.setPassword(ftpPwdHetzner); > > vfsUser.setHomeDirectory("/"); > > > > vfsFileSystemFactory.createFileSystemView(vfsUser); > > factory.setFileSystem(vfsFileSystemFactory); > > > > FtpServer server = factory.createServer(); > > server.start(); > > > > 2020-11-01 19:50:31.043 INFO 117121 --- [ NioProcessor-4] > > o.a.f.listener.nio.FtpLoggingFilter : CREATED > > 2020-11-01 19:50:31.045 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : OPENED > > 2020-11-01 19:50:31.047 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 220 Service ready for > new > > user. > > > > 2020-11-01 19:50:31.060 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: USER anonymous > > 2020-11-01 19:50:31.061 DEBUG 117121 --- [pool-3-thread-1] > > org.apache.ftpserver.command.impl.USER : Currently 1 out of 10 > anonymous > > users logged in > > 2020-11-01 19:50:31.061 DEBUG 117121 --- [pool-3-thread-1] > > org.apache.ftpserver.command.impl.USER : Currently 1 out of 5 users > > logged in > > 2020-11-01 19:50:31.063 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 331 Guest login okay, > send > > your complete e-mail address as password. > > > > 2020-11-01 19:50:31.064 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: PASS ***** > > 2020-11-01 19:50:31.064 DEBUG 117121 --- [pool-3-thread-2] > > org.apache.ftpserver.command.impl.PASS : Currently 1 out of 10 > anonymous > > users logged in > > 2020-11-01 19:50:31.064 DEBUG 117121 --- [pool-3-thread-2] > > org.apache.ftpserver.command.impl.PASS : Currently 1 out of 5 users > > logged in > > 2020-11-01 19:50:31.066 DEBUG 117121 --- [pool-3-thread-2] > > o.a.c.vfs2.cache.SoftRefFilesCache : putFile: sftp://u000000:***@ > > u000000.your-storagebox.de/ > > 2020-11-01 19:50:31.089 INFO 117121 --- [pool-3-thread-2] > > o.v.f.filesystem.VfsAuthenticator : Authenticated user anonymous > > based on filesystem > org.apache.commons.vfs2.impl.VirtualFileSystem@53de3b94 > > 2020-11-01 19:50:31.090 INFO 117121 --- [pool-3-thread-2] > > org.apache.ftpserver.command.impl.PASS : Anonymous login success - > > anonym...@example.com > > 2020-11-01 19:50:31.091 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 230 User logged in, > > proceed. > > > > 2020-11-01 19:50:31.092 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: OPTS UTF8 ON > > 2020-11-01 19:50:31.093 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 200 Command OPTS okay. > > > > 2020-11-01 19:50:31.094 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: OPTS MLST > > size;modify;type; > > 2020-11-01 19:50:31.096 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 200 Command OPTS okay. > > > > 2020-11-01 19:50:31.098 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: CWD > > /ch.so.agi.av.dm01avch24lv95d > > 2020-11-01 19:50:31.099 DEBUG 117121 --- [pool-3-thread-2] > > o.a.c.vfs2.cache.SoftRefFilesCache : putFile: sftp://u000000:***@ > > u000000.your-storagebox.de/ch.so.agi.av.dm01avch24lv95d > > 2020-11-01 19:50:31.100 DEBUG 117121 --- [pool-3-thread-2] > > o.a.c.vfs2.cache.SoftRefFilesCache : putFile: sftp://u000000:***@ > > u000000.your-storagebox.de/ch.so.agi.av.dm01avch24lv95d > > 2020-11-01 19:50:31.442 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 250 Directory changed to > > /ch.so.agi.av.dm01avch24lv95d > > > > 2020-11-01 19:50:31.443 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: TYPE I > > 2020-11-01 19:50:31.446 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 200 Command TYPE okay. > > > > 2020-11-01 19:50:31.447 INFO 117121 --- [pool-3-thread-2] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: PASV > > 2020-11-01 19:50:31.450 DEBUG 117121 --- [pool-3-thread-2] > > o.a.f.impl.IODataConnectionFactory : Initiating passive data > > connection > > 2020-11-01 19:50:31.450 DEBUG 117121 --- [pool-3-thread-2] > > o.a.f.impl.IODataConnectionFactory : Opening passive data > connection > > on address "/127.0.0.1" and port 0 > > 2020-11-01 19:50:31.451 DEBUG 117121 --- [pool-3-thread-2] > > o.a.f.impl.IODataConnectionFactory : Passive data connection > created > > on address "/127.0.0.1" and port 0 > > 2020-11-01 19:50:31.454 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : SENT: 227 Entering Passive > Mode > > (127,0,0,1,163,47) > > > > 2020-11-01 19:50:31.456 INFO 117121 --- [pool-3-thread-1] > > o.a.f.listener.nio.FtpLoggingFilter : RECEIVED: RETR 257900.itf.zip > > 2020-11-01 19:50:31.457 DEBUG 117121 --- [pool-3-thread-1] > > o.a.c.vfs2.cache.SoftRefFilesCache : putFile: sftp://u000000:***@ > > u000000.your-storagebox.de/ch.so.agi.av.dm01avch24lv95d/257900.itf.zip > > 2020-11-01 19:50:31.457 DEBUG 117121 --- [pool-3-thread-1] > > o.a.c.vfs2.cache.SoftRefFilesCache : putFile: sftp://u000000:***@ > > u000000.your-storagebox.de/ch.so.agi.av.dm01avch24lv95d/257900.itf.zip > > > > > > > > > > >