const config = require("./config/configuration"); const express = require('express'); const helmet = require("helmet"); const logger = require("./services/logging"); const rateLimit = require("express-rate-limit"); const sessions = require("./services/session-manager"); const PlexTracker = require("./services/trackers/plex-tracker"); const SpotifyTracker = require("./services/trackers/spotify-tracker"); const Recorder = require("./services/recorder"); const spotify = new SpotifyTracker(config.spotify); (async () => await spotify.loadCredentials())(); const plex = new PlexTracker(config.plex); const recorder = new Recorder(sessions, [plex, spotify], config.scrobble, logger); setInterval(() => recorder.record(), 5000); const app = express(); app.use(express.json()); app.use("/", require("./routes/home")); app.use("/api", require("./routes/api")); const limiter = rateLimit({ legacyHeaders: true, standardHeaders: true, windowMs: 15 * 60 * 1000, limit: 50, max: 2, message: "Too many requests; please try again later.", keyGenerator: (req) => req.ip, }); app.use(helmet()); app.use(limiter); const PORT = process.env.PORT || config.web.port || 9111; app.listen(PORT, () => { logger.info("Listening to port " + PORT + "."); });