| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- const API = require('../../../../lib/API.js')
- const { BaseStdResponse } = require('../../../../BaseStdResponse.js')
- const AccessControl = require('../../../../lib/AccessControl.js')
- const db = require('../../../../plugin/DataBase/db.js')
- const Redis = require('../../../../plugin/DataBase/Redis.js')
- const QgProxyManager = require('../../../../lib/Lepao/QgProxyManager')
- class AdminLepaoProxyConfig extends API {
- constructor() {
- super()
- this.setPath('/Admin/Lepao/Proxy/Config')
- this.setMethod('POST')
- }
- async onRequest(req, res) {
- const {
- uuid,
- session,
- proxy_enabled,
- area,
- area_ex,
- isp,
- distinct_extract,
- invalidate_cache
- } = req.body
- if ([uuid, session].some(v => v === '' || v == null) || proxy_enabled === undefined || proxy_enabled === null)
- 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 })
- const enabled =
- proxy_enabled === true || proxy_enabled === 1 || proxy_enabled === '1' ? 1 : 0
- const areaStr = area == null ? '' : String(area).trim()
- const areaExStr = area_ex == null ? '' : String(area_ex).trim()
- let ispVal = null
- if (isp !== '' && isp !== undefined && isp !== null) {
- const n = Number(isp)
- if (n === 1 || n === 2 || n === 3) ispVal = n
- }
- const distinct = Number(distinct_extract) === 0 ? 0 : 1
- const now = Date.now()
- try {
- await QgProxyManager.ensureSettingsRow()
- await db.query(
- `UPDATE lepao_proxy_settings SET proxy_enabled = ?, area = ?, area_ex = ?, isp = ?, distinct_extract = ?, updated_at = ? WHERE id = 1`,
- [enabled, areaStr, areaExStr, ispVal, distinct, now]
- )
- if (invalidate_cache === true || invalidate_cache === 1 || invalidate_cache === '1') {
- await Redis.del(QgProxyManager.REDIS_CURRENT)
- }
- await QgProxyManager.recordLog({
- event: 'config_change',
- detail: {
- proxy_enabled: enabled,
- area: areaStr,
- area_ex: areaExStr,
- isp: ispVal,
- distinct_extract: distinct,
- invalidate_cache: !!invalidate_cache,
- operator: uuid
- }
- })
- return res.json({ ...BaseStdResponse.OK })
- } catch (e) {
- this.logger?.error?.(`AdminLepaoProxyConfig: ${e.stack || e}`)
- return res.json({ ...BaseStdResponse.ERR, msg: '保存配置失败' })
- }
- }
- }
- module.exports.AdminLepaoProxyConfig = AdminLepaoProxyConfig
|