Metadata-Version: 2.4
Name: updog
Version: 2.0.1
Summary: Updog is a replacement for Python's SimpleHTTPServer. It allows uploading and downloading via HTTP/S, can set ad hoc SSL certificates and use HTTP basic auth.
License: MIT
License-File: LICENSE
Keywords: HTTP,server,SimpleHTTPServer,directory,file-sharing
Author: sc0tfree
Author-email: henry@sc0tfree.com
Requires-Python: >=3.11,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Communications :: File Sharing
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Security
Requires-Dist: colorama (>=0.4.6,<0.5.0)
Requires-Dist: flask (>=3.0,<4.0)
Requires-Dist: flask-cors (>=6.0.1,<7.0.0)
Requires-Dist: flask-httpauth (>=4.8.0,<5.0.0)
Requires-Dist: pyopenssl (>=24.0,<25.0)
Requires-Dist: werkzeug (>=3.0,<4.0)
Project-URL: Homepage, https://github.com/sc0tfree/updog
Project-URL: Repository, https://github.com/sc0tfree/updog
Description-Content-Type: text/markdown

![Version 2.0.1](http://img.shields.io/badge/version-v2.0.1-green.svg)
![Python 3.11+](http://img.shields.io/badge/python-3.11+-blue.svg)
[![MIT License](http://img.shields.io/badge/license-MIT%20License-blue.svg)](https://github.com/sc0tfree/updog/blob/master/LICENSE)
[![sc0tfree Twitter](http://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Follow)](https://twitter.com/sc0tfree)

<p>
  <img src="https://raw.githubusercontent.com/sc0tfree/updog/master/assets/updog.png" width=85px alt="updog"/>
</p>

Updog is a replacement for Python's `SimpleHTTPServer`. 
It allows uploading and downloading via HTTP/S, 
can set ad hoc SSL certificates and use HTTP basic auth.

## Installation

Install using pip:

`pip install updog`

Or using pipx (recommended for CLI tools):

`pipx install updog`

For development:

```bash
git clone https://github.com/sc0tfree/updog.git
cd updog
poetry install
poetry run updog
```

## Usage

`updog [-d DIRECTORY] [-b ADDRESS] [-p PORT] [--password PASSWORD] [--ssl | --ssl-cert CERT --ssl-key KEY] [--cors] [--hide-base-path]`

| Argument                            | Description                                      |
|-------------------------------------|--------------------------------------------------| 
| -d DIRECTORY, --directory DIRECTORY | Root directory [Default=.]                       | 
| -b ADDRESS, --bind ADDRESS          | Bind to specific address [Default=0.0.0.0]       |
| -p PORT, --port PORT                | Port to serve [Default=9090]                     |
| --password PASSWORD                 | Use a password to access the page. (No username) |
| --ssl                               | Enable SSL with ad-hoc certificate               |
| --ssl-cert CERT                     | Path to custom SSL certificate                   |
| --ssl-key KEY                       | Path to custom SSL private key                   |
| --cors                              | Enable CORS headers                              |
| --hide-base-path                    | Hide full directory path (show relative paths)   |
| --version                           | Show version                                     |
| -h, --help                          | Show help                                        |

## Examples

**Serve from your current directory:**

`updog`

**Serve from another directory:**

`updog -d /another/directory`

**Serve from port 1234:**

`updog -p 1234`

**Password protect the page:**

`updog --password examplePassword123!`

*Please note*: updog uses HTTP basic authentication.
To login, you should leave the username blank and just
enter the password in the password field.

**Use an SSL connection (ad-hoc certificate):**

`updog --ssl`

**Use an SSL connection with custom certificates:**

`updog --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem`

**Bind to a specific IP address:**

`updog -b 192.168.1.10 -p 8080`

**Enable CORS for web application testing:**

`updog --cors`

**Hide full directory paths (OpSec):**

`updog --hide-base-path`

## What's updog?

Not much, how about you?

## Thanks

A special thank you to [Nicholas Smith](http://nixmith.com) for
designing the updog logo.

