mirror of
https://github.com/dqzboy/Docker-Proxy.git
synced 2026-01-12 16:25:42 +08:00
126 lines
3.8 KiB
JavaScript
126 lines
3.8 KiB
JavaScript
/**
|
|
* 配置路由模块 - 使用SQLite数据库
|
|
*/
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const logger = require('../logger');
|
|
const { requireLogin } = require('../middleware/auth');
|
|
const configServiceDB = require('../services/configServiceDB');
|
|
|
|
// 获取配置
|
|
router.get('/config', async (req, res) => {
|
|
try {
|
|
const config = await configServiceDB.getConfig();
|
|
|
|
// 如果配置为空,使用默认配置
|
|
if (!config || Object.keys(config).length === 0) {
|
|
const defaultConfig = configServiceDB.getDefaultConfig();
|
|
res.json(defaultConfig);
|
|
} else {
|
|
// 合并默认配置和数据库配置,数据库配置优先
|
|
const defaultConfig = configServiceDB.getDefaultConfig();
|
|
const mergedConfig = { ...defaultConfig, ...config };
|
|
res.json(mergedConfig);
|
|
}
|
|
} catch (error) {
|
|
logger.error('获取配置失败:', error);
|
|
// 只在真正出错时返回默认配置
|
|
const defaultConfig = configServiceDB.getDefaultConfig();
|
|
res.json(defaultConfig);
|
|
}
|
|
});
|
|
|
|
// 保存配置
|
|
router.post('/config', async (req, res) => {
|
|
try {
|
|
const newConfig = req.body;
|
|
|
|
// 验证请求数据
|
|
if (!newConfig || typeof newConfig !== 'object') {
|
|
return res.status(400).json({
|
|
error: '无效的配置数据',
|
|
details: '配置必须是一个对象'
|
|
});
|
|
}
|
|
|
|
// 保存配置到数据库
|
|
await configServiceDB.saveConfigs(newConfig);
|
|
|
|
res.json({ success: true, message: '配置已保存' });
|
|
} catch (error) {
|
|
logger.error('保存配置失败:', error);
|
|
res.status(500).json({
|
|
error: '保存配置失败',
|
|
details: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// 获取配置 - 兼容旧路由
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const config = await configServiceDB.getConfig();
|
|
res.json(config);
|
|
} catch (error) {
|
|
logger.error('读取配置失败:', error);
|
|
const defaultConfig = configServiceDB.getDefaultConfig();
|
|
res.json(defaultConfig);
|
|
}
|
|
});
|
|
|
|
// 保存配置 - 兼容旧路由
|
|
router.post('/', async (req, res) => {
|
|
try {
|
|
const newConfig = req.body;
|
|
|
|
if (!newConfig || typeof newConfig !== 'object') {
|
|
return res.status(400).json({
|
|
error: '无效的配置数据',
|
|
details: '配置必须是一个对象'
|
|
});
|
|
}
|
|
|
|
await configServiceDB.saveConfigs(newConfig);
|
|
res.json({ success: true, message: '配置已保存' });
|
|
} catch (error) {
|
|
logger.error('保存配置失败:', error);
|
|
res.status(500).json({
|
|
error: '保存配置失败',
|
|
details: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// 获取菜单项配置
|
|
router.get('/menu-items', async (req, res) => {
|
|
try {
|
|
const menuItems = await configServiceDB.getMenuItems();
|
|
res.json(menuItems);
|
|
} catch (error) {
|
|
logger.error('获取菜单项失败:', error);
|
|
res.status(500).json({ error: '获取菜单项失败', details: error.message });
|
|
}
|
|
});
|
|
|
|
// 保存菜单项配置
|
|
router.post('/menu-items', requireLogin, async (req, res) => {
|
|
try {
|
|
const { menuItems } = req.body;
|
|
|
|
if (!Array.isArray(menuItems)) {
|
|
return res.status(400).json({
|
|
error: '无效的菜单项数据',
|
|
details: '菜单项必须是一个数组'
|
|
});
|
|
}
|
|
|
|
await configServiceDB.saveMenuItems(menuItems);
|
|
res.json({ success: true, message: '菜单项配置已保存' });
|
|
} catch (error) {
|
|
logger.error('保存菜单项失败:', error);
|
|
res.status(500).json({ error: '保存菜单项失败', details: error.message });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|