修复本地规则管理不工作的问题
This commit is contained in:
41
.trae/documents/修复本地规则管理不工作的问题.md
Normal file
41
.trae/documents/修复本地规则管理不工作的问题.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 问题分析
|
||||
|
||||
1. **问题现象**:用户点击删除按钮删除本地规则时,通过API发送数据到服务器,但Web界面没有自动刷新本地规则列表。
|
||||
|
||||
2. **问题根源**:
|
||||
- 后端`RemoveRule`方法存在缺陷,当删除规则时没有正确更新所有相关映射
|
||||
- 前端代码虽然调用了重新加载规则列表的函数,但由于后端数据不一致,导致刷新后列表没有变化
|
||||
|
||||
3. **具体问题**:
|
||||
- 在`shield/manager.go`的`RemoveRule`方法中,删除域名规则时只从`domainRules`或`domainExceptions`映射中删除了规则,但没有更新`domainRulesIsLocal`、`domainExceptionsIsLocal`、`domainRulesSource`和`domainExceptionsSource`映射
|
||||
- 处理正则表达式规则时,使用了错误的比较方式(`re.pattern.String() != pattern`),而应该使用原始规则字符串进行比较
|
||||
|
||||
# 修复方案
|
||||
|
||||
1. **修复`RemoveRule`方法**:
|
||||
- 当删除域名规则时,同时更新所有相关映射
|
||||
- 当删除排除规则时,同时更新所有相关映射
|
||||
- 修复正则表达式规则的比较方式,使用原始规则字符串进行比较
|
||||
|
||||
2. **验证前端代码**:
|
||||
- 确认前端代码在删除规则后正确调用了重新加载规则列表的函数
|
||||
- 验证前端代码处理API响应的逻辑是否正确
|
||||
|
||||
# 实现步骤
|
||||
|
||||
1. 修改`shield/manager.go`文件中的`RemoveRule`方法:
|
||||
- 在删除域名规则时,添加删除`domainRulesIsLocal`和`domainRulesSource`映射的代码
|
||||
- 在删除排除规则时,添加删除`domainExceptionsIsLocal`和`domainExceptionsSource`映射的代码
|
||||
- 修复正则表达式规则的比较方式
|
||||
|
||||
2. 测试修复后的功能:
|
||||
- 启动DNS服务器
|
||||
- 访问Web界面,添加几条本地规则
|
||||
- 点击删除按钮删除其中一条规则
|
||||
- 验证规则列表是否自动刷新,且删除的规则不再显示
|
||||
|
||||
# 预期结果
|
||||
|
||||
- 用户点击删除按钮后,规则被成功删除
|
||||
- Web界面自动刷新,删除的规则从列表中消失
|
||||
- 本地规则文件被正确更新,删除的规则不再存在于文件中
|
||||
Reference in New Issue
Block a user