[package] name = "easytier" description = "A full meshed p2p VPN, connecting all your devices in one network with one command." homepage = "https://github.com/KKRainbow/EasyTier" repository = "https://github.com/KKRainbow/EasyTier" version = "0.1.1" edition = "2021" authors = ["kkrainbow"] keywords = ["vpn", "p2p", "network", "easytier"] categories = ["network-programming", "command-line-utilities"] rust-version = "1.75" 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" [[bin]] name = "easytier-cli" path = "src/easytier-cli.rs" test = false [dependencies] tracing = { version = "0.1", features = ["log"] } tracing-subscriber = { version = "0.3", features = [ "env-filter", "local-time", "time", ] } tracing-appender = "0.2.3" log = "0.4" thiserror = "1.0" auto_impl = "1.1.0" crossbeam = "0.8.4" time = "0.3" toml = "0.8.12" chrono = "0.4.35" gethostname = "0.4.3" futures = "0.3" tokio = { version = "1", features = ["full"] } tokio-stream = "0.1" tokio-util = { version = "0.7.9", features = ["codec", "net"] } async-stream = "0.3.5" async-trait = "0.1.74" dashmap = "5.5.3" timedmap = "=1.0.1" # for tap device tun = { version = "0.6.1", features = ["async"] } # for net ns nix = { version = "0.27", features = ["sched", "socket", "ioctl"] } uuid = { version = "1.5.0", features = [ "v4", "fast-rng", "macro-diagnostics", "serde", ] } # for ring tunnel crossbeam-queue = "0.3" once_cell = "1.18.0" # for packet rkyv = { "version" = "0.7.42", features = [ "validation", "archive_le", "strict", "copy_unsafe", "arbitrary_enum_discriminant", ] } postcard = { "version" = "1.0.8", features = ["alloc"] } # for rpc tonic = "0.10" prost = "0.12" anyhow = "1.0" tarpc = { version = "0.32", features = ["tokio1", "serde1"] } 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 = "0.5.5" # for hole punching stun_codec = "0.3.4" bytecodec = "0.4.15" rand = "0.8.5" serde = { version = "1.0", features = ["derive"] } pnet = { version = "0.34.0", features = ["serde"] } public-ip = { version = "0.2", features = ["default"] } clap = { version = "4.4.8", features = ["unicode", "derive", "wrap_help"] } async-recursion = "1.0.5" network-interface = "1.1.1" # for ospf route pathfinding = "4.9.1" # for encryption boringtun = { version = "0.6.0" } # for cli tabled = "0.15.*" humansize = "2.1.3" base64 = "0.21.7" derivative = "2.2.0" [target.'cfg(windows)'.dependencies] windows-sys = { version = "0.52", features = [ "Win32_Networking_WinSock", "Win32_NetworkManagement_IpHelper", "Win32_Foundation", "Win32_System_IO", ] } [build-dependencies] tonic-build = "0.10" [target.'cfg(windows)'.build-dependencies] reqwest = { version = "0.11", features = ["blocking"] } zip = "0.6.6" [dev-dependencies] serial_test = "3.0.0" rstest = "0.18.2" [profile.dev] panic = "unwind" [profile.release] panic = "unwind" lto = true