http-mitm-proxy 0.18.0

A HTTP proxy server library intended to be a backend of application like Burp proxy.
Documentation
[package]
name = "http-mitm-proxy"
version = "0.18.0"
description = "A HTTP proxy server library intended to be a backend of application like Burp proxy."
readme = "README.md"
repository = "https://github.com/hatoo/http-mitm-proxy"
edition = "2024"

authors = ["hatoo <hato2000@gmail.com>"]
license = "MIT"
categories = ["network-programming", "web-programming::http-server"]
keywords = ["http", "proxy", "http-proxy"]
resolver = "2"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[features]
default = ["native-tls-client"]

# You can choose one of the following TLS backends for DefaultClient.
# Or you can drop DefaultClient with setting no-default-features = true
native-tls-client = ["dep:native-tls", "dep:tokio-native-tls"]
rustls-client = ["dep:webpki-roots"]

[dependencies]
tokio = { version = "1.44.1", features = [
    "macros",
    "rt",
    "rt-multi-thread",
    "parking_lot",
    "io-util",
    "net",
] }
hyper = { version = "1.0.1", features = ["http1", "http2", "server", "client"] }
futures = "0.3.29"
bytes = "1.7.1"
http-body-util = "0.1.0"
rcgen = "0.14.3"
tokio-rustls = "0.26.1"
tracing = "0.1.40"
hyper-util = { version = "0.1.11", features = ["tokio"] }
thiserror = "2.0.12"
moka = { version = "0.12.8", features = ["sync"] }

native-tls = { version = "0.2.12", features = ["alpn"], optional = true }
tokio-native-tls = { version = "0.3.1", optional = true }

webpki-roots = { version = "1.0.1", optional = true }

[dev-dependencies]
axum = { version = "0.8.3", features = ["http2"] }
clap = { version = "4.5.35", features = ["derive"] }
ctor = "0.6.1"
rcgen = { version = "0.14.3", features = ["x509-parser", "pem"] }
reqwest = { version = "0.13.1" }
rustls-pki-types = "1.12.0"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
winnow = "0.7.4"