fdf0ddd498
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
30 lines
804 B
Go
30 lines
804 B
Go
package lkgateway
|
|
|
|
import (
|
|
"net"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// outboundIP — адрес этого сервера, с которого он ходит к host (для отчётов: какой IP разрешить на той стороне).
|
|
// UDP-«соединение» пакетов не шлёт — система только выбирает маршрут и исходящий адрес.
|
|
func outboundIP(host string, port int) string {
|
|
h := strings.TrimSpace(strings.SplitN(host, `\`, 2)[0])
|
|
if h == "" {
|
|
return ""
|
|
}
|
|
if port == 0 {
|
|
port = 1433
|
|
}
|
|
c, err := net.DialTimeout("udp", net.JoinHostPort(h, strconv.Itoa(port)), time.Second)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
defer c.Close()
|
|
if a, ok := c.LocalAddr().(*net.UDPAddr); ok {
|
|
return a.IP.String()
|
|
}
|
|
return ""
|
|
}
|