Converting HTTP to FTP URL

Jeffrey Massung massung at gmail.com
Mon Aug 8 02:37:48 EDT 2011


On 08/07/2011 09:49 PM, J. Landman Gay wrote:
> On 8/7/11 10:05 PM, Jeffrey Massung wrote:
>
>> So, the only way you can begin to solve this issue is if you have direct
>> access to the web server and know how it's routing and serving static
>> content.
>
> I'll answer you and Mark Weider at the same time. I'm trying to add 
> auto-upload to AirLaunch. It mostly works. I can only upload via ftp 
> (http isn't usually accepted, I don't think, even if you provide a 
> name and password. At least, it doesn't work on my hosted account.) 
> There is already a place in the stack for the user to enter the http 
> URL where their installation files will be downloaded from. That URL 
> is required for setting up the wi-fi installation, so AirLaunch 
> already has that.
>
> I could ask the user for a separate FTP upload URL but I'd rather not 
> if I don't have to. What would be better is to take their HTTP URL and 
> convert it to a valid FTP URL which will only be used internally by 
> AirLaunch to get their files onto their server.

In my experience, trying to infer the location is going to lead - down 
the road - to an unhappy customer. No one will remember the inference 
and it will break. I can completely sympathise with what you want to do 
and why. But I would advise against it.

> It sounds like I may have to ask the user to provide both paths. But 
> that makes everything more complex because the two paths are slightly 
> different, the user needs to know the distinction between web-relative 
> paths and absolute paths and what their web root folder is called, and 
> I'd rather avoid the support issues around that if I can.

If you wouldn't mind another option: use the PUT protocol in HTTP along 
with authentication. 
http://www.w3.org/QA/2008/10/understanding-http-put.html. This will 
still require work from the customer to enable this, but it'll make life 
easier for everyone.

The HTTP PUT has an added benefit: it let's the server do whatever it 
wants with the incoming data. This is important, because it means that 
the server can put the file into a different location and act on it 
later. Consider the following setup:

1. The actual site is stored in a git repository somewhere.

2. The /var/www folder is actually a clone of the git repo.

3. For every "upload" being done (likely per user), they can be staged 
somewhere else (/var/www-staged-username), which is another clone of the 
repo.

4. When all the uploads are completed, a push can be made which uploads 
the staged repo to the main repository.

5. A build process takes over and ensures data integrity and that 
everything is correct and the upload won't bring down the live site.

6. Later on the /var/www site pulls down all changes from the repo.

This entire process can be fully automated and done behind the scenes 
without any intervention or pathing "voodoo." It can also be done on a 
single machine or across many machines ensuring that if one goes down or 
the drive fails, the others still have all the data. And with a SCM 
system in place, you'll also have full history of who did what and when. 
Very handy at times. ;-)

That might be very heavy-weight for your customer [now], but it could be 
a direction down the road they'd like to take things. Flesh out the 
above as a plan and let them know why you'd like to support HTTP PUT and 
how it would work. Perhaps now all it does it upload directly to the 
live site, but explain how it sets them up for later.

Jeff M.





More information about the Use-livecode mailing list