35 lines
898 B
JavaScript
35 lines
898 B
JavaScript
const semver = require('semver')
|
|
const version = require('../../package.json').version
|
|
const logger = require('../logger')
|
|
|
|
const rejectIncompatibleMachines = function (req, res, next) {
|
|
const machineVersion = req.query.version
|
|
const deviceId = req.deviceId
|
|
|
|
if (!machineVersion) return next()
|
|
|
|
const serverMajor = semver.major(version)
|
|
const machineMajor = semver.major(machineVersion)
|
|
|
|
if (serverMajor - machineMajor > 1) {
|
|
logger.error(
|
|
`Machine version too old: ${machineVersion} deviceId: ${deviceId}`,
|
|
)
|
|
return res.status(400).json({
|
|
error: 'Machine version too old',
|
|
})
|
|
}
|
|
|
|
if (serverMajor < machineMajor) {
|
|
logger.error(
|
|
`Machine version too new: ${machineVersion} deviceId: ${deviceId}`,
|
|
)
|
|
return res.status(400).json({
|
|
error: 'Machine version too new',
|
|
})
|
|
}
|
|
|
|
next()
|
|
}
|
|
|
|
module.exports = rejectIncompatibleMachines
|