mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Ensure we always have the key prefix when needed
This commit is contained in:
		
							parent
							
								
									c38f00fab8
								
							
						
					
					
						commit
						59aeaa8476
					
				
							
								
								
									
										2
									
								
								api.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								api.go
									
									
									
									
									
								
							| @ -75,7 +75,7 @@ func (h *Headscale) RegistrationHandler(ctx *gin.Context) { | ||||
| 	machineKeyStr := ctx.Param("id") | ||||
| 
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	err := machineKey.UnmarshalText([]byte(machineKeyStr)) | ||||
| 	err := machineKey.UnmarshalText([]byte(MachinePublicKeyEnsurePrefix(machineKeyStr))) | ||||
| 	if err != nil { | ||||
| 		log.Error(). | ||||
| 			Caller(). | ||||
|  | ||||
| @ -486,7 +486,9 @@ func nodesToPtables( | ||||
| 		} | ||||
| 
 | ||||
| 		var nodeKey key.NodePublic | ||||
| 		err := nodeKey.UnmarshalText([]byte(machine.NodeKey)) | ||||
| 		err := nodeKey.UnmarshalText( | ||||
| 			[]byte(headscale.NodePublicKeyEnsurePrefix(machine.NodeKey)), | ||||
| 		) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
							
								
								
									
										12
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								machine.go
									
									
									
									
									
								
							| @ -439,7 +439,7 @@ func (machine Machine) toNode( | ||||
| 	includeRoutes bool, | ||||
| ) (*tailcfg.Node, error) { | ||||
| 	var nodeKey key.NodePublic | ||||
| 	err := nodeKey.UnmarshalText([]byte(machine.NodeKey)) | ||||
| 	err := nodeKey.UnmarshalText([]byte(NodePublicKeyEnsurePrefix(machine.NodeKey))) | ||||
| 	if err != nil { | ||||
| 		log.Trace(). | ||||
| 			Caller(). | ||||
| @ -450,14 +450,18 @@ func (machine Machine) toNode( | ||||
| 	} | ||||
| 
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	err = machineKey.UnmarshalText([]byte(machine.MachineKey)) | ||||
| 	err = machineKey.UnmarshalText( | ||||
| 		[]byte(MachinePublicKeyEnsurePrefix(machine.MachineKey)), | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return nil, fmt.Errorf("failed to parse machine public key: %w", err) | ||||
| 	} | ||||
| 
 | ||||
| 	var discoKey key.DiscoPublic | ||||
| 	if machine.DiscoKey != "" { | ||||
| 		err := discoKey.UnmarshalText([]byte(discoPublicHexPrefix + machine.DiscoKey)) | ||||
| 		err := discoKey.UnmarshalText( | ||||
| 			[]byte(DiscoPublicKeyEnsurePrefix(machine.DiscoKey)), | ||||
| 		) | ||||
| 		if err != nil { | ||||
| 			return nil, fmt.Errorf("failed to parse disco public key: %w", err) | ||||
| 		} | ||||
| @ -634,7 +638,7 @@ func (h *Headscale) RegisterMachine( | ||||
| 	} | ||||
| 
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	err = machineKey.UnmarshalText([]byte(machineKeyStr)) | ||||
| 	err = machineKey.UnmarshalText([]byte(MachinePublicKeyEnsurePrefix(machineKeyStr))) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
							
								
								
									
										2
									
								
								oidc.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								oidc.go
									
									
									
									
									
								
							| @ -192,7 +192,7 @@ func (h *Headscale) OIDCCallback(ctx *gin.Context) { | ||||
| 	machineKeyStr, machineKeyOK := machineKeyIf.(string) | ||||
| 
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	err = machineKey.UnmarshalText([]byte(machineKeyStr)) | ||||
| 	err = machineKey.UnmarshalText([]byte(MachinePublicKeyEnsurePrefix(machineKeyStr))) | ||||
| 	if err != nil { | ||||
| 		log.Error(). | ||||
| 			Msg("could not parse machine public key") | ||||
|  | ||||
							
								
								
									
										2
									
								
								poll.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								poll.go
									
									
									
									
									
								
							| @ -38,7 +38,7 @@ func (h *Headscale) PollNetMapHandler(ctx *gin.Context) { | ||||
| 	machineKeyStr := ctx.Param("id") | ||||
| 
 | ||||
| 	var machineKey key.MachinePublic | ||||
| 	err := machineKey.UnmarshalText([]byte(machineKeyStr)) | ||||
| 	err := machineKey.UnmarshalText([]byte(MachinePublicKeyEnsurePrefix(machineKeyStr))) | ||||
| 	if err != nil { | ||||
| 		log.Error(). | ||||
| 			Str("handler", "PollNetMap"). | ||||
|  | ||||
							
								
								
									
										24
									
								
								utils.go
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								utils.go
									
									
									
									
									
								
							| @ -60,6 +60,30 @@ func DiscoPublicKeyStripPrefix(discoKey key.DiscoPublic) string { | ||||
| 	return strings.TrimPrefix(discoKey.String(), discoPublicHexPrefix) | ||||
| } | ||||
| 
 | ||||
| func MachinePublicKeyEnsurePrefix(machineKey string) string { | ||||
| 	if !strings.HasPrefix(machineKey, machinePublicHexPrefix) { | ||||
| 		return machinePublicHexPrefix + machineKey | ||||
| 	} | ||||
| 
 | ||||
| 	return machineKey | ||||
| } | ||||
| 
 | ||||
| func NodePublicKeyEnsurePrefix(nodeKey string) string { | ||||
| 	if !strings.HasPrefix(nodeKey, nodePublicHexPrefix) { | ||||
| 		return nodePublicHexPrefix + nodeKey | ||||
| 	} | ||||
| 
 | ||||
| 	return nodeKey | ||||
| } | ||||
| 
 | ||||
| func DiscoPublicKeyEnsurePrefix(discoKey string) string { | ||||
| 	if !strings.HasPrefix(discoKey, discoPublicHexPrefix) { | ||||
| 		return discoPublicHexPrefix + discoKey | ||||
| 	} | ||||
| 
 | ||||
| 	return discoKey | ||||
| } | ||||
| 
 | ||||
| // Error is used to compare errors as per https://dave.cheney.net/2016/04/07/constant-errors
 | ||||
| type Error string | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user