Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FTPFS: Problem with Gene6 FTP Server: Parent directories are listed as well #249

Open
hoffleit opened this issue Mar 24, 2016 · 0 comments

Comments

@hoffleit
Copy link

When working with FTPFS against a Gene6 FTP Server v3.8.0 (Build 34), I ran into the situation that the listings of listdir() and listdirinfo() included the parent directory and the parents parent directory:

>>> ftp = FTPFS(host = gene6ftp)
>>> ftp.listdir()
[u'dir1', u'dir2', u'/', u'dir3']
>>> ftp.listdir('dir1')
[u'dir11', u'/dir1', u'/']
>>> ftp.listdir('dir1/dir11)
[u'dir111', u'dir112, u'/dir1/dir11', u'/dir1', u'dir113', u'dir114', u'dir115']
>>> ftp.listdir('dir1/dir11/dir114)
[u'file1141', u'file1142', u'/dir1/dir11', u'file1143', u'/dir1/dir11/dir114', u'file1144']

The directory tree looked like this:

/dir1
/dir1/dir11/dir111
/dir1/dir11/dir112
/dir1/dir11/dir113
/dir1/dir11/dir114
/dir1/dir11/dir114/file1141
/dir1/dir11/dir114/file1142
/dir1/dir11/dir114/file1143
/dir1/dir11/dir114/file1144
/dir1/dir11/dir115
/dir2
/dir3

I came up with the following modification for ftpfs, which worked for me:

--- fs/ftpfs.py.ORIG    2016-03-24 16:56:42.618053706 +0100
+++fs/ftpfs.py  2016-03-24 16:57:22.551270915 +0100
@@ -553,8 +553,10 @@
                 elif factname == 'type':
                     if factvalue.lower() == 'file':
                         result.try_retr = True
-                    elif factvalue.lower() in ['dir', 'cdir', 'pdir']:
+                    elif factvalue.lower() == 'dir':
                         result.try_cwd = True
+                    elif factvalue.lower() in ['cdir', 'pdir']:
+                        return None
                     else:
                         # dunno if it's file or directory
                         result.try_retr = True

I.e. I dropped the lines with cdir and pdir, since they seemed to make no sense for this directory listing.

Here is an example for a listing from this Gene6 FTP server:

type=dir;modify=20160217175246; /dir1/dir11
type=cdir;modify=20160217175246; /dir1/dir11
type=pdir;modify=20160217175208; ..
type=pdir;modify=20160217175208; /dir1
type=dir;modify=20160217175236; dir111
type=dir;modify=20160324152742; dir112
type=dir;modify=20160324152803; dir113
type=dir;modify=20160217175219; dir114
type=dir;modify=20160217175216; dir115

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant