加添功能:
把本机外网地址加入防火墙白名单,(如果是国外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 {
|
for {
|
||||||
select {
|
select {
|
||||||
case sig := <-sigChan:
|
case sig := <-sigChan:
|
||||||
fmt.Printf("子进程收到信号: %v,准备退出...\n", sig)
|
fmt.Printf("子进程收到信号: %v, 准备退出...\n", sig)
|
||||||
return
|
return
|
||||||
case <-ticker.C:
|
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() { // 主进程逻辑
|
func runMainProcess() { // 主进程逻辑
|
||||||
|
|
||||||
fmt.Println("主进程启动...")
|
fmt.Println("主进程启动...")
|
||||||
@ -239,6 +254,8 @@ func runMainProcess() { // 主进程逻辑
|
|||||||
ipStr := e1.Value.(net.IP).String()
|
ipStr := e1.Value.(net.IP).String()
|
||||||
region, _ := ip2region(ipStr) // 离线库初步判断地域
|
region, _ := ip2region(ipStr) // 离线库初步判断地域
|
||||||
|
|
||||||
|
WriteLocalAddr() // 将本机外网地址加入到已处理集合中
|
||||||
|
|
||||||
ProcessedMutex.Lock()
|
ProcessedMutex.Lock()
|
||||||
_, processed := ProcessedIPMap[ipStr] // 检查是否已处理
|
_, processed := ProcessedIPMap[ipStr] // 检查是否已处理
|
||||||
ProcessedMutex.Unlock()
|
ProcessedMutex.Unlock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user