Skip to main content

A minimal HTTP file transfer server

Project description

UpDownApp

UpDownApp is a minimal HTTP file transfer server built using CherryPy. It allows users to upload and download files through a simple web interface. The application supports optional password protection, SSL for secure communication, and customizable data storage directories.

I implemented a first version of this application when I needed to transfer files from an old iPhone to a Linux desktop. Writing a minimal CherryPy application was for me the quickest thing, also not requiring to install dedicates services on the desktop or apps on the iPhone (which was almost impossible due to its age). I found myself using it from time to time, especially when I need to transfer lots of file or large files to/from a old/limited-access device which yet offers a browser.

Features

  • File Upload: Users can upload multiple files to the server.
  • File Download: Users can download individual files or multiple files as a ZIP archive.
  • Password Protection: Optional password-based authentication to restrict access.
  • SSL Support: Secure communication using HTTPS with provided SSL certificate and key.
  • Customizable Data Directory: Specify the directory where files are stored.

Installation

You can install UpDownApp using pip:

pip install updownapp

Alternatively, you can install it directly from the source:

git clone https://github.com/aesuli/updownapp.git
cd updownapp
pip install .

Usage

Once installed, you can start the server using the updownapp command:

updownapp [OPTIONS]

Options:

--host: The host address to bind the server to (default: 0.0.0.0).

--port: The port number to listen on (default: 8080).

--data-dir: The directory to store and serve files (default: ./data).

--disable-upload: Disable file upload functionality.

--disable-download: Disable file download functionality.

--ssl-cert: Path to the SSL certificate file (for HTTPS).

--ssl-key: Path to the SSL private key file (for HTTPS).

--passwordfile: Path to a file containing the password for authentication.

Examples

Start the server with default settings:

updownapp

Start the server on a specific host and port:

updownapp --host 127.0.0.1 --port 8000

Enable password protection by specifying a password file:

updownapp --passwordfile /path/to/password.txt

The password file should contain a single line with the plaintext password.

Enable HTTPS by providing SSL certificate and key files:

updownapp --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem

License

UpDownApp is released under the BSD 3-Clause License. See the LICENSE file for more details.

Acknowledgments

Built using the fantastic CherryPy - A minimalist Python web framework.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

updownapp-0.1.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

updownapp-0.1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file updownapp-0.1.0.tar.gz.

File metadata

  • Download URL: updownapp-0.1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for updownapp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f1bdfc76f7d928e15f8574d898b00724c0f2650d48a97223e25f2d799c53d2d4
MD5 495dac7c6df77a18fc2facd11806ae1c
BLAKE2b-256 dc6f28e6a2c389b7d1e454fc0ba6466249363235685f0ece71135473a4c75f12

See more details on using hashes here.

File details

Details for the file updownapp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: updownapp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for updownapp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa49adb1eb2e949f9b54c7be4de9956be6f6cc9cbd32ed34fbe474ca0a35a7da
MD5 c65d5ccd610c6bb7761ae7ddeb2de91e
BLAKE2b-256 65f827e78ca4ad0397d73349c971a5d9cdb9c2362486690811da83316c3a903d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page