diff --git a/denyip b/denyip index d9987af..e529da5 100644 Binary files a/denyip and b/denyip differ diff --git a/local_addr.go b/local_addr.go new file mode 100644 index 0000000..0a49648 --- /dev/null +++ b/local_addr.go @@ -0,0 +1,33 @@ +package main + +import ( + "fmt" + "io" + "net/http" + "strings" +) + +func GetLocalIpv4Addr() string { + // 发送 HTTP GET 请求到外部服务 + resp, err := http.Get("https://inet-ip.aixiao.me/") + if err != nil { + fmt.Printf("请求失败: %s\n", err) + return "NULL" + } + defer resp.Body.Close() // 确保响应体在函数结束时关闭 + + // 读取响应体内容 + ip, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Printf("读取响应失败: %s\n", err) + return "NULL" + } + + // 去除字符串末尾的换行符 + ipStr := strings.TrimRight(string(ip), "\n") + + // 输出获取到的公网 IP + fmt.Printf("%s %d\n", ipStr, len(ipStr)) + + return ipStr +} diff --git a/main.go b/main.go index 4490f95..3040118 100644 --- a/main.go +++ b/main.go @@ -145,7 +145,7 @@ func runChildProcess() { for { select { case sig := <-sigChan: - fmt.Printf("子进程收到信号: %v,准备退出...\n", sig) + fmt.Printf("子进程收到信号: %v, 准备退出...\n", sig) return case <-ticker.C: @@ -211,6 +211,21 @@ func InitMap() { } +func WriteLocalAddr() { + local_ipv4_addr := GetLocalIpv4Addr() // 本机地址 + // 将本机外网地址加入到已处理集合中 + if local_ipv4_addr != "NULL" { + //log.Printf("\033[33m %s 本机地址 \033[0m\n", ipStr) + ProcessedMutex.Lock() + ProcessedIPMap[local_ipv4_addr] = "" + ProcessedMutex.Unlock() + } + // 写入json文件 + if err := saveMapToFile("cn.json"); err != nil { + log.Printf("实时保存 Map 失败: %v", err) + } + +} func runMainProcess() { // 主进程逻辑 fmt.Println("主进程启动...") @@ -239,6 +254,8 @@ func runMainProcess() { // 主进程逻辑 ipStr := e1.Value.(net.IP).String() region, _ := ip2region(ipStr) // 离线库初步判断地域 + WriteLocalAddr() // 将本机外网地址加入到已处理集合中 + ProcessedMutex.Lock() _, processed := ProcessedIPMap[ipStr] // 检查是否已处理 ProcessedMutex.Unlock()