From 826550e1f1013ca64a80a6e8464fa11f14cd6cf0 Mon Sep 17 00:00:00 2001 From: 21561 <215613905@qq.com> Date: Sun, 20 Apr 2025 12:00:24 +0800 Subject: [PATCH] =?UTF-8?q?fix=20js=E6=A8=A1=E5=9D=97=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=97=AE=E9=A2=98;=20=E8=A7=A3=E5=86=B3=E9=83=A8=E5=88=86drpy?= =?UTF-8?q?=E9=81=97=E7=95=99=E9=97=AE=E9=A2=98;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ .../com/github/tvbox/osc/util/FileUtils.java | 20 +++++++++---------- .../com/github/tvbox/osc/util/js/Connect.java | 2 +- .../github/tvbox/osc/util/js/JsSpider.java | 16 ++++++++++++++- gradle.properties | 2 +- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index f2a98a86..7657d637 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,6 @@ lint/tmp/ /LTDecodeNew3.exe .idea/ + +*.hprof +output-metadata.json diff --git a/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java b/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java index eafcf4db..3d738ee1 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java +++ b/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java @@ -259,6 +259,7 @@ public class FileUtils { //JS 工具方法 private static final Pattern URL_JOIN = Pattern.compile("^http.*\\.(js|txt|json)", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); public static String loadModule(String name) { + String rel = null; try { if (name.contains("gbk.js")) { name = "gbk.js"; @@ -272,38 +273,37 @@ public class FileUtils { if (m.find()) { if (!Hawk.get(HawkConfig.DEBUG_OPEN, false)) { String cache = getCache(MD5.encode(name)); + rel= cache; if (StringUtils.isEmpty(cache)) { String netStr = get(name); if (!TextUtils.isEmpty(netStr)) { setCache(604800, MD5.encode(name), netStr); } - return netStr; + rel= netStr; } - return cache; } else { - return get(name); + rel= get(name); } } else if (name.startsWith("assets://")) { - return getAsOpen(name.substring(9)); + rel= getAsOpen(name.substring(9)); } else if (isAsFile(name, "js/lib")) { - return getAsOpen("js/lib/" + name); + rel=getAsOpen("js/lib/" + name); } else if (name.startsWith("file://")) { - return get(ControlManager.get() + rel=get(ControlManager.get() .getAddress(true) + "file/" + name.replace("file:///", "") .replace("file://", "")); } else if (name.startsWith("clan://localhost/")) { - return get(ControlManager.get() + rel=get(ControlManager.get() .getAddress(true) + "file/" + name.replace("clan://localhost/", "")); } else if (name.startsWith("clan://")) { String substring = name.substring(7); int indexOf = substring.indexOf(47); - return get("http://" + substring.substring(0, indexOf) + "/file/" + substring.substring(indexOf + 1)); + rel=get("http://" + substring.substring(0, indexOf) + "/file/" + substring.substring(indexOf + 1)); } } catch (Exception e) { e.printStackTrace(); - return name; } - return name; + return rel; } diff --git a/app/src/main/java/com/github/tvbox/osc/util/js/Connect.java b/app/src/main/java/com/github/tvbox/osc/util/js/Connect.java index dbb13f12..dccc397d 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/js/Connect.java +++ b/app/src/main/java/com/github/tvbox/osc/util/js/Connect.java @@ -46,7 +46,7 @@ public class Connect { for (byte aByte : res.body().bytes()) array.push((int) aByte); jsObject.set("content", array); } - if (req.getBuffer() == 2) jsObject.set("content", Base64.encodeToString(res.body().bytes(), Base64.DEFAULT)); + if (req.getBuffer() == 2) jsObject.set("content", Base64.encodeToString(res.body().bytes(), Base64.DEFAULT | Base64.NO_WRAP)); return jsObject; } catch (Exception e) { return error(ctx); diff --git a/app/src/main/java/com/github/tvbox/osc/util/js/JsSpider.java b/app/src/main/java/com/github/tvbox/osc/util/js/JsSpider.java index ef052fcf..59f59e9d 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/js/JsSpider.java +++ b/app/src/main/java/com/github/tvbox/osc/util/js/JsSpider.java @@ -244,7 +244,10 @@ public class JsSpider extends Spider { @Override public byte[] getModuleBytecode(String moduleName) { String ss = FileUtils.loadModule(moduleName); - if (TextUtils.isEmpty(ss)) {return null;} + if (TextUtils.isEmpty(ss)) { + LOG.i("echo-getModuleBytecode empty :"+ moduleName); + return ctx.compileModule("", moduleName); + } if(ss.startsWith("//DRPY")){ return Base64.decode(ss.replace("//DRPY",""), Base64.URL_SAFE); } else if(ss.startsWith("//bb")){ @@ -350,6 +353,17 @@ public class JsSpider extends Spider { result[1] = array.opt(1); result[2] = getStream(array.opt(2)); result[3] = headerAvailable ? getHeader(array.opt(3)) : null; + if (array.length() > 4) { + try { + if ( array.optInt(4) == 1) { + String content = array.optString(2); + if (content.contains("base64,")) content = content.substring(content.indexOf("base64,") + 7); + result[2] = new ByteArrayInputStream(Base64.decode(content, Base64.DEFAULT)); + } + } catch (Exception e) { + e.printStackTrace(); + } + } return result; } diff --git a/gradle.properties b/gradle.properties index 848e153d..306a3be4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,4 @@ android.useAndroidX=true android.enableJetifier=true IsDebug=true #build on off -#org.gradle.jvmargs=-Xmx2048m --add-opens java.base/java.io=ALL-UNNAMED \ No newline at end of file +org.gradle.jvmargs=-Xmx2048m --add-opens java.base/java.io=ALL-UNNAMED \ No newline at end of file