lamassu-server/packages/server/lib/middlewares/populateDeviceId.js
siiky e10493abc6 Merge branch 'dev' into feat/lam-1291/stress-testing
* dev: (85 commits)
  chore: console.log debug leftovers
  fix: third level navigation links
  fix: show subheader on refresh
  fix: machines/:id routing
  fix: customer route
  chore: update wallet nodes
  feat: shorten long addresses in funding page
  feat: shorten long addresses
  refactor: support copied text different from presented text
  chore: udpate react, downshift and routing
  refactor: use Wizard component on first route
  fix: autocomplete component rendering
  feat: skip2fa option on .env
  fix: drop contraint before dropping index
  chore: stop using alias imports
  fix: re-instate urlResolver
  chore: server code formatting
  chore: reformat code
  chore: adding eslint and prettier config
  chore: typo
  ...
2025-05-20 11:59:44 +01:00

29 lines
746 B
JavaScript

const crypto = require('crypto')
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) {
const peerCert = req.socket.getPeerCertificate
? req.socket.getPeerCertificate()
: null
let deviceId = peerCert?.raw ? sha256(peerCert.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