NapCatQQ/packages/napcat-webui-backend/src/router/OB11Config.ts

48 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Router } from 'express';
import multer from 'multer';
import { join } from 'node:path';
import os from 'node:os';
import { WebUiConfig } from '@/napcat-webui-backend/index';
import { OB11GetConfigHandler, OB11SetConfigHandler } from '@/napcat-webui-backend/src/api/OB11Config';
import { BackupExportConfigHandler, BackupImportConfigHandler } from '@/napcat-webui-backend/src/api/BackupConfig';
const router: Router = Router();
// 延迟初始化multer配置
const getUpload = () => {
// 使用系统临时目录作为基础路径方便多个napcat用户统一读取使用
const tmpPath = join(os.tmpdir(), 'napcat-upload');
// 获取上传大小限制默认50MB最大200MB
let uploadSizeLimit = 50;
try {
// 使用同步方式获取配置
uploadSizeLimit = WebUiConfig?.WebUiConfigData?.uploadSizeLimit || 50;
} catch (error) {
// 如果获取失败,使用默认值
console.warn('获取上传大小限制失败:', error);
}
// 确保不超过最大限制
uploadSizeLimit = Math.min(uploadSizeLimit, 200);
return multer({
dest: tmpPath,
limits: {
fileSize: uploadSizeLimit * 1024 * 1024 // 转换为字节
}
});
};
// router:读取配置
router.post('/GetConfig', OB11GetConfigHandler);
// router:写入配置
router.post('/SetConfig', OB11SetConfigHandler);
// router:导出配置
router.get('/ExportConfig', BackupExportConfigHandler);
// router:导入配置
router.post('/ImportConfig', (req, res, next) => {
const upload = getUpload();
upload.single('configFile')(req, res, next);
}, BackupImportConfigHandler);
export { router as OB11ConfigRouter };