From d9101256e00ec0deb740e182c328352e11757e22 Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Tue, 2 Jul 2024 14:49:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'SrcJyDrpy.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SrcJyDrpy.js | 180 +++++++++++++++++++++++++-------------------------- 1 file changed, 87 insertions(+), 93 deletions(-) diff --git a/SrcJyDrpy.js b/SrcJyDrpy.js index a1cb3963..2dbc1aa3 100644 --- a/SrcJyDrpy.js +++ b/SrcJyDrpy.js @@ -1,93 +1,14 @@ -//drpy运行环境相关 -const localKey = "drpy"; -globalThis.local = { - set(rulekey, k, v) { - storage0.setItem(localKey + "@" + rulekey + "@" + k, v); - }, - get(rulekey, k, v) { - return storage0.getItem(localKey + "@" + rulekey + "@" + k, "") || v; - }, - delete(rulekey, k) { - storage0.clearItem(localKey + "@" + rulekey + "@" + k); - } -}; -eval(getCryptoJS()); -globalThis.CryptoJS = CryptoJS; - -let $request = request; -let $post = post; -globalThis.req = function (url, cobj) { - try { - let res = {}; - let obj = Object.assign({}, cobj); - if (obj.data) { - obj.body = obj.data; - delete obj.data; - } - - if (obj.hasOwnProperty("redirect")) obj.redirect = !!obj.redirect; - if (obj.buffer === 2) { - obj.toHex = true; - } - obj.headers = Object.assign({ - Cookie: "#noCookie#" - }, obj.headers); - if (url === "https://api.nn.ci/ocr/b64/text" && obj.headers) { - obj.headers["Content-Type"] = "text/plain"; - } - - if (url.startsWith("file://") && (url.includes("?type=") || url.includes("?params="))) { - url = url.slice(0, url.lastIndexOf("?")); - } - for (let key in obj.headers) { - if (typeof obj.headers[key] !== "string") { - obj.headers[key] = String(obj.headers[key]); - } - } - let r = ""; - r = $request(url, obj); - if (obj.withHeaders) { - r = JSON.parse(r); - res.content = r.body; - res.headers = {}; - for (let [k, v] of Object.entries(r.headers || {})) { - res.headers[k] = v[0]; - } - } else { - res.content = r; - } - if (obj.buffer === 2) { - const CryptoUtil = $.require("hiker://assets/crypto-java.js"); - res.content = CryptoUtil.Data.parseHex(res.content).toBase64(_base64.NO_WRAP); - } - return res; - } catch (e) { - log("Error" + e.toString()); - } -} -pdfa = _pdfa; -pd = _pd; -pdfh = _pdfh; -String.prototype.replaceAll = function (search, replacement) { - return this.split(search).join(replacement); -}; -let $toString = Function.prototype.toString; -Function.prototype.toString = function () { - return $toString.apply(this).trim(); -}; //ENVIRONMENTS沙箱环境 -const MAX_ENVS = 5; +const MAX_ENVS = 10; let drpyEnvS = globalMap0.getVar('drpyEnvS',{}); let nextEnvId = 0; -let lock = Promise.resolve(); function createOrGetEnvironment(id, ext) { - //syncExecute({ - // func: ({ - // id, ext - // }) => { - return lock = lock.then(() => { + syncExecute({ + func: ({ + id, ext + }) => { if (id === undefined) { id = nextEnvId++; } @@ -105,6 +26,83 @@ function createOrGetEnvironment(id, ext) { log("删除后" + Object.keys(drpyEnvS).length) } drpyEnvS[id] = (function() { + //drpy运行环境相关 + const localKey = "drpy"; + globalThis.local = { + set(rulekey, k, v) { + storage0.setItem(localKey + "@" + rulekey + "@" + k, v); + }, + get(rulekey, k, v) { + return storage0.getItem(localKey + "@" + rulekey + "@" + k, "") || v; + }, + delete(rulekey, k) { + storage0.clearItem(localKey + "@" + rulekey + "@" + k); + } + }; + eval(getCryptoJS()); + globalThis.CryptoJS = CryptoJS; + + let $request = request; + let $post = post; + globalThis.req = function (url, cobj) { + try { + let res = {}; + let obj = Object.assign({}, cobj); + if (obj.data) { + obj.body = obj.data; + delete obj.data; + } + + if (obj.hasOwnProperty("redirect")) obj.redirect = !!obj.redirect; + if (obj.buffer === 2) { + obj.toHex = true; + } + obj.headers = Object.assign({ + Cookie: "#noCookie#" + }, obj.headers); + if (url === "https://api.nn.ci/ocr/b64/text" && obj.headers) { + obj.headers["Content-Type"] = "text/plain"; + } + + if (url.startsWith("file://") && (url.includes("?type=") || url.includes("?params="))) { + url = url.slice(0, url.lastIndexOf("?")); + } + for (let key in obj.headers) { + if (typeof obj.headers[key] !== "string") { + obj.headers[key] = String(obj.headers[key]); + } + } + let r = ""; + r = $request(url, obj); + if (obj.withHeaders) { + r = JSON.parse(r); + res.content = r.body; + res.headers = {}; + for (let [k, v] of Object.entries(r.headers || {})) { + res.headers[k] = v[0]; + } + } else { + res.content = r; + } + if (obj.buffer === 2) { + const CryptoUtil = $.require("hiker://assets/crypto-java.js"); + res.content = CryptoUtil.Data.parseHex(res.content).toBase64(_base64.NO_WRAP); + } + return res; + } catch (e) { + log("Error" + e.toString()); + } + } + pdfa = _pdfa; + pd = _pd; + pdfh = _pdfh; + String.prototype.replaceAll = function (search, replacement) { + return this.split(search).join(replacement); + }; + let $toString = Function.prototype.toString; + Function.prototype.toString = function () { + return $toString.apply(this).trim(); + }; let drpy2 = $.require(module.modulePath.slice(0, module.modulePath.lastIndexOf("/")) + '/drpy/drpy2.js'); return drpy2.DRPY(); })(); @@ -112,16 +110,12 @@ function createOrGetEnvironment(id, ext) { globalMap0.putVar('drpyEnvS', drpyEnvS); //return drpyEnvS[id]; - //}, - //param: { - // id, ext - //} - //}); - //return drpyEnvS[id]; - - - return Promise.resolve(drpyEnvS[id]); + }, + param: { + id, ext + } }); + return drpyEnvS[id]; } log(Object.keys(drpyEnvS).length);