mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-31 08:01:34 +01:00 
			
		
		
		
	Rename name -> hostname, nickname -> givenname
This commit is contained in:
		
							parent
							
								
									8845938881
								
							
						
					
					
						commit
						6e2768097a
					
				
							
								
								
									
										14
									
								
								acls_test.go
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								acls_test.go
									
									
									
									
									
								
							| @ -118,7 +118,7 @@ func (s *Suite) TestValidExpandTagOwnersInUsers(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		IPAddresses:    MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -164,7 +164,7 @@ func (s *Suite) TestValidExpandTagOwnersInPorts(c *check.C) { | ||||
| 		MachineKey:     "12345", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		IPAddresses:    MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -210,7 +210,7 @@ func (s *Suite) TestInvalidTagValidNamespace(c *check.C) { | ||||
| 		MachineKey:     "12345", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		IPAddresses:    MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -255,7 +255,7 @@ func (s *Suite) TestValidTagInvalidNamespace(c *check.C) { | ||||
| 		MachineKey:     "12345", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "webserver", | ||||
| 		Hostname:       "webserver", | ||||
| 		IPAddresses:    MachineAddresses{netaddr.MustParseIP("100.64.0.1")}, | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -274,7 +274,7 @@ func (s *Suite) TestValidTagInvalidNamespace(c *check.C) { | ||||
| 		MachineKey:     "56789", | ||||
| 		NodeKey:        "bar2", | ||||
| 		DiscoKey:       "faab", | ||||
| 		Name:           "user", | ||||
| 		Hostname:       "user", | ||||
| 		IPAddresses:    MachineAddresses{netaddr.MustParseIP("100.64.0.2")}, | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -368,7 +368,7 @@ func (s *Suite) TestPortNamespace(c *check.C) { | ||||
| 		MachineKey:     "12345", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		IPAddresses:    ips, | ||||
| @ -410,7 +410,7 @@ func (s *Suite) TestPortGroup(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		IPAddresses:    ips, | ||||
|  | ||||
							
								
								
									
										17
									
								
								api.go
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								api.go
									
									
									
									
									
								
							| @ -133,7 +133,7 @@ func (h *Headscale) RegistrationHandler(ctx *gin.Context) { | ||||
| 
 | ||||
| 			return | ||||
| 		} | ||||
| 		hname, err := NormalizeToFQDNRules( | ||||
| 		normalizedHostname, err := NormalizeToFQDNRules( | ||||
| 			req.Hostinfo.Hostname, | ||||
| 			h.cfg.OIDC.StripEmaildomain, | ||||
| 		) | ||||
| @ -153,7 +153,8 @@ func (h *Headscale) RegistrationHandler(ctx *gin.Context) { | ||||
| 		// happens | ||||
| 		newMachine := Machine{ | ||||
| 			MachineKey: machineKeyStr, | ||||
| 			Name:       hname, | ||||
| 			Hostname:   req.Hostinfo.Hostname, | ||||
| 			GivenName:  normalizedHostname, | ||||
| 			NodeKey:    NodePublicKeyStripPrefix(req.NodeKey), | ||||
| 			LastSeen:   &now, | ||||
| 			Expiry:     &time.Time{}, | ||||
| @ -361,7 +362,7 @@ func (h *Headscale) handleMachineLogOut( | ||||
| 	resp := tailcfg.RegisterResponse{} | ||||
| 
 | ||||
| 	log.Info(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("Client requested logout") | ||||
| 
 | ||||
| 	h.ExpireMachine(&machine) | ||||
| @ -391,7 +392,7 @@ func (h *Headscale) handleMachineValidRegistration( | ||||
| 
 | ||||
| 	// The machine registration is valid, respond with redirect to /map | ||||
| 	log.Debug(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("Client is registered and we have the current NodeKey. All clear to /map") | ||||
| 
 | ||||
| 	resp.AuthURL = "" | ||||
| @ -426,7 +427,7 @@ func (h *Headscale) handleMachineExpired( | ||||
| 
 | ||||
| 	// The client has registered before, but has expired | ||||
| 	log.Debug(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("Machine registration has expired. Sending a authurl to register") | ||||
| 
 | ||||
| 	if registerRequest.Auth.AuthKey != "" { | ||||
| @ -469,7 +470,7 @@ func (h *Headscale) handleMachineRefreshKey( | ||||
| 	resp := tailcfg.RegisterResponse{} | ||||
| 
 | ||||
| 	log.Debug(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("We have the OldNodeKey in the database. This is a key refresh") | ||||
| 	machine.NodeKey = NodePublicKeyStripPrefix(registerRequest.NodeKey) | ||||
| 	h.db.Save(&machine) | ||||
| @ -594,7 +595,7 @@ func (h *Headscale) handleAuthKey( | ||||
| 	if machine != nil { | ||||
| 		log.Trace(). | ||||
| 			Caller(). | ||||
| 			Str("machine", machine.Name). | ||||
| 			Str("machine", machine.Hostname). | ||||
| 			Msg("machine already registered, refreshing with new auth key") | ||||
| 
 | ||||
| 		machine.NodeKey = nodeKey | ||||
| @ -603,7 +604,7 @@ func (h *Headscale) handleAuthKey( | ||||
| 	} else { | ||||
| 		now := time.Now().UTC() | ||||
| 		machineToRegister := Machine{ | ||||
| 			Name:           registerRequest.Hostinfo.Hostname, | ||||
| 			Hostname:       registerRequest.Hostinfo.Hostname, | ||||
| 			NamespaceID:    pak.Namespace.ID, | ||||
| 			MachineKey:     machineKeyStr, | ||||
| 			RegisterMethod: RegisterMethodAuthKey, | ||||
|  | ||||
							
								
								
									
										4
									
								
								app.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								app.go
									
									
									
									
									
								
							| @ -298,14 +298,14 @@ func (h *Headscale) expireEphemeralNodesWorker() { | ||||
| 				time.Now(). | ||||
| 					After(machine.LastSeen.Add(h.cfg.EphemeralNodeInactivityTimeout)) { | ||||
| 				log.Info(). | ||||
| 					Str("machine", machine.Name). | ||||
| 					Str("machine", machine.Hostname). | ||||
| 					Msg("Ephemeral client removed from database") | ||||
| 
 | ||||
| 				err = h.db.Unscoped().Delete(machine).Error | ||||
| 				if err != nil { | ||||
| 					log.Error(). | ||||
| 						Err(err). | ||||
| 						Str("machine", machine.Name). | ||||
| 						Str("machine", machine.Hostname). | ||||
| 						Msg("🤮 Cannot delete ephemeral machine from the database") | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
							
								
								
									
										28
									
								
								dns_test.go
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								dns_test.go
									
									
									
									
									
								
							| @ -161,7 +161,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		NodeKey:        "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		DiscoKey:       "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		Name:           "test_get_shared_nodes_1", | ||||
| 		Hostname:           "test_get_shared_nodes_1", | ||||
| 		NamespaceID:    namespaceShared1.ID, | ||||
| 		Namespace:      *namespaceShared1, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -170,7 +170,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared1) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared1.Name, machineInShared1.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared1.Name, machineInShared1.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machineInShared2 := &Machine{ | ||||
| @ -178,7 +178,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_2", | ||||
| 		Hostname:           "test_get_shared_nodes_2", | ||||
| 		NamespaceID:    namespaceShared2.ID, | ||||
| 		Namespace:      *namespaceShared2, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -187,7 +187,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared2) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared2.Name, machineInShared2.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared2.Name, machineInShared2.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machineInShared3 := &Machine{ | ||||
| @ -195,7 +195,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_3", | ||||
| 		Hostname:           "test_get_shared_nodes_3", | ||||
| 		NamespaceID:    namespaceShared3.ID, | ||||
| 		Namespace:      *namespaceShared3, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -204,7 +204,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared3) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared3.Name, machineInShared3.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared3.Name, machineInShared3.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machine2InShared1 := &Machine{ | ||||
| @ -212,7 +212,7 @@ func (s *Suite) TestDNSConfigMapResponseWithMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_4", | ||||
| 		Hostname:           "test_get_shared_nodes_4", | ||||
| 		NamespaceID:    namespaceShared1.ID, | ||||
| 		Namespace:      *namespaceShared1, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -304,7 +304,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		NodeKey:        "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		DiscoKey:       "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		Name:           "test_get_shared_nodes_1", | ||||
| 		Hostname:           "test_get_shared_nodes_1", | ||||
| 		NamespaceID:    namespaceShared1.ID, | ||||
| 		Namespace:      *namespaceShared1, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -313,7 +313,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared1) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared1.Name, machineInShared1.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared1.Name, machineInShared1.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machineInShared2 := &Machine{ | ||||
| @ -321,7 +321,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_2", | ||||
| 		Hostname:           "test_get_shared_nodes_2", | ||||
| 		NamespaceID:    namespaceShared2.ID, | ||||
| 		Namespace:      *namespaceShared2, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -330,7 +330,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared2) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared2.Name, machineInShared2.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared2.Name, machineInShared2.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machineInShared3 := &Machine{ | ||||
| @ -338,7 +338,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_3", | ||||
| 		Hostname:           "test_get_shared_nodes_3", | ||||
| 		NamespaceID:    namespaceShared3.ID, | ||||
| 		Namespace:      *namespaceShared3, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -347,7 +347,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared3) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared3.Name, machineInShared3.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared3.Name, machineInShared3.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machine2InShared1 := &Machine{ | ||||
| @ -355,7 +355,7 @@ func (s *Suite) TestDNSConfigMapResponseWithoutMagicDNS(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_4", | ||||
| 		Hostname:           "test_get_shared_nodes_4", | ||||
| 		NamespaceID:    namespaceShared1.ID, | ||||
| 		Namespace:      *namespaceShared1, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
|  | ||||
							
								
								
									
										69
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										69
									
								
								machine.go
									
									
									
									
									
								
							| @ -39,8 +39,18 @@ type Machine struct { | ||||
| 	NodeKey     string | ||||
| 	DiscoKey    string | ||||
| 	IPAddresses MachineAddresses | ||||
| 	Name        string | ||||
| 	Nickname    string | ||||
| 
 | ||||
| 	// Hostname represents the name given by the Tailscale | ||||
| 	// client during registration | ||||
| 	Hostname string | ||||
| 
 | ||||
| 	// Givenname represents either: | ||||
| 	// a DNS normalized version of Hostname | ||||
| 	// a valid name set by the User | ||||
| 	// | ||||
| 	// GivenName is the name used in all DNS related | ||||
| 	// parts of headscale. | ||||
| 	GivenName   string | ||||
| 	NamespaceID uint | ||||
| 	Namespace   Namespace `gorm:"foreignKey:NamespaceID"` | ||||
| 
 | ||||
| @ -150,7 +160,7 @@ func getFilteredByACLPeers( | ||||
| ) Machines { | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("Finding peers filtered by ACLs") | ||||
| 
 | ||||
| 	peers := make(map[uint64]Machine) | ||||
| @ -217,7 +227,7 @@ func getFilteredByACLPeers( | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msgf("Found some machines: %v", machines) | ||||
| 
 | ||||
| 	return authorizedPeers | ||||
| @ -226,7 +236,7 @@ func getFilteredByACLPeers( | ||||
| func (h *Headscale) ListPeers(machine *Machine) (Machines, error) { | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("Finding direct peers") | ||||
| 
 | ||||
| 	machines := Machines{} | ||||
| @ -241,7 +251,7 @@ func (h *Headscale) ListPeers(machine *Machine) (Machines, error) { | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msgf("Found peers: %s", machines.String()) | ||||
| 
 | ||||
| 	return machines, nil | ||||
| @ -278,7 +288,7 @@ func (h *Headscale) getPeers(machine *Machine) (Machines, error) { | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msgf("Found total peers: %s", peers.String()) | ||||
| 
 | ||||
| 	return peers, nil | ||||
| @ -318,7 +328,7 @@ func (h *Headscale) GetMachine(namespace string, name string) (*Machine, error) | ||||
| 	} | ||||
| 
 | ||||
| 	for _, m := range machines { | ||||
| 		if m.Name == name { | ||||
| 		if m.Hostname == name { | ||||
| 			return &m, nil | ||||
| 		} | ||||
| 	} | ||||
| @ -369,26 +379,27 @@ func (h *Headscale) ExpireMachine(machine *Machine) { | ||||
| } | ||||
| 
 | ||||
| // RenameMachine takes a Machine struct and sets the expire field to now. | ||||
| func (h *Headscale) RenameMachine(machine *Machine, newName string) { | ||||
| 	newNickname, err := NormalizeToFQDNRules( | ||||
| func (h *Headscale) RenameMachine(machine *Machine, newName string) error { | ||||
| 	err := CheckForFQDNRules( | ||||
| 		newName, | ||||
| 		h.cfg.OIDC.StripEmaildomain, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		log.Error(). | ||||
| 			Caller(). | ||||
| 			Str("func", "RenameMachine"). | ||||
| 			Str("machine", machine.Name). | ||||
| 			Str("machine", machine.Hostname). | ||||
| 			Str("newName", newName). | ||||
| 			Err(err) | ||||
| 
 | ||||
| 		return | ||||
| 		return err | ||||
| 	} | ||||
| 	machine.Nickname = newNickname | ||||
| 	machine.GivenName = newName | ||||
| 
 | ||||
| 	h.setLastStateChangeToNow(machine.Namespace.Name) | ||||
| 
 | ||||
| 	h.db.Save(machine) | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // RefreshMachine takes a Machine struct and sets the expire field to now. | ||||
| @ -458,23 +469,23 @@ func (h *Headscale) isOutdated(machine *Machine) bool { | ||||
| 	} | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Time("last_successful_update", lastChange). | ||||
| 		Time("last_state_change", lastUpdate). | ||||
| 		Msgf("Checking if %s is missing updates", machine.Name) | ||||
| 		Msgf("Checking if %s is missing updates", machine.Hostname) | ||||
| 
 | ||||
| 	return lastUpdate.Before(lastChange) | ||||
| } | ||||
| 
 | ||||
| func (machine Machine) String() string { | ||||
| 	return machine.Name | ||||
| 	return machine.Hostname | ||||
| } | ||||
| 
 | ||||
| func (machines Machines) String() string { | ||||
| 	temp := make([]string, len(machines)) | ||||
| 
 | ||||
| 	for index, machine := range machines { | ||||
| 		temp[index] = machine.Name | ||||
| 		temp[index] = machine.Hostname | ||||
| 	} | ||||
| 
 | ||||
| 	return fmt.Sprintf("[ %s ](%d)", strings.Join(temp, ", "), len(temp)) | ||||
| @ -485,7 +496,7 @@ func (machines MachinesP) String() string { | ||||
| 	temp := make([]string, len(machines)) | ||||
| 
 | ||||
| 	for index, machine := range machines { | ||||
| 		temp[index] = machine.Name | ||||
| 		temp[index] = machine.Hostname | ||||
| 	} | ||||
| 
 | ||||
| 	return fmt.Sprintf("[ %s ](%d)", strings.Join(temp, ", "), len(temp)) | ||||
| @ -578,15 +589,11 @@ func (machine Machine) toNode( | ||||
| 		keyExpiry = time.Time{} | ||||
| 	} | ||||
| 
 | ||||
| 	name := machine.Name | ||||
| 	if len(machine.Nickname) > 0 { | ||||
| 		name = machine.Nickname | ||||
| 	} | ||||
| 	var hostname string | ||||
| 	if dnsConfig != nil && dnsConfig.Proxied { // MagicDNS | ||||
| 		hostname = fmt.Sprintf( | ||||
| 			"%s.%s.%s", | ||||
| 			name, | ||||
| 			machine.GivenName, | ||||
| 			machine.Namespace.Name, | ||||
| 			baseDomain, | ||||
| 		) | ||||
| @ -598,7 +605,7 @@ func (machine Machine) toNode( | ||||
| 			) | ||||
| 		} | ||||
| 	} else { | ||||
| 		hostname = machine.Name | ||||
| 		hostname = machine.GivenName | ||||
| 	} | ||||
| 
 | ||||
| 	hostInfo := machine.GetHostInfo() | ||||
| @ -639,8 +646,8 @@ func (machine *Machine) toProto() *v1.Machine { | ||||
| 		NodeKey:     machine.NodeKey, | ||||
| 		DiscoKey:    machine.DiscoKey, | ||||
| 		IpAddresses: machine.IPAddresses.ToStringSlice(), | ||||
| 		Name:        machine.Name, | ||||
| 		Nickname:    machine.Nickname, | ||||
| 		Name:        machine.Hostname, | ||||
| 		GivenName:   machine.GivenName, | ||||
| 		Namespace:   machine.Namespace.toProto(), | ||||
| 
 | ||||
| 		// TODO(kradalby): Implement register method enum converter | ||||
| @ -711,7 +718,7 @@ func (h *Headscale) RegisterMachine(machine Machine, | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Msg("Attempting to register machine") | ||||
| 
 | ||||
| 	h.ipAllocationMutex.Lock() | ||||
| @ -722,7 +729,7 @@ func (h *Headscale) RegisterMachine(machine Machine, | ||||
| 		log.Error(). | ||||
| 			Caller(). | ||||
| 			Err(err). | ||||
| 			Str("machine", machine.Name). | ||||
| 			Str("machine", machine.Hostname). | ||||
| 			Msg("Could not find IP for the new machine") | ||||
| 
 | ||||
| 		return nil, err | ||||
| @ -734,7 +741,7 @@ func (h *Headscale) RegisterMachine(machine Machine, | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine", machine.Name). | ||||
| 		Str("machine", machine.Hostname). | ||||
| 		Str("ip", strings.Join(ips.ToStringSlice(), ",")). | ||||
| 		Msg("Machine registered with the database") | ||||
| 
 | ||||
| @ -783,7 +790,7 @@ func (h *Headscale) EnableRoutes(machine *Machine, routeStrs ...string) error { | ||||
| 		if !containsIPPrefix(machine.GetAdvertisedRoutes(), newRoute) { | ||||
| 			return fmt.Errorf( | ||||
| 				"route (%s) is not available on node %s: %w", | ||||
| 				machine.Name, | ||||
| 				machine.Hostname, | ||||
| 				newRoute, errMachineRouteIsNotAvailable, | ||||
| 			) | ||||
| 		} | ||||
|  | ||||
| @ -27,7 +27,7 @@ func (s *Suite) TestGetMachine(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -53,7 +53,7 @@ func (s *Suite) TestGetMachineByID(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -72,7 +72,7 @@ func (s *Suite) TestDeleteMachine(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(1), | ||||
| @ -94,7 +94,7 @@ func (s *Suite) TestHardDeleteMachine(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine3", | ||||
| 		Hostname:       "testmachine3", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(1), | ||||
| @ -124,7 +124,7 @@ func (s *Suite) TestListPeers(c *check.C) { | ||||
| 			MachineKey:     "foo" + strconv.Itoa(index), | ||||
| 			NodeKey:        "bar" + strconv.Itoa(index), | ||||
| 			DiscoKey:       "faa" + strconv.Itoa(index), | ||||
| 			Name:           "testmachine" + strconv.Itoa(index), | ||||
| 			Hostname:       "testmachine" + strconv.Itoa(index), | ||||
| 			NamespaceID:    namespace.ID, | ||||
| 			RegisterMethod: RegisterMethodAuthKey, | ||||
| 			AuthKeyID:      uint(pak.ID), | ||||
| @ -139,9 +139,9 @@ func (s *Suite) TestListPeers(c *check.C) { | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	c.Assert(len(peersOfMachine0), check.Equals, 9) | ||||
| 	c.Assert(peersOfMachine0[0].Name, check.Equals, "testmachine2") | ||||
| 	c.Assert(peersOfMachine0[5].Name, check.Equals, "testmachine7") | ||||
| 	c.Assert(peersOfMachine0[8].Name, check.Equals, "testmachine10") | ||||
| 	c.Assert(peersOfMachine0[0].Hostname, check.Equals, "testmachine2") | ||||
| 	c.Assert(peersOfMachine0[5].Hostname, check.Equals, "testmachine7") | ||||
| 	c.Assert(peersOfMachine0[8].Hostname, check.Equals, "testmachine10") | ||||
| } | ||||
| 
 | ||||
| func (s *Suite) TestGetACLFilteredPeers(c *check.C) { | ||||
| @ -172,7 +172,7 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) { | ||||
| 			IPAddresses: MachineAddresses{ | ||||
| 				netaddr.MustParseIP(fmt.Sprintf("100.64.0.%v", strconv.Itoa(index+1))), | ||||
| 			}, | ||||
| 			Name:           "testmachine" + strconv.Itoa(index), | ||||
| 			Hostname:       "testmachine" + strconv.Itoa(index), | ||||
| 			NamespaceID:    stor[index%2].namespace.ID, | ||||
| 			RegisterMethod: RegisterMethodAuthKey, | ||||
| 			AuthKeyID:      uint(stor[index%2].key.ID), | ||||
| @ -197,11 +197,11 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) { | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	adminMachine, err := app.GetMachineByID(1) | ||||
| 	c.Logf("Machine(%v), namespace: %v", adminMachine.Name, adminMachine.Namespace) | ||||
| 	c.Logf("Machine(%v), namespace: %v", adminMachine.Hostname, adminMachine.Namespace) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	testMachine, err := app.GetMachineByID(2) | ||||
| 	c.Logf("Machine(%v), namespace: %v", testMachine.Name, testMachine.Namespace) | ||||
| 	c.Logf("Machine(%v), namespace: %v", testMachine.Hostname, testMachine.Namespace) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machines, err := app.ListMachines() | ||||
| @ -212,15 +212,15 @@ func (s *Suite) TestGetACLFilteredPeers(c *check.C) { | ||||
| 
 | ||||
| 	c.Log(peersOfTestMachine) | ||||
| 	c.Assert(len(peersOfTestMachine), check.Equals, 4) | ||||
| 	c.Assert(peersOfTestMachine[0].Name, check.Equals, "testmachine4") | ||||
| 	c.Assert(peersOfTestMachine[1].Name, check.Equals, "testmachine6") | ||||
| 	c.Assert(peersOfTestMachine[3].Name, check.Equals, "testmachine10") | ||||
| 	c.Assert(peersOfTestMachine[0].Hostname, check.Equals, "testmachine4") | ||||
| 	c.Assert(peersOfTestMachine[1].Hostname, check.Equals, "testmachine6") | ||||
| 	c.Assert(peersOfTestMachine[3].Hostname, check.Equals, "testmachine10") | ||||
| 
 | ||||
| 	c.Log(peersOfAdminMachine) | ||||
| 	c.Assert(len(peersOfAdminMachine), check.Equals, 9) | ||||
| 	c.Assert(peersOfAdminMachine[0].Name, check.Equals, "testmachine2") | ||||
| 	c.Assert(peersOfAdminMachine[2].Name, check.Equals, "testmachine4") | ||||
| 	c.Assert(peersOfAdminMachine[5].Name, check.Equals, "testmachine7") | ||||
| 	c.Assert(peersOfAdminMachine[0].Hostname, check.Equals, "testmachine2") | ||||
| 	c.Assert(peersOfAdminMachine[2].Hostname, check.Equals, "testmachine4") | ||||
| 	c.Assert(peersOfAdminMachine[5].Hostname, check.Equals, "testmachine7") | ||||
| } | ||||
| 
 | ||||
| func (s *Suite) TestExpireMachine(c *check.C) { | ||||
| @ -238,7 +238,7 @@ func (s *Suite) TestExpireMachine(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:       "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
|  | ||||
| @ -52,7 +52,7 @@ func (s *Suite) TestDestroyNamespaceErrors(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:           "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -142,7 +142,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 		MachineKey:     "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		NodeKey:        "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		DiscoKey:       "686824e749f3b7f2a5927ee6c1e422aee5292592d9179a271ed7b3e659b44a66", | ||||
| 		Name:           "test_get_shared_nodes_1", | ||||
| 		Hostname:           "test_get_shared_nodes_1", | ||||
| 		NamespaceID:    namespaceShared1.ID, | ||||
| 		Namespace:      *namespaceShared1, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -151,7 +151,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared1) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared1.Name, machineInShared1.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared1.Name, machineInShared1.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machineInShared2 := &Machine{ | ||||
| @ -159,7 +159,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_2", | ||||
| 		Hostname:           "test_get_shared_nodes_2", | ||||
| 		NamespaceID:    namespaceShared2.ID, | ||||
| 		Namespace:      *namespaceShared2, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -168,7 +168,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared2) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared2.Name, machineInShared2.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared2.Name, machineInShared2.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machineInShared3 := &Machine{ | ||||
| @ -176,7 +176,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_3", | ||||
| 		Hostname:           "test_get_shared_nodes_3", | ||||
| 		NamespaceID:    namespaceShared3.ID, | ||||
| 		Namespace:      *namespaceShared3, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| @ -185,7 +185,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 	} | ||||
| 	app.db.Save(machineInShared3) | ||||
| 
 | ||||
| 	_, err = app.GetMachine(namespaceShared3.Name, machineInShared3.Name) | ||||
| 	_, err = app.GetMachine(namespaceShared3.Name, machineInShared3.Hostname) | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	machine2InShared1 := &Machine{ | ||||
| @ -193,7 +193,7 @@ func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 		MachineKey:     "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		NodeKey:        "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		DiscoKey:       "dec46ef9dc45c7d2f03bfcd5a640d9e24e3cc68ce3d9da223867c9bc6d5e9863", | ||||
| 		Name:           "test_get_shared_nodes_4", | ||||
| 		Hostname:           "test_get_shared_nodes_4", | ||||
| 		NamespaceID:    namespaceShared1.ID, | ||||
| 		Namespace:      *namespaceShared1, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
|  | ||||
| @ -78,7 +78,7 @@ func (*Suite) TestAlreadyUsedKey(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testest", | ||||
| 		Hostname:       "testest", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -102,7 +102,7 @@ func (*Suite) TestReusableBeingUsedKey(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testest", | ||||
| 		Hostname:       "testest", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -139,7 +139,7 @@ func (*Suite) TestEphemeralKey(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testest", | ||||
| 		Hostname:       "testest", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		LastSeen:       &now, | ||||
|  | ||||
| @ -28,7 +28,7 @@ func (s *Suite) TestGetRoutes(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "test_get_route_machine", | ||||
| 		Hostname:           "test_get_route_machine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -79,7 +79,7 @@ func (s *Suite) TestGetEnableRoutes(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "test_enable_route_machine", | ||||
| 		Hostname:           "test_enable_route_machine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
|  | ||||
| @ -34,7 +34,7 @@ func (s *Suite) TestGetUsedIps(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:           "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
| @ -82,7 +82,7 @@ func (s *Suite) TestGetMultiIp(c *check.C) { | ||||
| 			MachineKey:     "foo", | ||||
| 			NodeKey:        "bar", | ||||
| 			DiscoKey:       "faa", | ||||
| 			Name:           "testmachine", | ||||
| 			Hostname:           "testmachine", | ||||
| 			NamespaceID:    namespace.ID, | ||||
| 			RegisterMethod: RegisterMethodAuthKey, | ||||
| 			AuthKeyID:      uint(pak.ID), | ||||
| @ -172,7 +172,7 @@ func (s *Suite) TestGetAvailableIpMachineWithoutIP(c *check.C) { | ||||
| 		MachineKey:     "foo", | ||||
| 		NodeKey:        "bar", | ||||
| 		DiscoKey:       "faa", | ||||
| 		Name:           "testmachine", | ||||
| 		Hostname:           "testmachine", | ||||
| 		NamespaceID:    namespace.ID, | ||||
| 		RegisterMethod: RegisterMethodAuthKey, | ||||
| 		AuthKeyID:      uint(pak.ID), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user