mirror of
https://github.com/tailscale/tailscale.git
synced 2025-01-10 10:03:43 +00:00
client/web: properly show "Log In" for web client on fresh install (#14569)
Change the type of the `IPv4` and `IPv6` members in the `nodeData` struct to be `netip.Addr` instead of `string`. We were previously calling `String()` on this struct, which returns "invalid IP" when the `netip.Addr` is its zero value, and passing this value into the aforementioned attributes. This caused rendering issues on the frontend as we were assuming that the value for `IPv4` and `IPv6` would be falsy in this case. The zero value for a `netip.Addr` marshalls to an empty string instead which is the behaviour we want downstream. Updates https://github.com/tailscale/tailscale/issues/14568 Signed-off-by: Mario Minardi <mario@tailscale.com>
This commit is contained in:
parent
fa52035574
commit
0b4ba4074f
@ -804,8 +804,8 @@ type nodeData struct {
|
|||||||
DeviceName string
|
DeviceName string
|
||||||
TailnetName string // TLS cert name
|
TailnetName string // TLS cert name
|
||||||
DomainName string
|
DomainName string
|
||||||
IPv4 string
|
IPv4 netip.Addr
|
||||||
IPv6 string
|
IPv6 netip.Addr
|
||||||
OS string
|
OS string
|
||||||
IPNVersion string
|
IPNVersion string
|
||||||
|
|
||||||
@ -864,10 +864,14 @@ func (s *Server) serveGetNodeData(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
filterRules, _ := s.lc.DebugPacketFilterRules(r.Context())
|
filterRules, _ := s.lc.DebugPacketFilterRules(r.Context())
|
||||||
|
ipv4, ipv6 := s.selfNodeAddresses(r, st)
|
||||||
|
|
||||||
data := &nodeData{
|
data := &nodeData{
|
||||||
ID: st.Self.ID,
|
ID: st.Self.ID,
|
||||||
Status: st.BackendState,
|
Status: st.BackendState,
|
||||||
DeviceName: strings.Split(st.Self.DNSName, ".")[0],
|
DeviceName: strings.Split(st.Self.DNSName, ".")[0],
|
||||||
|
IPv4: ipv4,
|
||||||
|
IPv6: ipv6,
|
||||||
OS: st.Self.OS,
|
OS: st.Self.OS,
|
||||||
IPNVersion: strings.Split(st.Version, "-")[0],
|
IPNVersion: strings.Split(st.Version, "-")[0],
|
||||||
Profile: st.User[st.Self.UserID],
|
Profile: st.User[st.Self.UserID],
|
||||||
@ -887,10 +891,6 @@ func (s *Server) serveGetNodeData(w http.ResponseWriter, r *http.Request) {
|
|||||||
ACLAllowsAnyIncomingTraffic: s.aclsAllowAccess(filterRules),
|
ACLAllowsAnyIncomingTraffic: s.aclsAllowAccess(filterRules),
|
||||||
}
|
}
|
||||||
|
|
||||||
ipv4, ipv6 := s.selfNodeAddresses(r, st)
|
|
||||||
data.IPv4 = ipv4.String()
|
|
||||||
data.IPv6 = ipv6.String()
|
|
||||||
|
|
||||||
if hostinfo.GetEnvType() == hostinfo.HomeAssistantAddOn && data.URLPrefix == "" {
|
if hostinfo.GetEnvType() == hostinfo.HomeAssistantAddOn && data.URLPrefix == "" {
|
||||||
// X-Ingress-Path is the path prefix in use for Home Assistant
|
// X-Ingress-Path is the path prefix in use for Home Assistant
|
||||||
// https://developers.home-assistant.io/docs/add-ons/presentation#ingress
|
// https://developers.home-assistant.io/docs/add-ons/presentation#ingress
|
||||||
|
Loading…
x
Reference in New Issue
Block a user