Subject: Ftp-WG: New MLST draft ready

From: Robert Elz <[email-masked]>
Date: Tue, 12 Mar 2002 00:33:47 -0500

Of course, now we're in the IETF dead time for drafts, I can't
submit it just yet, but it is ready for as soon as draft
submission opens again.

To continue from the last discussions, there were just two things
waiting to be resolved.

First, how to handle (in the ABNF syntax) that fact values should
be permitted to have '=' characters in them (needed for OS specific
facts, where the value contains a name = and a specific value).   

As there were no suggestions from the WG, I decided that a suitable
way to handle this would be to define a new character class (SCHAR)
(why SCHAR - well, we already had RCHAR and TCHAR - SCHAR just seemed
to fit...) which is defined to be RCHAR / "='.  Then, instead of
using RCHAR to define the value of a fact, SCHAR is used instead.

Any comments on that approach?

And second, and what has been taking all the time - there's now an
example taken from a server which does not put its pdir & cdir type
fact lines at any particular place in the MLSD output - they just
appear somewhere.   That took ages because a server to operate that
way had to be written first.   (This one isn't available to access
anywhere, its code is even crappier than the previous one I created
and used for most of the other examples - in particular, this one's
idea of memory management is "malloc and forget" ...)

The example, and the small amount of accompanying text, is included
below - with the pagination (it is long enough to cross page boundaries)
stripped out.

If anyone really wants, I could put the new draft text for FTP somewhere.
Otherwise it won't be available until a week or so after the IETF is
done (when the secretariat get around to processing drafts again).

Any suggestions for changes before it gets submitted?

kre

7.7.11. A server with a difference

 C> PASV
 S> 227 Entering Passive Mode (127,0,0,1,255,46)
 C> MLSD
 S> 150 I tink I tee a trisector tree
 D> Type=file;Unique=aaaaafUYqaaa;Perm=rf;Size=15741; x
 D> Type=cdir;Unique=aaaaacUYqaaa;Perm=cpmel; /
 D> Type=file;Unique=aaaaajUYqaaa;Perm=rf;Size=5760; x4
 D> Type=dir;Unique=aaabcaUYqaaa;Perm=elf; sub
 D> Type=file;Unique=aaaaagUYqaaa;Perm=rf;Size=8043; x1
 D> Type=dir;Unique=aaab8aUYqaaa;Perm=cpmelf; files
 D> Type=file;Unique=aaaaahUYqaaa;Perm=rf;Size=4983; x2
 D> Type=file;Unique=aaaaaiUYqaaa;Perm=rf;Size=6854; x3
 S> 226 That's all folks...
 C> CWD sub
 S> 250 CWD command successful.
 C> PWD
 S> 257 "/sub" is current directory.
 C> PASV
 S> 227 Entering Passive Mode (127,0,0,1,255,44)
 C> MLSD
 S> 150 I tink I tee a trisector tree
 D> Type=dir;Unique=aaabceUYqaaa;Perm=elf; dir
 D> Type=file;Unique=aaabcbUYqaaa;Perm=rf;Size=0; y1
 D> Type=file;Unique=aaabccUYqaaa;Perm=rf;Size=0; y2
 D> Type=file;Unique=aaabcdUYqaaa;Perm=rf;Size=0; y3
 D> Type=pdir;Unique=aaaaacUYqaaa;Perm=cpmel; /
 D> Type=pdir;Unique=aaaaacUYqaaa;Perm=cpmel; ..
 D> Type=cdir;Unique=aaabcaUYqaaa;Perm=el; /sub
 S> 226 That's all folks...
 C> PASV
 S> 227 Entering Passive Mode (127,0,0,1,255,42)
 C> MLSD dir
 S> 150 I tink I tee a trisector tree
 D> Type=pdir;Unique=aaabcaUYqaaa;Perm=el; /sub
 D> Type=pdir;Unique=aaabcaUYqaaa;Perm=el; ..
 D> Type=file;Unique=aaab8cUYqaaa;Perm=r;Size=15039; mlst.c
 D> Type=dir;Unique=aaabcfUYqaaa;Perm=el; ect
 D> Type=cdir;Unique=aaabceUYqaaa;Perm=el; dir
 D> Type=cdir;Unique=aaabceUYqaaa;Perm=el; /sub/dir
 D> Type=dir;Unique=aaabchUYqaaa;Perm=el; misc
 D> Type=file;Unique=aaab8bUYqaaa;Perm=r;Size=34589; ftpd.c
 S> 226 That's all folks...
 C> CWD dir/ect
 S> 250 CWD command successful.
 C> PWD
 S> 257 "/sub/dir/ect" is current directory.
 C> PASV
 S> 227 Entering Passive Mode (127,0,0,1,255,40)
 C> MLSD
 S> 150 I tink I tee a trisector tree
 D> Type=dir;Unique=aaabcgUYqaaa;Perm=el; ory
 D> Type=pdir;Unique=aaabceUYqaaa;Perm=el; /sub/dir
 D> Type=pdir;Unique=aaabceUYqaaa;Perm=el; ..
 D> Type=cdir;Unique=aaabcfUYqaaa;Perm=el; /sub/dir/ect
 S> 226 That's all folks...
 C> CWD /files
 S> 250 CWD command successful.
 C> PASV
 S> 227 Entering Passive Mode (127,0,0,1,255,36)
 C> MLSD
 S> 150 I tink I tee a trisector tree
 D> Type=cdir;Unique=aaab8aUYqaaa;Perm=cpmel; /files
 D> Type=pdir;Unique=aaaaacUYqaaa;Perm=cpmel; /
 D> Type=pdir;Unique=aaaaacUYqaaa;Perm=cpmel; ..
 D> Type=file;Unique=aaab8cUYqaaa;Perm=rf;Size=15039; mlst.c
 D> Type=file;Unique=aaab8bUYqaaa;Perm=rf;Size=34589; ftpd.c
 S> 226 That's all folks...
 C> RNFR mlst.c
 S> 350 File exists, ready for destination name
 C> RNTO list.c
 S> 250 RNTO command successful.
 C> PASV
 S> 227 Entering Passive Mode (127,0,0,1,255,34)
 C> MLSD
 S> 150 I tink I tee a trisector tree
 D> Type=file;Unique=aaab8cUYqaaa;Perm=rf;Size=15039; list.c
 D> Type=pdir;Unique=aaaaacUYqaaa;Perm=cpmel; /
 D> Type=pdir;Unique=aaaaacUYqaaa;Perm=cpmel; ..
 D> Type=file;Unique=aaab8bUYqaaa;Perm=rf;Size=34589; ftpd.c
 D> Type=cdir;Unique=aaab8aUYqaaa;Perm=cpmel; /files
 S> 226 That's all folks...

   The server shown here returns its directory listings in seemingly
   random order, and even seems to modify the order of the directory as
   its contents change -- perhaps the underlying directory structure is
   based upon hashing of some kind.  Note that the "pdir" and "cdir"
   entries are interspersed with other entries in the directory.  Note
   also that this server does not show a "pdir" entry when listing the
   contents of the root directory of the virtual filestore, it does
   however include multiple "cdir" and "pdir" entries when it fees
   inclined.  The server also uses obnoxiously "cute" messages.