### 问题分析 当前的`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验证相关的记录