修复本地规则管理不工作的问题
This commit is contained in:
51
.trae/documents/修复本地规则管理删除规则功能.md
Normal file
51
.trae/documents/修复本地规则管理删除规则功能.md
Normal file
@@ -0,0 +1,51 @@
|
||||
## 问题分析
|
||||
|
||||
通过代码分析,我发现本地规则管理删除规则功能失效的原因有两个:
|
||||
|
||||
1. **规则格式不匹配**:
|
||||
- 前端显示的规则带有修饰符,例如:`||example.com^`
|
||||
- 服务器端实际存储的是裸域名,例如:`example.com`
|
||||
- `RemoveRule` 函数在处理规则时,虽然尝试了多种格式变体,但没有正确处理前端发送的带有修饰符的规则
|
||||
|
||||
2. **本地规则标记未更新**:
|
||||
- `RemoveRule` 函数没有考虑 `m.domainRulesIsLocal` 和 `m.domainExceptionsIsLocal` 映射,这些映射用于标记哪些规则是本地规则
|
||||
- 删除规则后,没有更新这些映射,导致规则删除不彻底
|
||||
|
||||
## 修复计划
|
||||
|
||||
1. **修改 `RemoveRule` 函数**:
|
||||
- 改进规则处理逻辑,确保能正确处理带有修饰符的规则
|
||||
- 更新 `domainRulesIsLocal` 和 `domainExceptionsIsLocal` 映射,确保本地规则被正确删除
|
||||
|
||||
2. **修改 `GetLocalRules` 函数**:
|
||||
- 确保返回的规则格式与 `RemoveRule` 函数期望的格式一致
|
||||
|
||||
3. **添加调试日志**:
|
||||
- 在关键位置添加日志,便于调试和监控规则删除过程
|
||||
|
||||
## 修复步骤
|
||||
|
||||
### 步骤1:修改 `RemoveRule` 函数
|
||||
在 `shield/manager.go` 文件中,修改 `RemoveRule` 函数,改进规则处理逻辑:
|
||||
|
||||
1. 确保正确处理带有修饰符的规则
|
||||
2. 更新 `domainRulesIsLocal` 和 `domainExceptionsIsLocal` 映射
|
||||
3. 添加调试日志
|
||||
|
||||
### 步骤2:测试修复效果
|
||||
- 启动服务器
|
||||
- 访问本地规则管理页面
|
||||
- 添加一条本地规则
|
||||
- 删除该规则
|
||||
- 验证规则是否被正确删除,页面内容是否减少
|
||||
|
||||
## 预期效果
|
||||
|
||||
修复后,本地规则管理删除规则功能将正常工作:
|
||||
- 点击删除按钮后,规则会被正确发送到服务器
|
||||
- 服务器会正确处理带有修饰符的规则
|
||||
- 本地规则标记会被正确更新
|
||||
- 规则会被持久化保存
|
||||
- 页面内容会立即减少
|
||||
|
||||
这样就能确保本地规则管理删除规则功能正常工作,提供良好的用户体验。
|
||||
Reference in New Issue
Block a user