From 62bffb600da6c7542f8cc6ccf8ac0f5718cddb57 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Tue, 9 Jul 2024 23:12:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/entities/BaseSource.kt | 15 ++++++----- .../app/ui/book/search/SearchActivity.kt | 2 +- .../app/utils/RhinoContextExtensions.kt | 26 ------------------- 3 files changed, 9 insertions(+), 34 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/utils/RhinoContextExtensions.kt diff --git a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt index d74c8dd50..51af04fb4 100644 --- a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt @@ -97,21 +97,22 @@ interface BaseSource : JsExtensions { * 解析header规则 */ fun getHeaderMap(hasLoginHeader: Boolean = false) = HashMap().apply { - checkRhinoRecursiveCall() header?.let { - GSON.fromJsonObject>( + val savedHeader = it + header = null + val json = try { when { it.startsWith("@js:", true) -> evalJS(it.substring(4)).toString() it.startsWith("", true) -> evalJS( - it.substring( - 4, - it.lastIndexOf("<") - ) + it.substring(4, it.lastIndexOf("<")) ).toString() else -> it } - ).getOrNull()?.let { map -> + } finally { + header = savedHeader + } + GSON.fromJsonObject>(json).getOrNull()?.let { map -> putAll(map) } } diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt index 002332b99..c8f0a4144 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt @@ -397,7 +397,7 @@ class SearchActivity : VMBaseActivity if (!isEmpty || viewModel.searchScope.isAll()) return@observe diff --git a/app/src/main/java/io/legado/app/utils/RhinoContextExtensions.kt b/app/src/main/java/io/legado/app/utils/RhinoContextExtensions.kt deleted file mode 100644 index a09d8f502..000000000 --- a/app/src/main/java/io/legado/app/utils/RhinoContextExtensions.kt +++ /dev/null @@ -1,26 +0,0 @@ -package io.legado.app.utils - -import org.mozilla.javascript.Context - -private val enterCountField by lazy { - Context::class.java.getDeclaredField("enterCount").apply { - isAccessible = true - } -} - -fun Context?.getEnterCount(): Int { - this ?: return 0 - return enterCountField.get(this) as Int -} - -fun checkRhinoRecursiveCall() { - check(Context.getCurrentContext().getEnterCount() <= 1) { - "Rhino recursive call detected." - } -} - -fun checkRhinoCall() { - check(Context.getCurrentContext() == null) { - "Rhino call detected." - } -}