Web页面优化和修复
This commit is contained in:
234
README.md
Normal file
234
README.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# DNS服务器项目
|
||||
|
||||
## 项目简介
|
||||
|
||||
这是一个基于Go语言开发的DNS服务器,具有屏蔽规则管理、查询日志记录和统计、Web控制台等功能。该服务器可以拦截特定域名的DNS查询,提供实时的查询统计和日志记录,并通过Web控制台进行管理。
|
||||
|
||||
### 技术栈
|
||||
|
||||
- Go语言
|
||||
- Gorilla Mux (HTTP路由)
|
||||
- Gorilla WebSocket (实时通信)
|
||||
- Chart.js (数据可视化)
|
||||
- Tailwind CSS (样式框架)
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 1. DNS查询处理
|
||||
- 支持UDP和TCP协议
|
||||
- 支持常见DNS查询类型(A, AAAA, CNAME, MX, NS, TXT等)
|
||||
- 高性能查询处理
|
||||
|
||||
### 2. 屏蔽规则管理
|
||||
- 支持域名规则和正则表达式规则
|
||||
- 支持规则例外
|
||||
- 支持远程规则列表
|
||||
- 支持本地规则管理
|
||||
|
||||
### 3. 查询日志记录和统计
|
||||
- 实时记录DNS查询日志
|
||||
- 支持日志持久化到文件
|
||||
- 提供查询统计和趋势分析
|
||||
- 支持日志搜索和过滤
|
||||
- 支持日志排序
|
||||
|
||||
### 4. Web控制台
|
||||
- 直观的仪表盘
|
||||
- 实时统计数据
|
||||
- 图表可视化
|
||||
- 规则管理界面
|
||||
- 查询日志详情页面
|
||||
- 支持分页和自定义记录数量
|
||||
|
||||
### 5. WebSocket实时更新
|
||||
- 实时更新统计数据
|
||||
- 实时更新图表
|
||||
- 支持连接状态管理
|
||||
|
||||
### 6. 查询日志持久化
|
||||
- 将查询日志保存到`querylog.json`文件
|
||||
- 定期自动保存
|
||||
- 服务器重启后自动加载
|
||||
|
||||
## 安装步骤
|
||||
|
||||
### 环境要求
|
||||
|
||||
- Go 1.18或更高版本
|
||||
- Linux或Windows操作系统
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
go mod download
|
||||
```
|
||||
|
||||
### 编译和运行
|
||||
|
||||
```bash
|
||||
# 编译
|
||||
go build -o dns-server main.go
|
||||
|
||||
# 运行
|
||||
./dns-server
|
||||
```
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 主要配置项
|
||||
|
||||
- `ListenPort`: DNS服务器监听端口,默认53
|
||||
- `HTTPPort`: HTTP控制台监听端口,默认8080
|
||||
- `StatsFile`: 统计数据保存文件,默认`data/stats.json`
|
||||
- `SaveInterval`: 自动保存间隔(秒),默认300
|
||||
- `MaxQueryLogs`: 最大保存日志数量,默认1000
|
||||
|
||||
### 配置文件格式
|
||||
|
||||
配置文件使用JSON格式,位于`config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"ListenPort": 53,
|
||||
"HTTPPort": 8080,
|
||||
"StatsFile": "data/stats.json",
|
||||
"SaveInterval": 300,
|
||||
"MaxQueryLogs": 1000
|
||||
}
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 启动服务器
|
||||
|
||||
```bash
|
||||
./dns-server
|
||||
```
|
||||
|
||||
### 访问Web控制台
|
||||
|
||||
在浏览器中访问:
|
||||
```
|
||||
http://localhost:8080
|
||||
```
|
||||
|
||||
### 管理屏蔽规则
|
||||
|
||||
1. 登录Web控制台
|
||||
2. 点击左侧菜单中的"屏蔽管理"
|
||||
3. 在"本地规则管理"中添加或删除规则
|
||||
4. 在"远程黑名单管理"中添加或删除远程规则列表
|
||||
|
||||
### 查看查询日志
|
||||
|
||||
1. 登录Web控制台
|
||||
2. 点击左侧菜单中的"查询日志"
|
||||
3. 查看日志统计和趋势
|
||||
4. 使用搜索和过滤功能查找特定日志
|
||||
5. 点击列头进行排序
|
||||
6. 使用刷新按钮手动刷新日志
|
||||
|
||||
## API文档
|
||||
|
||||
### 主要API端点
|
||||
|
||||
#### 1. DNS查询
|
||||
```
|
||||
GET /api/query?domain=example.com
|
||||
```
|
||||
|
||||
#### 2. 屏蔽规则管理
|
||||
```
|
||||
GET /api/shield/rules
|
||||
POST /api/shield/rules
|
||||
DELETE /api/shield/rules/:id
|
||||
```
|
||||
|
||||
#### 3. Hosts管理
|
||||
```
|
||||
GET /api/hosts
|
||||
POST /api/hosts
|
||||
DELETE /api/hosts/:id
|
||||
```
|
||||
|
||||
#### 4. 查询日志
|
||||
```
|
||||
GET /api/logs/stats
|
||||
GET /api/logs/query
|
||||
GET /api/logs/count
|
||||
```
|
||||
|
||||
#### 5. WebSocket
|
||||
```
|
||||
ws://localhost:8080/ws/stats
|
||||
```
|
||||
|
||||
## 开发说明
|
||||
|
||||
### 项目结构
|
||||
|
||||
```
|
||||
/root/dnsbak/
|
||||
├── config/ # 配置文件
|
||||
├── data/ # 数据文件
|
||||
├── dns/ # DNS服务器相关代码
|
||||
├── http/ # HTTP服务器相关代码
|
||||
├── shield/ # 屏蔽规则管理
|
||||
├── static/ # 静态资源
|
||||
│ ├── css/ # CSS文件
|
||||
│ ├── js/ # JavaScript文件
|
||||
│ └── index.html # 主页面
|
||||
├── main.go # 入口文件
|
||||
├── go.mod # Go模块文件
|
||||
└── go.sum # Go依赖校验文件
|
||||
```
|
||||
|
||||
### 开发流程
|
||||
|
||||
1. 克隆仓库
|
||||
2. 安装依赖
|
||||
3. 开发功能
|
||||
4. 编译和测试
|
||||
5. 提交代码
|
||||
|
||||
### 测试
|
||||
|
||||
```bash
|
||||
go test ./...
|
||||
```
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
|
||||
## 贡献
|
||||
|
||||
欢迎提交Issue和Pull Request!
|
||||
|
||||
## 联系方式
|
||||
|
||||
如有问题或建议,请通过以下方式联系:
|
||||
|
||||
- Email: wxf26054@live.cn
|
||||
- Git: https://gitea.amazehome.xyz/AMAZEHOME/dns-server
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0 (2025-11-30)
|
||||
- 初始版本
|
||||
- 实现基本DNS服务器功能
|
||||
- 实现屏蔽规则管理
|
||||
- 实现查询日志记录和统计
|
||||
- 实现Web控制台
|
||||
- 实现WebSocket实时更新
|
||||
- 实现查询日志持久化
|
||||
|
||||
### v1.0.1 (2025-11-30)
|
||||
- 修复搜索和过滤功能
|
||||
- 优化查询日志显示
|
||||
- 修复样式间隔问题
|
||||
- 添加查询日志刷新按钮
|
||||
|
||||
## 致谢
|
||||
|
||||
感谢所有为该项目做出贡献的开源项目和开发者!
|
||||
81
Readme.md
81
Readme.md
@@ -1,81 +0,0 @@
|
||||
# DNS服务器项目介绍
|
||||
## 项目概述
|
||||
这是一个基于Go语言开发的高性能DNS服务器,具备域名屏蔽、Hosts管理、统计分析和远程规则管理等功能。服务器支持通过Web界面进行管理配置,同时能够自动更新和缓存远程规则列表。
|
||||
|
||||
## 技术架构
|
||||
### 核心组件
|
||||
1. DNS服务模块 ( `server.go` )
|
||||
- 基于 github.com/miekg/dns 库实现高性能DNS查询处理
|
||||
- 支持配置上游DNS服务器进行递归查询
|
||||
- 实现域名屏蔽、统计数据收集等核心功能
|
||||
|
||||
2. 屏蔽管理系统 ( `manager.go` )
|
||||
- 管理本地和远程屏蔽规则
|
||||
- 支持规则缓存、自动更新和统计
|
||||
- 实现域名和正则表达式规则的解析和匹配
|
||||
|
||||
3. HTTP控制台 ( `server.go` )
|
||||
- 提供Web管理界面
|
||||
- 实现REST API用于配置管理和数据查询
|
||||
|
||||
4. 配置管理 ( `config.go` )
|
||||
- 定义配置结构和加载功能
|
||||
- 支持JSON格式配置文件
|
||||
|
||||
## 主要功能特性
|
||||
### 1. 域名屏蔽系统
|
||||
- 支持本地规则文件和远程规则URL
|
||||
- 多种屏蔽方式:NXDOMAIN、refused、emptyIP、customIP
|
||||
- 支持域名精确匹配和正则表达式匹配
|
||||
- 远程规则自动缓存和更新机制
|
||||
### 2. Hosts管理
|
||||
- 支持自定义Hosts映射
|
||||
- 提供Web界面管理Hosts条目
|
||||
- 自动保存Hosts配置
|
||||
### 3. 统计分析功能
|
||||
- 记录屏蔽域名统计信息
|
||||
- 记录解析域名统计信息
|
||||
- 提供按小时统计的屏蔽数据
|
||||
- 支持查询最常屏蔽和解析的域名
|
||||
### 4. 远程规则管理
|
||||
- 支持添加多个远程规则URL
|
||||
- 自动定期更新远程规则
|
||||
- 本地缓存机制确保规则可用性
|
||||
- Web界面可视化管理
|
||||
### 5. 管理界面
|
||||
- 提供直观的Web控制台
|
||||
- 支持查看服务器状态和统计信息
|
||||
- 规则管理和配置修改
|
||||
- DNS查询测试工具
|
||||
## 项目结构
|
||||
```
|
||||
/root/dns/
|
||||
├── config/ # 配置管理
|
||||
├── data/ # 数据目录(包含缓存和统计)
|
||||
│ └── remote_rules/ # 远程规则缓存
|
||||
├── dns/ # DNS服务器核心
|
||||
├── http/ # HTTP控制台
|
||||
├── logger/ # 日志系统
|
||||
├── shield/ # 屏蔽规则管理
|
||||
├── static/ # 静态Web文件
|
||||
├── main.go # 程序入口
|
||||
└── config.json # 配置文件
|
||||
```
|
||||
## 配置项说明
|
||||
主要配置文件 `config.json` 包含以下部分:
|
||||
|
||||
- DNS配置 :端口、上游DNS服务器、超时设置等
|
||||
- HTTP配置 :控制台端口、主机绑定等
|
||||
- 屏蔽配置 :规则文件路径、远程规则URL、更新间隔等
|
||||
- 日志配置 :日志文件路径、级别设置等
|
||||
## 使用场景
|
||||
1. 网络内容过滤(广告、恶意网站屏蔽)
|
||||
2. 本地DNS缓存加速
|
||||
3. 企业/家庭网络DNS管理
|
||||
4. 开发测试环境DNS重定向
|
||||
## 技术栈
|
||||
- 语言 :Go
|
||||
- DNS库 :github.com/miekg/dns
|
||||
- 日志库 :github.com/sirupsen/logrus
|
||||
- Web前端 :HTML/CSS/JavaScript
|
||||
该DNS服务器具有高性能、功能全面、易于配置等特点,适用于需要精确控制DNS查询结果的各种网络环境。
|
||||
BIN
dns-server
BIN
dns-server
Binary file not shown.
@@ -931,7 +931,7 @@
|
||||
</thead>
|
||||
<tbody id="logs-table-body">
|
||||
<tr>
|
||||
<td colspan="7" class="py-8 text-center text-gray-500">
|
||||
<td colspan="5" class="py-8 text-center text-gray-500 border-b border-gray-100">
|
||||
<i class="fa fa-file-text-o text-4xl mb-2 text-gray-300"></i>
|
||||
<div>暂无查询日志</div>
|
||||
</td>
|
||||
|
||||
@@ -281,7 +281,7 @@ function updateLogsTable(logs) {
|
||||
// 显示空状态
|
||||
const emptyRow = document.createElement('tr');
|
||||
emptyRow.innerHTML = `
|
||||
<td colspan="5" class="py-8 text-center text-gray-500">
|
||||
<td colspan="5" class="py-8 text-center text-gray-500 border-b border-gray-100">
|
||||
<i class="fa fa-file-text-o text-4xl mb-2 text-gray-300"></i>
|
||||
<div>暂无查询日志</div>
|
||||
</td>
|
||||
@@ -359,8 +359,8 @@ function updateLogsTable(logs) {
|
||||
<div class="text-xs text-gray-500 mt-1">${formattedDate}</div>
|
||||
</td>
|
||||
<td class="py-3 px-4 text-sm">${log.ClientIP}</td>
|
||||
<td class="py-3 px-4">
|
||||
<div class="text-sm font-medium">${log.Domain}</div>
|
||||
<td class="py-3 px-4 text-sm">
|
||||
<div class="font-medium">${log.Domain}</div>
|
||||
<div class="text-xs text-gray-500 mt-1">类型: ${log.QueryType}, <span class="${statusClass}">${statusText}</span></div>
|
||||
</td>
|
||||
<td class="py-3 px-4 text-sm">${log.ResponseTime}ms</td>
|
||||
|
||||
Reference in New Issue
Block a user