Files
dns-server/.trae/documents/修复本地规则管理删除规则功能.md
2025-11-28 18:41:55 +08:00

51 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 问题分析
通过代码分析,我发现本地规则管理删除规则功能失效的原因有两个:
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测试修复效果
- 启动服务器
- 访问本地规则管理页面
- 添加一条本地规则
- 删除该规则
- 验证规则是否被正确删除,页面内容是否减少
## 预期效果
修复后,本地规则管理删除规则功能将正常工作:
- 点击删除按钮后,规则会被正确发送到服务器
- 服务器会正确处理带有修饰符的规则
- 本地规则标记会被正确更新
- 规则会被持久化保存
- 页面内容会立即减少
这样就能确保本地规则管理删除规则功能正常工作,提供良好的用户体验。