XNSim/XNSimHtml/server.js

115 lines
3.9 KiB
JavaScript
Raw Permalink Normal View History

2025-04-28 12:25:20 +08:00
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');
2025-04-28 12:25:20 +08:00
// 导入自定义模块
const { performCleanup } = require('./utils/systemMonitor');
2025-04-28 12:25:20 +08:00
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 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');
2025-04-28 16:41:21 +08:00
const udpMonitorRoutes = require('./routes/udp-monitor');
const planesRoutes = require('./routes/planes');
const configurationsRoutes = require('./routes/configurations');
const interfaceRoutes = require('./routes/interface-config');
2025-05-07 13:46:48 +08:00
const icdImportRoutes = require('./routes/icd-import');
2025-05-07 16:02:39 +08:00
const qaRoutes = require('./routes/qa');
2025-05-08 17:01:57 +08:00
const todoRoutes = require('./routes/todos');
const userRoutes = require('./routes/users');
2025-05-12 16:25:52 +08:00
const systemLogRoutes = require('./routes/system-log');
const ddsMonitorRoutes = require('./routes/DDSMonitor');
const systemMonitorRoutes = require('./routes/SystemMonitor');
const modelMonitorRoutes = require('./routes/ModelMonitor');
const systemControlRoutes = require('./routes/SystemControl');
const dataMonitorRoutes = require('./routes/DataMonitor');
2025-04-28 12:25:20 +08:00
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());
2025-04-28 12:25:20 +08:00
app.use(bodyParser.json());
2025-05-07 16:02:39 +08:00
app.use(bodyParser.urlencoded({ extended: true }));
// 静态文件服务 - 放在根路径处理之前
app.use(express.static(__dirname));
// 根路径直接返回main.html
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'main.html'));
});
2025-04-28 12:25:20 +08:00
// 监听进程退出事件
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', serviceApiRoutes);
app.use('/api/idl', idlRoutes);
app.use('/api', projectModelRoutes);
app.use('/api', ataChaptersRoutes);
app.use('/api', simulationRoutes);
2025-04-28 16:41:21 +08:00
app.use('/api/udp-monitor', udpMonitorRoutes);
app.use('/api', planesRoutes);
app.use('/api', configurationsRoutes);
app.use('/api/interface', interfaceRoutes);
2025-05-07 13:46:48 +08:00
app.use('/api/icd', icdImportRoutes);
2025-05-07 16:02:39 +08:00
app.use('/api/qa', qaRoutes);
2025-05-08 17:01:57 +08:00
app.use('/api/todos', todoRoutes);
app.use('/api', userRoutes);
2025-05-12 16:25:52 +08:00
app.use('/api/system-log', systemLogRoutes);
app.use('/api/dds-monitor', ddsMonitorRoutes);
app.use('/api/system-monitor', systemMonitorRoutes);
app.use('/api/model-monitor', modelMonitorRoutes);
app.use('/api/system-control', systemControlRoutes);
app.use('/api/data-monitor', dataMonitorRoutes);
2025-04-28 12:25:20 +08:00
// 接口配置页面路由
app.get('/interface-config', (req, res) => {
res.sendFile(path.join(__dirname, 'interface-config.html'));
});
2025-04-28 12:25:20 +08:00
// 启动服务器
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});