45 lines
1.6 KiB
Markdown
45 lines
1.6 KiB
Markdown
### 问题分析
|
||
当前的`dns/server.go`文件被误删了很多内容,导致编译失败。从编译错误可以看出,`http/server.go`文件中引用了`dns.Stats`结构体中的一些字段,如`QueryTypes`、`SourceIPs`、`AvgResponseTime`、`DNSSECQueries`等,但这些字段在当前的`dns/server.go`文件中都不存在。
|
||
|
||
### 恢复方案
|
||
1. **恢复完整的结构体定义**:
|
||
- `BlockedDomain`结构体中添加`DNSSEC`字段
|
||
- `Stats`结构体中添加所有缺失的字段
|
||
- `Server`结构体中添加所有缺失的字段
|
||
- `StatsData`结构体中添加所有缺失的字段
|
||
|
||
2. **恢复所有缺失的方法**:
|
||
- `updateClientStats`
|
||
- `updateResolvedDomainStatsWithDNSSEC`
|
||
- `updateDomainDNSSECStatus`
|
||
- `addQueryLog`
|
||
- `GetStartTime`
|
||
- `GetQueryLogs`
|
||
- `GetQueryLogsCount`
|
||
- `GetQueryStats`
|
||
- `GetTopClients`
|
||
- `GetDailyStats`
|
||
- `GetMonthlyStats`
|
||
- `getIpGeolocation`
|
||
- `fetchIpGeolocationFromAPI`
|
||
- `loadQueryLogs`
|
||
- `saveQueryLogs`
|
||
- `startCpuUsageMonitor`
|
||
- `getSystemCpuUsage`
|
||
|
||
3. **恢复DNSSEC相关功能**:
|
||
- 恢复`forwardDNSRequestWithCache`函数,替代当前的`forwardDNSRequest`函数
|
||
- 恢复DNSSEC验证逻辑
|
||
- 恢复DNS缓存功能
|
||
|
||
### 具体修改
|
||
1. 替换整个`dns/server.go`文件,恢复完整的内容
|
||
2. 确保所有结构体字段和方法都完整存在
|
||
3. 确保DNSSEC功能正常工作
|
||
|
||
### 测试计划
|
||
1. 编译恢复后的代码
|
||
2. 启动DNS服务器并启用DNSSEC
|
||
3. 使用dig命令测试DNSSEC记录查询
|
||
4. 检查HTTP控制台是否正常工作
|
||
5. 检查日志中是否有DNSSEC验证相关的记录 |