ombrac-client 0.7.4

Safe, fast, small TCP over QUIC tunnel using Rust
Documentation
[package]
name = "ombrac-client"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true
keywords.workspace = true
repository.workspace = true
description.workspace = true
readme = "../../README.md"

[[bin]]
name = "ombrac-client"
path = "bin/main.rs"
required-features = ["binary"]

[lib]
name = "ombrac_client"
crate-type = ["staticlib", "cdylib", "rlib"]

[features]
default = ["tracing"]

# Core features
tracing = [
    "dep:tracing",
    "ombrac-macros/tracing",
    "ombrac-netstack/tracing",
    "ombrac-transport/tracing"
]

datagram = [
    "ombrac-transport/datagram",
    "dep:dashmap"
]

# Endpoint features
endpoint-default = ["endpoint-socks"]
endpoint-socks = ["socks-lib"]
endpoint-http = [
    "http", 
    "hyper", 
    "hyper-util", 
    "http-body-util"
]
endpoint-tun = [
    "dep:moka",
    "dep:ipnet",
    "dep:tun-rs",
    "dep:dashmap",
    "dep:crossbeam-queue",
    "dep:hickory-proto",
    "ombrac-netstack"
]

# Composite features
binary = [
    "tracing",
    "datagram",
    "dep:tracing-appender",
    "dep:tracing-subscriber",
    "endpoint-socks",
    "endpoint-http",
    "endpoint-tun"
]

ffi = [
    "tracing",
    "datagram",
    "dep:tracing-appender",
    "dep:tracing-subscriber",
    "endpoint-socks",
    "endpoint-http",
    "endpoint-tun"
]

full = [
    "tracing",
    "datagram",
    "dep:tracing-appender",
    "dep:tracing-subscriber",
    "endpoint-socks",
    "endpoint-http",
    "endpoint-tun"
]

[dependencies]
ombrac = { workspace = true }
ombrac-macros = { workspace = true }
ombrac-transport = { workspace = true, features = ["quic"] }
ombrac-netstack = { workspace = true, optional = true }

bytes = { workspace = true }
blake3 = { workspace = true }
bincode = { workspace = true }
futures = { workspace = true }
arc-swap = { workspace = true }
thiserror = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
clap = { workspace = true, features = ["std", "derive", "color", "help", "usage", "error-context", "suggestions"] }
tokio = { workspace = true, features = ["rt-multi-thread", "net", "macros", "signal", "sync"] }
tokio-util = { workspace = true, features = ["codec"] }
moka = { workspace = true, features = ["future"], optional = true }
tracing = { workspace = true, optional = true }
tracing-appender = { workspace = true, optional = true}
tracing-subscriber = { workspace = true, features = ["ansi", "env-filter", "registry"], optional = true }

# endpoint
socks-lib = { workspace = true, optional = true }
http = { workspace = true, optional = true }
hyper = { workspace = true, features = ["client", "server", "http1"], optional = true }
hyper-util = { workspace = true, features = ["tokio"], optional = true }
http-body-util = { workspace = true, optional = true }
ipnet = { workspace = true, features = ["json"], optional = true }
tun-rs = { workspace = true, features = ["async_tokio", "async_framed"], optional = true }
dashmap = { workspace = true, optional = true }
hickory-proto = { workspace = true, optional = true }
crossbeam-queue = { workspace = true, features = ["std"], optional = true }

[dev-dependencies]
tokio = { workspace = true, features = ["full"] }

[build-dependencies]
cbindgen = { workspace = true }

[lints]
workspace = true