TCPShield RealIP 项目使用教程
1. 项目的目录结构及介绍
RealIP/
├── LICENSE
├── README.md
├── go.mod
├── go.sum
├── realip.go
└── realip_test.go
- LICENSE: 项目的许可证文件。
- README.md: 项目的说明文档。
- go.mod: Go 模块文件,定义了项目的依赖。
- go.sum: Go 模块的校验文件。
- realip.go: 项目的主要源代码文件,包含了获取客户端真实 IP 的逻辑。
- realip_test.go: 项目的测试文件,用于测试
realip.go
中的功能。
2. 项目的启动文件介绍
项目的启动文件是 realip.go
。该文件包含了获取客户端真实 IP 的主要逻辑。以下是 realip.go
的主要内容:
package realip
import (
"net"
"net/http"
"strings"
)
// FromRequest return client's real public IP address from HTTP request headers.
func FromRequest(r *http.Request) string {
// 省略具体实现
}
- FromRequest 函数: 该函数从 HTTP 请求头中获取客户端的真实 IP 地址。
3. 项目的配置文件介绍
该项目没有显式的配置文件,所有的配置逻辑都集成在 realip.go
文件中。如果需要自定义配置,可以直接修改 realip.go
文件中的逻辑。
例如,可以添加自定义的请求头来获取客户端的真实 IP:
func FromRequest(r *http.Request) string {
// 获取自定义请求头中的 IP 地址
customHeader := r.Header.Get("X-Custom-IP")
if customHeader != "" {
return customHeader
}
// 省略其他逻辑
}
通过这种方式,可以根据具体需求自定义获取客户端真实 IP 的逻辑。