1
0
mirror of https://github.com/juanfont/headscale.git synced 2024-12-20 19:09:07 +01:00

Expanded response marshal methods to support legacy and Noise

This commit is contained in:
Juan Font Alonso 2022-08-19 14:19:29 +02:00
parent f9a2a2b57a
commit a87a9636e3

View File

@ -21,7 +21,7 @@ func (h *Headscale) getMapResponseData(
} }
if isNoise { if isNoise {
return h.marshalResponse(mapResponse, mapRequest.Compress, key.MachinePublic{}) return h.marshalMapResponse(mapResponse, key.MachinePublic{}, mapRequest.Compress)
} }
var machineKey key.MachinePublic var machineKey key.MachinePublic
@ -35,7 +35,7 @@ func (h *Headscale) getMapResponseData(
return nil, err return nil, err
} }
return h.marshalResponse(mapResponse, mapRequest.Compress, machineKey) return h.marshalMapResponse(mapResponse, machineKey, mapRequest.Compress)
} }
func (h *Headscale) getMapKeepAliveResponseData( func (h *Headscale) getMapKeepAliveResponseData(
@ -48,7 +48,7 @@ func (h *Headscale) getMapKeepAliveResponseData(
} }
if isNoise { if isNoise {
return h.marshalResponse(keepAliveResponse, mapRequest.Compress, key.MachinePublic{}) return h.marshalMapResponse(keepAliveResponse, key.MachinePublic{}, mapRequest.Compress)
} }
var machineKey key.MachinePublic var machineKey key.MachinePublic
@ -62,13 +62,32 @@ func (h *Headscale) getMapKeepAliveResponseData(
return nil, err return nil, err
} }
return h.marshalResponse(keepAliveResponse, mapRequest.Compress, machineKey) return h.marshalMapResponse(keepAliveResponse, machineKey, mapRequest.Compress)
} }
func (h *Headscale) marshalResponse( func (h *Headscale) marshalResponse(
resp interface{}, resp interface{},
compression string,
machineKey key.MachinePublic, machineKey key.MachinePublic,
) ([]byte, error) {
jsonBody, err := json.Marshal(resp)
if err != nil {
log.Error().
Caller().
Err(err).
Msg("Cannot marshal response")
}
if machineKey.IsZero() { // if Noise
return jsonBody, nil
}
return h.privateKey.SealTo(machineKey, jsonBody), nil
}
func (h *Headscale) marshalMapResponse(
resp interface{},
machineKey key.MachinePublic,
compression string,
) ([]byte, error) { ) ([]byte, error) {
jsonBody, err := json.Marshal(resp) jsonBody, err := json.Marshal(resp)
if err != nil { if err != nil {