This commit is contained in:
ssrlive 2023-10-21 00:00:28 +08:00
parent 9f53198f17
commit f212e85c41
4 changed files with 33 additions and 1069 deletions

3
.gitignore vendored
View file

@ -1,3 +1,6 @@
.vscode/
.VSCodeCounter/
Cargo.lock
/target
/.idea
.envrc

1060
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -14,27 +14,45 @@ repository = "https://github.com/aramperes/onetun"
boringtun = { version = "0.4.0", default-features = false }
log = "0.4"
anyhow = "1"
tokio = { version = "1", features = [ "rt", "sync", "io-util", "net", "time", "fs", "macros" ] }
tokio = { version = "1", features = [
"rt",
"sync",
"io-util",
"net",
"time",
"fs",
"macros",
] }
futures = "0.3"
rand = "0.8"
nom = "7"
async-trait = "0.1"
priority-queue = "1.3.0"
smoltcp = { version = "0.8.2", default-features = false, features = ["std", "log", "medium-ip", "proto-ipv4", "proto-ipv6", "socket-udp", "socket-tcp"] }
priority-queue = "1.3"
smoltcp = { version = "0.8.2", default-features = false, features = [
"std",
"log",
"medium-ip",
"proto-ipv4",
"proto-ipv6",
"socket-udp",
"socket-tcp",
] }
bytes = "1"
base64 = "0.13"
base64 = "0.21"
# forward boringtuns tracing events to log
tracing = { version = "0.1", default-features = false, features = ["log"] }
# bin-only dependencies
clap = { version = "2.34", default-features = false, features = ["suggestions"], optional = true }
pretty_env_logger = { version = "0.4", optional = true }
clap = { version = "2.34", default-features = false, features = [
"suggestions",
], optional = true }
pretty_env_logger = { version = "0.5", optional = true }
async-recursion = "1.0"
[features]
pcap = []
default = [ "bin" ]
bin = [ "clap", "pretty_env_logger", "pcap", "tokio/rt-multi-thread" ]
default = ["bin"]
bin = ["clap", "pretty_env_logger", "pcap", "tokio/rt-multi-thread"]
[lib]

View file

@ -314,7 +314,10 @@ fn parse_public_key(s: Option<&str>) -> anyhow::Result<X25519PublicKey> {
fn parse_preshared_key(s: Option<&str>) -> anyhow::Result<Option<[u8; 32]>> {
if let Some(s) = s {
let psk = base64::decode(s).with_context(|| "Invalid pre-shared key")?;
use base64::{engine::general_purpose, Engine as _};
let psk = general_purpose::STANDARD
.decode(s)
.with_context(|| "Invalid pre-shared key")?;
Ok(Some(psk.try_into().map_err(|_| {
anyhow::anyhow!("Unsupported pre-shared key")
})?))