加添功能:

把本机外网地址加入防火墙白名单,(如果是国外VPS)
This commit is contained in:
aixiao 2025-02-08 11:44:29 +08:00
parent bad3a9d45f
commit 19b20dec5c
3 changed files with 51 additions and 1 deletions

BIN
denyip

Binary file not shown.

33
local_addr.go Normal file
View File

@ -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
}

19
main.go
View File

@ -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()