加添功能:
把本机外网地址加入防火墙白名单,(如果是国外VPS)
This commit is contained in:
parent
bad3a9d45f
commit
19b20dec5c
33
local_addr.go
Normal file
33
local_addr.go
Normal 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
19
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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user