61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
const express = require('express');
|
|
const { createServer } = require('http');
|
|
const { Server } = require('socket.io');
|
|
const cors = require('cors');
|
|
const dotenv = require('dotenv');
|
|
const path = require('path');
|
|
|
|
// Routes
|
|
const authRoutes = require('./routes/auth');
|
|
const serverRoutes = require('./routes/servers');
|
|
const sftpRoutes = require('./routes/sftp');
|
|
|
|
// Database
|
|
const db = require('./config/database');
|
|
|
|
// Socket handlers
|
|
const socketHandler = require('./socket/socketHandler');
|
|
|
|
// Load environment variables
|
|
dotenv.config();
|
|
|
|
const app = express();
|
|
const httpServer = createServer(app);
|
|
const io = new Server(httpServer, {
|
|
cors: {
|
|
origin: "http://localhost:5173", // Vite dev server
|
|
methods: ["GET", "POST"]
|
|
}
|
|
});
|
|
|
|
// Middleware
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
app.use(express.static(path.join(__dirname, '../frontend/dist')));
|
|
|
|
// API Routes
|
|
app.use('/api/auth', authRoutes);
|
|
app.use('/api/servers', serverRoutes);
|
|
app.use('/api/sftp', sftpRoutes);
|
|
|
|
// Socket.io connection handling
|
|
socketHandler(io);
|
|
|
|
// Serve frontend for production
|
|
app.get('*', (req, res) => {
|
|
res.sendFile(path.join(__dirname, '../frontend/dist/index.html'));
|
|
});
|
|
|
|
// Database connection test
|
|
db.authenticate()
|
|
.then(() => {
|
|
console.log('Database connection established successfully.');
|
|
})
|
|
.catch(err => {
|
|
console.error('Unable to connect to the database:', err);
|
|
});
|
|
|
|
const PORT = process.env.PORT || 3000;
|
|
httpServer.listen(PORT, () => {
|
|
console.log(`WebSSH server running on port ${PORT}`);
|
|
}); |