- 实现配置文件加载和解析功能,支持服务器、MMDB数据库和日志配置 - 集成GeoLite2城市数据库查询,提供IP地理位置信息查询服务 - 添加私有IP地址检测逻辑,过滤本地网络地址段 - 构建HTTP路由处理器,返回JSON格式的IP位置信息 - 配置默认启动参数和错误处理机制 - 集成日志系统,记录请求处理过程和错误信息
37 lines
781 B
Go
37 lines
781 B
Go
package main
|
|
|
|
import (
|
|
"checkIP/internal/app"
|
|
"checkIP/internal/config"
|
|
"checkIP/internal/mmdb"
|
|
"fmt"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func main() {
|
|
cfg, err := config.Load("./configs/config.yaml")
|
|
if err != nil {
|
|
logrus.WithError(err).Fatal("load config failed")
|
|
}
|
|
|
|
if cfg.Log.Level != "" {
|
|
level, err := logrus.ParseLevel(cfg.Log.Level)
|
|
if err != nil {
|
|
logrus.WithError(err).Fatal("invalid log level")
|
|
}
|
|
logrus.SetLevel(level)
|
|
}
|
|
|
|
mmdbReader, err := mmdb.New(cfg.MMDB.FilePath)
|
|
if err != nil {
|
|
logrus.WithError(err).Fatal("init mmdb reader failed")
|
|
}
|
|
|
|
router := app.NewRouter(mmdbReader)
|
|
addr := fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port)
|
|
if err := router.Run(addr); err != nil {
|
|
logrus.WithError(err).Fatal("http server failed")
|
|
}
|
|
}
|