XNSim/XNSimHtml/server.js

115 lines
3.8 KiB
JavaScript
Raw Permalink 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.

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('./utils/systemMonitor');
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 planesRoutes = require('./routes/planes');
const configurationsRoutes = require('./routes/configurations');
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 ddsMonitorRoutes = require('./routes/DDSMonitor');
const systemMonitorRoutes = require('./routes/SystemMonitor');
const modelMonitorRoutes = require('./routes/ModelMonitor');
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', planesRoutes);
app.use('/api', configurationsRoutes);
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.use('/api/dds-monitor', ddsMonitorRoutes);
app.use('/api/system-monitor', systemMonitorRoutes);
app.use('/api/model-monitor', modelMonitorRoutes);
// 接口配置页面路由
app.get('/interface-config', (req, res) => {
res.sendFile(path.join(__dirname, 'interface-config.html'));
});
// 启动服务器
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});