117 lines
4.3 KiB
JavaScript
117 lines
4.3 KiB
JavaScript
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 session = require('express-session');
|
|
|
|
// 导入自定义模块
|
|
const { performCleanup } = require('./utils/xnCoreService');
|
|
const authRoutes = require('./routes/auth');
|
|
const versionRoutes = require('./routes/versions');
|
|
const filesystemRoutes = require('./routes/filesystem');
|
|
const systemInfoRoutes = require('./routes/system-info');
|
|
const serviceDevRoutes = require('./routes/service-dev');
|
|
const modelDevRoutes = 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 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');
|
|
const dataCollectRoutes = require('./routes/DataCollect');
|
|
const interfaceGenRoutes = require('./routes/InterfaceGen');
|
|
|
|
const app = express();
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
// 获取XNCore环境变量
|
|
const xnCorePath = process.env.XNCore || '';
|
|
if (!xnCorePath) {
|
|
console.error('A03022001: 环境变量XNCore未设置, 无法找到登录动态库');
|
|
}
|
|
|
|
// 中间件
|
|
app.use(cors({
|
|
origin: true, // 允许所有来源
|
|
credentials: true // 允许跨域请求携带cookie
|
|
}));
|
|
app.use(cookieParser());
|
|
app.use(session({
|
|
secret: 'xnsim-secret-key', // 用于签名 session ID cookie 的密钥
|
|
resave: false, // 不强制保存 session
|
|
saveUninitialized: false, // 不强制将未初始化的 session 存储
|
|
rolling: true, // 每次请求时重置 cookie 的过期时间
|
|
cookie: {
|
|
httpOnly: true, // 防止客户端 JavaScript 访问 cookie
|
|
secure: process.env.NODE_ENV === 'production', // 在生产环境使用 HTTPS
|
|
sameSite: 'strict', // 防止 CSRF 攻击
|
|
maxAge: 30 * 60 * 1000 // cookie 有效期 30 分钟
|
|
}
|
|
}));
|
|
app.use(bodyParser.json({ limit: '50mb' })); // 增加JSON请求体大小限制到50MB
|
|
app.use(bodyParser.urlencoded({ extended: true, limit: '50mb' })); // 增加URL编码请求体大小限制到50MB
|
|
|
|
// 静态文件服务 - 放在根路径处理之前
|
|
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', () => {
|
|
performCleanup();
|
|
process.exit(0);
|
|
});
|
|
process.on('SIGTERM', () => {
|
|
performCleanup();
|
|
process.exit(0);
|
|
});
|
|
|
|
// 处理未捕获的异常
|
|
process.on('uncaughtException', (error) => {
|
|
console.error('B03022002: 未捕获的异常:', 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/service-dev', serviceDevRoutes);
|
|
app.use('/api', modelDevRoutes);
|
|
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/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);
|
|
app.use('/api/data-collect', dataCollectRoutes);
|
|
app.use('/api/interface-gen', interfaceGenRoutes);
|
|
|
|
// 启动服务器
|
|
app.listen(PORT, () => {
|
|
console.log(`D03024003: 服务器运行在 http://localhost:${PORT}`);
|
|
});
|