This is a read-only archive!

File transfer

I use Gaim Pidgin, and I often need to transfer files to someone. File transfer via instant messengers sucks. The file transfer for Yahoo Messenger protocol for example apparently uploads your file to some Yahoo server and then serves it to the person you're talking to. At least that's my guess judging by its behavior; I don't know for sure (which is another problem: I don't know what it's doing, which is scary enough that I can't use it to send any important files). Some protocols let you set up a "direct connection" to the person you're talking to, but this is always clumsy at best, or broken at worst (if you're behind a NAT router).

So what other options are there? SCP obviously. But I talk to people who (sadly) use Windows, and they don't run SSH servers. Nor do they have any interest in learning how to do it. Nor do they have any desire to use the command line for anything. Can't blame them really; not everyone is a geek.

I run a local Apache, and I can open it to the world and let people access my files that way, but that's not a lot of fun to try to secure and it's overkill just to transfer files. I'm certainly not going to leave a wide-open Apache server running all the time, which means I have to restart it every time someone wants to get a file from me. I've used Apache for this purpose before and it tends to go something like this:

Someone: I bet that song is nice. Can I have an MP3 of it?

Me: Sure! Just hold on while I edit /etc/apache2/httpd.conf and set the port and bound IP correctly, then reconfigure my firewall to allow incoming connections for that port, change DOCUMENT_ROOT to point to an empty directory for you or maybe set up a vhost, throw a .htaccess on there to prevent spying eyes, and restart the daemon.

I could run an FTP server, but same problem: overkill, and I don't want to have to secure it. I could set up a VPN, but that's not fun to configure ("Sure, I'll send you this file. Let's both install OpenVPN. First you need to set up a new TUN or TAP device. I'll wait while you do that.") There's always email, but that suffers from the same problem of my files having to pass through an intermediary server, and the inevitable problem of email mail box size limits (I don't have one, but other people may). I guess I could set up a local bittorrent server, maybe. Hmm.

It seems like such a simple problem: Quickly transfer a file from one computer to another given a port and IP address, using some kind of GUI. I'm thinking of writing my own little program that does this just so I can use it with people I know. Unless there's a good option I'm missing.

August 01, 2007 @ 1:18 PM PDT
Cateogory: Linux


Quoth Ryan on August 01, 2007 @ 2:17 PM PDT

I just use gmail. Most people have it. You only need to upload it once. The file is then archived for you and them. The person receiving it can stream the mp3s with a built in applet inside it. It can even be done through gmail's chat client.

Quoth jwickers on August 01, 2007 @ 5:10 PM PDT

Well, if you are a "geek" you could have a HTTP of FTP server running all time. You just need to firewall it out when not needed. If your chat client gives you the IP of you buddies, just drop an iptable accept on that IP for the time they need to download it.

Mark Kowarsky
Quoth Mark Kowarsky on August 01, 2007 @ 7:26 PM PDT

Or there is always stuff like yousendit and rapidshare

Quoth chi on August 01, 2007 @ 8:39 PM PDT

Have a look at the allpeers firefox extension [1], its kind of a browser embedded bittorrent client (the files arent stored anywhere!).


Quoth numerodix on August 03, 2007 @ 12:34 AM PDT

Damn you, Brian. I kept reading thinking the answer to the problem was coming up :(

Ps. Will have to try allpeers.

Quoth Brian on August 03, 2007 @ 12:47 AM PDT

Allpeers seems to require that you register on their site. Not sure I like that.

I have yet to find a real solution. Might have to go with writing my own after all.

Quoth Ryan on August 04, 2007 @ 12:40 PM PDT

If point 'a' and point 'b' are both firewalled, meaning connections must be initiated outwardly. The only way to connect point a and b is through an intermediary point 'c'. For instance, Direct Client-to-Client (DCC) via IRC.

Quoth Payton on August 21, 2007 @ 5:22 AM PDT

Not quite what you asked for, but still: