diff --git a/src/core/nal.rs b/src/core/nal.rs index 8d9a9ac..43c31ac 100644 --- a/src/core/nal.rs +++ b/src/core/nal.rs @@ -1,6 +1,8 @@ use std::collections::HashMap; +use std::fs::File; use std::time::Duration; use async_trait::async_trait; +use log::warn; use reqwest::{Client, Error}; use serde::{Deserialize, Serialize}; use serde::__private::de::Content::I16; @@ -44,6 +46,48 @@ pub struct NetStatusCheck { pub interval: u16, } +/// NAL配置参数 +#[derive(Debug, Serialize, Deserialize)] +pub struct NalConfig { + pub net_type: Option, + pub login: LoginConfig, + pub check: NetStatusCheck, +} + +impl NalConfig { + pub fn default() -> Self { + NalConfig { + net_type: Option::from(NetType::Sangfor), + login: LoginConfig { username: "".to_string(), password: "".to_string() }, + check: NetStatusCheck { interval: 0 }, + } + } +} + +/// 初始化配置 +pub fn init_config() -> NalConfig { + let result = File::open("./config.yml"); + if result.is_err() { + //初始化配置 + return NalConfig::default(); + } + + //缺少字段会导致序列化出错 + let result1 = serde_yaml::from_reader(result.unwrap()); + if result1.is_err() { + let string = result1.err().unwrap().to_string(); + warn!("config serde_yaml error: {string}"); + NalConfig::default() + } else { + let mut yaml: NalConfig = result1.unwrap_or(NalConfig::default()); + if yaml.net_type.is_none() { + yaml.net_type = Option::from(NetType::Sangfor) + } + yaml + } +} + + /// 获取没有代理的客户端 pub fn get_no_proxy_client() -> Client { diff --git a/src/main.rs b/src/main.rs index d837b0b..e4ac347 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,52 +18,12 @@ mod test; mod util; -/// NAL配置参数 -#[derive(Debug, Serialize, Deserialize)] -pub struct NalConfig { - pub net_type: Option, - pub login: LoginConfig, - pub check: NetStatusCheck, -} - -impl NalConfig { - pub fn default() -> Self { - NalConfig { - net_type: Option::from(NetType::Sangfor), - login: LoginConfig { username: "".to_string(), password: "".to_string() }, - check: NetStatusCheck { interval: 0 }, - } - } -} - -/// 初始化配置 -pub fn init_config() -> NalConfig { - let result = File::open("./config.yml"); - if result.is_err() { - //初始化配置 - return NalConfig::default(); - } - - //缺少字段会导致序列化出错 - let result1 = serde_yaml::from_reader(result.unwrap()); - if result1.is_err() { - let string = result1.err().unwrap().to_string(); - warn!("config serde_yaml error: {string}"); - NalConfig::default() - } else { - let mut yaml: NalConfig = result1.unwrap_or(NalConfig::default()); - if yaml.net_type.is_none() { - yaml.net_type = Option::from(NetType::Sangfor) - } - yaml - } -} #[tokio::main] async fn main() { util::logs::init("nal.log").expect("初始化日志出错"); - let config = init_config(); + let config = nal::init_config(); info!("config: {config:#?}"); /*let expression = "* 1 * * * * *";