From 0c0d82f8356b5c5b2022743a3cd4ba203ce5e912 Mon Sep 17 00:00:00 2001 From: Shawn <45581750+KOP-XIAO@users.noreply.github.com> Date: Tue, 31 May 2022 23:17:37 +0800 Subject: [PATCH] bug fixed --- Scripts/resource-parser.js | 71 +++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/Scripts/resource-parser.js b/Scripts/resource-parser.js index 986869f..02148fc 100644 --- a/Scripts/resource-parser.js +++ b/Scripts/resource-parser.js @@ -1,5 +1,5 @@ /** -☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2022-05-22 16:20⟧ +☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2022-05-31 22:20⟧ ---------------------------------------------------------- 🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_Parser_Bot ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API @@ -149,6 +149,8 @@ const Field = { "server" : "server_remote" } +var Finfo={bytes_used: 1073741824, bytes_remaining: 2147483648, expire_date: 1653193966} + SubFlow() //流量通知 @@ -180,30 +182,31 @@ var Pntf0 = mark0 && para1.indexOf("ntf=") != -1 ? para1.split("ntf=")[1].split( var Phide = mark0 && para1.indexOf("hide=") != -1 ? para1.split("hide=")[1].split("&")[0] : 1; var Pb64 = mark0 && para1.indexOf("b64=") != -1 ? para1.split("b64=")[1].split("&")[0] : 0; var emojino = [" 0️⃣ ", " 1⃣️ ", " 2⃣️ ", " 3⃣️ ", " 4⃣️ ", " 5⃣️ ", " 6⃣️ ", " 7⃣️ ", " 8⃣️ ", " 9⃣️ ", " 🔟 "] -var pfi = Pin0 ? "in=" + Pin0.join(", ") + ", " : "" -var pfo = Pout0 ? "out=" + Pout0.join(", ") : "" -var pfihn = Phin0 ? "inhn=" + Phin0.join(", ") + ", " : "" -var pfohn = Phout0 ? "outhn=" + Phout0.join(", ") : "" -var Pcnt = para1.indexOf("cnt=") != -1 ? para1.split("cnt=")[1].split("&")[0] : 0; -var Pcap = para1.indexOf("cap=") != -1 ? para1.split("cap=")[1].split("&")[0] : ""; -var Pptn = para1.indexOf("ptn=") != -1 ? para1.split("ptn=")[1].split("&")[0] : ""; //花式英文字符 -var Pnptn = para1.indexOf("npt=") != -1 ? para1.split("npt=")[1].split("&")[0] : ""; //花式数字 -var Pcdn = para1.indexOf("cdn=") != -1 ? para1.split("cdn=")[1].split("&")[0] : ""; +var pfi = mark0 &&Pin0 ? "in=" + Pin0.join(", ") + ", " : "" +var pfo = mark0 &&Pout0 ? "out=" + Pout0.join(", ") : "" +var pfihn = mark0 &&Phin0 ? "inhn=" + Phin0.join(", ") + ", " : "" +var pfohn = mark0 &&Phout0 ? "outhn=" + Phout0.join(", ") : "" +var Pcnt = mark0 &¶1.indexOf("cnt=") != -1 ? para1.split("cnt=")[1].split("&")[0] : 0; +var Pcap = mark0 &¶1.indexOf("cap=") != -1 ? para1.split("cap=")[1].split("&")[0] : ""; +var Pptn = mark0 &¶1.indexOf("ptn=") != -1 ? para1.split("ptn=")[1].split("&")[0] : ""; //花式英文字符 +var Pnptn = mark0 &¶1.indexOf("npt=") != -1 ? para1.split("npt=")[1].split("&")[0] : ""; //花式数字 +var Pcdn = mark0 &¶1.indexOf("cdn=") != -1 ? para1.split("cdn=")[1].split("&")[0] : ""; let [flow, exptime, errornode, total] = ""; var Pdel = mark0 && para1.indexOf("del=") != -1 ? para1.split("del=")[1].split("&")[0] : 0; //删除重复节点 -var typeU = para1.indexOf("type=") != -1 ? para1.split("type=")[1].split("&")[0] : ""; -var Pfcr = para1.indexOf("fcr=") != -1 ? para1.split("fcr=")[1].split("&")[0] : ""; // force-cellular 等参数 -var Pvia = para1.indexOf("via=") != -1 ? para1.split("via=")[1].split("&")[0] : ""; // via-interface 参数 -var Paead = para1.indexOf("aead=") != -1 ? para1.split("aead=")[1].split("&")[0] : ""; // vmess aead 参数 -var Phost = para1.indexOf("host=") != -1 ? para1.split("host=")[1].split("&")[0] : ""; // host 混淆参数 -var Pcsha256 = para1.indexOf("csha=") != -1 && version >= 646? para1.split("csha=")[1].split("&")[0] : ""; // cert-sha256 混淆参数 -var Ppsha256 = para1.indexOf("psha=") != -1 && version >= 646? para1.split("psha=")[1].split("&")[0] : ""; // pubkey-sha256 混淆参数 +var typeU = mark0 && para1.indexOf("type=") != -1 ? para1.split("type=")[1].split("&")[0] : ""; +var Pfcr = mark0 && para1.indexOf("fcr=") != -1 ? para1.split("fcr=")[1].split("&")[0] : ""; // force-cellular 等参数 +var Pvia = mark0 && para1.indexOf("via=") != -1 ? para1.split("via=")[1].split("&")[0] : ""; // via-interface 参数 +var Paead = mark0 && para1.indexOf("aead=") != -1 ? para1.split("aead=")[1].split("&")[0] : ""; // vmess aead 参数 +var Phost = mark0 && para1.indexOf("host=") != -1 ? para1.split("host=")[1].split("&")[0] : ""; // host 混淆参数 +var Pcsha256 = mark0 && para1.indexOf("csha=") != -1 && version >= 646? para1.split("csha=")[1].split("&")[0] : ""; // cert-sha256 混淆参数 +var Ppsha256 = mark0 && para1.indexOf("psha=") != -1 && version >= 646? para1.split("psha=")[1].split("&")[0] : ""; // pubkey-sha256 混淆参数 var typeQ = $resource.type? $resource.type:"unsupported" //返回 field 类型参数 -var PRelay = para1.indexOf("relay=") != -1 ? decodeURIComponent(para1.split("relay=")[1].split("&")[0]) : ""; // 节点 relay 参数, 用于实现代理链功能 -var PUOT = para1.indexOf("uot=") != -1 && version >= 665? para1.split("uot=")[1].split("&")[0] : ""; // 节点 udp-over-tcp 开启 -var PcheckU = para1.indexOf("checkurl=") != -1 ? decodeURIComponent(para1.split("checkurl=")[1].split("&")[0]) : ""; // 节点 server_check_url 参数 +var PRelay =mark0 && para1.indexOf("relay=") != -1 ? decodeURIComponent(para1.split("relay=")[1].split("&")[0]) : ""; // 节点 relay 参数, 用于实现代理链功能 +var PUOT = mark0 && para1.indexOf("uot=") != -1 && version >= 665? para1.split("uot=")[1].split("&")[0] : ""; // 节点 udp-over-tcp 开启 +var PcheckU = mark0 && para1.indexOf("checkurl=") != -1 ? decodeURIComponent(para1.split("checkurl=")[1].split("&")[0]) : ""; // 节点 server_check_url 参数 typeQ = PRelay!=""? "server":typeQ var typec="" //check result type +var Pflow=mark0 &¶1.indexOf("flow=") != -1 ? decodeURIComponent(para1.split("flow=")[1].split("&")[0]) : ""; // 流量时间等参数 //花漾字 pattern @@ -271,13 +274,13 @@ function Parser() { } else { total="" } - //$notify("","",total) $done({ content: total }); } if (typeof($resource)!=="undefined") { Parser() - $done({ content: total }) + if (Pflow!=1) {Finfo={}} + $done({ content: total, info: Finfo }) } @@ -305,6 +308,7 @@ function ResourceParse() { if (type0 == "Subs-B64Encode") { // subs2QX 负责所有节点的转换 total = Subs2QX(Base64.decode(content0), Pudp0, Ptfo0, Pcert0, PTls13); } else if (type0 == "Subs") { + //$notify("subs","",content0+Pudp0+Ptfo0+Pcert0+PTls13) total = Subs2QX(content0, Pudp0, Ptfo0, Pcert0, PTls13); } else if (type0 == "QuanX" || type0 == "Clash" || type0 == "Surge") { total = Subs2QX(isQuanX(content0).join("\n"), Pudp0, Ptfo0, Pcert0, PTls13); @@ -389,7 +393,11 @@ function ResourceParse() { if (PUOT==1) { total = total.split("\n").map(UOT).join("\n")} if (Pcnt == 1) {$notify("解析后最终返回内容" , "节点数量: " +total.split("\n").length, total)} total = PRelay==""? Base64.encode(total) : ServerRelay(total.split("\n"),PRelay) //强制节点类型 base64 加密后再导入 Quantumult X, 如果是relay,则转换成分流类型 - $done({ content: total }); + if(Pflow==1) { + //$notify("添加流量信息","xxx","xxxx") + $done({ content: total, info: {bytes_used: 3073741824, bytes_remaining: 2147483648, expire_date: 1854193966}}); + //$notify("done?","strange") + } else { $done({ content: total });} } else { $notify("❓❓ 友情提示 ➟ "+ "⟦" + subtag + "⟧", "⚠️⚠️ 解析后无有效内容", "🚥🚥 请自行检查相关参数, 或者点击通知跳转反馈", bug_link) total = errornode @@ -460,6 +468,7 @@ function RegCheck(total, typen, paraname,regpara) { } //判断订阅类型 function Type_Check(subs) { + var type = "unknown" var RuleK = ["host,", "-suffix,", "domain,", "-keyword,", "ip-cidr,", "ip-cidr6,", "geoip,", "user-agent,", "ip6-cidr,"]; var DomainK = ["domain-set,"] @@ -508,18 +517,18 @@ function Type_Check(subs) { type= (typeQ == "unsupported" || typeQ =="server"||typeQ =="uri") ? "Subs":"wrong-field" } else if ((subi.indexOf("tag=") != -1 && QuanXK.some(NodeCheck) && !/\[(Proxy|filter_local)\]/.test(subs)) || typeU =="list") { typec = "server" - type = (typeQ == "unsupported" || typeQ =="server")? "Subs":"wrong-field" // QuanX list + type = (typeQ == "unsupported" || typeQ =="server" || typeQ =="uri")? "Subs":"wrong-field" // QuanX list } else if (subs.indexOf("[Proxy]") != -1) { typec= "server" - type = (typeQ == "unsupported" || typeQ =="server")? "Surge":"wrong-field"; // Surge Profiles + type = (typeQ == "unsupported" || typeQ =="server" || typeQ =="uri")? "Surge":"wrong-field"; // Surge Profiles content0 = Surge2QX(content0).join("\n"); } else if ((SurgeK.some(NodeCheck) && !/\[(Proxy|filter_local)\]/.test(subs)) || typeU == "list") { typec="server" - type = (typeQ == "unsupported" || typeQ =="server")? "Subs":"wrong-field" // Surge proxy list + type = (typeQ == "unsupported" || typeQ =="server" || typeQ =="uri")? "Subs":"wrong-field" // Surge proxy list } else if (subs.indexOf("[server_local]") != -1) { //type = "QuanX" // QuanX Profile typec="server" - type = (typeQ == "unsupported" || typeQ =="server")? "Subs":"wrong-field" + type = (typeQ == "unsupported" || typeQ =="server"|| typeQ =="uri")? "Subs":"wrong-field" } else if (content0.indexOf("server") !=-1 && content0.indexOf("server_port") !=-1) { //SIP008 //type = "QuanX" typec= "server" @@ -530,8 +539,8 @@ function Type_Check(subs) { type = (typeQ == "unsupported" || typeQ =="server")? "Subs-B64Encode":"wrong-field" } // 用于通知判断类型,debug - if(typeU == "X"){ - $notify("该链接判定类型",type+" : " +typec, content0) + if(type == "X"){ + $notify("该链接判定类型",type+" : " +typec, subs) } //$notify(type) return type @@ -1257,7 +1266,7 @@ function Subs2QX(subs, Pudp, Ptfo, Pcert0, PTls13) { if (list0[i].trim().length > 3 && !/\;|\/|\#/.test(list0[i][0])) { var type = list0[i].split("://")[0].trim() var listi = list0[i].replace(/ /g, "") - var tag0 = list0[i].indexOf("tag=")!=-1 ? list0[i].split(/\&*(emoji|udp|tf0|cert|rename|replace)\=/)[0].split("tag=")[1] : "" + var tag0 = list0[i].indexOf("tag=")!=-1 ? list0[i].split(/\&*(emoji|udp|tfo|cert|rename|replace)\=/)[0].split("tag=")[1] : "" list0[i] = (type == "vmess" || type=="ssr") ? list0[i].split(/#|,|,/)[0] : list0[i] const NodeCheck = (item) => listi.toLowerCase().indexOf(item) != -1; const NodeCheck1 = (item) => listi.toLowerCase().indexOf(item) == 0; @@ -2099,7 +2108,7 @@ function get_emoji(emojip, sname) { "🇰🇿": ["哈萨克斯坦"], "🇭🇺": ["匈牙利", "Hungary"], "🇱🇹": ["立陶宛"], - "🇷🇺": ["RU ","RU-", "RUS", "Russia", "俄罗斯", "毛子", "俄国", "俄羅斯", "伯力", "莫斯科", "圣彼得堡", "西伯利亚", "新西伯利亚", "京俄", "杭俄","廣俄","滬俄","广俄","沪俄"], + "🇷🇺": ["RU ","RUS", "Russia", "俄罗斯", "毛子", "俄国", "俄羅斯", "伯力", "莫斯科", "圣彼得堡", "西伯利亚", "新西伯利亚", "京俄", "杭俄","廣俄","滬俄","广俄","沪俄"], "🇸🇬": ["SG", "Singapore","SINGAPORE", "新加坡", "狮城", "沪新", "京新", "泉新", "穗新", "深新", "杭新", "广新","廣新","滬新"], "🇺🇸": ["US", "USA", "America", "United States", "美国", "美", "京美", "波特兰", "达拉斯", "俄勒冈", "凤凰城", "费利蒙", "硅谷", "矽谷", "拉斯维加斯", "洛杉矶", "圣何塞", "圣克拉拉", "西雅图", "芝加哥", "沪美", "哥伦布", "纽约"], "🇹🇼": ["TW", "Taiwan","TAIWAN", "台湾", "台北", "台中", "新北", "彰化", "CHT", "台", "HINET"],