96 lines
2.1 KiB
JavaScript
96 lines
2.1 KiB
JavaScript
require("dotenv").config();
|
|
|
|
const express = require("express");
|
|
const path = require("path");
|
|
const helmet = require("helmet");
|
|
const rateLimit = require("express-rate-limit");
|
|
|
|
const serverRoutes = require("./routes/servers");
|
|
const registerRoutes = require("./routes/register");
|
|
const verifyRoutes = require("./routes/verify");
|
|
const characterRoutes = require("./routes/character");
|
|
const session = require("express-session");
|
|
const loginRoutes = require("./routes/login");
|
|
const launcherRoutes = require("./routes/launcher");
|
|
|
|
const app = express();
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
/* ========================
|
|
Security Middleware
|
|
======================== */
|
|
|
|
app.use(
|
|
helmet({
|
|
contentSecurityPolicy: false,
|
|
}),
|
|
);
|
|
|
|
const limiter = rateLimit({
|
|
windowMs: 15 * 60 * 1000,
|
|
max: 100,
|
|
});
|
|
|
|
app.use(limiter);
|
|
|
|
app.use(
|
|
session({
|
|
secret: "dynastyofknights_secret",
|
|
resave: false,
|
|
saveUninitialized: false,
|
|
}),
|
|
);
|
|
|
|
/* ========================
|
|
Express Settings
|
|
======================== */
|
|
|
|
app.set("view engine", "ejs");
|
|
app.set("views", path.join(__dirname, "views"));
|
|
|
|
/* ========================
|
|
Body Parser
|
|
======================== */
|
|
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
/* ========================
|
|
Static Files
|
|
======================== */
|
|
|
|
app.use(express.static(path.join(__dirname, "public")));
|
|
|
|
/* ========================
|
|
Routes
|
|
======================== */
|
|
|
|
app.use("/", serverRoutes);
|
|
app.use("/register", registerRoutes);
|
|
app.use("/verify", verifyRoutes);
|
|
app.use("/create-character", characterRoutes);
|
|
app.use("/login", loginRoutes);
|
|
app.use("/launcher", launcherRoutes);
|
|
|
|
/* ========================
|
|
404 Handler
|
|
======================== */
|
|
|
|
app.use((req, res) => {
|
|
res.status(404).send("Seite nicht gefunden");
|
|
});
|
|
|
|
/* ========================
|
|
Webseite beschleunigen
|
|
======================== */
|
|
const compression = require("compression");
|
|
app.use(compression());
|
|
|
|
/* ========================
|
|
Server Start
|
|
======================== */
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`Dynasty of Knights Server läuft auf http://localhost:${PORT}`);
|
|
});
|