Files
Easytier_lkddi/easytier/Cargo.toml
T

324 lines
8.1 KiB
TOML
Raw Permalink Normal View History

[package]
name = "easytier"
description = "A full meshed p2p VPN, connecting all your devices in one network with one command."
2024-08-03 13:31:23 +08:00
homepage = "https://github.com/EasyTier/EasyTier"
repository = "https://github.com/EasyTier/EasyTier"
2025-08-11 09:03:13 +08:00
version = "2.4.2"
edition = "2021"
authors = ["kkrainbow"]
keywords = ["vpn", "p2p", "network", "easytier"]
categories = ["network-programming", "command-line-utilities"]
2025-08-10 22:56:41 +08:00
rust-version = "1.89.0"
license-file = "LICENSE"
readme = "README.md"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[[bin]]
name = "easytier-core"
path = "src/easytier-core.rs"
2024-10-26 00:04:22 +08:00
test = false
[[bin]]
name = "easytier-cli"
path = "src/easytier-cli.rs"
2024-04-06 22:44:30 +08:00
[lib]
name = "easytier"
path = "src/lib.rs"
[dependencies]
2024-09-18 22:25:47 +08:00
git-version = "0.3.9"
tracing = { version = "0.1", features = ["log"] }
tracing-subscriber = { version = "0.3", features = [
"env-filter",
"local-time",
"time",
] }
tracing-appender = "0.2.3"
thiserror = "1.0"
auto_impl = "1.1.0"
crossbeam = "0.8.4"
2025-07-24 22:13:45 +08:00
arc-swap = "1.7"
time = "0.3"
toml = "0.8.12"
2024-06-04 23:06:10 +08:00
chrono = { version = "0.4.37", features = ["serde"] }
2024-08-07 21:27:38 +08:00
gethostname = "0.5.0"
2024-04-25 23:25:37 +08:00
futures = { version = "0.3", features = ["bilock", "unstable"] }
tokio = { version = "1", features = ["full"] }
tokio-stream = "0.1"
tokio-util = { version = "0.7.9", features = ["codec", "net", "io"] }
async-stream = "0.3.5"
async-trait = "0.1.74"
2024-08-07 21:27:38 +08:00
dashmap = "6.0"
timedmap = "=1.0.1"
2024-04-24 23:12:46 +08:00
# for full-path zero-copy
zerocopy = { version = "0.7.32", features = ["derive", "simd"] }
bytes = "1.5.0"
pin-project-lite = "0.2.13"
2024-08-07 21:27:38 +08:00
tachyonix = "0.3.0"
2024-04-24 23:12:46 +08:00
2025-06-15 19:43:45 +08:00
quinn = { version = "0.11.8", optional = true, features = ["ring"] }
2024-05-11 22:46:23 +08:00
rustls = { version = "0.23.0", features = [
"ring",
], default-features = false, optional = true }
2024-11-21 10:32:03 +08:00
rcgen = { version = "0.12.1", optional = true }
2024-04-24 23:12:46 +08:00
2024-05-11 22:46:23 +08:00
# for websocket
2024-08-07 21:27:38 +08:00
tokio-websockets = { version = "0.8", optional = true, features = [
2024-05-11 22:46:23 +08:00
"rustls-webpki-roots",
"client",
"server",
"fastrand",
"ring",
] }
http = { version = "1", default-features = false, features = [
"std",
], optional = true }
tokio-rustls = { version = "0.26", default-features = false, optional = true }
# for tap device
2025-07-02 09:44:45 +08:00
tun = { package = "tun-easytier", git="https://github.com/EasyTier/rust-tun", features = [
2024-08-07 21:27:38 +08:00
"async",
], optional = true }
# for net ns
2025-07-19 22:56:19 +08:00
nix = { version = "0.29.0", features = ["sched", "socket", "ioctl", "net", "fs"] }
uuid = { version = "1.5.0", features = [
"v4",
"fast-rng",
"macro-diagnostics",
"serde",
] }
# for ring tunnel
once_cell = "1.18.0"
# for rpc
2024-08-07 21:27:38 +08:00
prost = "0.13"
prost-types = "0.13"
anyhow = "1.0"
url = { version = "2.5", features = ["serde"] }
percent-encoding = "2.3.1"
# for tun packet
byteorder = "1.5.0"
# for proxy
cidr = { version = "0.2.2", features = ["serde"] }
socket2 = { version = "0.5.10", features = ["all"] }
# for hole punching
stun_codec = "0.3.4"
bytecodec = "0.4.15"
rand = "0.8.5"
serde = { version = "1.0", features = ["derive"] }
2024-08-07 21:27:38 +08:00
pnet = { version = "0.35.0", features = ["serde"] }
2024-09-27 21:42:11 +08:00
serde_json = "1"
2025-02-19 23:30:10 +08:00
clap = { version = "4.5.30", features = [
2024-08-08 00:08:59 +08:00
"string",
"unicode",
"derive",
"wrap_help",
"env",
2024-08-08 00:08:59 +08:00
] }
2025-07-17 08:35:49 -04:00
clap_complete = { version = "4.5.55" }
async-recursion = "1.0.5"
2024-08-07 21:27:38 +08:00
network-interface = "2.0"
# for ospf route
2025-04-10 10:02:04 +08:00
petgraph = "0.8.1"
hashbrown = "0.15.3"
2024-08-25 00:44:45 +08:00
# for wireguard
boringtun = { package = "boringtun-easytier", version = "0.6.1", optional = true }
# for encryption
2024-05-07 23:14:29 +08:00
ring = { version = "0.17", optional = true }
2024-04-27 13:44:59 +08:00
bitflags = "2.5"
2024-05-03 07:55:00 +08:00
aes-gcm = { version = "0.10.3", optional = true }
openssl = { version = "0.10", optional = true, features = ["vendored"] }
# for cli
2024-08-07 21:27:38 +08:00
tabled = "0.16"
humansize = "2.1.3"
2024-08-07 21:27:38 +08:00
base64 = "0.22"
2025-06-05 11:55:44 +08:00
mimalloc = { version = "*", optional = true }
2024-05-03 07:55:00 +08:00
2025-02-18 23:10:41 +08:00
# mips
2024-05-03 07:55:00 +08:00
atomic-shim = "0.2.0"
2024-04-26 23:02:07 +08:00
2025-01-26 00:41:15 +08:00
smoltcp = { version = "0.12.0", optional = true, default-features = false, features = [
2024-06-11 09:09:32 +08:00
"std",
"medium-ip",
"proto-ipv4",
"proto-ipv6",
2025-04-01 09:59:53 +08:00
"proto-ipv4-fragmentation",
"fragmentation-buffer-size-8192",
"assembler-max-segment-count-16",
"reassembly-buffer-size-8192",
"reassembly-buffer-count-16",
2024-06-11 09:09:32 +08:00
"socket-tcp",
2025-04-01 09:59:53 +08:00
"socket-udp",
# "socket-tcp-cubic",
2024-06-11 09:09:32 +08:00
"async",
] }
2024-06-10 10:27:24 +08:00
parking_lot = { version = "0.12.0", optional = true }
2024-08-03 15:12:54 +08:00
wildmatch = "2.3.4"
2024-08-21 11:00:13 +08:00
rust-i18n = "3"
2024-08-08 00:08:59 +08:00
sys-locale = "0.3"
ringbuf = "0.4.5"
async-ringbuf = "0.3.1"
2025-04-01 09:59:53 +08:00
service-manager = { git = "https://github.com/chipsenkbeil/service-manager-rs.git", branch = "main" }
2024-11-16 09:01:58 +08:00
zstd = { version = "0.13" }
2025-07-20 19:15:28 +08:00
kcp-sys = { git = "https://github.com/EasyTier/kcp-sys", rev = "0f0a0558391ba391c089806c23f369651f6c9eeb" }
2025-01-26 00:41:15 +08:00
2025-02-19 23:30:10 +08:00
prost-reflect = { version = "0.14.5", default-features = false, features = [
"derive",
] }
2025-02-18 23:10:41 +08:00
# for http connector
2025-04-01 09:59:53 +08:00
http_req = { git = "https://github.com/EasyTier/http_req.git", default-features = false, features = [
"rust-tls",
] }
2025-02-18 23:10:41 +08:00
2025-03-08 11:58:49 +08:00
# for dns connector
2025-05-11 08:46:31 +08:00
hickory-resolver = "0.25.2"
hickory-proto = "0.25.2"
2025-03-08 11:58:49 +08:00
2025-05-16 09:24:24 +08:00
# for magic dns
hickory-client = "0.25.2"
hickory-server = { version = "0.25.2", features = ["resolver"] }
derive_builder = "0.20.2"
humantime-serde = "1.1.1"
multimap = "0.10.0"
version-compare = "0.2.0"
2024-10-26 00:04:22 +08:00
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows", target_os = "freebsd"))'.dependencies]
machine-uid = "0.5.3"
[target.'cfg(any(target_os = "linux"))'.dependencies]
netlink-sys = "0.8.7"
netlink-packet-route = "0.21.0"
netlink-packet-core = { version = "0.7.0" }
netlink-packet-utils = "0.5.2"
2025-05-16 09:24:24 +08:00
# for magic dns
resolv-conf = "0.7.3"
dbus = { version = "0.9.7", features = ["vendored"] }
which = "7.0.3"
[target.'cfg(windows)'.dependencies]
2025-02-06 11:19:10 +08:00
windows = { version = "0.52.0", features = [
"Win32_Foundation",
2025-02-06 11:19:10 +08:00
"Win32_NetworkManagement_WindowsFirewall",
"Win32_System_Com",
"Win32_Networking",
"Win32_System_Ole",
"Win32_Networking_WinSock",
"Win32_System_IO",
2025-04-01 09:59:53 +08:00
] }
2024-05-15 20:50:11 +08:00
encoding = "0.2"
2024-08-07 21:27:38 +08:00
winreg = "0.52"
windows-service = "0.7.0"
windows-sys = { version = "0.52", features = [
"Win32_NetworkManagement_IpHelper",
"Win32_NetworkManagement_Ndis",
"Win32_Networking_WinSock",
"Win32_Foundation"
]}
winapi = { version = "0.3.9", features = ["impl-default"] }
2025-07-20 19:15:28 +08:00
[target.'cfg(not(windows))'.dependencies]
2025-08-08 17:54:39 +08:00
jemallocator = { package = "tikv-jemallocator", version = "0.6.0", optional = true, features = [
"unprefixed_malloc_on_supported_platforms"
] }
2025-07-20 19:15:28 +08:00
jemalloc-ctl = { package = "tikv-jemalloc-ctl", version = "0.6.0", optional = true, features = [
] }
jemalloc-sys = { package = "tikv-jemalloc-sys", version = "0.6.0", features = [
"background_threads_runtime_support",
"background_threads",
], optional = true }
[build-dependencies]
2024-08-07 21:27:38 +08:00
tonic-build = "0.12"
2024-08-08 00:08:59 +08:00
globwalk = "0.8.1"
regex = "1"
prost-build = "0.13.2"
2025-04-01 09:59:53 +08:00
rpc_build = { package = "easytier-rpc-build", version = "0.1.0", features = [
"internal-namespace",
] }
prost-reflect-build = { version = "0.14.0" }
[target.'cfg(windows)'.build-dependencies]
2025-02-18 23:10:41 +08:00
reqwest = { version = "0.12.12", features = ["blocking"] }
zip = "4.0.0"
2025-04-25 22:27:36 +08:00
# enable thunk-rs when compiling for x86_64 or i686 windows
[target.x86_64-pc-windows-msvc.build-dependencies]
thunk-rs = { git = "https://github.com/easytier/thunk.git", default-features = false, features = ["win7"] }
[target.i686-pc-windows-msvc.build-dependencies]
thunk-rs = { git = "https://github.com/easytier/thunk.git", default-features = false, features = ["win7"] }
[dev-dependencies]
serial_test = "3.0.0"
2025-06-14 11:42:45 +08:00
rstest = "0.25.0"
2024-08-31 14:37:34 +08:00
futures-util = "0.3.30"
2025-05-16 09:24:24 +08:00
maplit = "1.0.2"
2024-07-15 00:03:55 +08:00
[target.'cfg(target_os = "linux")'.dev-dependencies]
2024-04-24 23:12:46 +08:00
defguard_wireguard_rs = "0.4.2"
2024-08-17 20:15:32 +08:00
tokio-socks = "0.5.2"
2024-05-03 07:55:00 +08:00
[features]
2025-07-20 19:15:28 +08:00
default = ["wireguard", "websocket", "smoltcp", "tun", "socks5", "quic"]
2024-06-11 09:09:32 +08:00
full = [
"websocket",
"wireguard",
"aes-gcm",
"openssl-crypto", # need openssl-dev libs
2024-06-11 09:09:32 +08:00
"smoltcp",
"tun",
2024-08-14 23:26:15 +08:00
"socks5",
2024-06-11 09:09:32 +08:00
]
2024-05-03 07:55:00 +08:00
wireguard = ["dep:boringtun", "dep:ring"]
2025-06-19 21:15:04 +08:00
quic = ["dep:quinn", "dep:rustls", "dep:rcgen"]
2025-06-05 11:55:44 +08:00
mimalloc = ["dep:mimalloc"]
2024-05-03 07:55:00 +08:00
aes-gcm = ["dep:aes-gcm"]
openssl-crypto = ["dep:openssl"]
2024-06-11 09:09:32 +08:00
tun = ["dep:tun"]
2024-06-02 09:15:40 +08:00
websocket = [
"dep:tokio-websockets",
"dep:http",
"dep:tokio-rustls",
"dep:rustls",
"dep:rcgen",
]
2024-06-10 10:27:24 +08:00
smoltcp = ["dep:smoltcp", "dep:parking_lot"]
2024-08-14 23:26:15 +08:00
socks5 = ["dep:smoltcp"]
2025-07-20 19:15:28 +08:00
jemalloc = ["dep:jemallocator", "dep:jemalloc-sys"]
jemalloc-prof = ["jemalloc", "dep:jemalloc-ctl", "jemalloc-ctl/stats", "jemalloc-sys/profiling", "jemalloc-sys/stats"]