const API = require('../../../../lib/API') const AccessControl = require('../../../../lib/AccessControl') const { BaseStdResponse } = require('../../../../BaseStdResponse') const { batchCheckProxies } = require('../../../../lib/Lepao/lepaoProxyPoolService') class BatchCheck extends API { constructor() { super() this.setPath('/Admin/Lepao/Proxy/BatchCheck') this.setMethod('post') } async onRequest(req, res) { const { uuid, session, ids } = req.body if ([uuid, session].some((v) => v === '' || v === null || v === undefined)) { return res.json({ ...BaseStdResponse.MISSING_PARAMETER }) } if (!await AccessControl.checkSession(uuid, session)) { return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED }) } const permission = await AccessControl.getPermission(uuid) if (!permission.includes('admin') && !permission.includes('service')) { return res.json({ ...BaseStdResponse.PERMISSION_DENIED }) } let idList = ids if (idList != null && !Array.isArray(idList)) { return res.json({ ...BaseStdResponse.ERR, msg: 'ids 须为数组' }) } if (Array.isArray(idList)) { idList = idList.map((x) => Number(x)).filter((n) => Number.isFinite(n) && n > 0) } try { const stats = await batchCheckProxies(idList?.length ? idList : null, { logger: this.logger }) return res.json({ ...BaseStdResponse.OK, data: stats }) } catch (e) { return res.json({ ...BaseStdResponse.ERR, msg: e.message || '检测失败' }) } } } module.exports.BatchCheck = BatchCheck