31 lines
787 B
JavaScript
31 lines
787 B
JavaScript
const _ = require('lodash/fp')
|
|
const crypto = require('crypto')
|
|
|
|
const logger = require('../logger')
|
|
|
|
const IS_STRESS_TESTING = process.env.LAMASSU_STRESS_TESTING === "YES"
|
|
|
|
function sha256 (buf) {
|
|
if (!buf) return null
|
|
const hash = crypto.createHash('sha256')
|
|
|
|
hash.update(buf)
|
|
return hash.digest('hex').toString('hex')
|
|
}
|
|
|
|
const populateDeviceId = function (req, res, next) {
|
|
let deviceId = _.isFunction(req.connection.getPeerCertificate)
|
|
? sha256(req.connection.getPeerCertificate()?.raw)
|
|
: null
|
|
|
|
if (!deviceId && IS_STRESS_TESTING)
|
|
deviceId = req.headers.device_id
|
|
|
|
if (!deviceId) return res.status(500).json({ error: 'Unable to find certificate' })
|
|
req.deviceId = deviceId
|
|
req.deviceTime = req.get('date')
|
|
|
|
next()
|
|
}
|
|
|
|
module.exports = populateDeviceId
|