servive-0.4.0 is not a library.
servive - Simple HTTP File Server
A lightweight, secure HTTP file server written in Rust with TLS and basic authentication support.
Features
- Serve files over HTTP/HTTPS
- Basic authentication support
- TLS encryption (via rustls)
- Optional directory listing
- Security headers (CSP, XSS protection, etc.)
- Configurable logging levels
- CLI configuration interface
Installation
From crates.io
From source
Usage
Basic usage
With authentication
With TLS
Disable directory listing
Enable Content Security Policy
Enable HSTS (requires TLS)
With specific bind address
IPv4:
IPv6:
Configuration Options
| Option | Description | Default |
|---|---|---|
-p, --port |
Port to listen on | 8000 |
-d, --directory |
Directory to serve files from | . (current dir) |
--username |
Username for basic auth | None |
--password |
Password for basic auth | None |
--log-level |
Logging level (error, warn, info, debug, trace) | info |
--tls |
Enable TLS | false |
--tls-cert |
TLS certificate file path | None |
--tls-key |
TLS private key file path | None |
--no-list-dirs |
Disable directory listing | false |
-b, --bind |
Bind address (IPv4 or IPv6) | 127.0.0.1 |
--show-dotfiles |
Show dotfiles (hidden by default) | false |
--enable-csp |
Enable Content Security Policy headers | false |
--enable-hsts |
Enable HTTP Strict Transport Security headers | false |
--max-file-size |
Maximum file size in bytes (0 for unlimited) | unlimited |
File Size Limits
If you wish to limit file size served to clients you can:
- Set a custom limit with
--max-file-size BYTES - Allow unlimited file sizes with
--max-file-size 0(this is default)
If limit is set servive will return 403 Forbidden if requested file is larger than the limit.
Security Considerations
- Basic authentication credentials are transmitted in plaintext when not using TLS
- Always use TLS in production environments
- The server adds security headers by default:
- X-Content-Type-Options
- X-Frame-Options
- X-XSS-Protection
- Content-Security-Policy is optional (enabled with --enable-csp)
- HSTS (HTTP Strict Transport Security) is now opt-in (enabled with --enable-hsts when using TLS)
Building from Source
- Clone the repository:
- Build in release mode:
The binary will be available at target/release/servive
License
The project is distributed under the MIT license