2023-09-02 20:13:50 +08:00
|
|
|
import 'dotenv/config';
|
2023-09-15 00:53:03 +08:00
|
|
|
import './init';
|
2023-08-31 21:17:57 +08:00
|
|
|
import express from 'express';
|
2023-09-03 01:01:55 +08:00
|
|
|
import 'express-async-errors';
|
2023-08-31 21:17:57 +08:00
|
|
|
import ViteExpress from 'vite-express';
|
2023-09-02 22:53:57 +08:00
|
|
|
import compression from 'compression';
|
2023-09-03 01:01:55 +08:00
|
|
|
import passport from 'passport';
|
2023-09-05 14:08:38 +08:00
|
|
|
import morgan from 'morgan';
|
2023-09-03 19:28:53 +08:00
|
|
|
import { userRouter } from './router/user';
|
|
|
|
import { websiteRouter } from './router/website';
|
2023-09-05 01:18:43 +08:00
|
|
|
import { workspaceRouter } from './router/workspace';
|
2023-09-17 14:41:40 +08:00
|
|
|
import { telemetryRouter } from './router/telemetry';
|
2023-09-27 17:56:32 +08:00
|
|
|
import { trpcExpressMiddleware } from './trpc';
|
2023-10-01 00:01:43 +08:00
|
|
|
import { initUdpServer } from './udp/server';
|
2023-10-03 19:47:17 +08:00
|
|
|
import { createServer } from 'http';
|
|
|
|
import { initSocketio } from './ws';
|
2023-10-05 01:56:33 +08:00
|
|
|
import { monitorManager } from './model/monitor';
|
2023-10-09 00:06:03 +08:00
|
|
|
import { settings } from './utils/settings';
|
2023-09-03 01:01:55 +08:00
|
|
|
|
2023-10-09 00:06:03 +08:00
|
|
|
const port = settings.port;
|
2023-08-31 21:17:57 +08:00
|
|
|
|
|
|
|
const app = express();
|
2023-10-03 19:47:17 +08:00
|
|
|
const httpServer = createServer(app);
|
2023-08-31 21:17:57 +08:00
|
|
|
|
2023-10-01 00:01:43 +08:00
|
|
|
initUdpServer(port);
|
|
|
|
|
2023-10-03 19:47:17 +08:00
|
|
|
initSocketio(httpServer);
|
2023-09-18 16:08:16 +08:00
|
|
|
|
2023-10-05 01:56:33 +08:00
|
|
|
monitorManager.startAll();
|
|
|
|
|
2023-09-02 22:53:57 +08:00
|
|
|
app.use(compression());
|
|
|
|
app.use(express.json());
|
2023-09-03 01:01:55 +08:00
|
|
|
app.use(passport.initialize());
|
2023-10-03 19:47:17 +08:00
|
|
|
// app.use(morgan('tiny'));
|
2023-09-02 22:53:57 +08:00
|
|
|
|
|
|
|
// http://expressjs.com/en/advanced/best-practice-security.html#at-a-minimum-disable-x-powered-by-header
|
|
|
|
app.disable('x-powered-by');
|
|
|
|
|
|
|
|
app.use('/api/user', userRouter);
|
2023-09-03 19:28:53 +08:00
|
|
|
app.use('/api/website', websiteRouter);
|
2023-09-05 01:18:43 +08:00
|
|
|
app.use('/api/workspace', workspaceRouter);
|
2023-09-17 14:41:40 +08:00
|
|
|
app.use('/api/telemetry', telemetryRouter);
|
2023-09-02 22:53:57 +08:00
|
|
|
|
2023-09-27 17:56:32 +08:00
|
|
|
app.use('/trpc', trpcExpressMiddleware);
|
|
|
|
|
2023-09-02 22:53:57 +08:00
|
|
|
app.use((err: any, req: any, res: any, next: any) => {
|
2023-09-03 21:05:22 +08:00
|
|
|
console.error(err);
|
|
|
|
res.status(500).json({ message: err.message });
|
2023-08-31 21:17:57 +08:00
|
|
|
});
|
|
|
|
|
2023-10-03 19:47:17 +08:00
|
|
|
httpServer.listen(port, () => {
|
|
|
|
ViteExpress.bind(app, httpServer, () => {
|
|
|
|
console.log(`Server is listening on port ${port}...`);
|
|
|
|
console.log(`Website: http://127.0.0.1:${port}`);
|
|
|
|
});
|
2023-08-31 21:17:57 +08:00
|
|
|
});
|