[package]
edition = "2024"
rust-version = "1.85.0"
name = "static-web-server"
version = "2.41.0"
authors = ["Jose Quintana <https://joseluisq.net>"]
build = "build.rs"
include = [
"src/**/*.rs",
"build.rs",
"Cargo.toml",
"README.md",
"LICENSE-MIT",
"LICENSE-APACHE",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A cross-platform, high-performance and asynchronous web server for static files-serving."
homepage = "https://static-web-server.net"
readme = "README.md"
keywords = [
"static-web-server",
"file-server",
"http-server",
]
categories = [
"network-programming",
"web-programming::http-server",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/static-web-server/static-web-server"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
"--cfg",
"tokio_unstable",
]
rustc-args = [
"--cfg",
"tokio_unstable",
]
[package.metadata.cross.target.x86_64-unknown-netbsd]
pre-build = [
"mkdir -p /tmp/netbsd",
"curl -fO https://ftp.uni-erlangen.de/netbsd/NetBSD-9.4/amd64/binary/sets/base.tar.xz",
"tar -C /tmp/netbsd -xJf base.tar.xz",
"cp /tmp/netbsd/usr/lib/libexecinfo.so /usr/local/x86_64-unknown-netbsd/lib",
"rm -rf base.tar.xz /tmp/netbsd",
]
[features]
all = [
"default",
"experimental",
]
basic-auth = ["bcrypt"]
compression = [
"compression-brotli",
"compression-deflate",
"compression-gzip",
"compression-zstd",
]
compression-brotli = ["async-compression/brotli"]
compression-deflate = ["async-compression/deflate"]
compression-gzip = ["async-compression/deflate"]
compression-zstd = ["async-compression/zstd"]
default = [
"compression",
"http2",
"directory-listing",
"directory-listing-download",
"basic-auth",
"fallback-page",
]
directory-listing = ["chrono"]
directory-listing-download = [
"async-tar",
"compression-gzip",
"directory-listing",
]
experimental = [
"tokio-metrics-collector",
"prometheus",
"compact_str",
"mini-moka",
]
fallback-page = []
http2 = [
"tokio-rustls",
"rustls-pki-types",
]
[lib]
name = "static_web_server"
path = "src/lib.rs"
[[bin]]
name = "static-web-server"
path = "src/bin/server.rs"
doc = false
[dependencies.aho-corasick]
version = "1.1.4"
[dependencies.anyhow]
version = "1.0"
[dependencies.async-compression]
version = "0.4"
features = [
"brotli",
"deflate",
"gzip",
"zstd",
"tokio",
]
optional = true
default-features = false
[dependencies.async-tar]
version = "0.5.1"
optional = true
[dependencies.bcrypt]
version = "0.18.0"
optional = true
[dependencies.bytes]
version = "1.11.1"
[dependencies.chrono]
version = "0.4"
features = [
"std",
"clock",
]
optional = true
default-features = false
[dependencies.clap]
version = "4.5"
features = [
"derive",
"env",
]
[dependencies.clap_allgen]
version = "0.2.1"
[dependencies.compact_str]
version = "0.9.0"
optional = true
[dependencies.form_urlencoded]
version = "1.2"
[dependencies.futures-util]
version = "0.3"
default-features = false
[dependencies.globset]
version = "0.4.18"
features = ["serde1"]
[dependencies.headers]
version = "0.3"
[dependencies.http]
version = "0.2"
[dependencies.http-serde]
version = "1.1"
[dependencies.hyper]
version = "0.14"
features = [
"stream",
"http1",
"http2",
"tcp",
"server",
]
[dependencies.listenfd]
version = "1.0"
[dependencies.maud]
version = "0.27"
[dependencies.mime_guess]
version = "2.0"
[dependencies.mini-moka]
version = "0.10.3"
optional = true
[dependencies.percent-encoding]
version = "2.3"
[dependencies.pin-project]
version = "1.1"
[dependencies.regex-lite]
version = "0.1.8"
[dependencies.rustls-pki-types]
version = "1.13.2"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
default-features = false
[dependencies.serde_ignored]
version = "0.1"
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_repr]
version = "0.1"
[dependencies.shadow-rs]
version = "1.4.0"
[dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"fs",
"io-util",
"signal",
]
default-features = false
[dependencies.tokio-rustls]
version = "0.26"
features = [
"logging",
"tls12",
"ring",
]
optional = true
default-features = false
[dependencies.tokio-util]
version = "0.7"
features = [
"compat",
"io",
]
default-features = false
[dependencies.toml]
version = "0.9"
[dependencies.tracing]
version = "0.1"
features = ["std"]
default-features = false
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"smallvec",
"registry",
"parking_lot",
"fmt",
"ansi",
"tracing-log",
]
default-features = false
[dev-dependencies.bytes]
version = "1.11.1"
[dev-dependencies.serde_json]
version = "1.0"
[build-dependencies.shadow-rs]
version = "1.4.0"
[target.'cfg(all(target_env = "musl", target_pointer_width = "64"))'.dependencies.mimalloc]
version = "0.1.48"
[target."cfg(unix)".dependencies.prometheus]
version = "0.14.0"
optional = true
default-features = false
[target."cfg(unix)".dependencies.signal-hook]
version = "0.4.1"
features = ["extended-siginfo"]
[target."cfg(unix)".dependencies.signal-hook-tokio]
version = "0.4.0"
features = ["futures-v0_3"]
default-features = false
[target."cfg(unix)".dependencies.tokio-metrics-collector]
version = "0.3.1"
optional = true
[target."cfg(windows)".dependencies.windows-service]
version = "0.8"
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
debug = 0
debug-assertions = false
rpath = false
panic = "abort"
strip = true