mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-31 08:01:34 +01:00 
			
		
		
		
	feat: add invalid and valid tags to grpc response
This commit is contained in:
		
							parent
							
								
									587bdc75de
								
							
						
					
					
						commit
						db1528bc73
					
				| @ -280,7 +280,11 @@ func (api headscaleV1APIServer) ListMachines( | ||||
| 
 | ||||
| 	response := make([]*v1.Machine, len(machines)) | ||||
| 	for index, machine := range machines { | ||||
| 		response[index] = machine.toProto() | ||||
| 		m := machine.toProto() | ||||
| 		validTags, invalidTags := getTags(*api.h.aclPolicy, machine, api.h.cfg.OIDC.StripEmaildomain) | ||||
| 		m.InvalidTags = invalidTags | ||||
| 		m.ValidTags = validTags | ||||
| 		response[index] = m | ||||
| 	} | ||||
| 
 | ||||
| 	return &v1.ListMachinesResponse{Machines: response}, nil | ||||
|  | ||||
							
								
								
									
										32
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								machine.go
									
									
									
									
									
								
							| @ -2,6 +2,7 @@ package headscale | ||||
| 
 | ||||
| import ( | ||||
| 	"database/sql/driver" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"sort" | ||||
| 	"strconv" | ||||
| @ -660,6 +661,37 @@ func (machine *Machine) toProto() *v1.Machine { | ||||
| 	return machineProto | ||||
| } | ||||
| 
 | ||||
| // getTags will return the tags of the current machine | ||||
| func getTags(aclPolicy ACLPolicy, machine Machine, stripEmailDomain bool) (validTags []string, invalidTags []string) { | ||||
| 	validTagMap := make(map[string]bool) | ||||
| 	invalidTagMap := make(map[string]bool) | ||||
| 	for _, tag := range machine.HostInfo.RequestTags { | ||||
| 		owners, err := expandTagOwners(aclPolicy, tag, stripEmailDomain) | ||||
| 		if errors.Is(err, errInvalidTag) { | ||||
| 			invalidTags = append(invalidTags, tag) | ||||
| 		} | ||||
| 		var found bool | ||||
| 		for _, owner := range owners { | ||||
| 			if machine.Namespace.Name == owner { | ||||
| 				found = true | ||||
| 			} | ||||
| 		} | ||||
| 		if found { | ||||
| 			validTagMap[tag] = true | ||||
| 		} else { | ||||
| 			invalidTagMap[tag] = true | ||||
| 		} | ||||
| 	} | ||||
| 	for tag := range invalidTagMap { | ||||
| 		invalidTags = append(invalidTags, tag) | ||||
| 	} | ||||
| 	for tag := range validTagMap { | ||||
| 		validTags = append(validTags, tag) | ||||
| 	} | ||||
| 
 | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (h *Headscale) RegisterMachineFromAuthCallback( | ||||
| 	machineKeyStr string, | ||||
| 	namespaceName string, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user