From 4daa23b293da1d4c1821ed68cac073c7b571bdd3 Mon Sep 17 00:00:00 2001 From: Shawn <45581750+KOP-XIAO@users.noreply.github.com> Date: Mon, 7 Sep 2020 21:50:49 +0800 Subject: [PATCH] bug fixed --- .DS_Store | Bin 14340 -> 14340 bytes Scripts/resource-parser.js | 65 +++++++++++++++++++++---------------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/.DS_Store b/.DS_Store index 6c54a755ff25e031f4524db4eeab151a2a0b581b..18afe4180eed06b5d79ebfa6309c4e766c3a7b6e 100644 GIT binary patch delta 1053 zcmeIwyK7T%6u|NGRU^5#)%;A_Jk(pNi9~IpZ8dFE1GZ?Bh=@{rR4huccMu;$69p-y zJ|a4livAP_5o~agRuGF0>L^&K4n+sw2qF$HiY`uiX^WHKAE4vm%NfpxQ_7d}x1R<) zi9}zlwzr|Fr9M`hOf>2@fgzVaoynT|eXv@eh-~tyqXoOuK9DQ!J7%xX743pzbV9|^ z`@=@RA#MrD3Tcz9bc-!{IW7Y-DCgy>+>jBuBM;@VjLEn>kqLPvujQ@0lTY$RzREZG z4wzI>NsvV>Cc+Yyvx?O;(M*aC(q!4dX1dtPF1qRAAcr{25qc?c#?M*KafRy)QD%f& z+~Wa{^kr{Yf1JP4Wp$)8zb}dY;S%Fz<(#=5HP7p-s;&t~>*^D&YxT_qJM_3O*=0m5 zQ{8nN&;5a5XlcZ<)C{+Ka)`y9GE?QITSKF1DVORorfO5OX{uSOU`%bUNjY`4+BjX? z+V$?L;9vC0GA#EUxo7gi@%kX29kCzs6Bix=gjk404N;a+M~t}R)k2b1)=ipa*g_{; z*~WJEkYlgoW;E%lgn))< ze5{;cA`zo;;Z{Xm=|&UdMiV1Z7j9g*F+P@Vz0>I*;exxk$vxk>Ip_S&x0qN=JbLFT zYTi8;@XgjYheH8hq$y&3_1p)yjr8B9ETg!f^@^czX z88bRlvxz%)QW_gKOpT?orRsu|_l!)aL;3{MWT#ML6Xhq)>B*E4H`#$~FdU)0cQ`&d zDH>0?5y*yH+c-aEm+n$i=|c(K6m7lD){ly|`fRO3)9j|KKknfCbMk_`A@9jY@`-#V zU&uG|gZw1F$Zzr&xyVNWB)CzIt=NX`s6`MV)T0IM=s*;m=)zIN(1YVRjZqjF!#L8I z!vZei60Tzzcd&xHc!k`lOT5Bsk~ulBR*K84?@G|6?AuSPdyV0^c}x(p7OJAw zJ=S2UC1X}$DWC5Vko0NE9+VZViG`FZKBYnuvoR_2q<*DZ78_u2RKHRqNi4_F>XeWy zptB8*)<}0rf-cK*)G%$4#R6Eaqqfp^NnmFAjvA$VWp|$N0wdPwruG2|F7OPF3RJ?6 zI)S7f4QN6u+OS7pv7vP1AP%Ds{TReaf#!@rGmZ(EIFD(}U{)Zyj4QZ`Yq)_W+`?@v aTi9H)s+M~ subi.toLowerCase().indexOf(item) != -1; @@ -304,7 +301,7 @@ function Type_Check(subs) { content0 = Clash2QX(subs) } else if ( (ModuleK.some(RewriteCheck) || para1.indexOf("dst=rewrite") != -1) && (para1.indexOf("dst=filter") == -1) && subs.indexOf("[Proxy]") == -1) { // Surge 类型 module /rule-set(含url-regex) 类型 type = "sgmodule" - } else if ((subi.indexOf("hostname=") != -1 || RewriteK.some(RewriteCheck)) && subs.indexOf("[Proxy]") == -1 && subs.indexOf("[server_local]") == -1) { + } else if ((subi.indexOf("hostname=") != -1 || RewriteK.some(RewriteCheck)) && subs.indexOf("[Proxy]") == -1 && subs.indexOf("[server_local]") == -1 && subs.indexOf("\nhttp-r") == -1) { type = "rewrite" //Quantumult X 类型 rewrite } else if (RuleK.some(RuleCheck) && subs.indexOf(html) == -1 && subs.indexOf("[Proxy]") == -1 && subs.indexOf("[server_local]") == -1) { type = "Rule"; @@ -377,7 +374,10 @@ function URX2QX(subs) { var nrw = [] var rw = "" subs = subs.split("\n") + var NoteK = ["//", "#", ";"]; //排除注释项 for (var i = 0; i < subs.length; i++) { + const notecheck = (item) => subs[i].indexOf(item) == 0 + if (!NoteK.some(notecheck)) { if (subs[i].slice(0, 9) == "URL-REGEX") { // regex 类型 rw = subs[i].replace(/ /g, "").split(",REJECT")[0].split("GEX,")[1] + " url " + "reject-200" nrw.push(rw) @@ -386,6 +386,7 @@ function URX2QX(subs) { nrw.push(rw) } } + } return nrw } @@ -400,49 +401,54 @@ function SCP2QX(subs) { nrw.push(hn) } var SC = ["type=", ".js", "pattern=", "script-path="] + var NoteK = ["//", "#", ";"]; //排除注释项 const sccheck = (item) => subs[i].indexOf(item) != -1 - if (SC.every(sccheck)) { // surge js 新格式 + const notecheck = (item) => subs[i].indexOf(item) == 0 + if (!NoteK.some(notecheck)){ + if (SC.every(sccheck)) { // surge js 新格式 ptn = subs[i].split("pattern=")[1].split(",")[0] js = subs[i].split("script-path=")[1].split(",")[0] type = subs[i].split("type=")[1].split(",")[0].trim() if (type == "http-response" && subs[i].indexOf("requires-body=1") != -1) { - type = "script-response-body " + type = "script-response-body " } else if (type == "http-response" && subs[i].indexOf("requires-body=1") == -1) { - type = "script-response-header " + type = "script-response-header " } else if (type == "http-request" && subs[i].indexOf("requires-body=1") != -1) { - type = "script-request-body " + type = "script-request-body " } else if (type == "http-request" && subs[i].indexOf("requires-body=1") == -1) { - type = "script-request-header " + type = "script-request-header " } rw = ptn + " url " + type + js nrw.push(rw) - } else if (subs[i].indexOf(" 302") != -1 || subs[i].indexOf(" 307") != -1) { //rewrite 302&307 复写 + } else if (subs[i].indexOf(" 302") != -1 || subs[i].indexOf(" 307") != -1) { //rewrite 302&307 复写 rw = subs[i].split(" ")[0] + " url " + subs[i].split(" ")[2] + " " + subs[i].split(" ")[1] nrw.push(rw) - } else if(subs[i].split(" ")[2] == "header") { // rewrite header 类型 + } else if(subs[i].split(" ")[2] == "header") { // rewrite header 类型 var pget = subs[i].split(" ")[0].split(".com")[1] var pgetn = subs[i].split(" ")[1].split(".com")[1] rw = subs[i].split(" ")[0] + " url request-header ^GET " + pget +"(.+\\r\\n)Host:.+(\\r\\n) request-header GET " + pgetn + "$1Host: " + subs[i].split(" ")[1].split("://")[1].split(".com")[0] + ".com$2" nrw.push(rw) - } else if(subs[i].indexOf(" - reject") != -1) { // rewrite reject 类型 + } else if(subs[i].indexOf(" - reject") != -1) { // rewrite reject 类型 rw = subs[i].split(" ")[0] + " url reject-200" nrw.push(rw) - } else if (subs[i].indexOf("script-path") != -1) { //surge js 旧写法 + } else if (subs[i].indexOf("script-path") != -1) { //surge js 旧写法 type = subs[i].split(" ")[0] js = subs[i].split("script-path")[1].split("=")[1].split(",")[0] ptn = subs[i].split(" ")[1] if (type == "http-response" && subs[i].indexOf("requires-body=1") != -1) { - type = "script-response-body " + type = "script-response-body " } else if (type == "http-response" && subs[i].indexOf("requires-body=1") == -1) { - type = "script-response-header " + type = "script-response-header " } else if (type == "http-request" && subs[i].indexOf("requires-body=1") != -1) { - type = "script-request-body " + type = "script-request-body " } else if (type == "http-request" && subs[i].indexOf("requires-body=1") == -1) { - type = "script-request-header " + type = "script-request-header " } rw = ptn + " url " + type + js nrw.push(rw) + } } + } return nrw } @@ -1451,12 +1457,15 @@ function LoonSSR2QX(cnt) { // fix yaml parse mistakes function YAMLFix(cnt){ if (cnt.indexOf("{") != -1){ - cnt = cnt.replace(/ - /g," - ").replace(/:(?!\s)/g,": ").replace(/\,\"/g,", \"").replace(/: {/g, ": {, ").replace(/, (host|path|tls|mux|skip)/g,", $1") - cnt = cnt.replace(/{name: /g,"{name: \"").replace(/, server:/g,"\", server:") - cnt = cnt.replace(/{|}/g,"").replace(/,/g,"\n ") - } - cnt = cnt.replace(/ -\n.*name/g," - name").replace(/\$|\`/g,"").split("proxy-providers:")[0].split("proxy-groups:")[0].replace(/\"(name|type|server|port|cipher|password|)\"/g,"$1") - return cnt + cnt = cnt.replace(/(^|\n)- /g, "$1 - ").replace(/ - /g," - ").replace(/:(?!\s)/g,": ").replace(/\,\"/g,", \"").replace(/: {/g, ": {, ").replace(/, (host|path|tls|mux|skip)/g,", $1") + //console.log(cnt) + cnt = cnt.replace(/{name: /g,"{name: \"").replace(/, server:/g,"\", server:") + cnt = cnt.replace(/{|}/g,"").replace(/,/g,"\n ") + } + cnt = cnt.replace(/ -\n.*name/g," - name").replace(/\$|\`/g,"").split("proxy-providers:")[0].split("proxy-groups:")[0].replace(/\"(name|type|server|port|cipher|password|)\"/g,"$1") + //console.log(cnt) + cnt = cnt.indexOf("proxies:") == -1? "proxies:\n" + cnt :cnt + return cnt } // Clash parser