From 7d7adc1c7d648245bde2a90fa5f6e13920bdb6b4 Mon Sep 17 00:00:00 2001 From: Shawn <45581750+KOP-XIAO@users.noreply.github.com> Date: Sun, 27 Feb 2022 22:10:18 +0800 Subject: [PATCH] add --- Scripts/UI-Action.json | 1 + Scripts/traffic-check.js | 119 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 Scripts/traffic-check.js diff --git a/Scripts/UI-Action.json b/Scripts/UI-Action.json index 7d61709..85faac4 100644 --- a/Scripts/UI-Action.json +++ b/Scripts/UI-Action.json @@ -11,5 +11,6 @@ "event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-nf.js, tag=Netflix 切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Netflix_Letter.png, enabled=true", "event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-disneyplus.js, tag=Disneyᐩ 切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Disney.png, enabled=true", "event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-google.js, tag=Google 切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Google.png, enabled=true", + "event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/traffic-check.js, tag=策略流量查询, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Download.png, enabled=true" ] } \ No newline at end of file diff --git a/Scripts/traffic-check.js b/Scripts/traffic-check.js new file mode 100644 index 0000000..19b9fbf --- /dev/null +++ b/Scripts/traffic-check.js @@ -0,0 +1,119 @@ +/*** + +For Quantumult-X 631+ ONLY!! + +[task_local] + +event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/traffic-check.js, tag=策略流量查询, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Download.png, enabled=true + +ps. 简单查询策略/策略组流量使用统计(仅支持一级、二级策略) + +@XIAO_KOP + +**/ + +const messageTraffic = { + action: "get_traffic_statistics" +}; + +let result = { + "title" : "策略流量查詢" +} + +var policy = $environment.params +const message = { + action: "get_customized_policy", + content: policy + +}; + +let [datad, datau]= [0, 0] + +var pflag=1 //是否是策略,或者简单节点 + +//策略组 or 节点 +$configuration.sendMessage(message).then(resolve => { + if (resolve.error) { + console.log(resolve.error); + $done() + } + if (resolve.ret) { + output=JSON.stringify(resolve.ret[message.content])? JSON.parse(JSON.stringify(resolve.ret[message.content]["candidates"])) : [$environment.params] + pflag = JSON.stringify(resolve.ret[message.content])? pflag:0 + console.log("节点or策略组:"+pflag) + DisplayNodeTraffic(output,pflag) + } + //$done();| +}, reject => { + // Normally will never happen. + $done(); +}); + +function getJsonLength(jsonData){ + var jsonLength = 0; + for(var item in jsonData){ + jsonLength++; + } + return jsonLength; +} + + +// 计算流量信息 +var [Tdatad,Tdatau,Udatad,Udatau]=[0,0,0,0] + +function getServerTraffic(data,node){ + //console.log(data.name) + let type = data.type + //console.log("下载用量:"+(data.rx_transfer/1024/1024).toFixed(1)+"MB") + if (data.name==node ) { + if (type == "tcp") { + console.log(typeof(Tdatad),typeof(Tdatau)) + Tdatad=(Number(Tdatad)+data.rx_transfer/1024/1024).toFixed(1) + Tdatau=(Number(Tdatau)+data.tx_transfer/1024/1024).toFixed(1) + console.log(Tdatad,Tdatau) + } else if (type == "udp") { + Udatad=(Number(Udatad)+data.rx_transfer/1024/1024).toFixed(1) + Udatau=(Number(Udatau)+data.tx_transfer/1024/1024).toFixed(1) + } + } else { + } +} + +//查询流量 +function DisplayNodeTraffic(nodes,pflag) { +$configuration.sendMessage(messageTraffic).then(resolve => { + if (resolve.error) { + console.log(resolve.error); + } + if (resolve.ret) { + let output=JSON.stringify(resolve.ret, null, 2); + let len = getJsonLength(resolve.ret) + for (var no in nodes) { + console.log(nodes[no]) + for (var item in resolve.ret) { + getServerTraffic(resolve.ret[item],nodes[no]) + } + } + //console.log(output); + content = NodeData(nodes,pflag); + //console.log(content) + $done({"title":result["title"],"htmlMessage":content}) + } + $done(); +}, reject => { + // Normally not gonna happen. + $done(); +}); +} + +function NodeData(nodes,pflag){ + datad = "TCP : "+" "+Tdatad+" MB ⟱ | "+Tdatau+" MB ⟰ " + datau = "UDP : "+" "+Udatad+" MB ⟱ | "+Udatau+" MB ⟰ " + //console.log(datad,datau) + Ncontent = "--------------------------------------"+[datad,datau].join("")+ "--------------------------------------" + Ncontent = pflag == 0? Ncontent +""+"节点 ➟ " + policy+ "" : Ncontent +""+" 策略组 ➟ " + policy+ " ❬共"+ nodes.length+"个节点❭ " + //console.log(Ncontent) + Ncontent = `
` + Ncontent + `
` + //console.log(Ncontent) + return Ncontent +}