Files
goodlink/utils/net.go
2025-01-27 11:08:30 +08:00

52 lines
1012 B
Go

package utils
import (
"crypto/tls"
"io"
"net"
"net/http"
"strconv"
"strings"
"time"
)
func GetUDPLocalIPPort(level string) (string, int) {
conn, err := net.Dial(level, "ifconfig.co:80")
if err != nil {
return "", 0
}
defer conn.Close()
return conn.LocalAddr().(*net.UDPAddr).IP.String(), conn.LocalAddr().(*net.UDPAddr).Port
}
func GetTCPWanIPv4Port(dialer *net.Dialer) (string, int) {
var res []byte
var err error
var resp *http.Response
client := &http.Client{
Transport: &http.Transport{
DialContext: dialer.DialContext,
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true, // 跳过证书验证
},
},
Timeout: 3 * time.Second,
}
if resp, err = client.Get("https://goodlink.kony.vip/ip"); err != nil {
return "", 0
}
defer resp.Body.Close()
if res, err = io.ReadAll(resp.Body); err != nil {
return "", 0
}
localAddr := string(res)
ip := strings.Split(localAddr, ":")[0]
port, _ := strconv.Atoi(strings.Split(localAddr, ":")[1])
return ip, port
}