[package]
name = "shadowvpn"
version = "0.1.1"
edition = "2021"
description = "A UDP-based, pre-shared-key (PSK), user-mode VPN using the shadowsocks AEAD UDP wire scheme."
license = "MIT"
repository = "https://github.com/madeye/shadowvpn"
homepage = "https://github.com/madeye/shadowvpn"
documentation = "https://docs.rs/shadowvpn"
readme = "README.md"
keywords = ["vpn", "tunnel", "shadowsocks", "udp", "aead"]
categories = ["network-programming", "command-line-utilities"]
exclude = ["/docker", "/.github", "/scripts"]
[package.metadata.docs.rs]
all-features = true
[lib]
name = "shadowvpn"
path = "src/lib.rs"
[[bin]]
name = "shadowvpn-server"
path = "src/bin/server.rs"
[[bin]]
name = "shadowvpn-client"
path = "src/bin/client.rs"
[[bin]]
name = "shadowvpn-uri"
path = "src/bin/uri.rs"
required-features = ["uri"]
[features]
default = []
uri = ["dep:base64", "dep:qrcode", "dep:rqrr", "dep:image"]
[dependencies]
tokio = { version = "1.52", features = ["full"] }
tun-rs = { version = "2.8", features = ["async_tokio"] }
aead = { version = "0.6", features = ["alloc"] }
aes-gcm = { version = "0.11.0-rc.4", features = ["alloc"] }
chacha20poly1305 = { version = "0.11.0-rc.3", features = ["alloc"] }
hkdf = "0.13"
sha1 = "0.11"
md-5 = "0.11"
anyhow = "1.0"
thiserror = "2.0"
clap = { version = "4.6", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
rand = "0.10"
log = "0.4"
env_logger = "0.11"
maxminddb = "0.28.1"
ipnetwork = "0.21.1"
libc = "0.2.186"
base64 = { version = "0.22", optional = true }
qrcode = { version = "0.14", optional = true }
rqrr = { version = "0.9", optional = true }
image = { version = "0.25", default-features = false, features = [
"png",
"jpeg",
], optional = true }
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_Networking_WinSock",
"Win32_NetworkManagement_IpHelper",
"Win32_NetworkManagement_Ndis",
] }