MCPcopy Create free account
hub / github.com/Moli-X/Resources / URX2QX

Function URX2QX

Script/Parser.js:918–954  ·  view source on GitHub ↗
(subs)

Source from the content-addressed store, hash-verified

916
917//url-regex 转换成 Quantumult X 重写
918function URX2QX(subs) {
919 var nrw = []
920 var rw = ""
921 subs = subs.split("\n")
922 //$notify("URX")
923 var NoteK = ["//", "#", ";"]; //排除注释项
924 for (var i = 0; i < subs.length; i++) {
925 const notecheck = (item) => subs[i].indexOf(item) == 0
926 if (!NoteK.some(notecheck)) {
927 if (subs[i].slice(0, 9) == "URL-REGEX") { // regex 类型
928 if (subs[i].indexOf("REJECT") != -1 || subs[i].split(",").length == 2 ) { // 仅处理 reject 类型,或者无指定策略类型
929 if (subs[i].replace(/ /g, "").split(",REJECT")[0].split("GEX,")[1].slice(0,1) != "*") { // 部分 * 开头的不支持 url-regex形式
930 rw = subs[i].replace(/ /g, "").split(",REJECT")[0].split("GEX,")[1] + " url " + "reject-200"
931 nrw.push(rw)
932 }
933 }
934 } else if (subs[i].indexOf("data=") != -1 && subs.indexOf("[Map Local]") != -1){ // Map Local 类型
935 // 取subs[i]的文件名
936 let fn = subs[i].match(/data=.+\/(.+)"/) ? subs[i].match(/data=.+\/(.+)"/)[1] : null
937 if (!/header=".*content-type/i.test(subs[i]) && /blank/i.test(fn)) {
938 rw = Mock2QXReject(subs[i], fn)
939 } else {
940 rw = subs[i].replace(/ /g, "").split("data=")[0].replace(/\"/g,"") + " url echo-response text/html echo-response " + subs[i].split("data=")[1].split(" ")[0].replace(/\"/g,"").replace(/ /g, "")//"reject-dict"
941 if (subs[i].indexOf("header=")!=-1) {
942 if (subs[i].indexOf("Content-Type:") !=-1) {
943 let tpe = subs[i].split("header=")[1].split("Content-Type:")[1].split(",")[0].replace(/\"/g,"")
944 rw = rw.replace(/text\/html/g,tpe)
945 }
946 }
947 }
948 nrw.push(rw)
949 }
950 }
951 }
952 //$notify("URX","",nrw)
953 return nrw
954}
955
956//script&rewrite 转换成 Quantumult X
957function SCP2QX(subs) {

Callers 1

SGMD2QXFunction · 0.85

Calls 3

Mock2QXRejectFunction · 0.85
indexOfMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected