Integrate expiration fixes (#754) in TS2021 branch

This commit is contained in:
Juan Font Alonso 2022-08-20 11:46:44 +02:00
commit e20e818a42
3 changed files with 18 additions and 0 deletions

View file

@ -3,6 +3,7 @@
## 0.17.0 (2022-XX-XX) ## 0.17.0 (2022-XX-XX)
- Add ability to connect to PostgreSQL over TLS/SSL [#745](https://github.com/juanfont/headscale/pull/745) - Add ability to connect to PostgreSQL over TLS/SSL [#745](https://github.com/juanfont/headscale/pull/745)
- Fix CLI registration of expired machines [#754](https://github.com/juanfont/headscale/pull/754)
## 0.16.3 (2022-08-17) ## 0.16.3 (2022-08-17)

View file

@ -26,6 +26,7 @@ const (
) )
ErrCouldNotConvertMachineInterface = Error("failed to convert machine interface") ErrCouldNotConvertMachineInterface = Error("failed to convert machine interface")
ErrHostnameTooLong = Error("Hostname too long") ErrHostnameTooLong = Error("Hostname too long")
ErrDifferentRegisteredNamespace = Error("machine was previously registered with a different namespace")
MachineGivenNameHashLength = 8 MachineGivenNameHashLength = 8
MachineGivenNameTrimSize = 2 MachineGivenNameTrimSize = 2
) )
@ -805,6 +806,11 @@ func (h *Headscale) RegisterMachineFromAuthCallback(
) )
} }
// Registration of expired machine with different namespace
if registrationMachine.ID != 0 && registrationMachine.NamespaceID != namespace.ID {
return nil, ErrDifferentRegisteredNamespace
}
registrationMachine.NamespaceID = namespace.ID registrationMachine.NamespaceID = namespace.ID
registrationMachine.RegisterMethod = registrationMethod registrationMachine.RegisterMethod = registrationMethod
@ -812,6 +818,10 @@ func (h *Headscale) RegisterMachineFromAuthCallback(
registrationMachine, registrationMachine,
) )
if err == nil {
h.registrationCache.Delete(nodeKeyStr)
}
return machine, err return machine, err
} else { } else {
return nil, ErrCouldNotConvertMachineInterface return nil, ErrCouldNotConvertMachineInterface

View file

@ -238,6 +238,13 @@ func (h *Headscale) handleRegisterCommon(
// The machine has expired // The machine has expired
h.handleMachineExpiredCommon(writer, req, registerRequest, *machine, machineKey) h.handleMachineExpiredCommon(writer, req, registerRequest, *machine, machineKey)
machine.Expiry = &time.Time{}
h.registrationCache.Set(
NodePublicKeyStripPrefix(registerRequest.NodeKey),
*machine,
registerCacheExpiration,
)
return return
} }
} }