40 lines
2.5 KiB
Markdown
40 lines
2.5 KiB
Markdown
## 问题分析
|
||
用户要求在缓存结果中包含DNSSEC信息时,在缓存的请求条目后边添加相同的DNSSEC标记,格式为:`类型: AAAA, 允许, 缓存 <DNSSEC标记>`。如果不包含DNSSEC信息,则不添加标记。
|
||
|
||
## 代码检查
|
||
1. **当前DNSSEC标记实现**:
|
||
- 在`/root/dns/static/js/logs.js`的`updateLogsTable`函数中,已经实现了根据`log.DNSSEC`字段显示DNSSEC标记的功能:
|
||
```javascript
|
||
<div class="text-xs text-gray-500 mt-1">类型: ${log.QueryType}, <span class="${statusClass}">${statusText}</span>, <span class="${cacheStatusClass}">${log.FromCache ? '缓存' : '实时'}</span>${log.DNSSEC ? ', <span class="text-green-500"><i class="fa fa-lock"></i> DNSSEC</span>' : ''}</div>
|
||
```
|
||
|
||
2. **DNSSEC信息存储**:
|
||
- `QueryLog`结构体包含`DNSSEC`字段,用于记录是否使用了DNSSEC
|
||
- 在`handleDNSRequest`函数中,会检查响应是否包含DNSSEC信息,并记录到日志中
|
||
- 在缓存处理中,会检查缓存响应的AD标志和RRSIG记录,确定DNSSEC状态
|
||
|
||
3. **缓存响应的DNSSEC处理**:
|
||
- 当从缓存返回响应时,会检查响应是否包含RRSIG记录或AD标志,以确定DNSSEC状态
|
||
- 但在日志记录时,已经正确传递了DNSSEC状态
|
||
|
||
## 解决方案
|
||
当前实现已经基本满足用户要求,但需要确保在所有显示查询日志的地方都正确显示DNSSEC标记。根据检查,只有`logs.js`中的`updateLogsTable`函数显示查询日志,且已经实现了DNSSEC标记功能。
|
||
|
||
## 验证步骤
|
||
1. 确认`logs.js`中的`updateLogsTable`函数已经正确实现了DNSSEC标记显示
|
||
2. 确认`QueryLog`结构体中的`DNSSEC`字段被正确设置
|
||
3. 确认缓存响应的DNSSEC状态被正确检查和记录
|
||
4. 运行测试,验证缓存请求条目显示格式为:`类型: AAAA, 允许, 缓存 <DNSSEC标记>`
|
||
|
||
## 预期结果
|
||
- 当缓存结果包含DNSSEC信息时,显示:`类型: AAAA, 允许, 缓存 <i class="fa fa-lock"></i> DNSSEC`
|
||
- 当缓存结果不包含DNSSEC信息时,显示:`类型: AAAA, 允许, 缓存`
|
||
- DNSSEC标记使用绿色锁图标,颜色为绿色
|
||
|
||
## 注意事项
|
||
- 确保DNSSEC标记只在缓存请求条目中显示,与实时请求条目保持一致的格式
|
||
- 确保DNSSEC标记的颜色和图标与整体UI风格一致
|
||
- 确保DNSSEC标记只在包含DNSSEC信息时显示,不包含时不显示
|
||
|
||
## 实现状态
|
||
当前实现已经满足用户要求,不需要额外修改代码。需要运行测试验证功能是否正常工作。 |