mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	ensure valid tags is populated on user gets too
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
		
							parent
							
								
									af4508b9dc
								
							
						
					
					
						commit
						e6fc7851e7
					
				@ -39,33 +39,33 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	err := registerNodeCmd.MarkFlagRequired("user")
 | 
						err := registerNodeCmd.MarkFlagRequired("user")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	registerNodeCmd.Flags().StringP("key", "k", "", "Key")
 | 
						registerNodeCmd.Flags().StringP("key", "k", "", "Key")
 | 
				
			||||||
	err = registerNodeCmd.MarkFlagRequired("key")
 | 
						err = registerNodeCmd.MarkFlagRequired("key")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	nodeCmd.AddCommand(registerNodeCmd)
 | 
						nodeCmd.AddCommand(registerNodeCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	expireNodeCmd.Flags().Uint64P("identifier", "i", 0, "Node identifier (ID)")
 | 
						expireNodeCmd.Flags().Uint64P("identifier", "i", 0, "Node identifier (ID)")
 | 
				
			||||||
	err = expireNodeCmd.MarkFlagRequired("identifier")
 | 
						err = expireNodeCmd.MarkFlagRequired("identifier")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	nodeCmd.AddCommand(expireNodeCmd)
 | 
						nodeCmd.AddCommand(expireNodeCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	renameNodeCmd.Flags().Uint64P("identifier", "i", 0, "Node identifier (ID)")
 | 
						renameNodeCmd.Flags().Uint64P("identifier", "i", 0, "Node identifier (ID)")
 | 
				
			||||||
	err = renameNodeCmd.MarkFlagRequired("identifier")
 | 
						err = renameNodeCmd.MarkFlagRequired("identifier")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	nodeCmd.AddCommand(renameNodeCmd)
 | 
						nodeCmd.AddCommand(renameNodeCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deleteNodeCmd.Flags().Uint64P("identifier", "i", 0, "Node identifier (ID)")
 | 
						deleteNodeCmd.Flags().Uint64P("identifier", "i", 0, "Node identifier (ID)")
 | 
				
			||||||
	err = deleteNodeCmd.MarkFlagRequired("identifier")
 | 
						err = deleteNodeCmd.MarkFlagRequired("identifier")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	nodeCmd.AddCommand(deleteNodeCmd)
 | 
						nodeCmd.AddCommand(deleteNodeCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -73,7 +73,7 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	err = moveNodeCmd.MarkFlagRequired("identifier")
 | 
						err = moveNodeCmd.MarkFlagRequired("identifier")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	moveNodeCmd.Flags().StringP("user", "u", "", "New user")
 | 
						moveNodeCmd.Flags().StringP("user", "u", "", "New user")
 | 
				
			||||||
@ -85,7 +85,7 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	err = moveNodeCmd.MarkFlagRequired("user")
 | 
						err = moveNodeCmd.MarkFlagRequired("user")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	nodeCmd.AddCommand(moveNodeCmd)
 | 
						nodeCmd.AddCommand(moveNodeCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -93,7 +93,7 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	err = tagCmd.MarkFlagRequired("identifier")
 | 
						err = tagCmd.MarkFlagRequired("identifier")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatalf(err.Error())
 | 
							log.Fatal(err.Error())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	tagCmd.Flags().
 | 
						tagCmd.Flags().
 | 
				
			||||||
		StringSliceP("tags", "t", []string{}, "List of tags to add to the node")
 | 
							StringSliceP("tags", "t", []string{}, "List of tags to add to the node")
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/puzpuzpuz/xsync/v3"
 | 
				
			||||||
	"github.com/rs/zerolog/log"
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
	"google.golang.org/grpc/codes"
 | 
						"google.golang.org/grpc/codes"
 | 
				
			||||||
	"google.golang.org/grpc/status"
 | 
						"google.golang.org/grpc/status"
 | 
				
			||||||
@ -21,6 +22,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
						v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
				
			||||||
	"github.com/juanfont/headscale/hscontrol/db"
 | 
						"github.com/juanfont/headscale/hscontrol/db"
 | 
				
			||||||
 | 
						"github.com/juanfont/headscale/hscontrol/policy"
 | 
				
			||||||
	"github.com/juanfont/headscale/hscontrol/types"
 | 
						"github.com/juanfont/headscale/hscontrol/types"
 | 
				
			||||||
	"github.com/juanfont/headscale/hscontrol/util"
 | 
						"github.com/juanfont/headscale/hscontrol/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@ -457,19 +459,7 @@ func (api headscaleV1APIServer) ListNodes(
 | 
				
			|||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		response := make([]*v1.Node, len(nodes))
 | 
							response := nodesToProto(api.h.polMan, isLikelyConnected, nodes)
 | 
				
			||||||
		for index, node := range nodes {
 | 
					 | 
				
			||||||
			resp := node.Proto()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			// Populate the online field based on
 | 
					 | 
				
			||||||
			// currently connected nodes.
 | 
					 | 
				
			||||||
			if val, ok := isLikelyConnected.Load(node.ID); ok && val {
 | 
					 | 
				
			||||||
				resp.Online = true
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			response[index] = resp
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return &v1.ListNodesResponse{Nodes: response}, nil
 | 
							return &v1.ListNodesResponse{Nodes: response}, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -482,6 +472,11 @@ func (api headscaleV1APIServer) ListNodes(
 | 
				
			|||||||
		return nodes[i].ID < nodes[j].ID
 | 
							return nodes[i].ID < nodes[j].ID
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						response := nodesToProto(api.h.polMan, isLikelyConnected, nodes)
 | 
				
			||||||
 | 
						return &v1.ListNodesResponse{Nodes: response}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func nodesToProto(polMan policy.PolicyManager, isLikelyConnected *xsync.MapOf[types.NodeID, bool], nodes types.Nodes) []*v1.Node {
 | 
				
			||||||
	response := make([]*v1.Node, len(nodes))
 | 
						response := make([]*v1.Node, len(nodes))
 | 
				
			||||||
	for index, node := range nodes {
 | 
						for index, node := range nodes {
 | 
				
			||||||
		resp := node.Proto()
 | 
							resp := node.Proto()
 | 
				
			||||||
@ -492,12 +487,12 @@ func (api headscaleV1APIServer) ListNodes(
 | 
				
			|||||||
			resp.Online = true
 | 
								resp.Online = true
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validTags := api.h.polMan.Tags(node)
 | 
							validTags := polMan.Tags(node)
 | 
				
			||||||
		resp.ValidTags = validTags
 | 
							resp.ValidTags = validTags
 | 
				
			||||||
		response[index] = resp
 | 
							response[index] = resp
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &v1.ListNodesResponse{Nodes: response}, nil
 | 
						return response
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (api headscaleV1APIServer) MoveNode(
 | 
					func (api headscaleV1APIServer) MoveNode(
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user