goHttpDns 项目教程
goHttpDnsA HttpDns Server written by Go项目地址:https://gitcode.com/gh_mirrors/go/goHttpDns
1. 项目的目录结构及介绍
goHttpDns 项目的目录结构如下:
goHttpDns/
├── bin/
├── etc/
│ └── logger.xml
├── src/
│ ├── main.go
│ ├── config/
│ │ └── config.go
│ ├── dns/
│ │ └── dns.go
│ ├── http/
│ │ └── http.go
│ ├── cache/
│ │ └── cache.go
│ └── utils/
│ └── utils.go
├── LICENSE
├── README.md
└── Makefile
目录介绍
bin/
:生成的可执行文件存放目录。etc/
:配置文件存放目录,包含日志配置文件logger.xml
。src/
:源代码目录,包含主要的 Go 文件和子目录。main.go
:项目的主入口文件。config/
:配置相关的代码。dns/
:DNS 处理相关的代码。http/
:HTTP 处理相关的代码。cache/
:缓存处理相关的代码。utils/
:工具函数相关的代码。
LICENSE
:项目的许可证文件。README.md
:项目的说明文档。Makefile
:用于编译项目的 Makefile。
2. 项目的启动文件介绍
项目的启动文件是 src/main.go
。这个文件包含了程序的入口点,负责初始化配置、启动 DNS 和 HTTP 服务。
主要功能
- 读取配置文件。
- 初始化日志系统。
- 启动 DNS 服务。
- 启动 HTTP 服务。
代码示例
package main
import (
"goHttpDns/src/config"
"goHttpDns/src/dns"
"goHttpDns/src/http"
"log"
)
func main() {
// 读取配置
conf, err := config.LoadConfig("etc/conf.yml")
if err != nil {
log.Fatalf("Failed to load config: %v", err)
}
// 初始化日志
log.SetFlags(log.LstdFlags | log.Lshortfile)
// 启动 DNS 服务
dns.Start(conf)
// 启动 HTTP 服务
http.Start(conf)
}
3. 项目的配置文件介绍
项目的配置文件是 etc/conf.yml
。这个文件包含了项目的各种配置选项,如 Redis 连接配置、日志配置、监听地址和端口、DNS 服务器列表等。
配置文件示例
redis:
host: "127.0.0.1:6379"
db: 0
log_config: "/etc/logger.xml"
listen: "0.0.0.0"
port: 9999
ttl: 100
dnsservers:
- "202.96.128.86"
- "202.96.128.166"
- "8.8.8.8"
- "8.8.4.4"
配置项说明
redis
:Redis 连接配置。host
:Redis 服务器地址和端口。db
:Redis 数据库编号。
log_config
:日志配置文件路径。listen
:监听地址。port
:监听端口。ttl
:DNS 解析结果的缓存时间(秒)。dnsservers
:DNS 服务器列表。
通过以上配置文件,可以灵活地调整项目的运行参数,以适应不同的环境和需求。
goHttpDnsA HttpDns Server written by Go项目地址:https://gitcode.com/gh_mirrors/go/goHttpDns