const API = require('../../../../lib/API') const AccessControl = require('../../../../lib/AccessControl') const { BaseStdResponse } = require('../../../../BaseStdResponse') const { importFromRemoteUrl, getGlobalOrThrow } = require('../../../../lib/Lepao/lepaoProxyPoolService') class ImportUrl extends API { constructor() { super() this.setPath('/Admin/Lepao/Proxy/ImportUrl') this.setMethod('post') } async onRequest(req, res) { const { uuid, session, url } = 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 }) } try { let target = String(url || '').trim() if (!target) { const g = await getGlobalOrThrow() target = String(g.import_url || '').trim() } if (!target) { return res.json({ ...BaseStdResponse.ERR, msg: '未配置 import_url' }) } const r = await importFromRemoteUrl(target, 'url') return res.json({ ...BaseStdResponse.OK, data: { ...r, usedUrl: target } }) } catch (e) { return res.json({ ...BaseStdResponse.ERR, msg: e.message || '从 URL 导入失败' }) } } } module.exports.ImportUrl = ImportUrl