ssrlive
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with
21 additions and
15 deletions
-
Cargo.toml
-
src/bin/main.rs
-
src/lib.rs
|
|
|
@ -15,7 +15,7 @@ crate-type = ["staticlib", "cdylib", "lib"] |
|
|
|
[dependencies] |
|
|
|
async-recursion = "1.0" |
|
|
|
async-trait = "0.1" |
|
|
|
base64 = { version = "0.21" } |
|
|
|
base64 = { version = "0.22" } |
|
|
|
chrono = "0.4" |
|
|
|
clap = { version = "4.5", features = ["derive", "wrap_help", "color"] } |
|
|
|
ctrlc2 = { version = "3.5", features = ["tokio", "termination"] } |
|
|
|
@ -32,7 +32,7 @@ tokio = { version = "1.36", features = ["full"] } |
|
|
|
tokio-util = "0.7" |
|
|
|
tproxy-config = { version = "2.0", features = ["log"] } |
|
|
|
trust-dns-proto = "0.23" |
|
|
|
tun2 = { version = "1.1", features = ["async"] } |
|
|
|
tun2 = { version = "1.2", features = ["async"] } |
|
|
|
udp-stream = { version = "0.0", default-features = false } |
|
|
|
unicase = "2.7" |
|
|
|
url = "2.5" |
|
|
|
|
|
|
|
@ -5,8 +5,8 @@ async fn main() -> Result<(), BoxError> { |
|
|
|
dotenvy::dotenv().ok(); |
|
|
|
let args = Args::parse_args(); |
|
|
|
|
|
|
|
// let default = format!("{}={:?}", module_path!(), args.verbosity);
|
|
|
|
let default = format!("{:?}", args.verbosity); |
|
|
|
// let default = format!("{}={:?},trust_dns_proto=warn", module_path!(), args.verbosity);
|
|
|
|
let default = format!("{:?},trust_dns_proto=warn", args.verbosity); |
|
|
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default)).init(); |
|
|
|
|
|
|
|
let shutdown_token = tokio_util::sync::CancellationToken::new(); |
|
|
|
|
|
|
|
@ -222,17 +222,23 @@ async fn handle_tcp_session( |
|
|
|
let (mut t_rx, mut t_tx) = tokio::io::split(tcp_stack); |
|
|
|
let (mut s_rx, mut s_tx) = tokio::io::split(server); |
|
|
|
|
|
|
|
for _ in 0..2 { |
|
|
|
tokio::select! { |
|
|
|
_ = tokio::io::copy(&mut t_rx, &mut s_tx) => { |
|
|
|
s_tx.shutdown().await?; |
|
|
|
}, |
|
|
|
_ = tokio::io::copy(&mut s_rx, &mut t_tx) => { |
|
|
|
t_tx.shutdown().await?; |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
log::info!("Ending {}", session_info); |
|
|
|
let res = tokio::join!( |
|
|
|
async move { |
|
|
|
let r = tokio::io::copy(&mut t_rx, &mut s_tx).await; |
|
|
|
if let Err(err) = s_tx.shutdown().await { |
|
|
|
log::trace!("{} s_tx shutdown error {}", session_info, err); |
|
|
|
} |
|
|
|
r |
|
|
|
}, |
|
|
|
async move { |
|
|
|
let r = tokio::io::copy(&mut s_rx, &mut t_tx).await; |
|
|
|
if let Err(err) = t_tx.shutdown().await { |
|
|
|
log::trace!("{} t_tx shutdown error {}", session_info, err); |
|
|
|
} |
|
|
|
r |
|
|
|
}, |
|
|
|
); |
|
|
|
log::info!("Ending {} with {:?}", session_info, res); |
|
|
|
|
|
|
|
Ok(()) |
|
|
|
} |
|
|
|
|