Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

beavailable/share

Repository files navigation

share

This is a command-line file sharing tool, which has just a single file and is easy to use.

Features

  • Crossing multiple platforms
  • Sharing directories, files and texts
  • Receiving files and texts
  • Password sharing
  • Basic authentication support
  • Range request support
  • TLS support
  • Zstd compression support (requires python-zstandard, optional and not needed on Python 3.14+)
  • QR code support (requires python-qrcode, optional)

Usage

usage: share.py [-b ADDRESS] [-p PORT] [-s] [-r] [-a] [-z] [-t] [-P [PASSWORD]] [-R RULE]
[-q] [-h] [-v] [--certfile CERTFILE] [--keyfile KEYFILE]
[--keypass KEYPASS]
[arguments ...]

positional arguments:
arguments a directory, files or texts

general options:
-b, --bind ADDRESS bind address [default: 0.0.0.0]
-p, --port PORT port [default: 8888]
-s, --share share mode (default mode)
-r, --receive receive mode, can be used with -s option (only for directory)
-a, --all show all files, including hidden ones (only for directory)
-z, --archive share the directory itself as an archive (only for directory)
-t, --text for text
-P, --password [PASSWORD]
access password, if no PASSWORD is specified, the environment
variable SHARE_PASSWORD will be used
-R, --auth-rule RULE a rule for authentication, can be used multiple times [default: *]
-q, --qrcode show the qrcode
-h, --help show this help message and exit
-v, --version show version number and exit

tls options:
--certfile CERTFILE cert file
--keyfile KEYFILE key file
--keypass KEYPASS key password

Auth Rules

An auth rule consists of two components: a pattern and an optional comma-separated list of HTTP methods, separated by a :.
Here are a few examples:

  • *, *:GET,POST,PUT or /*:GET,POST,PUT matches all paths for GET, POST and PUT
  • /foo/*:GET matches paths start with /foo/ and the path /foo.tar.zst for GET
  • *bar:POST,PUT matches paths end with bar for POST and PUT
  • /foo[ab]*:GET matches paths start with /fooa or /foob for GET

For full documentation on the pattern syntax, please see fnmatch.

Screenshot

Installation

Windows

You can download the latest release from the Release page.

Debian & Ubuntu

Install via the OBS repo (see obs-repo for setup).

Other Distros

Just download the script.

Tips

  • If you're sharing just one file, you can use the shortcut name file to access it:
    http://{host}:{port}/file

    # to save with the original filename
    wget --content-disposition http://{host}:{port}/file
    curl -OJ http://{host}:{port}/file
  • To get an archive of a folder, you can add the .tar.zst extension to the url:
    http://{host}:{port}/any/folder.tar.zst
  • If you want to upload files to the sharing server with curl, you can use:
    # POST
    curl -F file=@/path/to/file http://{host}:{port}
    # create new folders at the same time
    curl -F file=@/path/to/file http://{host}:{port}/custom/path/

    # PUT
    curl -T /path/to/file http://{host}:{port}
    # create new folders at the same time
    curl -T /path/to/file http://{host}:{port}/custom/path/
    # with a different filename
    curl -T /path/to/file http://{host}:{port}/custom/path/custom-filename
  • If you want to use HTTP Basic authentication, remember the username is always "user".

About

Share and receive files effortlessly over HTTP

Resources

Readme

License

MPL-2.0 license

Stars

Watchers

Forks

Packages

No packages published