mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Merge branch 'main' into db-error-handling
This commit is contained in:
		
						commit
						6f6fb4dcd6
					
				
							
								
								
									
										20
									
								
								acls.go
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								acls.go
									
									
									
									
									
								
							@ -250,16 +250,17 @@ func expandAlias(
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if strings.HasPrefix(alias, "tag:") {
 | 
			
		||||
		owners, err := expandTagOwners(aclPolicy, alias, stripEmailDomain)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if errors.Is(err, errInvalidTag) {
 | 
			
		||||
		// check for forced tags
 | 
			
		||||
		for _, machine := range machines {
 | 
			
		||||
					for _, t := range machine.ForcedTags {
 | 
			
		||||
						if alias == t {
 | 
			
		||||
			if contains(machine.ForcedTags, alias) {
 | 
			
		||||
				ips = append(ips, machine.IPAddresses.ToStringSlice()...)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
		// find tag owners
 | 
			
		||||
		owners, err := expandTagOwners(aclPolicy, alias, stripEmailDomain)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if errors.Is(err, errInvalidTag) {
 | 
			
		||||
				if len(ips) == 0 {
 | 
			
		||||
					return ips, fmt.Errorf(
 | 
			
		||||
						"%w. %v isn't owned by a TagOwner and no forced tags are defined",
 | 
			
		||||
@ -267,23 +268,22 @@ func expandAlias(
 | 
			
		||||
						alias,
 | 
			
		||||
					)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				return ips, nil
 | 
			
		||||
			} else {
 | 
			
		||||
				return ips, err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// filter out machines per tag owner
 | 
			
		||||
		for _, namespace := range owners {
 | 
			
		||||
			machines := filterMachinesByNamespace(machines, namespace)
 | 
			
		||||
			for _, machine := range machines {
 | 
			
		||||
				hi := machine.GetHostInfo()
 | 
			
		||||
				for _, t := range hi.RequestTags {
 | 
			
		||||
					if alias == t {
 | 
			
		||||
				if contains(hi.RequestTags, alias) {
 | 
			
		||||
					ips = append(ips, machine.IPAddresses.ToStringSlice()...)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return ips, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								acls_test.go
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								acls_test.go
									
									
									
									
									
								
							@ -1055,6 +1055,52 @@ func Test_expandAlias(t *testing.T) {
 | 
			
		||||
			want:    []string{"100.64.0.1", "100.64.0.2"},
 | 
			
		||||
			wantErr: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "Forced tag with legitimate tagOwner",
 | 
			
		||||
			args: args{
 | 
			
		||||
				alias: "tag:hr-webserver",
 | 
			
		||||
				machines: []Machine{
 | 
			
		||||
					{
 | 
			
		||||
						IPAddresses: MachineAddresses{
 | 
			
		||||
							netaddr.MustParseIP("100.64.0.1"),
 | 
			
		||||
						},
 | 
			
		||||
						Namespace:  Namespace{Name: "joe"},
 | 
			
		||||
						ForcedTags: []string{"tag:hr-webserver"},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						IPAddresses: MachineAddresses{
 | 
			
		||||
							netaddr.MustParseIP("100.64.0.2"),
 | 
			
		||||
						},
 | 
			
		||||
						Namespace: Namespace{Name: "joe"},
 | 
			
		||||
						HostInfo: HostInfo{
 | 
			
		||||
							OS:          "centos",
 | 
			
		||||
							Hostname:    "foo",
 | 
			
		||||
							RequestTags: []string{"tag:hr-webserver"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						IPAddresses: MachineAddresses{
 | 
			
		||||
							netaddr.MustParseIP("100.64.0.3"),
 | 
			
		||||
						},
 | 
			
		||||
						Namespace: Namespace{Name: "marc"},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						IPAddresses: MachineAddresses{
 | 
			
		||||
							netaddr.MustParseIP("100.64.0.4"),
 | 
			
		||||
						},
 | 
			
		||||
						Namespace: Namespace{Name: "mickael"},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				aclPolicy: ACLPolicy{
 | 
			
		||||
					TagOwners: TagOwners{
 | 
			
		||||
						"tag:hr-webserver": []string{"joe"},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				stripEmailDomain: true,
 | 
			
		||||
			},
 | 
			
		||||
			want:    []string{"100.64.0.1", "100.64.0.2"},
 | 
			
		||||
			wantErr: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "list host in namespace without correctly tagged servers",
 | 
			
		||||
			args: args{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user