triglav 0.2.0

High-performance multi-path networking tool with intelligent uplink management
Documentation
[[bin]]
name = "triglav"
path = "src/main.rs"

[[bin]]
name = "triglav-server"
path = "src/bin/server.rs"

[[bin]]
name = "tun_test"
path = "src/bin/tun_test.rs"

[dependencies.anyhow]
version = "1.0"

[dependencies.argon2]
version = "0.5"

[dependencies.async-trait]
version = "0.1"

[dependencies.axum]
optional = true
version = "0.7"

[dependencies.base64]
version = "0.22"

[dependencies.bincode]
version = "1.3"

[dependencies.blake3]
version = "1.5"

[dependencies.byteorder]
version = "1.5"

[dependencies.bytes]
version = "1.5"

[dependencies.chacha20poly1305]
version = "0.10"

[dependencies.chrono]
features = ["serde"]
version = "0.4"

[dependencies.clap]
features = ["derive", "env", "unicode", "wrap_help", "cargo"]
optional = true
version = "4.4"

[dependencies.clap_complete]
version = "4.4"

[dependencies.colored]
optional = true
version = "2.1"

[dependencies.comfy-table]
version = "7.1"

[dependencies.console]
version = "0.15"

[dependencies.constant_time_eq]
version = "0.3"

[dependencies.crc32fast]
version = "1.3"

[dependencies.crossbeam-channel]
version = "0.5"

[dependencies.crossbeam-queue]
version = "0.3"

[dependencies.daemonize]
version = "0.5"

[dependencies.dashmap]
version = "5.5"

[dependencies.dialoguer]
optional = true
version = "0.11"

[dependencies.directories]
version = "5.0"

[dependencies.ed25519-dalek]
features = ["rand_core", "hazmat"]
version = "2.1"

[dependencies.futures]
version = "0.3"

[dependencies.hex]
version = "0.4"

[dependencies.hkdf]
version = "0.12"

[dependencies.hmac]
version = "0.12"

[dependencies.http-body-util]
optional = true
version = "0.1"

[dependencies.humantime]
version = "2.1"

[dependencies.humantime-serde]
version = "1.1"

[dependencies.hyper]
features = ["server", "http1"]
optional = true
version = "1.4"

[dependencies.hyper-util]
features = ["tokio"]
optional = true
version = "0.1"

[dependencies.indexmap]
features = ["serde"]
version = "2.1"

[dependencies.indicatif]
features = ["tokio"]
optional = true
version = "0.17"

[dependencies.libc]
version = "0.2"

[dependencies.nix]
features = ["net", "socket", "ioctl", "signal", "fs", "user"]
version = "0.28"

[dependencies.num_cpus]
version = "1.16"

[dependencies.parking_lot]
version = "0.12"

[dependencies.pin-project-lite]
version = "0.2"

[dependencies.priority-queue]
version = "2.0"

[dependencies.prometheus]
optional = true
version = "0.13"

[dependencies.quinn]
version = "0.11"

[dependencies.rand]
version = "0.8"

[dependencies.rand_chacha]
version = "0.3"

[dependencies.rcgen]
version = "0.13"

[dependencies.reqwest]
default-features = false
features = ["rustls-tls", "json"]
version = "0.12"

[dependencies.rusqlite]
features = ["bundled"]
version = "0.31"

[dependencies.rustls]
default-features = false
features = ["ring", "std"]
version = "0.23"

[dependencies.serde]
features = ["derive"]
version = "1.0"

[dependencies.serde_json]
version = "1.0"

[dependencies.sha2]
version = "0.10"

[dependencies.shellexpand]
version = "3.1"

[dependencies.signal-hook]
version = "0.3"

[dependencies.signal-hook-tokio]
features = ["futures-v0_3"]
version = "0.3"

[dependencies.smallvec]
features = ["serde"]
version = "1.13"

[dependencies.snow]
version = "0.9"

[dependencies.socket2]
features = ["all"]
version = "0.5"

[dependencies.statrs]
version = "0.16"

[dependencies.thiserror]
version = "1.0"

[dependencies.tokio]
features = ["full", "tracing", "parking_lot"]
version = "1.35"

[dependencies.tokio-util]
features = ["codec", "io"]
version = "0.7"

[dependencies.toml]
version = "0.8"

[dependencies.tower]
optional = true
version = "0.4"

[dependencies.tower-http]
features = ["cors", "trace"]
optional = true
version = "0.5"

[dependencies.tracing]
version = "0.1"

[dependencies.tracing-appender]
version = "0.2"

[dependencies.tracing-subscriber]
features = ["env-filter", "json", "parking_lot"]
version = "0.3"

[dependencies.url]
features = ["serde"]
version = "2.5"

[dependencies.uuid]
features = ["v4", "serde"]
version = "1.6"

[dependencies.webpki-roots]
version = "0.26"

[dependencies.x25519-dalek]
features = ["static_secrets"]
version = "2.0"

[dependencies.zeroize]
features = ["derive"]
version = "1.7"

[dev-dependencies.criterion]
features = ["async_tokio"]
version = "0.5"

[dev-dependencies.mockall]
version = "0.12"

[dev-dependencies.proptest]
version = "1.4"

[dev-dependencies.tempfile]
version = "3.9"

[dev-dependencies.test-case]
version = "3.3"

[dev-dependencies.tokio-test]
version = "0.4"

[features]
cli = ["clap", "colored", "indicatif", "dialoguer"]
default = ["cli", "metrics", "server"]
full = ["cli", "metrics", "server"]
metrics = ["prometheus", "hyper", "hyper-util", "http-body-util"]
server = ["axum", "tower", "tower-http"]

[lib]
name = "triglav"
path = "src/lib.rs"

[package]
authors = ["Kenan Sulayman <triglav@int.mov"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["network-programming", "command-line-utilities"]
description = "High-performance multi-path networking tool with intelligent uplink management"
edition = "2021"
keywords = ["networking", "multipath", "vpn", "tunnel", "encryption"]
license = "MIT"
name = "triglav"
readme = "README.md"
repository = "https://github.com/19h/triglav"
version = "0.2.0"

[profile.bench]
debug = 2
inherits = "release"

[profile.release]
codegen-units = 1
lto = "thin"
opt-level = 3
panic = "abort"
strip = true

[profile.release-with-debug]
debug = 2
inherits = "release"
strip = false

[target.'cfg(target_os = "linux")'.dependencies.netlink-packet-core]
version = "0.7"

[target.'cfg(target_os = "linux")'.dependencies.netlink-packet-route]
version = "0.19"

[target.'cfg(target_os = "linux")'.dependencies.rtnetlink]
version = "0.14"

[target.'cfg(target_os = "macos")'.dependencies.core-foundation]
version = "0.9"

[target.'cfg(target_os = "macos")'.dependencies.system-configuration]
version = "0.6"

[[test]]
name = "aggregation_impairment"
path = "tests/aggregation_impairment.rs"

[[test]]
name = "boundary_edge_cases"
path = "tests/boundary_edge_cases.rs"

[[test]]
name = "e2e_multipath"
path = "tests/e2e_multipath.rs"

[[test]]
name = "error_recovery"
path = "tests/error_recovery.rs"

[[test]]
name = "integration"
path = "tests/integration.rs"

[[test]]
name = "network_impairment_simulation"
path = "tests/network_impairment_simulation.rs"

[[test]]
name = "physical_multipath"
path = "tests/physical_multipath.rs"

[[test]]
name = "scheduler_strategies"
path = "tests/scheduler_strategies.rs"

[[test]]
name = "security_edge_cases"
path = "tests/security_edge_cases.rs"

[[test]]
name = "stress_tests"
path = "tests/stress_tests.rs"

[[test]]
name = "tcp_transport"
path = "tests/tcp_transport.rs"

[[test]]
name = "tun_test"
path = "tests/tun_test.rs"