🎨 Improve the network serve address list https://github.com/siyuan-note/siyuan/issues/14943

Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2026-01-16 11:20:55 +08:00
parent 88e1f0312c
commit 8cbf2897bb
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 59 additions and 69 deletions

View file

@ -19,7 +19,6 @@ package util
import (
"bytes"
"io/fs"
"net"
"os"
"path"
"path/filepath"
@ -74,74 +73,7 @@ func GetLocalIPs() (ret []string) {
}
ret = []string{}
addrs, err := net.InterfaceAddrs()
if err != nil {
logging.LogWarnf("get interface addresses failed: %s", err)
return
}
IPv4Nets := []*net.IPNet{}
IPv6Nets := []*net.IPNet{}
for _, addr := range addrs {
if networkIp, ok := addr.(*net.IPNet); ok && networkIp.IP.String() != "<nil>" {
if networkIp.IP.To4() != nil {
IPv4Nets = append(IPv4Nets, networkIp)
} else if networkIp.IP.To16() != nil {
IPv6Nets = append(IPv6Nets, networkIp)
}
}
}
// loopback address
for _, net := range IPv4Nets {
if net.IP.IsLoopback() {
ret = append(ret, net.IP.String())
}
}
// private address
for _, net := range IPv4Nets {
if net.IP.IsPrivate() {
ret = append(ret, net.IP.String())
}
}
// IPv4 private address
for _, net := range IPv4Nets {
if net.IP.IsGlobalUnicast() {
ret = append(ret, net.IP.String())
}
}
// link-local unicast address
for _, net := range IPv4Nets {
if net.IP.IsLinkLocalUnicast() {
ret = append(ret, net.IP.String())
}
}
// loopback address
for _, net := range IPv6Nets {
if net.IP.IsLoopback() {
ret = append(ret, "["+net.IP.String()+"]")
}
}
// private address
for _, net := range IPv6Nets {
if net.IP.IsPrivate() {
ret = append(ret, "["+net.IP.String()+"]")
}
}
// IPv6 private address
for _, net := range IPv6Nets {
if net.IP.IsGlobalUnicast() {
ret = append(ret, "["+net.IP.String()+"]")
}
}
// link-local unicast address
for _, net := range IPv6Nets {
if net.IP.IsLinkLocalUnicast() {
ret = append(ret, "["+net.IP.String()+"]")
}
}
ret = append(ret, GetPrivateIPv4s()...)
ret = append(ret, LocalHost)
ret = gulu.Str.RemoveDuplicatedElem(ret)
return