
Curl.io – Share files from your terminal or ssh - dizda
http://curl.io/
======
mivok
Make it support PUT instead of POST with a file form field and the command
becomes simplified to:

    
    
        curl -T filename http://curl.io/send/abc123

------
darkotic
Without knowing the hash, it might be nice to just:

    
    
        curl -F "@file=/path/myfile.tgz" http://curl.io/send
    

and get the hash returned with a url.

------
nl5874
I'm always using transfer.sh. It will return a filename that can be shared.
For example "curl --upload-file /tmp/test.txt
[http://transfer.sh/hello.txt"](http://transfer.sh/hello.txt") will return
[http://transfer.sh/6t9me/hello.txt](http://transfer.sh/6t9me/hello.txt).

~~~
nl5874
Oh, and dropping files on the page will just change it into a download link.

------
jbnicolai
Couldn't find any feedback form on the site, so I guess I'll post it here.
Seems there's a small bug in the way the time, dispayed in the console, is
calculated.

FilerCtrl uses:

    
    
      var c = new Date;
      a.date = c.toDateString() + " " + ("0" + c.getUTCHours()).slice(-2) + ":" + ("0" + c.getUTCMinutes()).slice(-2) + ":" + ("0" + c.getUTCSeconds()).slice(-2);
    

Which does not respect the current timezone.

I suppose it could be fixed by replacing

    
    
      c.getUTCHours()).slice(-2)
    

with

    
    
      (c.getUTCHours()).slice(-2) + (c.getTimezoneOffset() / 60))
    

Although you'd probably be better of using a library like
[http://momentjs.com/](http://momentjs.com/).

~~~
dizda
Thanks for the feedback, indeed I didn't want to use momentjs to overload the
speed of the site, but I didn't notice for that mistake, thanks I appreciate
:-)

------
kalleboo
Hey everyone, don't forget that copying commands from web sites and pasting
them into a terminal window can be very dangerous
[http://thejh.net/misc/website-terminal-copy-
paste](http://thejh.net/misc/website-terminal-copy-paste)

~~~
giancarlostoro
So paste into a text editor first is what you're saying?

~~~
kalleboo
That works. Or use a clipboard viewer (on OS X you can view the clipboard in
the Finder)

------
lttlrck
I far prefer this, it uses filepicker as it's backend.

[https://github.com/uams/geturl](https://github.com/uams/geturl)

------
yuvadam
While I'm doing command line file sharing, why not just directly transfer a
file to my peer with netcat?

Server:

    
    
        $ cat hugefile.ext | nc -l -p 9999
    

Client:

    
    
        $ nc server.ip 9999 > hugefile.ext
    

We tend to forget how the network is built, and how easy it is to use it with
the right tools.

~~~
xorcist
Ah, a candidate for the useless use of cat award.

The first command can be given more easily as:

    
    
      nc -l -p 9999 < hugefile.ext
    

(which also mirrors the logic of the second, modulo nc's idiosyncratic
argument syntax)

~~~
unfamiliar
The cat version much more clearly represents the flow of data. We read left to
right, it makes no sense to me to have data flow written right to left (and
only for input files, while output files read left to right).

When building commands up from basics, it makes much more sense to start with
cat. I will typically cat the file to see it's contents, then modify the
command with a pipe to another program, and make keep adding processing steps
to the end of the pipeline. Your < inputfile.txt notation completely breaks
this model.

Just because you read something on a webpage that one time doesn't mean it is
the one true way.

~~~
xorcist
No, it makes much more sense to start with the command that is to process the
file. Most commands take a command line argument to specify which file to
process. This mirrors the redirection syntax perfectly:

You say:

    
    
      grep haystack needle.txt
    

or:

    
    
      grep haystack < needle.txt
    

whereas this is more convoluted:

    
    
      cat needle.txt | grep haystack
    

As a bonus the syntax looks the same for output redirection:

    
    
      sort < infile.txt > outfile.txt
    

whereas this is not as readable:

    
    
      cat infile.txt | sort > outfile.txt
    

What "makes sense" to you doesn't always to other people. In this case it's
trivial, but it's a nightmare to debug larger scripts when there are lots of
unnecessary redirections and if statements.

Shell scripts may be one-offs, but they tend to linger. It's not unwise to
spend a few extra moments to make them readable and follow best practice. It
is code after all.

(Also; a bit silly with the personal attacks.)

------
igetspam
Great idea but where I'd find value in something like this is for securely
transferring files to people who, presumably, are somewhat clued. If I needed
to do that, doing it without SSL seems counter productive (as has been pointed
out). Additionally, while the four hour deletion is nifty, were I building
this (could be a fun toy to hack together), I'd like a settable timer or
download count. The comment about auto generating to URI path is spot on too.
Sure, it would be nice to be able to choose but in many cases, a randomized
path is ideal.

Again, cool toy and a fun idea but...

Too bad the code isn't available so I could hack it up a bit. I've saved this,
in case bored and want to give it a try on my own some time.

~~~
abemassry
You might be interested in this project I worked on
[https://github.com/abemassry/wsend-gpg](https://github.com/abemassry/wsend-
gpg) it's end to end encryption, there's no settable timeout but there is a
delete command so something like what you're saying might be possible.

I've already posted below but wanted to share this with you incase you're
interested.

------
wanquribao
Awesome!

Seems many new ideas around file sharing recently. To name a few:

\- [https://popbox.io](https://popbox.io)

\- [https://nfil.es](https://nfil.es)

\- [https://wsend.net](https://wsend.net)

------
spartas
I wonder what their file storage limits are. Can I send them /dev/random ?

~~~
Rapzid
My guess is 5GB; the maximum size of a single S3 put.

------
klapinat0r
Apart from parsing a HTML page (e.g. curl [http://curl.io/](http://curl.io/)),
how exactly are you suppose to get a key (from terminal/ssh)?

~~~
hobarrera
Looks like you can re-use the keys.

------
dizda
Hello everyone,

Thanks for all these feedbacks!

I have considered most of them.

Well, as I can see the most of you are worried about the security, that I
understand.

So I've just added little help with a GPG encryption right from your terminal
before sending the file.

I think this is the most important things I can make right now, while I do not
plan to install SSL certificate given that I don't make money with this site,
and the server cost is enough.

But if some of you, guys, are interested in more professional features, let me
know, we can discuss about it.

Cheers!

dizda

~~~
pendexgabo
why not startssl? you will get the SSL certificate for free

------
booruguru
What exactly is the point of this? I'm seriously asking. What's a scenario in
which Curl.io would be useful?

~~~
dizda
In my case, I going through several SSH (My Terminal => Bridge SSH => Target
SSH) to get for example a backup. It's just easier for me to get the file back
with curl.io instead of using something like SCP in this kind of situation.

------
CyberShadow
Yikes, this should really be accessible only via HTTPS.

Copying commands from untrusted websites (or insecure connections) and pasting
them into your terminal is not a good idea:

[http://thejh.net/misc/website-terminal-copy-
paste](http://thejh.net/misc/website-terminal-copy-paste)

~~~
nettdata
Don't know about you, but an SSL certificate does nothing to increase my level
of trust of a website.

~~~
freakonom
Without TLS, absolutely anyone along the link (not just curl.io) can inject
some BS into your command line if you choose to copy-paste.

If you don't trust curl.io, fine. But without TLS the list of people you need
to trust is not only curl.io, but everyone else in the tubes too.

~~~
philtar
Or just yourself. As it really should be.

------
api
Everything has to be 100% relayed via a central server. Sigh.

Not your fault of course. We've all lost kittens to NAT.

~~~
hobarrera
IPv6 will get rid of that nasty NAT, fortunately, and we can go back to true
p2p transfers.

------
kordless
I was trying to do something like this to make it a bit easier to use:

#!/bin/bash

X=$(cd $(dirname "$1") && pwd -P)/$(basename "$1")

curl -F "file=$X" [http://curl.io/$2](http://curl.io/$2)

~~~
dserodio
Did you really name a variable "X"?

~~~
kordless
Guilty.

------
ajgrover
I use cloudapp for sharing files and they have a convenient ruby gem for
command line use:
[https://github.com/cloudapp/cloudapp.rb](https://github.com/cloudapp/cloudapp.rb)

------
harigov
Typing in file name within a page just to generate URL seems clunky to me. I
believe, you can provide URL generation from a REST API that can be called
from command line.

~~~
themoonbus
Using curl!

------
abemassry
For something similar check out: [https://wsend.net](https://wsend.net)

------
chopete
Just awesome. I tried custom shell scripts to upload to dropbox and other
cloud storages but it never felt right.

The other magic is, on Mac you can see the upload status in the browser window
if you keep curl.io open.

~~~
beeskneecaps
Agreed. The web UI reacted almost instantly when I hit enter in the terminal.

I'd want an interface to destroy the file immediately then fallback to the 4
hour auto-delete.

Also some serious details about the author and security before I'd actually
consider sending anything mission critical.

~~~
dizda
Thanks for your feedbacks! In fact, I developed this tool just to get some
help in my everyday work, because I'm used to connect to several SSH at the
same time of my customers (My Terminal => Bridge SSH => Target SSH), and it
can become a little bit confused with SCP command..! This kind of tool helped
me a lot, and I choose to share it with other DevOps/SysAdmin.

@beeskneecaps: I never thought about the link to destroy immediately the file,
I'll put it tomorrow, thanks :)

I'm the author, @dizzda on twitter, you'll get additional informations about
me.

About the security, i'll be honest, it was just to see if the concept can be
interesting for other people, the only security (yet) is that the file will be
auto-deleted in 4 hours. Files are hosted on a private dedicated server. So
yeah, you can always take care to encrypt yourself your file before send it
there.

If many people are interested to use this tool in a more professionnal-way, I
can take some time to think about it... Anyway, it's just a real pleasure to
hear your feedbacks guys! Please do not hesitate!

Cheers, dizda.

~~~
vdm
Some terminal emulators support in-band file transfers using zmodem. SecureCRT
does this.

iTerm: [http://grack.com/blog/2011/10/26/automatic-file-transfer-
in-...](http://grack.com/blog/2011/10/26/automatic-file-transfer-in-
iterm2-via-zmodem/)

------
filipedeschamps
This looks great!

You should also provide a copy to clipboard button.

~~~
dizda
This is considered :)

------
therealmarv
So this shows them my file path? Browsers normally do not submit file paths
when uploading! Privacy fail IMHO.

------
baconhigh
whaaat.

does anyone else think this is slightly suspect and/or bogus?

~~~
drcode
OF COURSE you should assume the owner of the website can read any file you
send, but besides that it seems like it's fine.

