2024-02-24 20:40:39 +08:00
|
|
|
use tun2proxy::{Args, BoxError};
|
2024-02-01 19:15:32 +08:00
|
|
|
|
|
|
|
#[tokio::main]
|
2024-02-13 10:46:13 +08:00
|
|
|
async fn main() -> Result<(), BoxError> {
|
2024-02-01 19:15:32 +08:00
|
|
|
dotenvy::dotenv().ok();
|
|
|
|
let args = Args::parse_args();
|
|
|
|
|
2024-03-03 19:49:10 +08:00
|
|
|
// let default = format!("{}={:?},trust_dns_proto=warn", module_path!(), args.verbosity);
|
|
|
|
let default = format!("{:?},trust_dns_proto=warn", args.verbosity);
|
2024-02-01 19:15:32 +08:00
|
|
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default)).init();
|
|
|
|
|
2024-02-13 10:46:13 +08:00
|
|
|
let shutdown_token = tokio_util::sync::CancellationToken::new();
|
2024-02-24 19:24:51 +08:00
|
|
|
let join_handle = tokio::spawn({
|
|
|
|
let shutdown_token = shutdown_token.clone();
|
|
|
|
async move {
|
2024-02-24 20:40:39 +08:00
|
|
|
if let Err(err) = tun2proxy::desktop_run_async(args, shutdown_token).await {
|
|
|
|
log::error!("main loop error: {}", err);
|
2024-02-24 19:24:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2024-02-01 19:15:32 +08:00
|
|
|
|
|
|
|
ctrlc2::set_async_handler(async move {
|
2024-02-10 17:36:54 +01:00
|
|
|
log::info!("Ctrl-C received, exiting...");
|
|
|
|
shutdown_token.cancel();
|
2024-02-01 19:15:32 +08:00
|
|
|
})
|
|
|
|
.await;
|
|
|
|
|
|
|
|
if let Err(err) = join_handle.await {
|
2024-02-24 23:38:52 +01:00
|
|
|
log::error!("main_entry error {}", err);
|
2024-02-01 19:15:32 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|