优化日志打印格式

This commit is contained in:
2025-08-21 14:51:48 +08:00
parent f6adc5b2a1
commit 7761fb1343
6 changed files with 26 additions and 25 deletions

2
cap.go
View File

@@ -93,7 +93,7 @@ func startPacketCapture() {
// 创建数据包源,用于从网络接口读取数据包
packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
fmt.Printf("正在监听网络接口 %s, 使用过滤器 '%s'...\n", *InterfaceName, *Protocol)
log.Printf(" 正在监听网络接口 %s, 使用过滤器 '%s'...\n", *InterfaceName, *Protocol)
// 创建信号通道,用于捕获中断信号
sigChan := make(chan os.Signal, 1)

BIN
denyip

Binary file not shown.

View File

@@ -4,6 +4,7 @@ import (
"embed"
"fmt"
"io/fs"
"log"
"os"
"path/filepath"
)
@@ -31,7 +32,7 @@ func releaseEmbeddedDir(efs embed.FS, embedPath string, targetDir string) error
// 如果文件已存在就跳过(可选)
if _, err := os.Stat(targetPath); err == nil {
fmt.Printf("文件已存在: %s跳过写入\n", targetPath)
log.Printf(" 文件已存在: %s, 跳过写入\n", targetPath)
return nil
}
@@ -40,27 +41,27 @@ func releaseEmbeddedDir(efs embed.FS, embedPath string, targetDir string) error
return fmt.Errorf("写入文件失败: %w", err)
}
fmt.Printf("释放: %s → %s\n", path, targetPath)
log.Printf(" 释放: %s → %s\n", path, targetPath)
return nil
})
}
func embed_ip2region() {
fmt.Println("正在释放 ip2region 数据...")
log.Println(" 正在释放 ip2region 数据...")
err := releaseEmbeddedDir(embeddedFS, "ip2region", "ip2region")
if err != nil {
fmt.Println("释放失败:", err)
log.Println(" 释放失败:", err)
os.Exit(1)
}
fmt.Println("释放完成,程序继续执行...")
log.Println(" 释放完成,程序继续执行...")
// 你可以在这里使用 ip2region.xdb 文件了,例如:
if _, err := os.Stat("ip2region/ip2region.xdb"); err == nil {
fmt.Println("✅ 确认 ip2region.xdb 已成功写出")
log.Println(" ✅ 确认 ip2region.xdb 已成功写出")
// 这里可以调用 ip2region 逻辑加载它
} else {
fmt.Println("❌ 找不到 ip2region.xdb")
log.Println(" ❌ 找不到 ip2region.xdb")
}
}

View File

@@ -3,6 +3,7 @@ package main
import (
"fmt"
"io"
"log"
"net"
"net/http"
"strings"
@@ -29,6 +30,6 @@ func GetLocalIpv4Addr() string {
return "NULL"
}
fmt.Printf("公网IP: %s\n", ipStr)
log.Printf(" 公网IP: %s\n", ipStr)
return ipStr
}

27
main.go
View File

@@ -67,7 +67,7 @@ func StartChildProcess() (*exec.Cmd, error) {
if err := cmd.Start(); err != nil {
return nil, fmt.Errorf("启动子进程失败: %w", err)
}
fmt.Printf("子进程已启动, PID: %d\n", cmd.Process.Pid)
log.Printf(" 子进程已启动, PID: %d\n", cmd.Process.Pid)
return cmd, nil
}
@@ -224,7 +224,7 @@ func loadFromFile(filePath string, logMessage string) error {
}
func InitMap() {
if err := loadFromFile("cn.json", " Map 已成功从文件加载"); err != nil {
if err := loadFromFile("cn.json", " Map 已成功从文件加载"); err != nil {
log.Fatalf(" 加载 Map 失败: %v", err)
}
@@ -257,7 +257,7 @@ func WriteLocalAddr() {
func RunMainProcess() { // 主进程逻辑
fmt.Println("主进程启动...")
log.Println(" 主进程启动...")
WriteLocalAddr() // 将本机外网地址加入到已处理集合中
@@ -302,11 +302,11 @@ func RunMainProcess() { // 主进程逻辑
setName, err := RemoveIPIfInSets("root", MAX_IPSET_NAME, ipStr)
if err != nil {
log.Printf(" %s 删除 IP 出错: %v\n", ipStr, err)
log.Printf(" %s 删除 IP 出错: %v\n", ipStr, err)
} else if setName != "" {
log.Printf(" %s 已从 %s 中移除 \n", ipStr, setName)
log.Printf(" %s 已从 %s 中移除 \n", ipStr, setName)
} else {
log.Printf(" %s 不在任何 IPSet 中,无需移除\n", ipStr)
log.Printf(" %s 不在任何 IPSet 中,无需移除\n", ipStr)
}
goto next
@@ -316,7 +316,7 @@ func RunMainProcess() { // 主进程逻辑
if Is_Ip_Ipset(ipStr) != 0 { // IP 不在 ipset 集合中
//if !strings.Contains(region, "中国") && !strings.Contains(region, "内网") { // 离线库判断不在中国内
//if !strings.Contains(region, "中国") && !strings.Contains(region, "内网") { // 离线库判断不在中国内
if !ContainsPart(region, REGION) {
log.Printf("\033[33m [%s %s] 离线库为国外, 进一步API判断\033[0m\n", ipStr, region)
@@ -325,13 +325,12 @@ func RunMainProcess() { // 主进程逻辑
} else {
log.Printf("\033[31m [%s %s]\033[0m\n\n", ipStr, position) // 打印地域
//if !strings.Contains(position, "中国") && !strings.Contains(position, "内网") { // API 判断为国外
//if !strings.Contains(position, "中国") && !strings.Contains(position, "内网") { // API 判断为国外
if !ContainsPart(region, REGION) {
AddIPSet(IPSET_NAME, ipStr) // 添加 IP 到 ipset 集合
// 钉钉告警,废弃!钉钉可能限制文本长度,和发送次数!
// warning_ding(ipStr, position) // 警告 IP 地域
} else {
log.Printf("\033[33m %s 离线库为国外, API 判断为国内, 标记为已处理\033[0m\n", ipStr)
@@ -342,7 +341,7 @@ func RunMainProcess() { // 主进程逻辑
// 写入json文件
if err := saveMapToFile("cn.json"); err != nil {
log.Printf("实时保存 Map 失败: %v", err)
log.Printf(" 实时保存 Map 失败: %v", err)
}
}
}
@@ -399,7 +398,7 @@ func RunMainProcess() { // 主进程逻辑
ProcessedMutex.Unlock()
// 打印日志,表示本次清理已完成
log.Println(" 已清理过期 ProcessedIPMap 项")
log.Println(" 已清理过期 ProcessedIPMap 项")
}
}()
@@ -408,7 +407,7 @@ func RunMainProcess() { // 主进程逻辑
for {
time.Sleep(1 * time.Minute) // 每 10 分钟自动刷新
if err := LoadWhiteList("whitelist.txt"); err != nil {
log.Printf(" 刷新白名单失败: %v", err)
log.Printf(" 刷新白名单失败: %v", err)
}
}
}()
@@ -511,9 +510,9 @@ func main() {
// 加载白名单
err := LoadWhiteList("whitelist.txt")
if err != nil {
log.Fatalf(" whiteList Map 加载白名单失败: %v", err)
log.Fatalf(" whiteList Map 加载白名单失败: %v", err)
} else {
log.Println(" whiteList Map 白名单加载成功")
log.Println(" whiteList Map 白名单加载成功")
}
// 守护进程模式

View File

@@ -16,7 +16,7 @@ var (
func LoadWhiteList(filename string) error {
// 如果文件不存在,直接返回 nil 表示无需加载
if _, err := os.Stat(filename); os.IsNotExist(err) {
log.Printf(" 白名单文件 %s 不存在,跳过加载。", filename)
log.Printf(" 白名单文件 %s 不存在,跳过加载。", filename)
return nil
}
@@ -45,6 +45,6 @@ func LoadWhiteList(filename string) error {
whiteList = tempList
whiteListLock.Unlock()
log.Println("白名单已加载完成")
log.Println(" 白名单已加载完成")
return nil
}