const express = require('express'); const path = require('path'); const bodyParser = require('body-parser'); const os = require('os'); const cookieParser = require('cookie-parser'); const cors = require('cors'); // 导入自定义模块 const { performCleanup } = require('./modules/cleanup'); const authRoutes = require('./routes/auth'); const versionRoutes = require('./routes/versions'); const filesystemRoutes = require('./routes/filesystem'); const systemInfoRoutes = require('./routes/system-info'); const scenarioRoutes = require('./routes/scenario-config'); const modelRoutes = require('./routes/model-config'); const serviceRoutes = require('./routes/service-config'); const serviceApiRoutes = require('./routes/service-dev'); const idlRoutes = require('./routes/idl'); const projectModelRoutes = require('./routes/project-model'); const ataChaptersRoutes = require('./routes/model-dev'); const simulationRoutes = require('./routes/run-simulation'); const udpMonitorRoutes = require('./routes/udp-monitor'); const productsRoutes = require('./routes/products'); const interfaceRoutes = require('./routes/interface-config'); const icdImportRoutes = require('./routes/icd-import'); const qaRoutes = require('./routes/qa'); const todoRoutes = require('./routes/todos'); const userRoutes = require('./routes/users'); const systemLogRoutes = require('./routes/system-log'); const app = express(); const PORT = process.env.PORT || 3000; // 获取XNCore环境变量 const xnCorePath = process.env.XNCore || ''; if (!xnCorePath) { console.error('警告: 环境变量XNCore未设置,可能无法找到登录动态库'); } // 中间件 app.use(cors({ origin: true, // 允许所有来源 credentials: true // 允许跨域请求携带cookie })); app.use(cookieParser()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // 静态文件服务 - 放在根路径处理之前 app.use(express.static(__dirname)); // 根路径直接返回main.html app.get('/', (req, res) => { res.sendFile(path.join(__dirname, 'main.html')); }); // 监听进程退出事件 process.on('exit', performCleanup); process.on('SIGINT', () => { console.log('收到 SIGINT 信号'); performCleanup(); process.exit(0); }); process.on('SIGTERM', () => { console.log('收到 SIGTERM 信号'); performCleanup(); process.exit(0); }); // 处理未捕获的异常 process.on('uncaughtException', (error) => { console.error('未捕获的异常:', error); performCleanup(); process.exit(1); }); // 路由 app.use('/api', authRoutes); app.use('/api', versionRoutes); app.use('/api/filesystem', filesystemRoutes); app.use('/api', systemInfoRoutes); app.use('/api', scenarioRoutes); app.use('/api', modelRoutes); app.use('/api', serviceRoutes); app.use('/api', serviceApiRoutes); app.use('/api/idl', idlRoutes); app.use('/api', projectModelRoutes); app.use('/api', ataChaptersRoutes); app.use('/api', simulationRoutes); app.use('/api/udp-monitor', udpMonitorRoutes); app.use('/api', productsRoutes); app.use('/api/interface', interfaceRoutes); app.use('/api/icd', icdImportRoutes); app.use('/api/qa', qaRoutes); app.use('/api/todos', todoRoutes); app.use('/api', userRoutes); app.use('/api/system-log', systemLogRoutes); // 接口配置页面路由 app.get('/interface-config', (req, res) => { res.sendFile(path.join(__dirname, 'interface-config.html')); }); // 启动服务器 app.listen(PORT, () => { console.log(`服务器运行在 http://localhost:${PORT}`); });