-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
73 lines (58 loc) · 2.19 KB
/
index.js
File metadata and controls
73 lines (58 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import express from "express";
import path from "path";
import dotenv from "dotenv";
import { fileURLToPath } from "url";
import minify from "express-minify";
import compression from "compression";
import rateLimiter from "./utils/js/ratelimiter.js";
import { ensureDirExists} from "./utils/js/startup.js";
import setupAuth from "./utils/js/auth.js";
import { setupLogging } from "./utils/js/logging.js";
import setupHelmet from "./utils/js/helmet.js";
// Inicialización del servidor Express
const app = express();
const port = 3000;
// Configuración de rutas y archivos del proyecto
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const envFilePath = path.join(__dirname, "env", ".env");
const sitesFilePath = path.join(__dirname, "public", "json", "sites.json");
// Cargar variables de entorno
dotenv.config({ path: envFilePath });
// Configuración del motor de plantillas
app.set("view engine", "ejs");
app.set("views", path.join(__dirname, "views"));
// Middleware para servir archivos estáticos
app.use(express.static(path.join(__dirname, "public")));
// Configuración de minificación de archivos JS y CSS
const cacheDir = path.join(__dirname, "cache");
ensureDirExists(cacheDir);
app.use(minify({ cache: cacheDir }));
// Configuración para el análisis de cuerpos de solicitudes
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
// Configuración de compresión de respuestas
app.use(compression());
// Configuración de autenticación con Passport
setupAuth(app);
// Configuración del directorio y archivo de logs
setupLogging(app, __dirname);
// Configuración de seguridad con Helmet
setupHelmet(app, sitesFilePath);
// Middleware de rate limiting
app.use(rateLimiter);
// Middleware de manejo de errores
app.use((err, req, res, next) => {
res.status(err.status || 500);
const view = req.query.view || "index";
res.render("main", { view });
});
// Importación y configuración de rutas
import publicRoutes from "./routes/public.js";
import apiRoutes from "./routes/api.js";
app.use(apiRoutes);
app.use(publicRoutes);
// Inicio del servidor
app.listen(port, () => {
console.log(`Servidor escuchando en http://localhost:${port}`);
});