Initial commit
This commit is contained in:
45
src/main.rs
Normal file
45
src/main.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
extern crate flexi_logger;
|
||||
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
mod config;
|
||||
mod server;
|
||||
use crate::config::Config;
|
||||
use crate::server::spawn_socks5_server;
|
||||
|
||||
use flexi_logger::{AdaptiveFormat, Age, Cleanup, Criterion, Duplicate, FileSpec, Logger, Naming};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
Logger::try_with_str("info")
|
||||
.unwrap()
|
||||
.log_to_file(FileSpec::default())
|
||||
.rotate(
|
||||
Criterion::Age(Age::Day),
|
||||
Naming::Timestamps,
|
||||
Cleanup::KeepLogFiles(4),
|
||||
)
|
||||
.adaptive_format_for_stderr(AdaptiveFormat::Detailed)
|
||||
.print_message()
|
||||
.duplicate_to_stderr(Duplicate::Warn)
|
||||
.start_with_specfile("logspec.toml")
|
||||
.unwrap();
|
||||
|
||||
let cfg = tokio::task::spawn_blocking(Config::get)
|
||||
.await
|
||||
.expect("get config");
|
||||
log::info!("cfg: {:#?}", cfg);
|
||||
|
||||
let token = CancellationToken::new();
|
||||
let child_token = token.child_token();
|
||||
|
||||
let (r, _) = tokio::join!(
|
||||
spawn_socks5_server(cfg, child_token),
|
||||
tokio::spawn(async move {
|
||||
tokio::time::sleep(std::time::Duration::from_secs(10)).await;
|
||||
token.cancel();
|
||||
})
|
||||
);
|
||||
|
||||
r.unwrap();
|
||||
}
|
Reference in New Issue
Block a user