mirror of
https://github.com/KOP-XIAO/QuantumultX.git
synced 2026-01-26 01:35:09 +00:00
Add SSD Support
支持SSD订阅
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-06-17 13:59⟧
|
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-06-17 22:40⟧
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
🚫 发现𝐁𝐔𝐆请反馈: @Shawn_KOP_bot
|
🚫 发现𝐁𝐔𝐆请反馈: @Shawn_KOP_bot
|
||||||
⛳️ 关注tg相关频道: https://t.me/QuanX_API
|
⛳️ 关注tg相关频道: https://t.me/QuanX_API
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
🤖 主要功能:
|
🤖 主要功能:
|
||||||
A. 将各格式服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式引用
|
A. 将各格式服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式引用
|
||||||
✔︎ 支持 V2RayN/SSR/SS/Trojan/QuanX/Surge/https 订阅
|
✔︎ 支持 V2RayN/SSR/SS/SSD/Trojan/QuanX/Surge/https 订阅
|
||||||
✔︎ 提供说明 1⃣️ 中的可选个性化参数
|
✔︎ 提供说明 1⃣️ 中的可选个性化参数
|
||||||
B. rewrite(重写) /filter(分流) 的转换&筛选
|
B. rewrite(重写) /filter(分流) 的转换&筛选
|
||||||
✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter
|
✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter
|
||||||
@@ -178,9 +178,9 @@ function Type_Check(subs){
|
|||||||
var RuleK=["host","domain","ip-cidr","geoip","user-agent","ip6-cidr"];
|
var RuleK=["host","domain","ip-cidr","geoip","user-agent","ip6-cidr"];
|
||||||
var QuanXK=["shadowsocks=","trojan=","vmess=","http="];
|
var QuanXK=["shadowsocks=","trojan=","vmess=","http="];
|
||||||
var SurgeK=["=ss,","=vmess,","=trojan,","=http,","=custom,","=https,"];
|
var SurgeK=["=ss,","=vmess,","=trojan,","=http,","=custom,","=https,"];
|
||||||
var SubK=["dm1lc3M6Ly","c3NyOi8v","dHJvamFu","c3M6Ly"];
|
var SubK=["dm1lc3M6Ly","c3NyOi8v","dHJvamFu","c3M6Ly","c3NkOi8v"];
|
||||||
var RewriteK=[" url "]
|
var RewriteK=[" url "]
|
||||||
var SubK2=["ss://","vmess://","ssr://","trojan://"];
|
var SubK2=["ss://","vmess://","ssr://","trojan://","ssd://"];
|
||||||
var html="DOCTYPE html"
|
var html="DOCTYPE html"
|
||||||
var subi=subs.replace(/ /g,"")
|
var subi=subs.replace(/ /g,"")
|
||||||
const RuleCheck = (item) => subs.toLowerCase().indexOf(item)!=-1;
|
const RuleCheck = (item) => subs.toLowerCase().indexOf(item)!=-1;
|
||||||
@@ -463,6 +463,8 @@ function Subs2QX(subs,Pudp,Ptfo,Pcert,Ptls13){
|
|||||||
node= SSR2QX(list0[i],Pudp,Ptfo)
|
node= SSR2QX(list0[i],Pudp,Ptfo)
|
||||||
}else if(type=="ss"){
|
}else if(type=="ss"){
|
||||||
node = SS2QX(list0[i],Pudp,Ptfo)
|
node = SS2QX(list0[i],Pudp,Ptfo)
|
||||||
|
}else if(type=="ssd"){
|
||||||
|
node = SSD2QX(list0[i],Pudp,Ptfo)
|
||||||
}else if(type=="trojan"){
|
}else if(type=="trojan"){
|
||||||
node = TJ2QX(list0[i],Pudp,Ptfo,Pcert,Ptls13)
|
node = TJ2QX(list0[i],Pudp,Ptfo,Pcert,Ptls13)
|
||||||
}else if(type=="https"){
|
}else if(type=="https"){
|
||||||
@@ -472,8 +474,13 @@ function Subs2QX(subs,Pudp,Ptfo,Pcert,Ptls13){
|
|||||||
}else if(SurgeK.some(SurgeCheck)){
|
}else if(SurgeK.some(SurgeCheck)){
|
||||||
node = Surge2QX(list0[i])
|
node = Surge2QX(list0[i])
|
||||||
}
|
}
|
||||||
if(node!=""){
|
if (node instanceof Array){
|
||||||
QXlist.push(node)}
|
for (var j in node) {
|
||||||
|
QXlist.push(node[j])
|
||||||
|
}
|
||||||
|
}else if(node!=""){
|
||||||
|
QXlist.push(node)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$notify("final", "list", QXlist)
|
//$notify("final", "list", QXlist)
|
||||||
@@ -728,6 +735,32 @@ function SS2QX(subs,Pudp,Ptfo){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//SSD 类型 URI 转换 quanx 格式
|
||||||
|
function SSD2QX(subs,Pudp,Ptfo){
|
||||||
|
var j=0
|
||||||
|
var QX=[]
|
||||||
|
var cnt=JSON.parse(Base64.decode(subs.split("ssd://")[1]))
|
||||||
|
//$notify("SSD转换 ing","SSD",cnt)
|
||||||
|
type="shadowsocks=";
|
||||||
|
pwd="password="+cnt.password;
|
||||||
|
mtd="method="+cnt.encryption;
|
||||||
|
obfs=cnt.plugin_options.split(";")[0]!=null ? ", "+cnt.plugin_options.split(";")[0]: "";
|
||||||
|
obfshost=cnt.plugin_options.split(";")[1]!=null ? ", "+cnt.plugin_options.split(";")[1]: "";
|
||||||
|
pudp= Pudp==1? "udp-relay=true":"udp-relay=false";
|
||||||
|
ptfo= Ptfo==1? "fast-open=true":"fast-open=false";
|
||||||
|
for (var i in cnt.servers) {
|
||||||
|
ip=cnt.servers[i].server;
|
||||||
|
if(ip.indexOf(".")>0){ //排除难搞的 ipv6 节点
|
||||||
|
port=":"+cnt.servers[i].port;
|
||||||
|
tag="tag="+cnt.servers[i].remarks;
|
||||||
|
QX[j]=type+ip+port+", "+pwd+", "+mtd+obfs+obfshost+", "+pudp+", "+ptfo+", "+tag;
|
||||||
|
var j=j+1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QX;
|
||||||
|
//console.log(QX)
|
||||||
|
}
|
||||||
|
|
||||||
// 用于过滤非节点部分(比如整份配置中其它内容)
|
// 用于过滤非节点部分(比如整份配置中其它内容)
|
||||||
function isQuanX(content){
|
function isQuanX(content){
|
||||||
var cnts=content.split("\n");
|
var cnts=content.split("\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user