32 lines
737 B
JavaScript
32 lines
737 B
JavaScript
const { isMaintenanceModeActive, MaintenanceMode } = require('../utils/maintenanceMode');
|
|
|
|
/**
|
|
* 维护模式中间件
|
|
* 维护期间拦截所有非白名单请求,返回 503 状态码
|
|
*/
|
|
function maintenanceMiddleware(req, res, next) {
|
|
if (!isMaintenanceModeActive()) {
|
|
return next();
|
|
}
|
|
|
|
const isAllowed = MaintenanceMode.allowedRoutes.some((route) =>
|
|
req.path.startsWith(route)
|
|
);
|
|
|
|
if (isAllowed) {
|
|
return next();
|
|
}
|
|
|
|
return res.status(503).json({
|
|
success: false,
|
|
message: '系统正在维护中,请稍后再试',
|
|
maintenance: {
|
|
active: true,
|
|
reason: MaintenanceMode.reason,
|
|
startTime: MaintenanceMode.startTime,
|
|
},
|
|
});
|
|
}
|
|
|
|
module.exports = { maintenanceMiddleware };
|