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 🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
@@ -270,7 +270,8 @@ function RegCheck(total, typen, regpara) {
//判断订阅类型 //判断订阅类型
function Type_Check(subs) { function Type_Check(subs) {
var type = "unknown" 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 QuanXK = ["shadowsocks=", "trojan=", "vmess=", "http="];
var SurgeK = ["=ss,", "=vmess,", "=trojan,", "=http,", "=custom,", "=https,", "=shadowsocks", "=shadowsocksr"]; var SurgeK = ["=ss,", "=vmess,", "=trojan,", "=http,", "=custom,", "=https,", "=shadowsocks", "=shadowsocksr"];
var SubK = ["dm1lc3M", "c3NyOi8v", "dHJvamFu", "c3M6Ly", "c3NkOi8v"]; var SubK = ["dm1lc3M", "c3NyOi8v", "dHJvamFu", "c3M6Ly", "c3NkOi8v"];
@@ -278,7 +279,7 @@ function Type_Check(subs) {
var SubK2 = ["ss://", "vmess://", "ssr://", "trojan://", "ssd://"]; 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) => subi.toLowerCase().indexOf(item) != -1;
const NodeCheck = (item) => subi.toLowerCase().indexOf(item.toLowerCase()) != -1; const NodeCheck = (item) => subi.toLowerCase().indexOf(item.toLowerCase()) != -1;
const RewriteCheck = (item) => subs.indexOf(item) != -1; const RewriteCheck = (item) => subs.indexOf(item) != -1;
var subsn = subs.split("\n") var subsn = subs.split("\n")
@@ -301,6 +302,9 @@ function Type_Check(subs) {
type = "rewrite" type = "rewrite"
} else if (RuleK.some(RuleCheck) && subs.indexOf(html) == -1) { } else if (RuleK.some(RuleCheck) && subs.indexOf(html) == -1) {
type = "Rule"; type = "Rule";
} else if (DomainK.some(RuleCheck)) {
type = "Rule";
content0 = Domain2Rule(content0) // 转换 domain-set
} }
return type return type
} }
@@ -632,6 +636,25 @@ function Rule_Policy(content) { //增加、替换 policy
} else { return "" }//if RuleK1 check } 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 的部分 // 正则替换 filter/rewrite 的部分
// 用途:如 tiktok 换区: JP -> KR ,如淘宝比价脚本 -> lite 横幅通知版本 // 用途:如 tiktok 换区: JP -> KR ,如淘宝比价脚本 -> lite 横幅通知版本
function ReplaceReg(cnt, para) { function ReplaceReg(cnt, para) {