From 50bf32a99ae564a0aff9b01a2f2739ea52293539 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Mon, 20 Nov 2023 14:53:26 +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 --- .../legado/app/ui/rss/read/ReadRssActivity.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt index 92abc3240..babbdf822 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt @@ -36,6 +36,7 @@ import org.apache.commons.text.StringEscapeUtils import org.jsoup.Jsoup import java.io.ByteArrayInputStream import java.net.URLDecoder +import java.util.regex.PatternSyntaxException /** * rss阅读界面 @@ -346,24 +347,32 @@ class ReadRssActivity : VMBaseActivity request: WebResourceRequest ): WebResourceResponse? { val url = request.url.toString() - viewModel.rssSource?.let { source -> - val blacklist = source.contentBlacklist?.splitNotBlank(",") - if (!blacklist.isNullOrEmpty()) { - blacklist.forEach { + val source = viewModel.rssSource ?: return super.shouldInterceptRequest(view, request) + val blacklist = source.contentBlacklist?.splitNotBlank(",") + if (!blacklist.isNullOrEmpty()) { + blacklist.forEach { + try { if (url.startsWith(it) || url.matches(it.toRegex())) { return createEmptyResource() } + } catch (e: PatternSyntaxException) { + AppLog.put("黑名单规则正则语法错误 源名称:${source.sourceName} 正则:$it", e) } - } else { - val whitelist = source.contentWhitelist?.splitNotBlank(",") - if (!whitelist.isNullOrEmpty()) { - whitelist.forEach { + } + } else { + val whitelist = source.contentWhitelist?.splitNotBlank(",") + if (!whitelist.isNullOrEmpty()) { + whitelist.forEach { + try { if (url.startsWith(it) || url.matches(it.toRegex())) { return super.shouldInterceptRequest(view, request) } + } catch (e: PatternSyntaxException) { + val msg = "白名单规则正则语法错误 源名称:${source.sourceName} 正则:$it" + AppLog.put(msg, e) } - return createEmptyResource() } + return createEmptyResource() } } return super.shouldInterceptRequest(view, request)