mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 06:43:44 +08:00
feat: add profile name param for script
This commit is contained in:
parent
9edafa75e7
commit
c9f784e4fa
@ -1,4 +1,4 @@
|
|||||||
function main(config) {
|
function main(config, _name) {
|
||||||
if (config.mode === "script") {
|
if (config.mode === "script") {
|
||||||
config.mode = "rule";
|
config.mode = "rule";
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
function main(config) {
|
function main(config, _name) {
|
||||||
if (Array.isArray(config.proxies)) {
|
if (Array.isArray(config.proxies)) {
|
||||||
config.proxies.forEach((p, i) => {
|
config.proxies.forEach((p, i) => {
|
||||||
if (p.type === "hysteria" && typeof p.alpn === "string") {
|
if (p.type === "hysteria" && typeof p.alpn === "string") {
|
||||||
|
@ -59,6 +59,7 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|||||||
groups_item,
|
groups_item,
|
||||||
global_merge,
|
global_merge,
|
||||||
global_script,
|
global_script,
|
||||||
|
profile_name,
|
||||||
) = {
|
) = {
|
||||||
let profiles = Config::profiles();
|
let profiles = Config::profiles();
|
||||||
let profiles = profiles.latest();
|
let profiles = profiles.latest();
|
||||||
@ -123,6 +124,12 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|||||||
data: ChainType::Script(tmpl::ITEM_SCRIPT.into()),
|
data: ChainType::Script(tmpl::ITEM_SCRIPT.into()),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let name = profiles
|
||||||
|
.get_item(&profiles.get_current().unwrap_or_default())
|
||||||
|
.ok()
|
||||||
|
.and_then(|item| item.name.clone())
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
(
|
(
|
||||||
current,
|
current,
|
||||||
merge,
|
merge,
|
||||||
@ -132,6 +139,7 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|||||||
groups,
|
groups,
|
||||||
global_merge,
|
global_merge,
|
||||||
global_script,
|
global_script,
|
||||||
|
name,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -147,7 +155,7 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|||||||
if let ChainType::Script(script) = global_script.data {
|
if let ChainType::Script(script) = global_script.data {
|
||||||
let mut logs = vec![];
|
let mut logs = vec![];
|
||||||
|
|
||||||
match use_script(script, config.to_owned()) {
|
match use_script(script, config.to_owned(), profile_name.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 = res_config;
|
config = res_config;
|
||||||
@ -180,7 +188,7 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|||||||
if let ChainType::Script(script) = script_item.data {
|
if let ChainType::Script(script) = script_item.data {
|
||||||
let mut logs = vec![];
|
let mut logs = vec![];
|
||||||
|
|
||||||
match use_script(script, config.to_owned()) {
|
match use_script(script, config.to_owned(), profile_name.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 = res_config;
|
config = res_config;
|
||||||
@ -239,7 +247,7 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
|
|||||||
.for_each(|item| {
|
.for_each(|item| {
|
||||||
log::debug!(target: "app", "run builtin script {}", item.uid);
|
log::debug!(target: "app", "run builtin script {}", item.uid);
|
||||||
if let ChainType::Script(script) = item.data {
|
if let ChainType::Script(script) = item.data {
|
||||||
match use_script(script, config.to_owned()) {
|
match use_script(script, config.to_owned(), "".to_string()) {
|
||||||
Ok((res_config, _)) => {
|
Ok((res_config, _)) => {
|
||||||
config = res_config;
|
config = res_config;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,11 @@ use super::use_lowercase;
|
|||||||
use anyhow::{Error, Result};
|
use anyhow::{Error, Result};
|
||||||
use serde_yaml::Mapping;
|
use serde_yaml::Mapping;
|
||||||
|
|
||||||
pub fn use_script(script: String, config: Mapping) -> Result<(Mapping, Vec<(String, String)>)> {
|
pub fn use_script(
|
||||||
|
script: String,
|
||||||
|
config: Mapping,
|
||||||
|
name: String,
|
||||||
|
) -> Result<(Mapping, Vec<(String, String)>)> {
|
||||||
use boa_engine::{native_function::NativeFunction, Context, JsValue, Source};
|
use boa_engine::{native_function::NativeFunction, Context, JsValue, Source};
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
let mut context = Context::default();
|
let mut context = Context::default();
|
||||||
@ -42,7 +46,7 @@ pub fn use_script(script: String, config: Mapping) -> Result<(Mapping, Vec<(Stri
|
|||||||
let code = format!(
|
let code = format!(
|
||||||
r#"try{{
|
r#"try{{
|
||||||
{script};
|
{script};
|
||||||
JSON.stringify(main({config_str})||'')
|
JSON.stringify(main({config_str},'{name}')||'')
|
||||||
}} catch(err) {{
|
}} catch(err) {{
|
||||||
`__error_flag__ ${{err.toString()}}`
|
`__error_flag__ ${{err.toString()}}`
|
||||||
}}"#
|
}}"#
|
||||||
@ -97,7 +101,7 @@ fn test_script() {
|
|||||||
"#;
|
"#;
|
||||||
|
|
||||||
let config = serde_yaml::from_str(config).unwrap();
|
let config = serde_yaml::from_str(config).unwrap();
|
||||||
let (config, results) = use_script(script.into(), config).unwrap();
|
let (config, results) = use_script(script.into(), config, "".to_string()).unwrap();
|
||||||
|
|
||||||
let config_str = serde_yaml::to_string(&config).unwrap();
|
let config_str = serde_yaml::to_string(&config).unwrap();
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ pub const ITEM_MERGE_EMPTY: &str = "# Profile Enhancement Merge Template for Cla
|
|||||||
/// enhanced profile
|
/// enhanced profile
|
||||||
pub const ITEM_SCRIPT: &str = "// Define main function (script entry)
|
pub const ITEM_SCRIPT: &str = "// Define main function (script entry)
|
||||||
|
|
||||||
function main(config) {
|
function main(config, profileName) {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user