mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-06 00:43:43 +08:00
32 lines
953 B
Rust
32 lines
953 B
Rust
use serde::{Deserialize, Serialize};
|
||
use serde_yaml::Mapping;
|
||
use std::collections::HashMap;
|
||
|
||
#[derive(Default, Debug, Clone, Deserialize, Serialize)]
|
||
pub struct IRuntime {
|
||
pub config: Option<Mapping>,
|
||
// 记录在配置中(包括merge和script生成的)出现过的keys
|
||
// 这些keys不一定都生效
|
||
pub exists_keys: Vec<String>,
|
||
pub chain_logs: HashMap<String, Vec<(String, String)>>,
|
||
}
|
||
|
||
impl IRuntime {
|
||
pub fn new() -> Self {
|
||
Self::default()
|
||
}
|
||
|
||
// 这里只更改 allow-lan | ipv6 | log-level
|
||
pub fn patch_config(&mut self, patch: Mapping) {
|
||
if let Some(config) = self.config.as_mut() {
|
||
["allow-lan", "ipv6", "log-level"]
|
||
.into_iter()
|
||
.for_each(|key| {
|
||
if let Some(value) = patch.get(key).to_owned() {
|
||
config.insert(key.into(), value.clone());
|
||
}
|
||
});
|
||
}
|
||
}
|
||
}
|