Re: [ftpext] draft-peterson-streamlined-ftp-command-extensions

Damin <damin@emuxperts.net> Tue, 23 November 2010 04:16 UTC

Return-Path: <damin@emuxperts.net>
X-Original-To: ftpext@core3.amsl.com
Delivered-To: ftpext@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A30E728C0E5 for <ftpext@core3.amsl.com>; Mon, 22 Nov 2010 20:16:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.676
X-Spam-Level:
X-Spam-Status: No, score=-1.676 tagged_above=-999 required=5 tests=[AWL=-0.300, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_63=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vTrjdNbfLMoT for <ftpext@core3.amsl.com>; Mon, 22 Nov 2010 20:16:22 -0800 (PST)
Received: from ca0.emuxperts.net (ca0.emuxperts.net [96.45.180.106]) by core3.amsl.com (Postfix) with ESMTP id 81CA53A6A0D for <ftpext@ietf.org>; Mon, 22 Nov 2010 20:16:22 -0800 (PST)
Received: from mail-ew0-f44.google.com (mail-ew0-f44.google.com [209.85.215.44]) by ca0.emuxperts.net (Postfix) with ESMTPSA id 7B1E71FC075 for <ftpext@ietf.org>; Tue, 23 Nov 2010 04:17:17 +0000 (GMT)
Received: by ewy8 with SMTP id 8so4166770ewy.31 for <ftpext@ietf.org>; Mon, 22 Nov 2010 20:17:15 -0800 (PST)
MIME-Version: 1.0
Received: by 10.213.8.70 with SMTP id g6mr5897554ebg.44.1290485835610; Mon, 22 Nov 2010 20:17:15 -0800 (PST)
Received: by 10.213.114.139 with HTTP; Mon, 22 Nov 2010 20:17:15 -0800 (PST)
In-Reply-To: <D2BD569FC8F4431E85F609B71E61EB79@rhinooffice.net>
References: <A5FC996C3C37DC4DA5076F1046B5674C442CE618@TK5EX14MBXC125.redmond.corp.microsoft.com> <D2BD569FC8F4431E85F609B71E61EB79@rhinooffice.net>
Date: Mon, 22 Nov 2010 23:17:15 -0500
Message-ID: <AANLkTi=D8QLkyUxgXt3h+N2nM3qgpKTBDVXLe5-6BM7q@mail.gmail.com>
From: Damin <damin@emuxperts.net>
To: ftpext@ietf.org
Content-Type: multipart/alternative; boundary="0015174bdef6d1bbc50495b0a589"
Subject: Re: [ftpext] draft-peterson-streamlined-ftp-command-extensions
X-BeenThere: ftpext@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <ftpext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ftpext>, <mailto:ftpext-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ftpext>
List-Post: <mailto:ftpext@ietf.org>
List-Help: <mailto:ftpext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ftpext>, <mailto:ftpext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 23 Nov 2010 04:16:25 -0000

Hi,

On 22 November 2010 19:32, Mark P. Peterson <mpp@rhinosoft.com> wrote:

> Hi Robert,
>
> Thank you for taking the time to review the commands.  If you don't mind I
> would
> like to respond to your comments:
>
> CSID:
> > For security reasons I would probably want the CSID exchange to occur
> AFTER the client has logged in, but I might be overreacting.
>
> There is a lot of discussion on the Internet about servers providing "too"
> much information, especially prior to login.  But having
> worked on both sides of the FTP process, it's usually very easy for the
> client to identify what brand or flavor the server is.
> There are details which usually identify the server such as the
> completeness of the FEAT response, the welcome message, responses to
> certain messages, etc.  So, I think it's okay to be available prior to
> login.  I could change the document to read that it should be
> up to the server's implementation whether or not it's available.
>
I prefer to edge on the side of caution. I don´t see any good reason that
this SHOULD be available before login. Commands available prior to login
should be as limited as possible.

>
> RMDA:
> > In a server implementation I would probably make this command
> configurable, so administrators would have an option to disable the
> > feature.  In which case I would probably hide the command from a FEAT
> response so it would not be discoverable and have the server
> > return a 500 or 502 reply when RMDA is sent by the client and disabled at
> the server.
>
> I don't think my document specifies that it isn't configurable.  My
> implementation in Serv-U is configurable as is almost all other
> FTP commands.  I think this can be left up to the server implementation.
>  Your possible implementation is exactly how Serv-U
> implements it.  If the feature is disabled, it doesn't appear in the FEAT
> response, nor is it available through the HELP command.
>
>
AVBL:
> > ...
>
> Your comments address the reason for its existence.  The client-side
> implementation in SmartFTP uses the command in this manner.
>
> DSIZ:
> > This could certainly be useful, although I would probably want a user to
> be logged in...
>
> Any information about paths or files requires login in FTP.  I am sure this
> is the case here as well.  If a server wouldn't want the
> "anonymous" user to have access to this command it could be configured to
> disallow this command at the server's implementation or
> configuration.  This should be left up to the implementation of the server
> or administrator of the server.
>
> > I'd probably make it configurable so as not to tie up too many server
> resources for large directory structures;...
>
> Agreed, the time-consuming nature of the implementation is discussed but
> configuration by an administrator or server-implementation
> is not.   Do you think such verbiage is required?
>

> THMB:
> > I'm not a big fan of computing the thumbnail dynamically, nor am I fond
> of allowing the client to specify the thumbnail format and
> > size.
>
> That's the point of the command, though.  It's to reduce the amount of data
> that is required to travel over the wire.  The idea is
> to shorten delivery time to the client, letting the client decide what is
> best for the client, not the server.  Some clients may
> want very small images, say for a Windows Explorer style listing, others
> may want larger images (640x480 for example) to show a
> slide show.  I think the client needs to make that determination.  If the
> server decides to cache these generated images it can.
>
> > I think that it would be better if the server could pre-cache thumbnails
> for any file type in a server-determined size and image
> > format, and then return the binary data and image format information to
> the client.
>
> This could waste server-side resources, the client might not even make a
> request for thumbnail images.
>
> > For example, most graphically-based operating systems have some method
> for displaying file icons to a user that is seated at a
> > computer terminal, so an FTP server implementation could simply return
> that same icon to a client in response to a THMB request.
>
> Right, but this isn't really the purpose of this command.  The purpose is
> to take an original image file and reduce it to a
> specified size, not to return the OS's icon representation for that
> particular file type (i.e., not SHGetFileInfo() in Windows).
>
> My proposed implementation is fairly straightforward.  If supported the
> FEAT command replies with THMB and the supported file types.
> When the client wants a thumbnail it asks for it with a single command.
>  Here is a sample result from FTP Voyager and Serv-U:
>
> PORT 192,168,0,30,199,53
> 200 PORT command successful.
> THMB PNG 98 88 Thomas.JPG
> 150 Opening thumbnail image transfer BINARY mode data connection (19738
> Bytes) for Thomas.JPG.
> 226 Transfer complete. 19,738 bytes (19,756 compressed to 100.09%)
> transferred. 19.29 actual KB/sec,  19.28 effective KB/sec.
>
> The client opens a data channel just like any other file transfer, then
> requests the file using THMB, followed by the output type,
> width, height, and the file name.  The server responds just like a file
> transfer but also includes the resulting size in
> parentheses.
>
> While designing this command the idea was to first make it simple for both
> sides, second to make it operate as any other download,
> and third to make it as flexible as possible, allowing the client to decide
> how the resulting data is to be used and what is needed.
> Of course the server could be configured in any way needed.  For example if
> the server wanted to limit the size of the thumbnails,
> the server could do that.  Our implementation limits the number of
> simultaneous threads allowed to create the thumbnails at any
> given time.  I think these details need to be left to the server
> implementation.
>
> As for using an OPT command to configure an upcoming THMB command for its
> image type and the thumbnail size, that seems to
> complicate the command.  It's very easy to add these parameters into a
> single command, eliminating the required handshaking between
> the client and server.  An added benefit is that neither the client nor the
> server are required to maintain these "options"
> throughout a session, rather all of the information required is sent in a
> single command.
>
> If you're interested in seeing it in action, download Serv-U and FTP
> Voyager or SmartFTP.  Login to the server, switch FTP Voyager
> to "Thumbnails" view.  With SmartFTP simply select an image file and a
> thumbnail image, of dynamic size, will appear in the preview
> pane.
>

> Thank you again for taking the time to provide your feedback.  I look
> forward to your comments to the above.
>
> Mark P. Peterson - President
> http://www.RhinoSoft.com
> Voice: +1(262) 560-9627
> FAX: +1(262) 560-9628
>
>
> --------------------------------------------------
> From: "Robert McMurray" <robmcm@microsoft.com>
> Sent: Monday, November 22, 2010 5:01 PM
> To: <ftpext@ietf.org>; "'Anthony Bryan'" <anthonybryan@gmail.com>; <
> mark.peterson@rhinosoft.com>
> Subject: [ftpext] draft-peterson-streamlined-ftp-command-extensions
>
> [Note: Renaming the thread from 'Submitting new drafts'.]
>
> > Anthony Bryan wrote:
> >
> > I don't mean to single you out, but
> > you showed interest in an CSID/AGNT
> > command. Do you have any opinion on
> > the other 4 commands in the draft?
>
> Thanks, Anthony.
>
> No worries - I meant to send a better response in the wake of my withdrawn
> AGNT draft and Mark's current Streamlined FTP Command
> Extensions draft, but I had been remiss at taking the time to collect my
> thoughts in a more meaningful way. But since you asked,
> this seems like as good at time as any. ;-]
>
> CSID - As evidenced by my short-lived AGNT proposal, I think it's very
> useful to have some sort of client/server discovery command.
> FEAT does a good job of advertising the list of commands that are supported
> by a server, but Mark's proposed CSID command sequence
> provides a much better way for servers and client to identify their
> features to each other in detail. For security reasons I would
> probably want the CSID exchange to occur AFTER the client has logged in,
> but I might be overreacting.
>
> RMDA - This could be a very useful command, and it would parallel the
> functionality that I'm sure we all typically use in a native
> operating system environment. In a server implementation I would probably
> make this command configurable, so administrators would
> have an option to disable the feature. In which case I would probably hide
> the command from a FEAT response so it would not be
> discoverable and have the server return a 500 or 502 reply when RMDA is
> sent by the client and disabled at the server.
>
> (Note: I mention my thoughts about server implementation details just to
> open up the discussion as to whether any implementation
> details should be called out in the draft, or if we should leave that up to
> the implementers to decide.)
>
> AVBL - This command could be very useful in a client/server world; our FTP
> server implementation currently returns the available
> size after a successful login sequence, and the available size is based on
> server disk quotas and such. That being said, not every
> FTP client will bubble that information up to the user interface. Having an
> AVBL command would make it possible for a client to
> determine whether enough storage space is available at the server BEFORE
> sending a file, which would be great when you're about to
> send a 10GB file and you only have 9.99GB of storage space left. ;-]
>
> DSIZ - This could certainly be useful, although I would probably want a
> user to be logged in (not anonymous) before I supported this
> command in order to reduce the risk of denial-of-service. I'd probably make
> it configurable so as not to tie up too many server
> resources for large directory structures; and once again, if the feature
> were disabled I would probably hide the command from a FEAT
> response so it would not be discoverable and return a 500 or 502 reply when
> DSIZ is sent by the client and disabled at the server.
>
> THMB - I have to admit, I don't work on a graphical FTP client, so this
> command is less useful to me personally, but I can see the
> merit that it might have to someone that designs a graphical client. That
> being said, I'm not a big fan of computing the thumbnail
> dynamically, nor am I fond of allowing the client to specify the thumbnail
> format and size. I think that it would be better if the
> server could pre-cache thumbnails for any file type in a server-determined
> size and image format, and then return the binary data
> and image format information to the client. For example, most
> graphically-based operating systems have some method for displaying
> file icons to a user that is seated at a computer terminal, so an FTP
> server implementation could simply return that same icon to a
> client in response to a THMB request.
>
> Please bear in mind, I haven't given a lot of thought as to what the
> client/server interchange might look like if the server were
> more in control of the response to a THMB request, but it would probably be
> sufficient to simply return the image type as part of
> the response and let the client determine the image dimensions based on the
> client's capabilities for reading the image data. (As a
> server guy I like to push any client-friendly processing on the client
> whenever possible. ;-]) You could borrow an idea from the
> HASH discussion that we've been having and make the thumbnail image type
> configurable for the client by using an OPTS command, which
> might look like the following examples.
>
> In this first example, the server has a pre-configured thumbnail image type
> of JPG, and may have pre-cached the thumbnails for
> files; any THMB request with no OPTS specified would use the server's
> pre-configured thumbnail image type of JPG and image type is
> specified in the command channel response:
>
>  C> THMB widget.png
>  S> 150 JPG Starting thumbnail transfer (1234 Bytes) for widget.png
>  S> 226 Transfer complete.
>
> In these next examples a client is asking for different thumbnail image
> types by using OPTS commands, and the thumbnail image types
> would still be specified in the command channel responses:
>
>  C> OPTS THMB GIF
>  S> 200 OPTS THMB GIF command successful.
>
>  C> THMB widget.psp
>  S> 150 GIF Starting thumbnail transfer (1234 Bytes) for widget.psp
>  S> 226 Transfer complete.
>
>  C> OPTS THMB PNG
>  S> 200 OPTS THMB PNG command successful.
>
>  C> THMB widget.doc
>  S> 150 PNG Starting thumbnail transfer (1234 Bytes) for widget.doc
>  S> 226 Transfer complete.
>
> In this next example a client is asking for an unsupported image type, so
> the server would simply return the appropriate error
> reply:
>
>  C> OPTS THMB FOO
>  S> 501 Unsupported thumbnail format.
>
> In this next example a client is asking for the currently-configured
> thumbnail image type, so the server would return the
> appropriate response:
>
>  C> OPTS THMB
>  S> 200 JPG
>
> You might take this one step further - the server might choose to only
> support its pre-configured thumbnail image type, thereby
> allowing pre-caching of all thumbnails in one specific image format. In
> this example a client is asking for PNG thumbnails, which
> SHOULD be a supported image type, but the server only supports a
> pre-configured thumbnail image type for JPG files and returns the
> appropriate error reply (504?) and the server's pre-configured thumbnail
> image type is specified in the subsequent command channel
> response to a THMB request:
>
>  C> OPTS THMB PNG
>  S> 504 Specifying thumbnail formats is unsupported.
>
>  C> THMB widget.xls
>  S> 150 JPG Starting thumbnail transfer (1234 Bytes) for widget.xls
>  S> 226 Transfer complete.
>
> As I said earlier, I hadn't given much thought as to what the client/server
> THMB interchange might look like if you put the server
> in control instead of the client, but as a server guy I'd rather see THMB
> look a little more like the examples that I gave. ;-]
>
> Thanks again!
>
> Robert McMurray
> robmcm@microsoft.com
>
> _______________________________________________
> ftpext mailing list
> ftpext@ietf.org
> https://www.ietf.org/mailman/listinfo/ftpext
>
>
> _______________________________________________
> ftpext mailing list
> ftpext@ietf.org
> https://www.ietf.org/mailman/listinfo/ftpext
>