From 0468f5205019c7eb88a06e2b53322a0d756199aa Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Sat, 29 Nov 2025 00:23:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AD=A3=E5=88=99=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=B8=8D=E7=94=9F=E6=95=88?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.json | 4 ++-- shield/manager.go | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/config.json b/config.json index 275a0fc..3e7fdec 100644 --- a/config.json +++ b/config.json @@ -21,7 +21,7 @@ "name": "AdGuard DNS filter", "url": "https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt", "enabled": true, - "lastUpdateTime": "2025-11-28T15:45:11.073Z" + "lastUpdateTime": "2025-11-28T16:13:03.564Z" }, { "name": "Adaway Default Blocklist", @@ -39,7 +39,7 @@ "name": "My GitHub Rules", "url": "https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/rules/costomize.txt", "enabled": true, - "lastUpdateTime": "2025-11-28T14:42:09.271Z" + "lastUpdateTime": "2025-11-28T16:13:05.960Z" }, { "name": "CNList", diff --git a/shield/manager.go b/shield/manager.go index cbb442a..f99045e 100644 --- a/shield/manager.go +++ b/shield/manager.go @@ -374,12 +374,11 @@ func (m *ShieldManager) parseRule(line string, isLocal bool, source string) { } case strings.HasPrefix(line, "/") && strings.HasSuffix(line, "/"): - // 关键字匹配规则:/keyword/ 格式,不区分大小写,字面量匹配特殊字符 - keyword := strings.TrimPrefix(strings.TrimSuffix(line, "/"), "/") - // 转义特殊字符,确保字面量匹配 - quotedKeyword := regexp.QuoteMeta(keyword) - // 编译为不区分大小写的正则表达式,匹配域名中任意位置 - if re, err := regexp.Compile("(?i)" + quotedKeyword); err == nil { + // 正则表达式匹配规则:/regex/ 格式,不区分大小写 + pattern := strings.TrimPrefix(strings.TrimSuffix(line, "/"), "/") + // 编译为不区分大小写的正则表达式,确保能匹配域名中任意位置 + // 对于像 /domain/ 这样的规则,应该匹配包含 domain 字符串的任何域名 + if re, err := regexp.Compile("(?i).*" + regexp.QuoteMeta(pattern) + ".*"); err == nil { // 保存原始规则字符串 m.addRegexRule(re, line, !isException, isLocal, source) }