From 67498dfc82849ba51bf5e602518bc44ed7940998 Mon Sep 17 00:00:00 2001 From: lubeilin <1791778603@qq.com> Date: Sun, 17 Mar 2024 14:28:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=8F=E5=88=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt-cli/Cargo.toml | 3 ++- vnt-cli/build.rs | 21 ++++++++++++++------- vnt-cli/src/main.rs | 17 +++++++++++------ 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/vnt-cli/Cargo.toml b/vnt-cli/Cargo.toml index 1cad8db..0466fe0 100644 --- a/vnt-cli/Cargo.toml +++ b/vnt-cli/Cargo.toml @@ -40,4 +40,5 @@ aes_gcm=["vnt/aes_gcm"] server_encrypt=["vnt/server_encrypt"] ip_proxy=["vnt/ip_proxy"] [build-dependencies] -embed-manifest = "1.4.0" \ No newline at end of file +embed-manifest = "1.4.0" +rand = "0.9.0-alpha.0" \ No newline at end of file diff --git a/vnt-cli/build.rs b/vnt-cli/build.rs index cc8a782..7dabdb0 100644 --- a/vnt-cli/build.rs +++ b/vnt-cli/build.rs @@ -1,10 +1,17 @@ -// use embed_manifest::{embed_manifest, new_manifest}; -// use embed_manifest::manifest::ExecutionLevel; +use std::fs::File; +use std::io::Write; +use rand::Rng; fn main() { - ////强制用管理员运行貌似体验更差了 - // if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { - // embed_manifest(new_manifest("vnt") - // .requested_execution_level(ExecutionLevel::RequireAdministrator)).expect("unable to embed manifest file"); - // } + // 生成随机序列号 + let serial_number = format!("{}-{}-{}",rand::thread_rng().gen_range(100..1000) + ,rand::thread_rng().gen_range(100..1000) + ,rand::thread_rng().gen_range(100..1000)); + let generated_code = format!( + r#"pub const SERIAL_NUMBER: &str = "{}";"#, + serial_number + ); + let dest_path = "src/generated_serial_number.rs"; + let mut file = File::create(&dest_path).unwrap(); + file.write_all(generated_code.as_bytes()).unwrap(); } diff --git a/vnt-cli/src/main.rs b/vnt-cli/src/main.rs index e70ec34..09c861a 100644 --- a/vnt-cli/src/main.rs +++ b/vnt-cli/src/main.rs @@ -16,6 +16,7 @@ mod command; mod config; mod console_out; mod root_check; +mod generated_serial_number; pub fn app_home() -> io::Result { let root_path = match std::env::current_exe() { @@ -336,7 +337,7 @@ fn main() { (config, cmd) }; println!("version {}", vnt::VNT_VERSION); - + println!("Serial:{}", generated_serial_number::SERIAL_NUMBER); main0(config, cmd); std::process::exit(0); } @@ -346,11 +347,14 @@ mod callback; fn main0(config: Config, show_cmd: bool) { let vnt_util = Vnt::new(config, callback::VntHandler {}).unwrap(); let vnt_c = vnt_util.clone(); - thread::spawn(move || { - if let Err(e) = command::server::CommandServer::new().start(vnt_c) { - log::warn!("cmd:{:?}", e); - } - }); + thread::Builder::new() + .name("CommandServer".into()) + .spawn(move || { + if let Err(e) = command::server::CommandServer::new().start(vnt_c) { + log::warn!("cmd:{:?}", e); + } + }) + .expect("CommandServer"); if show_cmd { let mut cmd = String::new(); loop { @@ -406,6 +410,7 @@ fn command(cmd: &str, vnt: &Vnt) -> bool { fn print_usage(program: &str, _opts: Options) { println!("Usage: {} [options]", program); println!("version:{}", vnt::VNT_VERSION); + println!("Serial:{}", generated_serial_number::SERIAL_NUMBER); println!("Options:"); println!( " -k {}",