An extended version of Python's SimpleHTTPServer that supports https, authentication, rate limiting, and download resuming.
Project description
ext_http_server
An extended version of Python's http.server that turns a simple static file
server into one supporting HTTPS, HTTP Basic authentication, server-to-client
rate limiting, and resumable downloads via HTTP Range requests.
Requirements
ext_http_server supports Python 3.10 through 3.14.
Installation
Install the ext_http_server command with uv:
uv tool install ext_http_server
Generate a certificate
Generate a self-signed certificate, writing the private key and certificate
together into cert.pem (the single file --cert expects). This uses a modern
ECDSA P-256 key, which every common TLS client supports (Ed25519 keys are
newer but are rejected by some clients, including the LibreSSL-based curl that
ships with macOS as of June 2026):
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -noenc -keyout cert.pem -out cert.pem -days 365 -subj "/CN=localhost"
Running ext_http_server
If you have files you want to serve in /tmp/path/to/files/ run the following
to serve them up with a max outgoing throughput of 16KBps:
ext_http_server --cert cert.pem -d /tmp/path/to/files -r16 -a foo:bar
Or run it once without installing:
uvx ext_http_server --cert cert.pem -d /tmp/path/to/files -r16 -a foo:bar
By default, you will be able to access the webserver at
https://localhost:8000. To authenticate, use the
username foo and the password bar as indicated by the -a foo:bar
argument. Note that multiple -a arguments can be added to add more than one
user.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ext_http_server-1.0.1.tar.gz.
File metadata
- Download URL: ext_http_server-1.0.1.tar.gz
- Upload date:
- Size: 31.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d1d02401a88e6a7787ce38cf93d4dcfeb57e85e95e45d7acc83598f0544ab2e
|
|
| MD5 |
a1c67fd738695898912da16c5f09320f
|
|
| BLAKE2b-256 |
550fc4138a44e727f895bf2cc0a6841c0ebcdb8d025fb6191e0ba5970051ee02
|
File details
Details for the file ext_http_server-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ext_http_server-1.0.1-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
631878d1a55d71d2d97644b5b9efe715d6776a649749d0c11d18b524bad3d515
|
|
| MD5 |
d385fb7b611d1899f3e9a5fb13b7bd8f
|
|
| BLAKE2b-256 |
60dcd5e926371c482f7e7973fe0fdaddaeeb20dfb2c8114cebba85f6e46892e1
|