support domain-set type rule

This commit is contained in:
Shawn
2020-08-19 22:23:06 +08:00
parent 744f1d19a7
commit c31cf229a6

View File

@@ -1,5 +1,5 @@
/**
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-08-19 17:59⟧
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-08-19 22:29⟧
----------------------------------------------------------
🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
@@ -270,7 +270,8 @@ function RegCheck(total, typen, regpara) {
//判断订阅类型
function Type_Check(subs) {
var type = "unknown"
var RuleK = ["host", "domain", "ip-cidr", "geoip", "user-agent", "ip6-cidr"];
var RuleK = ["host,", "-suffix,", "domain,", "ip-cidr,", "geoip,", "user-agent,", "ip6-cidr,"];
var DomainK = ["domain-set,"]
var QuanXK = ["shadowsocks=", "trojan=", "vmess=", "http="];
var SurgeK = ["=ss,", "=vmess,", "=trojan,", "=http,", "=custom,", "=https,", "=shadowsocks", "=shadowsocksr"];
var SubK = ["dm1lc3M", "c3NyOi8v", "dHJvamFu", "c3M6Ly", "c3NkOi8v"];
@@ -278,7 +279,7 @@ function Type_Check(subs) {
var SubK2 = ["ss://", "vmess://", "ssr://", "trojan://", "ssd://"];
var html = "DOCTYPE html"
var subi = subs.replace(/ /g, "")
const RuleCheck = (item) => subs.toLowerCase().indexOf(item) != -1;
const RuleCheck = (item) => subi.toLowerCase().indexOf(item) != -1;
const NodeCheck = (item) => subi.toLowerCase().indexOf(item.toLowerCase()) != -1;
const RewriteCheck = (item) => subs.indexOf(item) != -1;
var subsn = subs.split("\n")
@@ -301,6 +302,9 @@ function Type_Check(subs) {
type = "rewrite"
} else if (RuleK.some(RuleCheck) && subs.indexOf(html) == -1) {
type = "Rule";
} else if (DomainK.some(RuleCheck)) {
type = "Rule";
content0 = Domain2Rule(content0) // 转换 domain-set
}
return type
}
@@ -632,6 +636,25 @@ function Rule_Policy(content) { //增加、替换 policy
} else { return "" }//if RuleK1 check
}
// Domain-Set
function Domain2Rule(content) {
var cnt = content.split("\n");
var RuleK = ["//", "#", ";"]
var nlist = []
for (var i = 0; i< cnt.length; i++) {
cc = cnt[i].trim();
const RuleCheck = (item) => cc.indexOf(item) != -1; //无视注释行
if(!RuleK.some(RuleCheck) && cc) {
if (cc[0] == "."){
nlist.push("host-suffix, " + cc.slice(1 , cc.length) )
} else {
nlist.push("host, " + cc )
}
}
}
return nlist.join("\n")
}
// 正则替换 filter/rewrite 的部分
// 用途:如 tiktok 换区: JP -> KR ,如淘宝比价脚本 -> lite 横幅通知版本
function ReplaceReg(cnt, para) {