[package] name = "pingap" version = "0.9.0" authors = ["Tree Xie "] edition = "2021" categories = ["network-programming", "web-programming::http-server"] keywords = ["proxy", "http", "gateway"] description = "A reverse proxy like nginx" license = "Apache-2.0" homepage = "https://github.com/vicanso/pingap" repository = "https://github.com/vicanso/pingap" exclude = ["asset/*", "test/*", "Cargo.lock", "web/*", ".github/*", "docs/*"] readme = "./README.md" rust-version = "1.74" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] TinyUFO = "0.4.0" aes-gcm-siv = { version = "0.11.1", default-features = false, features = [ "aes", "alloc", ] } ahash = { version = "0.8.11", default-features = false } arc-swap = "1.7.1" async-trait = "0.1.83" base64 = "0.22.1" bollard = { version = "0.17.1", default-features = false } bytes = "1.8.0" bytesize = { version = "1.3.0", features = ["serde"] } cfg-if = "1.0.0" chrono = { version = "0.4.38", default-features = false, features = [ "std", "clock", ] } clap = { version = "4.5.20", features = [ "derive", "std", "help", "usage", ], default-features = false } cookie = "0.18.1" crc32fast = "1.4.2" crossbeam-channel = "0.5.13" dhat = { version = "0.3.3", optional = true } diff = "0.1.13" dirs = "5.0.1" etcd-client = "0.14.0" flate2 = "1.0.34" futures = "0.3.31" futures-util = "0.3.31" glob = "0.3.1" hex = "0.4.3" hickory-resolver = "0.24.1" hmac-sha256 = "1.1.7" hmac-sha512 = { version = "1.1.5", default-features = false } hostname = "0.4.0" http = "1.1.0" humantime = "2.1.0" humantime-serde = "1.1.1" instant-acme = "0.7.2" ipnet = "2.10.1" itoa = "1.0.11" libc = "0.2.161" local-ip-address = "0.6.3" memory-stats = { version = "1.2.0", features = ["always_use_statm"] } mime_guess = "2.0.5" nanoid = "0.4.0" nix = { version = "0.29.0", features = ["signal"] } num_cpus = "1.16.0" once_cell = "1.20.2" opentelemetry = { version = "0.24.0", default-features = false, features = [ "trace", ], optional = true } opentelemetry-http = { version = "0.13.0", default-features = false, optional = true } opentelemetry-jaeger-propagator = { version = "0.3.0", optional = true } opentelemetry-otlp = { version = "0.17.0", default-features = false, features = [ "grpc-tonic", "trace", ], optional = true } opentelemetry_sdk = { version = "0.24.1", features = [ "rt-tokio", ], default-features = false, optional = true } path-absolutize = "3.1.1" # pingora = { git = "https://github.com/cloudflare/pingora", rev = "1c6eed066b57e5bf387b7ebcad9e447515dece80", default-features = false, features = [ pingora = { version = "0.4.0", default-features = false, features = [ "lb", "openssl", "cache", ] } pingora-limits = "0.4.0" pingora-runtime = "0.4.0" prometheus = { version = "0.13.4", default-features = false, optional = true } pyroscope = { version = "0.5.7", optional = true } pyroscope_pprofrs = { version = "0.2.7", optional = true } rcgen = "0.13.1" regex = { version = "1.11.1", default-features = false } reqwest = { version = "0.12.9", default-features = false, features = [ "json", "default-tls", ] } rust-embed = { version = "8.5.0", features = [ "mime-guess", "compression", ], default-features = false } rustc_version_runtime = "0.3.0" rustls-pemfile = "2.2.0" scopeguard = "1.2.0" sentry = { version = "0.26", default-features = false, optional = true } serde = "1.0.214" serde_json = "1.0.132" sha2 = { version = "0.10.8", default-features = false } snafu = { version = "0.8.5", features = ["std"], default-features = false } strum = { version = "0.26.3", features = ["derive"] } substring = "1.4.5" sysinfo = { version = "0.32.0", features = [ "system", ], default-features = false } tempfile = "3.13.0" time = { version = "0.3.36", features = ["local-offset"] } tokio = { version = "1.41.0", default-features = false, features = ["fs"] } toml = "0.8.19" tracing = "0.1.40" tracing-appender = "0.2.3" tracing-subscriber = { version = "0.3.18", features = [ "local-time", "json", "fmt", "ansi", ], default-features = false } url = "2.5.2" urlencoding = "2.1.3" uuid = { version = "1.11.0", features = [ "v7", "std", "fast-rng", ], default-features = false } walkdir = "2.5.0" x509-parser = "0.16.0" [target.'cfg(target_os = "linux")'.dependencies] procfs = { version = "0.17.0", default-features = false } [features] pyro = ["pyroscope", "pyroscope_pprofrs"] full = [ "prometheus", "sentry", "opentelemetry", "opentelemetry-http", "opentelemetry-otlp", "opentelemetry_sdk", "opentelemetry-jaeger-propagator", "pingora/sentry", ] perf = ["pyro", "dhat", "full"] default = [] [dev-dependencies] criterion = { version = "0.5.1", features = ["html_reports"] } pretty_assertions = "1.4.0" tokio-test = "0.4.4" [profile.release] codegen-units = 1 lto = true strip = "debuginfo" [profile.release-perf] inherits = "release" debug = 1 strip = "none" [[bench]] name = "bench" harness = false