|
@@ -22,19 +22,18 @@ pub fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|
// config.yaml 的订阅
|
|
// config.yaml 的订阅
|
|
let clash_config = { Config::clash().latest().0.clone() };
|
|
let clash_config = { Config::clash().latest().0.clone() };
|
|
|
|
|
|
- let (clash_core, enable_tun, enable_builtin, enable_filter) = {
|
|
|
|
|
|
+ let (clash_core, enable_tun, enable_builtin) = {
|
|
let verge = Config::verge();
|
|
let verge = Config::verge();
|
|
let verge = verge.latest();
|
|
let verge = verge.latest();
|
|
(
|
|
(
|
|
verge.clash_core.clone(),
|
|
verge.clash_core.clone(),
|
|
verge.enable_tun_mode.unwrap_or(false),
|
|
verge.enable_tun_mode.unwrap_or(false),
|
|
verge.enable_builtin_enhanced.unwrap_or(true),
|
|
verge.enable_builtin_enhanced.unwrap_or(true),
|
|
- verge.enable_clash_fields.unwrap_or(true),
|
|
|
|
)
|
|
)
|
|
};
|
|
};
|
|
|
|
|
|
// 从profiles里拿东西
|
|
// 从profiles里拿东西
|
|
- let (mut config, chain, valid) = {
|
|
|
|
|
|
+ let (mut config, chain) = {
|
|
let profiles = Config::profiles();
|
|
let profiles = Config::profiles();
|
|
let profiles = profiles.latest();
|
|
let profiles = profiles.latest();
|
|
|
|
|
|
@@ -49,23 +48,17 @@ pub fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|
None => vec![],
|
|
None => vec![],
|
|
};
|
|
};
|
|
|
|
|
|
- let valid = profiles.valid.clone().unwrap_or_default();
|
|
|
|
-
|
|
|
|
- (current, chain, valid)
|
|
|
|
|
|
+ (current, chain)
|
|
};
|
|
};
|
|
|
|
|
|
let mut result_map = HashMap::new(); // 保存脚本日志
|
|
let mut result_map = HashMap::new(); // 保存脚本日志
|
|
let mut exists_keys = use_keys(&config); // 保存出现过的keys
|
|
let mut exists_keys = use_keys(&config); // 保存出现过的keys
|
|
|
|
|
|
- let valid = use_valid_fields(valid);
|
|
|
|
- config = use_filter(config, &valid, enable_filter);
|
|
|
|
-
|
|
|
|
// 处理用户的profile
|
|
// 处理用户的profile
|
|
chain.into_iter().for_each(|item| match item.data {
|
|
chain.into_iter().for_each(|item| match item.data {
|
|
ChainType::Merge(merge) => {
|
|
ChainType::Merge(merge) => {
|
|
exists_keys.extend(use_keys(&merge));
|
|
exists_keys.extend(use_keys(&merge));
|
|
config = use_merge(merge, config.to_owned());
|
|
config = use_merge(merge, config.to_owned());
|
|
- config = use_filter(config.to_owned(), &valid, enable_filter);
|
|
|
|
}
|
|
}
|
|
ChainType::Script(script) => {
|
|
ChainType::Script(script) => {
|
|
let mut logs = vec![];
|
|
let mut logs = vec![];
|
|
@@ -73,7 +66,6 @@ pub fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|
match use_script(script, config.to_owned()) {
|
|
match use_script(script, config.to_owned()) {
|
|
Ok((res_config, res_logs)) => {
|
|
Ok((res_config, res_logs)) => {
|
|
exists_keys.extend(use_keys(&res_config));
|
|
exists_keys.extend(use_keys(&res_config));
|
|
- config = use_filter(res_config, &valid, enable_filter);
|
|
|
|
logs.extend(res_logs);
|
|
logs.extend(res_logs);
|
|
}
|
|
}
|
|
Err(err) => logs.push(("exception".into(), err.to_string())),
|
|
Err(err) => logs.push(("exception".into(), err.to_string())),
|
|
@@ -88,8 +80,6 @@ pub fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|
config.insert(key, value);
|
|
config.insert(key, value);
|
|
}
|
|
}
|
|
|
|
|
|
- let clash_fields = use_clash_fields();
|
|
|
|
-
|
|
|
|
// 内建脚本最后跑
|
|
// 内建脚本最后跑
|
|
if enable_builtin {
|
|
if enable_builtin {
|
|
ChainItem::builtin()
|
|
ChainItem::builtin()
|
|
@@ -102,7 +92,7 @@ pub fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|
match item.data {
|
|
match item.data {
|
|
ChainType::Script(script) => match use_script(script, config.to_owned()) {
|
|
ChainType::Script(script) => match use_script(script, config.to_owned()) {
|
|
Ok((res_config, _)) => {
|
|
Ok((res_config, _)) => {
|
|
- config = use_filter(res_config, &clash_fields, enable_filter);
|
|
|
|
|
|
+ config = res_config;
|
|
}
|
|
}
|
|
Err(err) => {
|
|
Err(err) => {
|
|
log::error!(target: "app", "builtin script error `{err}`");
|
|
log::error!(target: "app", "builtin script error `{err}`");
|
|
@@ -113,12 +103,11 @@ pub fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- config = use_filter(config, &clash_fields, enable_filter);
|
|
|
|
config = use_tun(config, enable_tun);
|
|
config = use_tun(config, enable_tun);
|
|
- config = use_sort(config, enable_filter);
|
|
|
|
|
|
+ config = use_sort(config);
|
|
|
|
|
|
let mut exists_set = HashSet::new();
|
|
let mut exists_set = HashSet::new();
|
|
- exists_set.extend(exists_keys.into_iter().filter(|s| clash_fields.contains(s)));
|
|
|
|
|
|
+ exists_set.extend(exists_keys.into_iter());
|
|
exists_keys = exists_set.into_iter().collect();
|
|
exists_keys = exists_set.into_iter().collect();
|
|
|
|
|
|
(config, exists_keys, result_map)
|
|
(config, exists_keys, result_map)
|