Metadata-Version: 2.4
Name: sharedir
Version: 2.0.2
Summary: A simple tool to share files and directories over LAN or internet.
Home-page: https://github.com/spignelon/ShareDir
Author: Ujjawal Saini
Author-email: spignelon@proton.me
License: AGPL-3.0-only
Project-URL: Homepage, https://github.com/spignelon/ShareDir
Project-URL: Bug Tracker, https://github.com/spignelon/ShareDir/issues
Project-URL: Source Code, https://github.com/spignelon/ShareDir/blob/main/sharedir/sharedir.py
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Topic :: Utilities
Classifier: Topic :: Communications :: File Sharing
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click
Requires-Dist: Flask
Requires-Dist: Jinja2
Requires-Dist: MarkupSafe
Requires-Dist: pypng
Requires-Dist: qrcode[pure]
Requires-Dist: waitress
Requires-Dist: Werkzeug
Requires-Dist: xkcdpass
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# ShareDir

**ShareDir** is a Python tool to share files and directories over LAN or the internet with a single command. It runs a production-ready HTTP server (Waitress) with passphrase protection, QR code access, file uploads, and a modern web interface.

## Features

- Share files and directories with one command
- QR code generation (terminal + in-browser)
- Passphrase protection with brute-force blacklisting
- Production-ready server (Waitress) with configurable workers
- File upload support with progress bar (optional)
- Directory ZIP download
- File metadata display (size, modified date, MIME type)
- HTTP Range request support (video seeking)
- Client-side search/filter
- Dark mode (default) with light mode toggle
- Download buttons for files and directories
- Access logging (IP, method, path, status)
- Auto-expiry (`--expire`)

## Installation

### Via pip

```bash
pip install sharedir
```

### Via uv

```bash
uv tool install sharedir
```

### From source

```bash
git clone https://github.com/spignelon/ShareDir.git
cd ShareDir
pip install -r requirements_headless.txt
```

## Usage

```bash
sharedir /path/to/share
```

### Options

| Flag | Description |
|------|-------------|
| `-p N`, `--passphrase-length N` | Number of words in passphrase (default: 4) |
| `--no-passphrase` | Disable passphrase protection |
| `-P PORT`, `--port PORT` | Server port (default: 44447) |
| `-w N`, `--workers N` | Number of server workers, 1 worker = 4 threads (default: 1) |
| `--upload` | Enable file uploads via web interface |
| `--expire DURATION` | Auto-shutdown after duration (e.g. `30m`, `2h`, `1d`) |

### Examples

```bash
# Share a directory with a 6-word passphrase on port 8080
sharedir ~/movies -p 6 -P 8080

# Share without passphrase, with uploads enabled
sharedir ~/public --no-passphrase --upload

# Auto-shutdown after 2 hours
sharedir ~/files --expire 2h
```

Output:
```
Generated passphrase: grape-apple-banana-orange
Access URL: http://192.168.1.100:44447/?passphrase=grape-apple-banana-orange
Starting server on 0.0.0.0:44447 with 1 workers (4 threads)...
```

Requires Python >= 3.10.

## License

[![GNU AGPLv3.0](https://www.gnu.org/graphics/agplv3-155x51.png)](https://www.gnu.org/licenses/agpl-3.0.html) <br>
[GNU AGPLv3.0](LICENSE)
