Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2023-09-15 20:25:13 +08:00
commit 16685ee743
3 changed files with 69 additions and 10 deletions

View file

@ -80,7 +80,8 @@ export const about = {
<div class="fn__flex-1">
${window.siyuan.languages.about2}
<div class="b3-label__text">${window.siyuan.languages.about3.replace("${port}", location.port)}</div>
<span class="b3-label__text"><code class="fn__code">${window.siyuan.config.localIPs.join("</code> <code class='fn__code'>")}</code></span>
<div class="b3-label__text"><code class="fn__code">${window.siyuan.config.localIPs.filter(ip => !(ip.startsWith("[") && ip.endsWith("]"))).join("</code> <code class='fn__code'>")}</code></div>
<div class="b3-label__text"><code class="fn__code">${window.siyuan.config.localIPs.filter(ip => (ip.startsWith("[") && ip.endsWith("]"))).join("</code> <code class='fn__code'>")}</code></div>
</div>
<div class="fn__space"></div>
<button data-type="open" data-url="http://${window.siyuan.config.system.networkServe ? window.siyuan.config.localIPs[0] : "127.0.0.1"}:${location.port}" class="b3-button b3-button--outline fn__size200 fn__flex-center">

View file

@ -29,12 +29,13 @@ export const initAbout = () => {
<input class="b3-switch fn__flex-center" id="networkServe" type="checkbox"${window.siyuan.config.system.networkServe ? " checked" : ""}>
</div>
<div class="b3-label">
${window.siyuan.languages.about2}
<div class="fn__hr"></div>
<input class="b3-text-field fn__block" readonly value="http://${window.siyuan.config.system.networkServe ? window.siyuan.config.localIPs[0] : "127.0.0.1"}:${location.port}">
<div class="b3-label__text">${window.siyuan.languages.about3.replace("${port}", location.port)}</div>
<div class="fn__hr"></div>
<span class="b3-label__text"><code class="fn__code">${window.siyuan.config.localIPs.join("</code> <code class='fn__code'>")}</code></span>
${window.siyuan.languages.about2}
<div class="fn__hr"></div>
<input class="b3-text-field fn__block" readonly value="http://${window.siyuan.config.system.networkServe ? window.siyuan.config.localIPs[0] : "127.0.0.1"}:${location.port}">
<div class="b3-label__text">${window.siyuan.languages.about3.replace("${port}", location.port)}</div>
<div class="fn__hr"></div>
<div class="b3-label__text"><code class="fn__code">${window.siyuan.config.localIPs.filter(ip => !(ip.startsWith("[") && ip.endsWith("]"))).join("</code> <code class='fn__code'>")}</code></div>
<div class="b3-label__text"><code class="fn__code">${window.siyuan.config.localIPs.filter(ip => (ip.startsWith("[") && ip.endsWith("]"))).join("</code> <code class='fn__code'>")}</code></div>
</div>
<div class="b3-label${window.siyuan.config.readonly ? " fn__none" : ""}">
${window.siyuan.languages.about5}

View file

@ -60,12 +60,69 @@ func GetLocalIPs() (ret []string) {
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.IsLoopback() && networkIp.IP.To4() != nil &&
bytes.Equal([]byte{255, 255, 255, 0}, networkIp.Mask) {
ret = append(ret, networkIp.IP.String())
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, LocalHost)
ret = gulu.Str.RemoveDuplicatedElem(ret)
return