65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
// ! Imports
|
|
const express = require("express");
|
|
const helmet = require("helmet");
|
|
const compression = require("compression");
|
|
const cors = require("cors");
|
|
const morgan = require("morgan");
|
|
const chalk = require("chalk");
|
|
const hbs = require("express-handlebars");
|
|
const { dev, allMusic, music, port, socials, name } = require("./configs");
|
|
const app = express();
|
|
|
|
|
|
app.engine("hbs", hbs({ extname: "hbs", defaultView: "default" }));
|
|
app.set("view engine", "hbs");
|
|
app.set("json spaces", 4);
|
|
app.use("/assets", express.static("./assets"));
|
|
app.use(express.json());
|
|
app.use(
|
|
express.urlencoded({
|
|
extended: true,
|
|
})
|
|
);
|
|
app.use(helmet());
|
|
app.use(compression());
|
|
app.use(cors());
|
|
app.use(
|
|
morgan((tokens, req, res) => {
|
|
return [
|
|
chalk.hex("#34ace0").bold(`[ ${tokens.method(req, res)} ]`),
|
|
chalk.hex("#ffb142").bold(tokens.status(req, res)),
|
|
chalk.hex("#ff5252").bold(req.hostname + tokens.url(req, res)),
|
|
chalk.hex("#2ed573").bold(tokens["response-time"](req, res) + "ms"),
|
|
chalk.hex("#f78fb3").bold("@ " + tokens.date(req, res)),
|
|
].join(" ");
|
|
})
|
|
);
|
|
|
|
app.get("/", async (req, res) => {
|
|
res.render("index", {
|
|
layout: "index",
|
|
name,
|
|
protocol: dev ? `http` : `https`,
|
|
host: dev ? `${req.hostname}:${port}` : `${req.hostname}`,
|
|
socials,
|
|
music,
|
|
creator: {
|
|
name: "temere",
|
|
website: "https://teme.re",
|
|
},
|
|
});
|
|
});
|
|
|
|
// ! SOCIAL LINKS
|
|
socials.forEach((social) => {
|
|
app.get(`/${social.name}`, (req, res) => res.redirect(social.link));
|
|
});
|
|
|
|
// ! MUSIC LINKS
|
|
allMusic.forEach((item) => {
|
|
app.get(`/${item.id}`, (req, res) => res.redirect(item.link));
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`[ Server ] Listening on ${port}`);
|
|
});
|