XNSim/XNSimHtml/server.js

80 lines
2.4 KiB
JavaScript
Raw 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 { 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 app = express();
const PORT = process.env.PORT || 3000;
// 获取XNCore环境变量
const xnCorePath = process.env.XNCore || '';
if (!xnCorePath) {
console.error('警告: 环境变量XNCore未设置可能无法找到登录动态库');
}
// 中间件
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, '.')));
// 监听进程退出事件
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.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'main.html'));
});
// 启动服务器
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});