mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Reuse machine structure for parameters, named parameters
This commit is contained in:
		
							parent
							
								
									469551bc5d
								
							
						
					
					
						commit
						402a76070f
					
				
							
								
								
									
										89
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										89
									
								
								machine.go
									
									
									
									
									
								
							| @ -21,7 +21,6 @@ import ( | ||||
| 
 | ||||
| const ( | ||||
| 	errMachineNotFound                  = Error("machine not found") | ||||
| 	errMachineAlreadyRegistered         = Error("machine already registered") | ||||
| 	errMachineRouteIsNotAvailable       = Error("route is not available on machine") | ||||
| 	errMachineAddressesInvalid          = Error("failed to parse machine addresses") | ||||
| 	errMachineNotFoundRegistrationCache = Error( | ||||
| @ -698,19 +697,23 @@ func (h *Headscale) RegisterMachineFromAuthCallback( | ||||
| ) (*Machine, error) { | ||||
| 	if machineInterface, ok := h.registrationCache.Get(machineKeyStr); ok { | ||||
| 		if registrationMachine, ok := machineInterface.(Machine); ok { | ||||
| 			namespace, err := h.GetNamespace(namespaceName) | ||||
| 			if err != nil { | ||||
| 				return nil, fmt.Errorf( | ||||
| 					"failed to find namespace in register machine from auth callback, %w", | ||||
| 					err, | ||||
| 				) | ||||
| 			} | ||||
| 
 | ||||
| 			registrationMachine.NamespaceID = namespace.ID | ||||
| 			registrationMachine.RegisterMethod = registrationMethod | ||||
| 			registrationMachine.Expiry = expiry | ||||
| 
 | ||||
| 			machine, err := h.RegisterMachine( | ||||
| 				registrationMachine.Name, | ||||
| 				machineKeyStr, | ||||
| 				namespaceName, | ||||
| 				registrationMethod, | ||||
| 				expiry, | ||||
| 				nil, | ||||
| 				®istrationMachine.NodeKey, | ||||
| 				registrationMachine.LastSeen, | ||||
| 				registrationMachine, | ||||
| 			) | ||||
| 
 | ||||
| 			return machine, err | ||||
| 
 | ||||
| 		} else { | ||||
| 			return nil, errCouldNotConvertMachineInterface | ||||
| 		} | ||||
| @ -720,49 +723,30 @@ func (h *Headscale) RegisterMachineFromAuthCallback( | ||||
| } | ||||
| 
 | ||||
| // RegisterMachine is executed from the CLI to register a new Machine using its MachineKey.
 | ||||
| func (h *Headscale) RegisterMachine( | ||||
| 	machineName string, | ||||
| 	machineKeyStr string, | ||||
| 	namespaceName string, | ||||
| 	registrationMethod string, | ||||
| 	expiry *time.Time, | ||||
| 
 | ||||
| 	// Optionals
 | ||||
| 	authKey *PreAuthKey, | ||||
| 	nodePublicKey *string, | ||||
| 	lastSeen *time.Time, | ||||
| func (h *Headscale) RegisterMachine(machine Machine, | ||||
| ) (*Machine, error) { | ||||
| 	namespace, err := h.GetNamespace(namespaceName) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	err = machineKey.UnmarshalText([]byte(MachinePublicKeyEnsurePrefix(machineKeyStr))) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| 		Caller(). | ||||
| 		Str("machine_key_str", machineKeyStr). | ||||
| 		Str("machine_key", machineKey.String()). | ||||
| 		Str("machine_key", machine.MachineKey). | ||||
| 		Msg("Registering machine") | ||||
| 
 | ||||
| 	machine, err := h.GetMachineByMachineKey(machineKey) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// If the machine is already in the database, it is seeking
 | ||||
| 	// reauthentication, and by reaching this step, has been authenticated
 | ||||
| 	// and need to have an updated expiry.
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	_ = machineKey.UnmarshalText( | ||||
| 		[]byte(MachinePublicKeyEnsurePrefix(machine.MachineKey)), | ||||
| 	) | ||||
| 	machineFromDatabase, _ := h.GetMachineByMachineKey(machineKey) | ||||
| 	if machine.isRegistered() { | ||||
| 		log.Trace(). | ||||
| 			Caller(). | ||||
| 			Str("machine", machine.Name). | ||||
| 			Msg("machine already registered, reauthenticating") | ||||
| 
 | ||||
| 		h.RefreshMachine(machine, *expiry) | ||||
| 		h.RefreshMachine(machineFromDatabase, *machine.Expiry) | ||||
| 
 | ||||
| 		return machine, nil | ||||
| 		return machineFromDatabase, nil | ||||
| 	} | ||||
| 
 | ||||
| 	log.Trace(). | ||||
| @ -786,28 +770,9 @@ func (h *Headscale) RegisterMachine( | ||||
| 
 | ||||
| 	machine.IPAddresses = ips | ||||
| 
 | ||||
| 	if expiry != nil { | ||||
| 		machine.Expiry = expiry | ||||
| 	} | ||||
| 
 | ||||
| 	if authKey != nil { | ||||
| 		machine.AuthKeyID = uint(authKey.ID) | ||||
| 	} | ||||
| 
 | ||||
| 	if nodePublicKey != nil { | ||||
| 		machine.NodeKey = *nodePublicKey | ||||
| 	} | ||||
| 
 | ||||
| 	if lastSeen != nil { | ||||
| 		machine.LastSeen = lastSeen | ||||
| 	} | ||||
| 
 | ||||
| 	machine.Name = machineName | ||||
| 	machine.NamespaceID = namespace.ID | ||||
| 
 | ||||
| 	// TODO(kradalby): This field is uneccessary metadata,
 | ||||
| 	// move it to tags instead of having a column.
 | ||||
| 	machine.RegisterMethod = registrationMethod | ||||
| 	// machine.RegisterMethod = registrationMethod
 | ||||
| 
 | ||||
| 	// TODO(kradalby): Registered is a very frustrating value
 | ||||
| 	// to keep up to date, and it makes is have to care if a
 | ||||
| @ -824,7 +789,7 @@ func (h *Headscale) RegisterMachine( | ||||
| 		Str("ip", strings.Join(ips.ToStringSlice(), ",")). | ||||
| 		Msg("Machine registered with the database") | ||||
| 
 | ||||
| 	return machine, nil | ||||
| 	return &machine, nil | ||||
| } | ||||
| 
 | ||||
| func (machine *Machine) GetAdvertisedRoutes() ([]netaddr.IPPrefix, error) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user