[package]
edition = "2024"
rust-version = "1.96"
name = "hypershunt"
version = "1.1.0"
authors = ["Michael Paddon <michael@paddon.org>"]
build = "build.rs"
include = [
"/src/**/*",
"/build.rs",
"/examples/**/*",
"/README.md",
"/LICENSE",
"/docs/hs-icon.svg",
"/docs/hs-favicon.svg",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "HTTP server and reverse proxy"
homepage = "https://github.com/MichaelPaddon/hypershunt"
documentation = "https://github.com/MichaelPaddon/hypershunt/tree/main/docs"
readme = "README.md"
keywords = [
"http",
"reverse-proxy",
"server",
"tls",
"http3",
]
categories = [
"network-programming",
"web-programming::http-server",
]
license = "BSD-2-Clause"
repository = "https://github.com/MichaelPaddon/hypershunt"
[package.metadata.deb]
maintainer = "Michael Paddon <michael@paddon.org>"
copyright = "2026, Michael Paddon"
license-file = "LICENSE"
extended-description-file = "packaging/description.txt"
depends = "$auto"
recommends = "fail2ban"
section = "net"
priority = "optional"
maintainer-scripts = "packaging/debian"
[[package.metadata.deb.assets]]
source = "target/release/hypershunt"
dest = "usr/bin/hypershunt"
mode = "755"
[[package.metadata.deb.assets]]
source = "packaging/systemd/hypershunt.service"
dest = "usr/lib/systemd/system/hypershunt.service"
mode = "644"
[[package.metadata.deb.assets]]
source = "hypershunt.kdl"
dest = "etc/hypershunt.kdl"
mode = "644"
[[package.metadata.deb.assets]]
source = "docs/*.md"
dest = "usr/share/doc/hypershunt/site/"
mode = "644"
[[package.metadata.deb.assets]]
source = "docs/index.html"
dest = "usr/share/doc/hypershunt/site/"
mode = "644"
[[package.metadata.deb.assets]]
source = "docs/*.svg"
dest = "usr/share/doc/hypershunt/site/"
mode = "644"
[[package.metadata.deb.assets]]
source = "docs/vendor/**/*"
dest = "usr/share/doc/hypershunt/site/vendor/"
mode = "644"
[[package.metadata.deb.assets]]
source = "docs/hypershunt.1"
dest = "usr/share/man/man1/hypershunt.1"
mode = "644"
[[package.metadata.deb.assets]]
source = "packaging/fail2ban/filter.d/hypershunt.conf"
dest = "etc/fail2ban/filter.d/hypershunt.conf"
mode = "644"
[[package.metadata.deb.assets]]
source = "packaging/fail2ban/jail.d/hypershunt.conf"
dest = "etc/fail2ban/jail.d/hypershunt.conf"
mode = "644"
conf-files = [
"/etc/hypershunt.kdl",
"/etc/fail2ban/filter.d/hypershunt.conf",
"/etc/fail2ban/jail.d/hypershunt.conf",
]
[package.metadata.generate-rpm]
post_install_script = "packaging/rpm/postinst.sh"
pre_uninstall_script = "packaging/rpm/prerm.sh"
[package.metadata.generate-rpm.recommends]
fail2ban = "*"
[[package.metadata.generate-rpm.assets]]
source = "target/release/hypershunt"
dest = "/usr/bin/hypershunt"
mode = "755"
[[package.metadata.generate-rpm.assets]]
source = "packaging/systemd/hypershunt.service"
dest = "/usr/lib/systemd/system/hypershunt.service"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "hypershunt.kdl"
dest = "/etc/hypershunt.kdl"
mode = "644"
config = true
[[package.metadata.generate-rpm.assets]]
source = "docs/*.md"
dest = "/usr/share/doc/hypershunt/site/"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "docs/index.html"
dest = "/usr/share/doc/hypershunt/site/"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "docs/*.svg"
dest = "/usr/share/doc/hypershunt/site/"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "docs/vendor/**/*"
dest = "/usr/share/doc/hypershunt/site/vendor/"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "docs/hypershunt.1"
dest = "/usr/share/man/man1/hypershunt.1"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "packaging/fail2ban/filter.d/hypershunt.conf"
dest = "/etc/fail2ban/filter.d/hypershunt.conf"
mode = "644"
config = true
[[package.metadata.generate-rpm.assets]]
source = "packaging/fail2ban/jail.d/hypershunt.conf"
dest = "/etc/fail2ban/jail.d/hypershunt.conf"
mode = "644"
config = true
[[bin]]
name = "hypershunt"
path = "src/main.rs"
[[example]]
name = "h2c_connect_echo"
path = "examples/h2c_connect_echo.rs"
[[example]]
name = "h3get"
path = "examples/h3get.rs"
[dependencies.anyhow]
version = "1"
[dependencies.arc-swap]
version = "1"
[dependencies.argon2]
version = "0.5"
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.bcrypt]
version = "0.19"
[dependencies.brotli]
version = "8"
[dependencies.bytes]
version = "1"
[dependencies.chrono]
version = "0.4"
features = ["alloc"]
default-features = false
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.flate2]
version = "1"
[dependencies.h3]
version = "0.0.8"
[dependencies.h3-quinn]
version = "0.0.10"
[dependencies.http-body-util]
version = "0.1"
[dependencies.httpdate]
version = "1"
[dependencies.hyper]
version = "1"
features = [
"http1",
"http2",
"server",
]
[dependencies.hyper-rustls]
version = "0.27"
features = [
"aws-lc-rs",
"webpki-tokio",
"http1",
"tls12",
]
default-features = false
[dependencies.hyper-util]
version = "0.1"
features = [
"tokio",
"server",
"server-auto",
"client",
"client-legacy",
]
[dependencies.instant-acme]
version = "0.8"
features = [
"aws-lc-rs",
"hyper-rustls",
]
default-features = false
[dependencies.ipnet]
version = "2"
[dependencies.kdl]
version = "6"
[dependencies.ldap3]
version = "0.12"
features = [
"sync",
"tls-rustls-aws-lc-rs",
]
default-features = false
[dependencies.lru]
version = "0.18"
[dependencies.maxminddb]
version = "0.28"
[dependencies.miette]
version = "7"
default-features = false
[dependencies.mime_guess]
version = "2"
[dependencies.openidconnect]
version = "4"
[dependencies.p256]
version = "0.13"
features = [
"ecdsa",
"pkcs8",
"pem",
]
[dependencies.pwhash]
version = "1"
[dependencies.quinn]
version = "0.11"
features = [
"runtime-tokio",
"rustls-aws-lc-rs",
]
default-features = false
[dependencies.rand_core]
version = "0.6"
features = ["getrandom"]
[dependencies.rasn]
version = "0.28"
[dependencies.rasn-ocsp]
version = "0.28"
[dependencies.rasn-pkix]
version = "0.28"
[dependencies.rcgen]
version = "0.14"
features = [
"aws_lc_rs",
"pem",
]
default-features = false
[dependencies.regex]
version = "1"
[dependencies.rustls]
version = "0.23"
features = [
"aws-lc-rs",
"std",
]
default-features = false
[dependencies.rustls-pemfile]
version = "2"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha1]
version = "0.11"
[dependencies.sha2]
version = "0.10"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-rustls]
version = "0.26"
[dependencies.tokio-stream]
version = "0.1"
[dependencies.tower-service]
version = "0.3"
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dependencies.url]
version = "2"
[dependencies.webpki-roots]
version = "1"
[dependencies.x509-parser]
version = "0.18"
[dependencies.zeroize]
version = "1"
[dependencies.zstd]
version = "0.13"
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.rsa]
version = "0.9"
features = ["sha2"]
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.time]
version = "0.3"
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"test-util",
]
[dev-dependencies.tokio-tungstenite]
version = "0.29"
features = [
"handshake",
"connect",
]
default-features = false
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[target."cfg(unix)".dependencies.nix]
version = "0.31"
features = [
"user",
"fs",
"socket",
"process",
"signal",
]
[target."cfg(unix)".dependencies.pam-client2]
version = "0.5"
[profile.release]
opt-level = 3
lto = "thin"
strip = "symbols"