filegive
Documentation
Not logged in

Usual sending and receiving

The user starts filegive with the filename to send as a parameter, it gives a reachable URL to be given to the receiver (by chat for example), and the receiver points the browser to that url.

Sending to a destination in our network

$ filegive myfile.webm
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://192.168.10.34:46656/igmyvq/myfile.webm

The receiver only has to go to that URL (last line). For certificates management, check the Security page.

The sender sees a progress too:

New TLS connection from 192.168.10.53:43911 ciphersuite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Request from 192.168.10.53:43911 (Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0)
# ^ When someone connects
1.4% (32727 B/s)   # Status updated every 2 secs
# Once the receivers finished the download, the program finishes

In case the person with filegive (and capable of setting up the tunnel, with upnp, ssh, ..) wants to receive, he can use the reverse mode:

# Any extra option works too (upnp, rate limit, ...)
$ filegive -R
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://192.168.33.59:59847/afjwex/upload

# The sender visits that, and uploads the file with the browser. The receiver
# sees the log:
New TLS connection from 192.168.10.53:36150 ciphersuite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
New incoming file: cinepaint-0.22-1.tar.gz
Request from 192.168.10.34:36150 (Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0)
Request from 192.168.10.34:36150 (Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0) finished
10.2% (302727 B/s)   # Status updated every 2 secs
User 0 downloaded all.
Shutting down

Sending through internet

I omit the Fingerprint lines for brevety.

# Sending through internet behind a router with UPnP
$ filegive -u ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://28.42.21.50:12389/hjkasd/myfile.zip

# Sending through internet behind a router with NAT-PMP
$ filegive -A ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://28.42.21.50:92341/jdskas/myfile.zip

# Known port forwarded in the router
$ filegive -e 28.42.21.50:9000 ~/video/myfile.zip    # -u, asks the ip to the upnp
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://28.42.21.50:9000/kjbxmp/myfile.zip

# Reply a a port/URL you already know
# Known port forwarded in the router
$ filegive -P 9000 -D kjbxmp ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://28.42.21.50:9000/kjbxmp/myfile.zip

# Using a third computer through ssh as a forwarder
# It requires the special "GatewayPorts clientspecified", in sshd_config
$ filegive -s mysshhost ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://mysshhost:12318/jkdlja/myfile.zip

# Using a third computer through ssh+socat as a forwarder
# It requires the program "socat" installed in the remote computer
$ filegive -ss mysshhost ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://mysshhost:8539/iknlkn/myfile.zip

Special configurations

I omit the Fingerprint lines for brevety.

# Three receivers; process finishes when all finished download
$ filegive -n 3 ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
0: https://192.168.1.188:46584/asdfpe/myfile.zip
1: https://192.168.1.188:46584/nbfksk/myfile.zip
2: https://192.168.1.188:46584/lpoqnj/myfile.zip

# Do not use any https at all
$ filegive -p ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
http://192.168.1.188:46584/jbcoie/myfile.zip

# Offer a directory, people will be able to download anything inside
$ filegive ~/video
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://192.168.1.188:46584/hjeksa/video

# Offer a stdin input
$ tar c video | filegive -
https://192.168.1.188:46584/jasnbx/-

# Rate limit to 50KB/s your upload
$ filegive -r 50 ~/video/myfile.zip
Certificate SHA1 (s: filegive tnyoetro): 3B:78:35:7A:58:C0:F3:B4:7C:72:62:11:1A:0D:41:A0:2B:51:8C:67
https://192.168.1.188:46584/hdshas/myfile.zip