No description
Find a file
2018-05-18 00:50:40 +02:00
api Implement archive download extract feature 2018-05-17 21:09:52 +02:00
cli Fix clipboard for Linux, use xclip on this platform 2018-05-17 22:43:06 +02:00
.gitignore Remove CLI help dots, update .gitignore, remove .rs file 2018-04-18 21:53:14 +02:00
.travis.yml Remove xorg-dev dependency on Linux builds, as xclip is now used 2018-05-17 22:59:48 +02:00
Cargo.lock Fix clipboard for Linux, use xclip on this platform 2018-05-17 22:43:06 +02:00
Cargo.toml Extract CLI logic to a child project 2018-03-08 23:02:06 +01:00
LICENSE Add GNU GPL v3 base and MIT API licenses 2018-04-12 23:46:52 +02:00
README.md Add Travis CI badge, single example and command outputs to README 2018-05-18 00:50:40 +02:00
REQUIREMENTS.md Implement archive download extract feature 2018-05-17 21:09:52 +02:00
ROADMAP.md Create README (WIP) 2018-05-18 00:08:05 +02:00

Build status on Travis CI

ffsend

Securely and easily share files from the command line. A fully featured Firefox Send client.

Securely and easily share files from the command line through a safe, private and encrypted link using a single simple command. Files are shared using the Send service and may be up to 2GB. Others are able to download these files with this tool, or through their webbrowser.

$ ffsend upload my-file.txt
Share link: https://send.firefox.com/#sample-share-url

All files are always encrypted on the client, and secrets are never shared with the remote host. An optional password may be specified, and a default file lifetime of 1 (up to 20) download or 24 hours is enforced to ensure your stuff does not remain online forever. This provides a secure platform to share your files. Find out more about security here.

The public Send service that is used as default host is provided by Mozilla.
This application is not affiliated with Mozilla, Firefox or Firefox Send.

Note: this tool is currently in the alpha phase

Features

  • Fully featured and friendly command line tool
  • Upload and download files securely
  • Always encrypted on the client
  • Additional password protection and configurable download limits
  • Built-in file and directory archiving and extraction
  • History tracking your files for easy management
  • Ability to use your own Send host
  • Inspect or delete shared files
  • Accurate error reporting
  • Intended to be used in scripts without interaction

Usage

Easily upload and download:

# Simple upload
$ ffsend upload my-file.txt
Share link: https://send.firefox.com/#sample-share-url

# Advanced upload
# - Specify a download limit of 20
# - Enter a password to encrypt the file
# - Archive the file before uploading
# - Copy the shareable URL to your clipboard
# - Open the shareable URL in your browser
$ ffsend upload --downloads 20 --password --archive --copy --open my-file.txt
Password: ******
Share link: https://send.firefox.com/#sample-share-url

# Upload to your own host
$ ffsend u -h https://example.com/ my-file.txt
Share link: https://example.com/#sample-share-url

# Simple download
$ ffsend download https://send.firefox.com/#sample-share-url

Inspect remote files:

# Check if a file exists
$ ffsend exists https://send.firefox.com/#sample-share-url
Exists: yes

# Fetch remote file info
$ ffsend info https://send.firefox.com/#sample-share-url
ID:         b087066715
Name:       my-file.txt
Size:       12 KiB
MIME:       text/plain
Downloads:  0 of 10
Expiry:     18h2m (64928s)

Other commands include:

# View your file history
$ ffsend history
#  URL                                         EXPIRY  OWNER TOKEN
1  https://send.firefox.com/#sample-share-url  23h57m  eea9f544f6d5df8a5afd
2  https://send.firefox.com/#other-sample-url  17h38m  1e9fef63fee3baaf54ce
3  https://example.com/#sample-share-url       37m30s  8eb28bc1bc85cfdab0e4

# Change the password after uploading
$ ffsend password https://send.firefox.com/#sample-share-url
Password: ******

# Delete a file
$ ffsend delete https://send.firefox.com/#sample-share-url

Use the --help flag, or see the [help][#help] section for all available subcommands.

Requirements

  • Linux, macOS or Windows
  • A terminal 😎
  • Internet connection when uploading or downloading

Install

Because ffsend is still in alpha, no prebuilt binaries or repositories are available at this time.
Build and install ffsend yourself using these fairly easy steps here.

Build

To build and install ffsend yourself, you meet the following requirements before proceeding:

Build requirements

  • Regular requirements
  • git
  • rust v1.26 or higher (install using rustup)
  • OpenSSL or LibreSSL libraries and headers must be available
    • Linux:
      • Ubuntu/Debian: apt install pkg-config libssl-dev
      • CentOS/Red Hat/openSUSE: yum install openssl-devel
      • Arch: pacman -S openssl
      • Fedora: dnf install openssl-devel
    • macOS:
      • Using brew: brew install openssl
      • Or see instructions here
    • Windows:
      • See instructions here here

Compile and install

Then, walk through one of the following steps to compile and install ffsend:

  • Clone the repository and install it with cargo:

    # Clone the project
    git clone https://github.com/timvisee/ffsend.git
    cd ffsend/cli
    
    # Compile and install
    cargo install -f
    
    # Start using ffsend
    ffsend --help
    
    # or run it directly from cargo
    cargo run --release -- --help 
    
  • Or clone the repository and invoke the binary directly (Linux/macOS):

    # Clone the project
    git clone https://github.com/timvisee/ffsend.git
    cd ffsend
    
    # Build the project (release version)
    cargo build --release
    
    # Start using ffsend
    ./target/release/ffsend --help
    

Help

$ ffsend help

ffsend 0.0.1
Tim Visee <https://timvisee.com/>
Securely and easily share files from the command line.
A fully featured Firefox Send client.

USAGE:
    ffsend [FLAGS] [OPTIONS] [SUBCOMMAND]

FLAGS:
    -f, --force          Force the action, ignore warnings
    -h, --help           Prints help information
    -i, --incognito      Don't update local history for actions
    -I, --no-interact    Not interactive, do not prompt
    -V, --version        Prints version information
    -v, --verbose        Enable verbose information and logging
    -y, --yes            Assume yes for prompts

OPTIONS:
    -H, --history <FILE>    Use the specified history file [env: FFSEND_HISTORY]

SUBCOMMANDS:
    upload        Upload files [aliases: u, up]
    download      Download files [aliases: d, down]
    debug         View debug information [aliases: dbg]
    delete        Delete a shared file [aliases: del]
    exists        Check whether a remote file exists [aliases: e]
    help          Prints this message or the help of the given subcommand(s)
    history       View file history [aliases: h]
    info          Fetch info about a shared file [aliases: i]
    parameters    Change parameters of a shared file [aliases: params]
    password      Change the password of a shared file [aliases: pass, p]

The public Send service that is used as default host is provided by Mozilla.
This application is not affiliated with Mozilla, Firefox or Firefox Send.

License

This tool is released under the GNU GPL-3.0 license. Check out the LICENSE file for more information.

The included API library located here is intended for use in other projects and is is released under the MIT license. Check out the LICENSE file for more information.