增加 rewrite 引用参数过滤

This commit is contained in:
Shawn
2020-04-29 11:29:03 +08:00
committed by GitHub
parent 3d0b478c80
commit 2fa8edec74

View File

@@ -1,9 +1,11 @@
/** /**
#Quantumult X 资源解析器 (2020-04-28: 13:33) #Quantumult X 资源解析器 (2020-04-29: 11:33)
本资源解析器作者: Shawn(@XIAO_KOP), 有问题请反馈: @Shawn_KOP_bot 本资源解析器作者: Shawn(@XIAO_KOP), 有问题请反馈: @Shawn_KOP_bot
功能: 将节点订阅解析成 Quantumult X 引用片段, 并提供下列可选参数 (已支持 V2RayN/SSR/SS/Trojan/QuanX 订阅) 主要功能: 将节点订阅解析成 Quantumult X 引用片段, 并提供下列可选参数 (已支持 V2RayN/SSR/SS/Trojan/QuanX 订阅)
附赠功能rewrite 复写引用过滤
0⃣ 在订阅链接后加入 "#" 符号后再加参数, 不同参数间请使用 "&" 来连接, 如: "#in=香港+台湾&emoji=1&tfo=1" 0⃣ 在订阅链接后加入 "#" 符号后再加参数, 不同参数间请使用 "&" 来连接, 如: "#in=香港+台湾&emoji=1&tfo=1"
@@ -16,6 +18,8 @@
4⃣ rename 重命名, rename=旧名@新名, 以及 "前缀@", "@后缀", 用 "+" 连接, 如 "rename=香港@HK+[SS]@+@[1X]" 4⃣ rename 重命名, rename=旧名@新名, 以及 "前缀@", "@后缀", 用 "+" 连接, 如 "rename=香港@HK+[SS]@+@[1X]"
5⃣ info=1, 用于打开转换解析器的提示通知 (默认关闭) 5⃣ info=1, 用于打开转换解析器的提示通知 (默认关闭)
6⃣ 支持过滤主机名跟重写规则,用于 rewrite 引用模块,参数一样为 "out=para"
*/ */
@@ -55,13 +59,20 @@ if(type0=="Vmess"){
}else if(type0=="SS"){ }else if(type0=="SS"){
total=SS2QX(content0,Pudp0,Ptfo0); total=SS2QX(content0,Pudp0,Ptfo0);
flag=1 flag=1
}else if(type0=="rewrite"){
flag=2;
content0=content0.split("\n");
total=Rewrite_Filter(content0,Pout0);
}else { }else {
$notify("👻该解析器暂未支持您的订阅格式","😭太难写了", "stay tuned"); $notify("👻该解析器暂未支持您的订阅格式","😭太难写了", "stay tuned");
flag=0; flag=0;
$done({content : content0}); $done({content : content0});
} }
if(flag==1){ if(flag==2){
if(Pout0){$notify("正在删除复写规则&主机名","删除参数为:",Pout0);}
$done({content:total.join("\n")});
}else if(flag==1){
if(Pin0||Pout0){ if(Pin0||Pout0){
if(Pinfo!=0){ if(Pinfo!=0){
$notify("👥 开始转换节点,类型:"+type0,"🐶 您已添加节点筛选参数,如下","👍️ 保留的关键字:"+Pin0+"\n👎 排除的关键字:"+Pout0);} $notify("👥 开始转换节点,类型:"+type0,"🐶 您已添加节点筛选参数,如下","👍️ 保留的关键字:"+Pin0+"\n👎 排除的关键字:"+Pout0);}
@@ -98,10 +109,51 @@ function Type_Check(subs){
type="Trojan" type="Trojan"
} else if (subs.indexOf("c3M6Ly")!= -1){ } else if (subs.indexOf("c3M6Ly")!= -1){
type="SS" type="SS"
} else if(subs.indexOf("hostname")!=-1){
type="rewrite"
} }
return type return type
} }
function Trim(item){
return item.trim()
}
//删除 rewrite 引用中的某部分
function Rewrite_Filter(subs,Pout){
cnt=subs;
nlist=[]
Pout=Pout.map(Trim);
if(Pout!="" && Pout!=null){
for(var i=0;i<cnt.length;i++){
var cc=cnt[i];
if(cc.trim()!=""){
const exclude = (item) => cc.indexOf(item)!=-1;
if(Pout.some(exclude)){
if(cc.indexOf("hostname")!=-1 && cc.indexOf("=")!=-1){
nname=[]
hname=cc.split("=")[1].split(",");
for(var j=0;j<hname.length;j++){
dd=hname[j]
const excludehn = (item) => dd.indexOf(item)!=-1;
if(!Pout.some(excludehn)){
nname.push(hname[j])
}
} //for j
hname="hostname="+nname.join(", ");
//console.log(hname)
nlist.push(hname)
} // if cc
}else{ //if Pout.some
nlist.push(cc)
} //else
}
}//cnt for
return nlist
} else{
return cnt;}
}
//V2RayN 订阅转换成 QUANX 格式 //V2RayN 订阅转换成 QUANX 格式
function V2QX(subs,Pudp,Ptfo){ function V2QX(subs,Pudp,Ptfo){
const $base64 = new Base64() const $base64 = new Base64()