mirror of
https://github.com/juanfont/headscale.git
synced 2026-04-19 07:19:57 +02:00
cli: ensure tagged-devices is included in profile list (#2991)
This commit is contained in:
@@ -247,9 +247,9 @@ func nodeToRegisterResponse(node types.NodeView) *tailcfg.RegisterResponse {
|
||||
if node.IsTagged() {
|
||||
resp.User = types.TaggedDevices.View().TailscaleUser()
|
||||
resp.Login = types.TaggedDevices.View().TailscaleLogin()
|
||||
} else if node.UserView().Valid() {
|
||||
resp.User = node.UserView().TailscaleUser()
|
||||
resp.Login = node.UserView().TailscaleLogin()
|
||||
} else if node.Owner().Valid() {
|
||||
resp.User = node.Owner().TailscaleUser()
|
||||
resp.Login = node.Owner().TailscaleLogin()
|
||||
}
|
||||
|
||||
return resp
|
||||
@@ -389,8 +389,8 @@ func (h *Headscale) handleRegisterWithAuthKey(
|
||||
resp := &tailcfg.RegisterResponse{
|
||||
MachineAuthorized: true,
|
||||
NodeKeyExpired: node.IsExpired(),
|
||||
User: node.UserView().TailscaleUser(),
|
||||
Login: node.UserView().TailscaleLogin(),
|
||||
User: node.Owner().TailscaleUser(),
|
||||
Login: node.Owner().TailscaleLogin(),
|
||||
}
|
||||
|
||||
log.Trace().
|
||||
|
||||
@@ -69,18 +69,19 @@ func newMapper(
|
||||
}
|
||||
}
|
||||
|
||||
// generateUserProfiles creates user profiles for MapResponse.
|
||||
func generateUserProfiles(
|
||||
node types.NodeView,
|
||||
peers views.Slice[types.NodeView],
|
||||
) []tailcfg.UserProfile {
|
||||
userMap := make(map[uint]*types.UserView)
|
||||
ids := make([]uint, 0, len(userMap))
|
||||
user := node.User()
|
||||
user := node.Owner()
|
||||
userID := user.Model().ID
|
||||
userMap[userID] = &user
|
||||
ids = append(ids, userID)
|
||||
for _, peer := range peers.All() {
|
||||
peerUser := peer.User()
|
||||
peerUser := peer.Owner()
|
||||
peerUserID := peerUser.Model().ID
|
||||
userMap[peerUserID] = &peerUser
|
||||
ids = append(ids, peerUserID)
|
||||
|
||||
@@ -78,7 +78,7 @@ func (s *State) DebugOverview() string {
|
||||
now := time.Now()
|
||||
for _, node := range allNodes.All() {
|
||||
if node.Valid() {
|
||||
userName := node.User().Name()
|
||||
userName := node.Owner().Name()
|
||||
userNodeCounts[userName]++
|
||||
|
||||
if node.IsOnline().Valid() && node.IsOnline().Get() {
|
||||
@@ -281,7 +281,7 @@ func (s *State) DebugOverviewJSON() DebugOverviewInfo {
|
||||
|
||||
for _, node := range allNodes.All() {
|
||||
if node.Valid() {
|
||||
userName := node.User().Name()
|
||||
userName := node.Owner().Name()
|
||||
info.Users[userName]++
|
||||
|
||||
if node.IsOnline().Valid() && node.IsOnline().Get() {
|
||||
|
||||
@@ -509,15 +509,27 @@ func (s *NodeStore) DebugString() string {
|
||||
sb.WriteString(fmt.Sprintf("Users with Nodes: %d\n", len(snapshot.nodesByUser)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
// User distribution
|
||||
sb.WriteString("Nodes by User:\n")
|
||||
// User distribution (shows internal UserID tracking, not display owner)
|
||||
sb.WriteString("Nodes by Internal User ID:\n")
|
||||
for userID, nodes := range snapshot.nodesByUser {
|
||||
if len(nodes) > 0 {
|
||||
userName := "unknown"
|
||||
taggedCount := 0
|
||||
if len(nodes) > 0 && nodes[0].Valid() {
|
||||
userName = nodes[0].User().Name()
|
||||
// Count tagged nodes (which have UserID set but are owned by "tagged-devices")
|
||||
for _, n := range nodes {
|
||||
if n.IsTagged() {
|
||||
taggedCount++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if taggedCount > 0 {
|
||||
sb.WriteString(fmt.Sprintf(" - User %d (%s): %d nodes (%d tagged)\n", userID, userName, len(nodes), taggedCount))
|
||||
} else {
|
||||
sb.WriteString(fmt.Sprintf(" - User %d (%s): %d nodes\n", userID, userName, len(nodes)))
|
||||
}
|
||||
sb.WriteString(fmt.Sprintf(" - User %d (%s): %d nodes\n", userID, userName, len(nodes)))
|
||||
}
|
||||
}
|
||||
sb.WriteString("\n")
|
||||
|
||||
@@ -719,7 +719,13 @@ func (node Node) DebugString() string {
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
func (nv NodeView) UserView() UserView {
|
||||
// Owner returns the owner for display purposes.
|
||||
// For tagged nodes, returns TaggedDevices. For user-owned nodes, returns the user.
|
||||
func (nv NodeView) Owner() UserView {
|
||||
if nv.IsTagged() {
|
||||
return TaggedDevices.View()
|
||||
}
|
||||
|
||||
return nv.User()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user