修复数据显示问题
This commit is contained in:
32
.trae/documents/修复TOP客户端数据加载失败问题.md
Normal file
32
.trae/documents/修复TOP客户端数据加载失败问题.md
Normal file
@@ -0,0 +1,32 @@
|
||||
## 问题分析
|
||||
|
||||
经过分析,TOP客户端数据加载失败的原因是**前端API调用路径与后端注册的路径不匹配**:
|
||||
|
||||
1. **前端代码**:在 `static/js/api.js` 中,`getTopClients` 方法调用的是 `/top-clients` API端点
|
||||
2. **后端代码**:在 `http/server.go` 中,注册的API路径是 `/api/top-clients`
|
||||
3. **结果**:前端请求404错误,导致TOP客户端数据加载失败
|
||||
|
||||
## 解决方案
|
||||
|
||||
修改前端API调用,将 `/top-clients` 改为 `/api/top-clients`,确保与后端注册的路径匹配。
|
||||
|
||||
## 实现步骤
|
||||
|
||||
1. **修改 `static/js/api.js` 文件**:
|
||||
- 找到 `getTopClients` 方法
|
||||
- 将API调用路径从 `/top-clients?t=` 改为 `/api/top-clients?t=`
|
||||
|
||||
2. **验证修复**:
|
||||
- 刷新页面,检查TOP客户端数据是否能正常加载
|
||||
- 查看浏览器控制台,确认没有404错误
|
||||
|
||||
## 预期效果
|
||||
|
||||
- TOP客户端数据能够正常加载
|
||||
- 不再显示"加载失败"错误信息
|
||||
- 页面上显示真实的TOP客户端数据
|
||||
|
||||
## 代码修改
|
||||
|
||||
只需要修改一个文件:
|
||||
- `static/js/api.js`:更新 `getTopClients` 方法的API路径
|
||||
58
.trae/documents/修复_api_top-clients端点数据持久化问题.md
Normal file
58
.trae/documents/修复_api_top-clients端点数据持久化问题.md
Normal file
@@ -0,0 +1,58 @@
|
||||
## 问题分析
|
||||
|
||||
通过代码分析,我发现/api/top-clients端点数据无法持久化的原因有两个:
|
||||
|
||||
1. **数据保存逻辑缺失**:在`saveStatsData`方法中,虽然`StatsData`结构体包含了`ClientStats`字段,但没有将`server.clientStats`赋值给`statsData.ClientStats`
|
||||
|
||||
2. **数据加载逻辑缺失**:在`loadStatsData`方法中,虽然`StatsData`结构体包含了`ClientStats`字段,但没有将`statsData.ClientStats`赋值给`server.clientStats`
|
||||
|
||||
3. **自动保存功能未启用**:`startAutoSave`方法没有在`Server`的`Start`方法中被调用,导致数据不会定期保存
|
||||
|
||||
## 修复计划
|
||||
|
||||
1. **修改`saveStatsData`方法**:添加保存`ClientStats`数据的逻辑
|
||||
2. **修改`loadStatsData`方法**:添加加载`ClientStats`数据的逻辑
|
||||
3. **在`Server.Start`方法中调用`startAutoSave`**:确保数据定期保存
|
||||
|
||||
## 修复步骤
|
||||
|
||||
### 步骤1:修改`saveStatsData`方法
|
||||
在`dns/server.go`文件中,修改`saveStatsData`方法,添加保存`ClientStats`数据的逻辑:
|
||||
|
||||
```go
|
||||
// 复制客户端统计数据
|
||||
s.clientStatsMutex.RLock()
|
||||
statsData.ClientStats = make(map[string]*ClientStats)
|
||||
for k, v := range s.clientStats {
|
||||
statsData.ClientStats[k] = v
|
||||
}
|
||||
s.clientStatsMutex.RUnlock()
|
||||
```
|
||||
|
||||
### 步骤2:修改`loadStatsData`方法
|
||||
在`dns/server.go`文件中,修改`loadStatsData`方法,添加加载`ClientStats`数据的逻辑:
|
||||
|
||||
```go
|
||||
s.clientStatsMutex.Lock()
|
||||
if statsData.ClientStats != nil {
|
||||
s.clientStats = statsData.ClientStats
|
||||
}
|
||||
s.clientStatsMutex.Unlock()
|
||||
```
|
||||
|
||||
### 步骤3:在`Server.Start`方法中调用`startAutoSave`
|
||||
在`dns/server.go`文件的`Start`方法中,添加调用`startAutoSave`的代码:
|
||||
|
||||
```go
|
||||
// 启动自动保存功能
|
||||
go s.startAutoSave()
|
||||
```
|
||||
|
||||
## 预期效果
|
||||
|
||||
修复后,/api/top-clients端点的数据将:
|
||||
1. 在服务器启动时从文件加载
|
||||
2. 定期自动保存到文件
|
||||
3. 在服务器停止时最后保存一次
|
||||
|
||||
这样就能确保/api/top-clients端点的数据持久化,不会因为服务器重启而丢失。
|
||||
@@ -118398,3 +118398,248 @@ time="2025-11-28T17:05:51+08:00" level=info msg="新WebSocket客户端连接,
|
||||
time="2025-11-28T17:06:02+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 3"
|
||||
time="2025-11-28T17:06:10+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 4"
|
||||
time="2025-11-28T17:06:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:07:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:08:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:09:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:10:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:11:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:12:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:13:42+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:14:19+08:00" level=info msg="统计数据保存成功"
|
||||
time="2025-11-28T17:14:19+08:00" level=info msg="DNS服务器已停止"
|
||||
time="2025-11-28T17:14:19+08:00" level=error msg="HTTP控制台服务器启动失败" error="http: Server closed"
|
||||
time="2025-11-28T17:14:19+08:00" level=info msg="HTTP控制台服务器已停止"
|
||||
time="2025-11-28T17:14:19+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:14:19+08:00" level=info msg="规则自动更新已停止"
|
||||
time="2025-11-28T17:14:19+08:00" level=warning msg="日志系统已关闭"
|
||||
time="2025-11-28T17:14:26+08:00" level=debug msg="尝试加载Shield统计数据" file=/root/dns/data/shield_stats.json
|
||||
time="2025-11-28T17:14:26+08:00" level=info msg="Shield计数数据加载成功" blocked_entries=0 resolved_entries=0
|
||||
time="2025-11-28T17:14:26+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt"
|
||||
time="2025-11-28T17:14:27+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/hosts/adaway.txt"
|
||||
time="2025-11-28T17:14:27+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/easylist.txt"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/rules/costomize.txt"
|
||||
time="2025-11-28T17:14:28+08:00" level=error msg="获取远程规则失败" error="远程服务器返回错误状态码: 404" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/china.txt"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="规则加载完成,域名规则: 177714, 排除规则: 1187, 正则规则: 947, hosts规则: 2"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="统计数据加载成功"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="DNS服务器已启动,监听端口: 53"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="HTTP控制台已启动,监听端口: 8080"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="DNS TCP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="规则自动更新已启动" interval=3600
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="DNS UDP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:14:28+08:00" level=error msg="DNS TCP服务器启动失败" error="listen tcp :53: bind: address already in use"
|
||||
time="2025-11-28T17:14:28+08:00" level=error msg="DNS UDP服务器启动失败" error="listen udp :53: bind: address already in use"
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="启动Shield计数数据自动保存功能" file=./data/shield_stats.json interval=60
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:14:28+08:00" level=info msg="HTTP控制台服务器启动,监听地址: 0.0.0.0:8080"
|
||||
time="2025-11-28T17:15:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:16:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:17:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:18:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:19:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:20:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:21:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:22:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:23:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:24:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:25:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:26:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:27:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:28:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:29:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:30:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:31:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:32:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:33:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:34:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:35:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:36:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:37:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:38:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:39:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:40:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:41:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:42:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:43:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:44:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:45:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:46:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:47:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:48:28+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:48:33+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 1"
|
||||
time="2025-11-28T17:48:54+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 2"
|
||||
time="2025-11-28T17:49:13+08:00" level=info msg="统计数据保存成功"
|
||||
time="2025-11-28T17:49:13+08:00" level=info msg="DNS服务器已停止"
|
||||
time="2025-11-28T17:49:13+08:00" level=error msg="HTTP控制台服务器启动失败" error="http: Server closed"
|
||||
time="2025-11-28T17:49:13+08:00" level=info msg="HTTP控制台服务器已停止"
|
||||
time="2025-11-28T17:49:13+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:49:13+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:49:13+08:00" level=info msg="规则自动更新已停止"
|
||||
time="2025-11-28T17:49:13+08:00" level=warning msg="日志系统已关闭"
|
||||
time="2025-11-28T17:49:18+08:00" level=debug msg="尝试加载Shield统计数据" file=/root/dns/data/shield_stats.json
|
||||
time="2025-11-28T17:49:18+08:00" level=info msg="Shield计数数据加载成功" blocked_entries=0 resolved_entries=0
|
||||
time="2025-11-28T17:49:18+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt"
|
||||
time="2025-11-28T17:49:19+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/hosts/adaway.txt"
|
||||
time="2025-11-28T17:49:19+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/easylist.txt"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/rules/costomize.txt"
|
||||
time="2025-11-28T17:49:20+08:00" level=error msg="获取远程规则失败" error="远程服务器返回错误状态码: 404" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/china.txt"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="规则加载完成,域名规则: 177714, 排除规则: 1187, 正则规则: 947, hosts规则: 2"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="统计数据加载成功"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="DNS服务器已启动,监听端口: 53"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="HTTP控制台已启动,监听端口: 8080"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="DNS TCP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="规则自动更新已启动" interval=3600
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="HTTP控制台服务器启动,监听地址: 0.0.0.0:8080"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="DNS UDP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="启动Shield计数数据自动保存功能" file=./data/shield_stats.json interval=60
|
||||
time="2025-11-28T17:49:20+08:00" level=error msg="DNS UDP服务器启动失败" error="listen udp :53: bind: address already in use"
|
||||
time="2025-11-28T17:49:20+08:00" level=error msg="DNS TCP服务器启动失败" error="listen tcp :53: bind: address already in use"
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:49:20+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 1"
|
||||
time="2025-11-28T17:49:22+08:00" level=info msg="统计数据保存成功"
|
||||
time="2025-11-28T17:49:22+08:00" level=info msg="DNS服务器已停止"
|
||||
time="2025-11-28T17:49:22+08:00" level=error msg="HTTP控制台服务器启动失败" error="http: Server closed"
|
||||
time="2025-11-28T17:49:22+08:00" level=info msg="HTTP控制台服务器已停止"
|
||||
time="2025-11-28T17:49:22+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:49:22+08:00" level=info msg="规则自动更新已停止"
|
||||
time="2025-11-28T17:49:22+08:00" level=warning msg="日志系统已关闭"
|
||||
time="2025-11-28T17:49:35+08:00" level=debug msg="尝试加载Shield统计数据" file=/root/dns/data/shield_stats.json
|
||||
time="2025-11-28T17:49:35+08:00" level=info msg="Shield计数数据加载成功" blocked_entries=0 resolved_entries=0
|
||||
time="2025-11-28T17:49:35+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt"
|
||||
time="2025-11-28T17:49:35+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/hosts/adaway.txt"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/easylist.txt"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/rules/costomize.txt"
|
||||
time="2025-11-28T17:49:36+08:00" level=error msg="获取远程规则失败" error="远程服务器返回错误状态码: 404" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/china.txt"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="规则加载完成,域名规则: 177714, 排除规则: 1187, 正则规则: 947, hosts规则: 2"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="统计数据加载成功"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="DNS服务器已启动,监听端口: 53"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="HTTP控制台已启动,监听端口: 8080"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="规则自动更新已启动" interval=3600
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="DNS UDP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="启动Shield计数数据自动保存功能" file=./data/shield_stats.json interval=60
|
||||
time="2025-11-28T17:49:36+08:00" level=error msg="DNS UDP服务器启动失败" error="listen udp :53: bind: address already in use"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="HTTP控制台服务器启动,监听地址: 0.0.0.0:8080"
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:49:36+08:00" level=info msg="DNS TCP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:49:36+08:00" level=error msg="DNS TCP服务器启动失败" error="listen tcp :53: bind: address already in use"
|
||||
time="2025-11-28T17:49:40+08:00" level=info msg="统计数据保存成功"
|
||||
time="2025-11-28T17:49:40+08:00" level=info msg="DNS服务器已停止"
|
||||
time="2025-11-28T17:49:40+08:00" level=error msg="HTTP控制台服务器启动失败" error="http: Server closed"
|
||||
time="2025-11-28T17:49:40+08:00" level=info msg="HTTP控制台服务器已停止"
|
||||
time="2025-11-28T17:49:40+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:49:40+08:00" level=info msg="规则自动更新已停止"
|
||||
time="2025-11-28T17:49:40+08:00" level=warning msg="日志系统已关闭"
|
||||
time="2025-11-28T17:50:27+08:00" level=debug msg="尝试加载Shield统计数据" file=/root/dns/data/shield_stats.json
|
||||
time="2025-11-28T17:50:27+08:00" level=info msg="Shield计数数据加载成功" blocked_entries=0 resolved_entries=0
|
||||
time="2025-11-28T17:50:28+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt"
|
||||
time="2025-11-28T17:50:28+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/hosts/adaway.txt"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/easylist.txt"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/rules/costomize.txt"
|
||||
time="2025-11-28T17:50:29+08:00" level=error msg="获取远程规则失败" error="远程服务器返回错误状态码: 404" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/china.txt"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="规则加载完成,域名规则: 177714, 排除规则: 1187, 正则规则: 947, hosts规则: 2"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="统计数据加载成功"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="DNS服务器已启动,监听端口: 53"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="HTTP控制台已启动,监听端口: 8080"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="HTTP控制台服务器启动,监听地址: 0.0.0.0:8080"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="规则自动更新已启动" interval=3600
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="DNS UDP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:50:29+08:00" level=error msg="DNS UDP服务器启动失败" error="listen udp :53: bind: address already in use"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="DNS TCP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="启动Shield计数数据自动保存功能" file=./data/shield_stats.json interval=60
|
||||
time="2025-11-28T17:50:29+08:00" level=error msg="DNS TCP服务器启动失败" error="listen tcp :53: bind: address already in use"
|
||||
time="2025-11-28T17:50:29+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:50:32+08:00" level=info msg="统计数据保存成功"
|
||||
time="2025-11-28T17:50:32+08:00" level=info msg="DNS服务器已停止"
|
||||
time="2025-11-28T17:50:32+08:00" level=error msg="HTTP控制台服务器启动失败" error="http: Server closed"
|
||||
time="2025-11-28T17:50:32+08:00" level=info msg="HTTP控制台服务器已停止"
|
||||
time="2025-11-28T17:50:32+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:50:32+08:00" level=info msg="规则自动更新已停止"
|
||||
time="2025-11-28T17:50:32+08:00" level=warning msg="日志系统已关闭"
|
||||
time="2025-11-28T17:50:39+08:00" level=debug msg="尝试加载Shield统计数据" file=/root/dns/data/shield_stats.json
|
||||
time="2025-11-28T17:50:39+08:00" level=info msg="Shield计数数据加载成功" blocked_entries=0 resolved_entries=0
|
||||
time="2025-11-28T17:50:39+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt"
|
||||
time="2025-11-28T17:50:40+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/hosts/adaway.txt"
|
||||
time="2025-11-28T17:50:40+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/easylist.txt"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="从缓存加载远程规则" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/rules/costomize.txt"
|
||||
time="2025-11-28T17:50:41+08:00" level=error msg="获取远程规则失败" error="远程服务器返回错误状态码: 404" url="https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-Filters/raw/branch/main/list/china.txt"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="规则加载完成,域名规则: 177714, 排除规则: 1187, 正则规则: 947, hosts规则: 2"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="统计数据加载成功"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="DNS服务器已启动,监听端口: 53"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="HTTP控制台已启动,监听端口: 8080"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="DNS TCP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="规则自动更新已启动" interval=3600
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="DNS UDP服务器启动,监听端口: 53"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="HTTP控制台服务器启动,监听地址: 0.0.0.0:8080"
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="启动Shield计数数据自动保存功能" file=./data/shield_stats.json interval=60
|
||||
time="2025-11-28T17:50:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:50:53+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:59922" domain=baidu.com.amazehome.xyz type=A
|
||||
time="2025-11-28T17:50:53+08:00" level=error msg="DNS查询失败" domain=baidu.com.amazehome.xyz
|
||||
time="2025-11-28T17:50:53+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:59923" domain=baidu.com.amazehome.xyz type=AAAA
|
||||
time="2025-11-28T17:50:53+08:00" level=error msg="DNS查询失败" domain=baidu.com.amazehome.xyz
|
||||
time="2025-11-28T17:50:53+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:59924" domain=baidu.com type=A
|
||||
time="2025-11-28T17:50:53+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=6.815658ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:50:53+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:59925" domain=baidu.com type=AAAA
|
||||
time="2025-11-28T17:50:53+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=5.426351ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:50:55+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 1"
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:65019" domain=baidu.com.amazehome.xyz type=A
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=44.444026ms server="223.6.6.6:53"
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:60004" domain=baidu.com.amazehome.xyz type=AAAA
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=26.886795ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:60005" domain=baidu.com type=A
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=5.814714ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:60006" domain=baidu.com type=AAAA
|
||||
time="2025-11-28T17:51:01+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=6.067841ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:51025" domain=baidu.com.amazehome.xyz type=A
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=23.331982ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:51026" domain=baidu.com.amazehome.xyz type=AAAA
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=15.333608ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:51027" domain=baidu.com type=A
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=5.200086ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:51028" domain=baidu.com type=AAAA
|
||||
time="2025-11-28T17:51:02+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=5.610318ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:62798" domain=baidu.com.amazehome.xyz type=A
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=5.968135ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:53424" domain=baidu.com.amazehome.xyz type=AAAA
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=32.194049ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:53425" domain=baidu.com type=A
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=5.978959ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:53426" domain=baidu.com type=AAAA
|
||||
time="2025-11-28T17:51:04+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=6.456632ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:51:06+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 2"
|
||||
time="2025-11-28T17:51:07+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 3"
|
||||
time="2025-11-28T17:51:18+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 4"
|
||||
time="2025-11-28T17:51:27+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 5"
|
||||
time="2025-11-28T17:51:30+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 6"
|
||||
time="2025-11-28T17:51:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:52:20+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 7"
|
||||
time="2025-11-28T17:52:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:53:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:54:35+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 8"
|
||||
time="2025-11-28T17:54:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:54:46+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 9"
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:54165" domain=baidu.com.amazehome.xyz type=A
|
||||
time="2025-11-28T17:55:09+08:00" level=error msg="DNS查询失败" domain=baidu.com.amazehome.xyz
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:54166" domain=baidu.com.amazehome.xyz type=AAAA
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="DNS查询成功" domain=baidu.com.amazehome.xyz rtt=15.782508ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:54167" domain=baidu.com type=A
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=6.236745ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="接收到DNS查询" client="10.35.10.78:54168" domain=baidu.com type=AAAA
|
||||
time="2025-11-28T17:55:09+08:00" level=debug msg="DNS查询成功" domain=baidu.com rtt=5.772169ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:55:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:56:36+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 10"
|
||||
time="2025-11-28T17:56:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
time="2025-11-28T17:57:02+08:00" level=info msg="新WebSocket客户端连接,当前连接数: 11"
|
||||
time="2025-11-28T17:57:05+08:00" level=debug msg="接收到DNS查询" client="10.35.10.11:26319" domain=pull-lls-h26.douyincdn.com type=A
|
||||
time="2025-11-28T17:57:05+08:00" level=debug msg="DNS查询成功" domain=pull-lls-h26.douyincdn.com rtt=5.903127ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:9535: write: broken pipe"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:14268: write: broken pipe"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:29188: write: broken pipe"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:44721: write: broken pipe"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:5121: write: broken pipe"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:35066: write: broken pipe"
|
||||
time="2025-11-28T17:57:05+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:33135: write: broken pipe"
|
||||
time="2025-11-28T17:57:08+08:00" level=debug msg="接收到DNS查询" client="10.35.10.11:49866" domain=pull-f5-vs.flive.douyincdn.com type=A
|
||||
time="2025-11-28T17:57:08+08:00" level=debug msg="DNS查询成功" domain=pull-f5-vs.flive.douyincdn.com rtt=5.741132ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:57:08+08:00" level=error msg="发送WebSocket消息失败: write tcp 10.35.10.12:8080->10.35.10.78:46595: write: broken pipe"
|
||||
time="2025-11-28T17:57:26+08:00" level=debug msg="接收到DNS查询" client="10.35.10.11:46049" domain=api-access.pangolin-sdk-toutiao.com type=A
|
||||
time="2025-11-28T17:57:26+08:00" level=debug msg="DNS查询成功" domain=api-access.pangolin-sdk-toutiao.com rtt=3.970532ms server="223.5.5.5:53"
|
||||
time="2025-11-28T17:57:41+08:00" level=info msg="Shield计数数据保存成功" blocked_entries=0 file=/root/dns/data/shield_stats.json resolved_entries=0
|
||||
|
||||
@@ -611,10 +611,10 @@
|
||||
|
||||
<!-- 排行表格 -->
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mt-6">
|
||||
<!-- TOP客户端 -->
|
||||
<!-- 客户端排行 -->
|
||||
<div class="bg-white rounded-lg p-6 card-shadow">
|
||||
<div class="flex items-center justify-between mb-4">
|
||||
<h3 class="text-lg font-semibold">TOP客户端</h3>
|
||||
<h3 class="text-lg font-semibold">客户端排行</h3>
|
||||
<div id="top-clients-loading" class="flex items-center text-sm text-gray-500">
|
||||
<i class="fa fa-spinner fa-spin mr-2"></i>
|
||||
<span>加载中...</span>
|
||||
|
||||
Reference in New Issue
Block a user